2#include "../utility/assert.h"
3#include "../utility/meta.h"
4#include "../utility/parameter.h"
6#include "../stream/serialize_traits.h"
8#include "../traits/integral_traits.h"
16 template<
typename T, std::underlying_type_t<T> = (std::numeric_limits<T>::min)(), std::underlying_type_t<T> = (std::numeric_limits<T>::max)()>
27 template<
typename Stream>
33 return writer.template serialize<value_type>(unsigned_value, min, max);
36 template<
typename Stream>
42 BS_ASSERT(reader.template serialize<value_type>(unsigned_value, min, max));
44 value =
static_cast<T
>(unsigned_value);
53 template<
typename T, std::underlying_type_t<T> Min, std::underlying_type_t<T> Max>
59 template<
typename Stream>
65 return writer.template serialize<bound_type>(unsigned_value);
68 template<
typename Stream>
74 BS_ASSERT(reader.template serialize<bound_type>(unsigned_value));
76 value =
static_cast<T
>(unsigned_value);
#define BS_ASSERT(...)
Definition assert.h:15
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
Wrapper type for compiletime known integer bounds.
Definition enum_trait.h:17
Wrapper type for compiletime known integer bounds.
Definition integral_traits.h:20
std::underlying_type_t< T > value_type
Definition enum_trait.h:25
static utility::is_reading_t< Stream > serialize(Stream &reader, T &value, value_type min=0, value_type max=(std::numeric_limits< value_type >::max)()) noexcept
Definition enum_trait.h:38
static utility::is_writing_t< Stream > serialize(Stream &writer, T value, value_type min=0, value_type max=(std::numeric_limits< value_type >::max)()) noexcept
Definition enum_trait.h:29
static utility::is_reading_t< Stream > serialize(Stream &reader, T &value) noexcept
Definition enum_trait.h:70
static utility::is_writing_t< Stream > serialize(Stream &writer, T value) noexcept
Definition enum_trait.h:61
std::underlying_type_t< T > value_type
Definition enum_trait.h:56
A class for specializing trait serialization functions.
Definition serialize_traits.h:11