38constexpr bool is_integer_v = std::is_integral_v<T> && !std::is_same_v<T, bool>;
96 static_cast<T
>(
static_cast<std::int8_t
>(0b11100000));
106 static_cast<T
>(
static_cast<std::int8_t
>(0X80));
114constexpr auto min_int16 =
static_cast<T
>(
static_cast<std::int16_t
>(0X8000));
123 static_cast<T
>(
static_cast<std::int32_t
>(0X80000000));
134 std::enable_if_t<details::is_unsigned_integer_v<T> && sizeof(T) == 1U>> {
142 constexpr T positive_fixint_mask =
~details::max_positive_fixint<T>;
143 if ((value & positive_fixint_mask) ==
static_cast<T
>(0)) {
159 std::enable_if_t<details::is_unsigned_integer_v<T> && sizeof(T) == 2U>> {
167 constexpr T uint8_mask =
~details::max_uint8<T>;
168 if ((value & uint8_mask) ==
static_cast<T
>(0)) {
169 constexpr T positive_fixint_mask =
~details::max_positive_fixint<T>;
170 if ((value & positive_fixint_mask) ==
static_cast<T
>(0)) {
172 static_cast<std::uint8_t
>(value));
191 std::enable_if_t<details::is_unsigned_integer_v<T> && sizeof(T) == 4U>> {
199 constexpr T uint8_mask =
~details::max_uint8<T>;
200 if ((value & uint8_mask) ==
static_cast<T
>(0)) {
201 constexpr T positive_fixint_mask =
~details::max_positive_fixint<T>;
202 if ((value & positive_fixint_mask) ==
static_cast<T
>(0)) {
204 static_cast<std::uint8_t
>(value));
212 constexpr T uint16_mask =
~details::max_uint16<T>;
213 if ((value & uint16_mask) ==
static_cast<T
>(0)) {
229 std::enable_if_t<details::is_unsigned_integer_v<T> &&
239 constexpr T uint16_mask =
~details::max_uint16<T>;
240 if ((value & uint16_mask) ==
static_cast<T
>(0)) {
241 constexpr T uint8_mask =
~details::max_uint8<T>;
242 if ((value & uint8_mask) ==
static_cast<T
>(0)) {
243 constexpr T positive_fixint_mask =
245 if ((value & positive_fixint_mask) ==
static_cast<T
>(0)) {
247 static_cast<std::uint8_t
>(value));
259 constexpr T uint32_mask =
~details::max_uint32<T>;
260 if ((value & uint32_mask) ==
static_cast<T
>(0)) {
276 std::enable_if_t<details::is_signed_integer_v<T> && sizeof(T) == 1U>> {
285 if (value >=
static_cast<T
>(0)) {
313 if ((value & negative_fixint_mask) == negative_fixint_mask) {
329 std::enable_if_t<details::is_signed_integer_v<T> && sizeof(T) == 2U>> {
338 if (value >=
static_cast<T
>(0)) {
354 constexpr T uint8_mask =
~details::max_uint8<T>;
355 if ((value & uint8_mask) ==
static_cast<T
>(0)) {
356 constexpr T positive_fixint_mask =
~details::max_positive_fixint<T>;
357 if ((value & positive_fixint_mask) ==
static_cast<T
>(0)) {
359 static_cast<std::uint8_t
>(value));
379 if ((value & int8_mask) == int8_mask) {
381 if ((value & negative_fixint_mask) == negative_fixint_mask) {
383 static_cast<std::int8_t
>(value));
402 std::enable_if_t<details::is_signed_integer_v<T> && sizeof(T) == 4U>> {
411 if (value >=
static_cast<T
>(0)) {
427 constexpr T uint8_mask =
~details::max_uint8<T>;
428 if ((value & uint8_mask) ==
static_cast<T
>(0)) {
429 constexpr T positive_fixint_mask =
~details::max_positive_fixint<T>;
430 if ((value & positive_fixint_mask) ==
static_cast<T
>(0)) {
432 static_cast<std::uint8_t
>(value));
440 constexpr T uint16_mask =
~details::max_uint16<T>;
441 if ((value & uint16_mask) ==
static_cast<T
>(0)) {
458 if ((value & int8_mask) == int8_mask) {
460 if ((value & negative_fixint_mask) == negative_fixint_mask) {
462 static_cast<std::int8_t
>(value));
471 if ((value & int16_mask) == int16_mask) {
487 std::enable_if_t<details::is_signed_integer_v<T> &&
498 if (value >=
static_cast<T
>(0)) {
514 constexpr T uint16_mask =
~details::max_uint16<T>;
515 if ((value & uint16_mask) ==
static_cast<T
>(0)) {
516 constexpr T uint8_mask =
~details::max_uint8<T>;
517 if ((value & uint8_mask) ==
static_cast<T
>(0)) {
518 constexpr T positive_fixint_mask =
520 if ((value & positive_fixint_mask) ==
static_cast<T
>(0)) {
522 static_cast<std::uint8_t
>(value));
534 constexpr T uint32_mask =
~details::max_uint32<T>;
535 if ((value & uint32_mask) ==
static_cast<T
>(0)) {
551 if ((value & int16_mask) == int16_mask) {
553 if ((value & int8_mask) == int8_mask) {
554 constexpr T negative_fixint_mask =
556 if ((value & negative_fixint_mask) == negative_fixint_mask) {
558 static_cast<std::int8_t
>(value));
571 if ((value & int32_mask) == int32_mask) {
Class of buffers to serialize data.
void serialize_int16(std::int16_t value)
Serialize a value in int 16 format.
void serialize_uint16(std::uint16_t value)
Serialize a value in uint 16 format.
void serialize_uint8(std::uint8_t value)
Serialize a value in uint 8 format.
void serialize_positive_fixint(std::uint8_t value)
Serialize a value in positive fixint format.
void serialize_negative_fixint(std::int8_t value)
Serialize a value in negative fixint format.
void serialize_int64(std::int64_t value)
Serialize a value in int 64 format.
void serialize_uint32(std::uint32_t value)
Serialize a value in uint 32 format.
void serialize_uint64(std::uint64_t value)
Serialize a value in uint 64 format.
void serialize_int32(std::int32_t value)
Serialize a value in int 32 format.
void serialize_int8(std::int8_t value)
Serialize a value in int 8 format.
Forward declaration of classes to support serialization of data types.
Namespace of internal implementations.
constexpr auto min_int16
Minimum value in int 16 format.
constexpr auto max_uint32
Maximum value in uint 32 format.
constexpr auto min_int8
Minimum value in int 8 format.
constexpr auto min_int32
Minimum value in int 32 format.
constexpr bool is_integer_v
Check whether a type is an integer.
constexpr bool is_unsigned_integer_v
Check whether a type is an unsigned integer.
constexpr auto max_uint16
Maximum value in uint 16 format.
constexpr auto max_positive_fixint
Maximum value in positive fixint format.
constexpr auto min_negative_fixint
Minimum value in negative fixint format.
constexpr auto max_uint8
Maximum value in uint 8 format.
constexpr bool is_signed_integer_v
Check whether a type is a signed integer.
Namespace of classes to support serialization of types.
Definition of serialization_buffer class.
static void serialize(serialization_buffer &buffer, T value)
Serialize a value.
static void serialize(serialization_buffer &buffer, T value)
Serialize a value.
static void serialize_positive_integer(serialization_buffer &buffer, T value)
Serialize a positive integers.
static void serialize_negative_integer(serialization_buffer &buffer, T value)
Serialize a negative integers.
static void serialize(serialization_buffer &buffer, T value)
Serialize a value.
static void serialize(serialization_buffer &buffer, T value)
Serialize a value.
static void serialize_positive_integer(serialization_buffer &buffer, T value)
Serialize a positive integers.
static void serialize_negative_integer(serialization_buffer &buffer, T value)
Serialize a negative integers.
static void serialize(serialization_buffer &buffer, T value)
Serialize a value.
static void serialize_positive_integer(serialization_buffer &buffer, T value)
Serialize a positive integers.
static void serialize_negative_integer(serialization_buffer &buffer, T value)
Serialize a negative integers.
static void serialize(serialization_buffer &buffer, T value)
Serialize a value.
static void serialize(serialization_buffer &buffer, T value)
Serialize a value.
static void serialize(serialization_buffer &buffer, T value)
Serialize a value.
static void serialize_positive_integer(serialization_buffer &buffer, T value)
Serialize a positive integers.
static void serialize_negative_integer(serialization_buffer &buffer, T value)
Serialize a negative integers.
Class to define functions to serialize data of various types.