44template<Impl<io::Reader> Reader>
47 template<
typename T =
void>
52 template<concepts::NotDecaysTo<BinaryDeserializer> T>
53 requires(ConstructibleFrom<Reader, T>)
57 template<concepts::IntegralOrEnum T>
61 auto const little_endian_value = di::bit_cast<LittleEndian<T>>(bytes);
62 return T(little_endian_value);
65 template<concepts::TupleLike T>
78 template<concepts::VariantLike T>
80 using IndexType =
u64;
91 template<concepts::DefaultConstructible T, concepts::InstanceOf<reflection::Fields> M>
105 template<concepts::InstanceOf<container::
string::StringImpl> Str>
114 template<concepts::Container T>
117 using SizeType =
u64;
119 return range(
size) | transform([&](
auto) {
127 constexpr auto reader() && ->
Reader&& {
return util::move(*this).m_reader; }
138 struct DeserializeBinaryFunction {
139 template<concepts::Impl<io::Reader> Reader,
typename... Args>
143 constexpr auto operator()(
Reader&& reader, Args&&... args)
const {
constexpr BinaryDeserializer(T &&reader)
Definition binary_deserializer.h:55
A deserializer for a simple binary format.
Definition binary_deserializer.h:45
constexpr auto deserialize(InPlaceType< T >, M fields) -> Result< T >
Definition binary_deserializer.h:92
constexpr auto deserialize(InPlaceType< T >) -> Result< T >
Definition binary_deserializer.h:58
constexpr auto reader() &&-> Reader &&
Definition binary_deserializer.h:127
constexpr auto reader() &-> Reader &
Definition binary_deserializer.h:125
constexpr auto deserialize(InPlaceType< T >) -> Result< T >
Definition binary_deserializer.h:116
constexpr auto deserialize(InPlaceType< Str >) -> Result< Str >
Definition binary_deserializer.h:106
BinaryFormat DeserializationFormat
Definition binary_deserializer.h:50
constexpr auto reader() const &-> Reader const &
Definition binary_deserializer.h:126
meta::ReaderResult< T, Reader > Result
Definition binary_deserializer.h:48
constexpr BinaryDeserializer(T &&reader)
Definition binary_deserializer.h:55
constexpr auto deserialize(InPlaceType< T >) -> Result< T >
Definition binary_deserializer.h:67
Definition unexpected.h:14
Definition operations.h:11
Definition operations.h:24
Definition deserialize.h:153
#define DI_TRY(...)
Definition monad_try.h:13
constexpr auto sequence_to(Con &&container, Args &&... args)
Definition sequence_to.h:49
constexpr auto index_dispatch
Definition index_dispatch.h:41
meta::List< ReadSome > Reader
Definition reader.h:34
BinaryDeserializer(T &&) -> BinaryDeserializer< T >
constexpr auto binary_format
Definition binary_serializer.h:132
constexpr auto deserialize_binary
Definition binary_deserializer.h:150
constexpr auto deserialize
Definition deserialize.h:178
std::byte byte
Definition byte.h:64
size_t usize
Definition integers.h:33
__UINT64_TYPE__ u64
Definition integers.h:12
constexpr auto create(Args &&... args)
Definition create.h:21
Definition any_storable.h:9
constexpr auto ref
Definition reference_wrapper.h:98
auto declval() -> meta::AddRValueReference< T >
Definition declval.h:8
constexpr auto read_exactly
Definition read_exactly.h:26
constexpr auto tuple_sequence
Definition tuple_sequence.h:36
constexpr auto c_
A value of type Constexpr<val>.
Definition constexpr.h:252
constexpr auto size
Definition size.h:62
constexpr auto deserialize
Definition deserialize.h:178
constexpr auto field
Definition field.h:47
Definition in_place_type.h:5