15 return sizeof(uint64_t) +
sizeof(data);
18 static uint32_t get_padding(uint32_t size)
20 uint32_t padding = size %
sizeof(uintptr_t);
23 padding =
sizeof(uintptr_t) - padding;
28 static uint32_t add_padding(uint32_t data_size, uint8_t*& data,
size_t& size)
30 constexpr uintptr_t padding = 0;
31 uint32_t padding_size = get_padding(data_size);
32 if (padding_size != 0)
35 data, size,
reinterpret_cast<const uint8_t*
>(&padding), padding_size);
41 static size_t get_serialized_size_with_padding(
const T& t)
44 return t_size + get_padding(t_size);
48 inline size_t serialize(
const T& t, uint8_t*& data,
size_t& size)
50 uint64_t data_size =
sizeof(T);
54 reinterpret_cast<const uint8_t*
>(&data_size),
57 data, size,
reinterpret_cast<const uint8_t*
>(&t),
sizeof(T));
58 return sizeof(uint64_t) +
sizeof(T);
64 size_t result = serialized::read<size_t>(data, size);
67 result ==
sizeof(T),
"result:{} == sizeof(T):{}", result,
sizeof(T));
68 return serialized::read<T>(data, size);
72 static M deserialize_map(std::span<const uint8_t> serialized_state)
74 using KeyType =
typename M::KeyType;
75 using ValueType =
typename M::ValueType;
78 const uint8_t* data = serialized_state.data();
79 size_t size = serialized_state.size();
84 size_t key_size = size;
85 KeyType key = deserialize<KeyType>(data, size);
90 size_t value_size = size;
91 ValueType value = deserialize<ValueType>(data, size);
size_t serialize(const T &t, uint8_t *&data, size_t &size)
Definition map_serializers.h:48