2#include "../utility/assert.h"
3#include "../utility/meta.h"
4#include "../utility/parameter.h"
6#include "../stream/serialize_traits.h"
16 template<
typename Stream>
20 uint32_t unsigned_value = value;
22 return writer.serialize_bits(unsigned_value, 1U);
25 template<
typename Stream>
29 uint32_t unsigned_value;
31 BS_ASSERT(reader.serialize_bits(unsigned_value, 1U));
33 value = unsigned_value;
45 template<
typename Stream>
47 static serialize(Stream& writer,
const bool* values)
noexcept
49 uint32_t unsigned_value;
50 for (
size_t i = 0; i < Size; i++)
52 unsigned_value = values[i];
53 BS_ASSERT(writer.serialize_bits(unsigned_value, 1U));
56 return writer.serialize_bits(unsigned_value, 1U);
59 template<
typename Stream>
61 static serialize(Stream& reader,
bool* values)
noexcept
63 uint32_t unsigned_value;
64 for (
size_t i = 0; i < Size; i++)
66 BS_ASSERT(reader.serialize_bits(unsigned_value, 1U));
68 values[i] = unsigned_value;
#define BS_ASSERT(...)
Definition assert.h:15
Definition parameter.h:59
std::enable_if_t< T::writing, R > is_writing_t
Definition meta.h:25
std::enable_if_t< T::reading, R > is_reading_t
Definition meta.h:28
Definition bounded_range.h:28
std::conditional_t<(sizeof(T)<=16 &&std::is_trivially_copy_constructible_v< T >), std::add_const_t< T >, std::add_lvalue_reference_t< std::add_const_t< T > > > in
Passes by const or const reference depending on size.
Definition parameter.h:89
static utility::is_writing_t< Stream > serialize(Stream &writer, in< bool > value) noexcept
Definition bool_trait.h:18
static utility::is_reading_t< Stream > serialize(Stream &reader, out< bool > value) noexcept
Definition bool_trait.h:27
static utility::is_reading_t< Stream > serialize(Stream &reader, bool *values) noexcept
Definition bool_trait.h:61
static utility::is_writing_t< Stream > serialize(Stream &writer, const bool *values) noexcept
Definition bool_trait.h:47
A class for specializing trait serialization functions.
Definition serialize_traits.h:11