26 #include "../experimental/bounded_view.h"
36 template < base_type T, std::endian Endianess >
39 static constexpr std::size_t
max_size =
sizeof( T );
43 static constexpr
auto&
bget(
auto& buffer, std::size_t
const i )
48 static constexpr
void serialize_at( std::span< std::byte, max_size > buffer, T item )
52 item =
static_cast< T
>( item >> 8 );
56 static constexpr T
deserialize( std::span< std::byte const, max_size >
const& buffer )
60 res =
static_cast< T
>(
res << 8 );
61 res =
static_cast< T
>(
res | std::to_integer< T >(
bget( buffer, i ) ) );
67 template < base_type T, std::endian Endianess >
71 using utype = std::underlying_type_t< T >;
76 static constexpr
void serialize_at( std::span< std::byte, max_size > buffer, T item )
81 static constexpr T
deserialize( std::span< std::byte const, max_size >
const& buffer )
87 template < std::endian Endianess >
91 static_assert(
sizeof(
float ) ==
sizeof( uint32_t ) );
93 static constexpr std::size_t
max_size =
sizeof( float );
97 serialize_at( std::span< std::byte, max_size > buffer,
float const item )
99 auto const v = std::bit_cast< uint32_t >( item );
103 static constexpr
float deserialize( std::span< std::byte const, max_size >
const& buffer )
106 return std::bit_cast< float >( v );
110 template < std::endian Endianess >
113 static constexpr std::size_t
max_size =
sizeof( bool );
116 static constexpr
void
117 serialize_at( std::span< std::byte, max_size >
const buffer,
bool const v )
122 static constexpr
bool deserialize( std::span< std::byte const, max_size >
const& buffer )
The bounded class represents a wrapper over type T constrained between MinVal and MaxVal as compile-t...
Definition: bounded.h:44
MIT License.
Definition: multiplexer.h:33
requires(std::is_enum_v< T >) struct serializer< T
static constexpr T deserialize(std::span< std::byte const, max_size > const &buffer)
Definition: serializer.h:81
Endianess
Definition: serializer.h:70
static constexpr void serialize_at(std::span< std::byte, max_size > buffer, T item)
Definition: serializer.h:76
static constexpr std::size_t max_size
Definition: serializer.h:73
T res
Definition: algorithm.h:505
constexpr view< iterators::numeric_iterator< Numeric > > range(Numeric from, Numeric to)
Builds numeric view over interval [from, to)
Definition: range.h:34
physical_quantity< 0, 0, 0, 0, 0, 0, 0, 0, 1 > byte
Definition: physical_quantity.h:118
static constexpr void serialize_at(std::span< std::byte, max_size > const buffer, bool const v)
Definition: serializer.h:117
static constexpr bool deserialize(std::span< std::byte const, max_size > const &buffer)
Definition: serializer.h:122
static constexpr void serialize_at(std::span< std::byte, max_size > buffer, float const item)
Definition: serializer.h:97
static constexpr float deserialize(std::span< std::byte const, max_size > const &buffer)
Definition: serializer.h:103
Definition: serializer.h:38
static constexpr T deserialize(std::span< std::byte const, max_size > const &buffer)
Definition: serializer.h:56
static constexpr std::size_t max_size
Definition: serializer.h:39
static constexpr bool is_big_endian
Definition: serializer.h:41
static constexpr void serialize_at(std::span< std::byte, max_size > buffer, T item)
Definition: serializer.h:48
static constexpr auto & bget(auto &buffer, std::size_t const i)
Definition: serializer.h:43