13constexpr size_t BINCODE_MAX_LENGTH = (1ull << 31) - 1;
25 void serialize_f32(
float value);
26 void serialize_f64(
double value);
27 void serialize_len(
size_t value);
28 void serialize_variant_index(uint32_t value);
30 static constexpr bool enforce_strict_map_ordering =
false;
38 :
Parent(std::move(bytes), SIZE_MAX)
41 float deserialize_f32();
42 double deserialize_f64();
43 size_t deserialize_len();
44 uint32_t deserialize_variant_index();
46 static constexpr bool enforce_strict_map_ordering =
false;
50static_assert(std::numeric_limits<float>::is_iec559);
51static_assert(std::numeric_limits<double>::is_iec559);
52static_assert(
sizeof(float) ==
sizeof(uint32_t));
53static_assert(
sizeof(double) ==
sizeof(uint64_t));
55inline void BincodeSerializer::serialize_f32(
float value)
57 Parent::serialize_u32(*
reinterpret_cast<uint32_t*
>(&value));
60inline void BincodeSerializer::serialize_f64(
double value)
62 Parent::serialize_u64(*
reinterpret_cast<uint64_t*
>(&value));
65inline void BincodeSerializer::serialize_len(
size_t value)
67 if (value > BINCODE_MAX_LENGTH) {
68 throw_or_abort(
"Length is too large");
70 Parent::serialize_u64((uint64_t)value);
73inline void BincodeSerializer::serialize_variant_index(uint32_t value)
75 Parent::serialize_u32((uint32_t)value);
78inline float BincodeDeserializer::deserialize_f32()
80 auto value = Parent::deserialize_u32();
81 return *
reinterpret_cast<float*
>(&value);
84inline double BincodeDeserializer::deserialize_f64()
86 auto value = Parent::deserialize_u64();
87 return *
reinterpret_cast<double*
>(&value);
90inline size_t BincodeDeserializer::deserialize_len()
92 auto value = (size_t)Parent::deserialize_u64();
93 if (value > BINCODE_MAX_LENGTH) {
94 throw_or_abort(
"Length is too large");
99inline uint32_t BincodeDeserializer::deserialize_variant_index()
101 return Parent::deserialize_u32();
Definition: binary.hpp:52
Definition: binary.hpp:14
Definition: bincode.hpp:33
Definition: bincode.hpp:17