ATLAS Offline Software
Loading...
Searching...
No Matches
TracccTriton::detail Namespace Reference

Wire format of one serialized container, per variable in schema order: More...

Classes

class  Reader

Functions

void putBytes (std::vector< std::uint8_t > &out, const void *data, std::size_t size)
void putSize (std::vector< std::uint8_t > &out, std::uint64_t size)
template<typename Element, typename Allocator>
void write (std::vector< std::uint8_t > &out, const std::vector< Element, Allocator > &variable)
template<typename Element, typename InnerAllocator, typename OuterAllocator>
void write (std::vector< std::uint8_t > &out, const std::vector< std::vector< Element, InnerAllocator >, OuterAllocator > &variable)
template<typename Element, typename Allocator>
void read (Reader &in, std::vector< Element, Allocator > &variable)
template<typename Element, typename InnerAllocator, typename OuterAllocator>
void read (Reader &in, std::vector< std::vector< Element, InnerAllocator >, OuterAllocator > &variable)

Detailed Description

Wire format of one serialized container, per variable in schema order:

uint64 number of elements N, [jagged only: N x uint64 inner sizes], raw element bytes.

Both serialization and deserialization use the same schema, so no layout information is stored.

Function Documentation

◆ putBytes()

void TracccTriton::detail::putBytes ( std::vector< std::uint8_t > & out,
const void * data,
std::size_t size )
inline

Definition at line 37 of file TracccEdmSerialization.h.

38 {
39 const auto* p = static_cast<const std::uint8_t*>(data);
40 out.insert(out.end(), p, p + size);
41}
size_t size() const
Number of registered mappings.

◆ putSize()

void TracccTriton::detail::putSize ( std::vector< std::uint8_t > & out,
std::uint64_t size )
inline

Definition at line 43 of file TracccEdmSerialization.h.

43 {
44 putBytes(out, &size, sizeof(size));
45}
void putBytes(std::vector< std::uint8_t > &out, const void *data, std::size_t size)

◆ read() [1/2]

template<typename Element, typename Allocator>
void TracccTriton::detail::read ( Reader & in,
std::vector< Element, Allocator > & variable )

Definition at line 97 of file TracccEdmSerialization.h.

97 {
98 variable.resize(in.size());
99 in.bytes(variable.data(), variable.size() * sizeof(Element));
100}
void bytes(void *dst, std::size_t size)

◆ read() [2/2]

template<typename Element, typename InnerAllocator, typename OuterAllocator>
void TracccTriton::detail::read ( Reader & in,
std::vector< std::vector< Element, InnerAllocator >, OuterAllocator > & variable )

Definition at line 103 of file TracccEdmSerialization.h.

105 {
106 variable.resize(in.size());
107 for (auto& inner : variable) {
108 inner.resize(in.size());
109 }
110 for (auto& inner : variable) {
111 in.bytes(inner.data(), inner.size() * sizeof(Element));
112 }
113}

◆ write() [1/2]

template<typename Element, typename Allocator>
void TracccTriton::detail::write ( std::vector< std::uint8_t > & out,
const std::vector< Element, Allocator > & variable )

Definition at line 75 of file TracccEdmSerialization.h.

76 {
77 static_assert(std::is_trivially_copyable_v<Element>);
78 putSize(out, variable.size());
79 putBytes(out, variable.data(), variable.size() * sizeof(Element));
80}
void putSize(std::vector< std::uint8_t > &out, std::uint64_t size)

◆ write() [2/2]

template<typename Element, typename InnerAllocator, typename OuterAllocator>
void TracccTriton::detail::write ( std::vector< std::uint8_t > & out,
const std::vector< std::vector< Element, InnerAllocator >, OuterAllocator > & variable )

Definition at line 83 of file TracccEdmSerialization.h.

85 {
86 static_assert(std::is_trivially_copyable_v<Element>);
87 putSize(out, variable.size());
88 for (const auto& inner : variable) {
89 putSize(out, inner.size());
90 }
91 for (const auto& inner : variable) {
92 putBytes(out, inner.data(), inner.size() * sizeof(Element));
93 }
94}