44template<Impl<io::Reader> Reader>
53 template<concepts::NotDecaysTo<BinaryDeserializer> T>
54 requires(ConstructibleFrom<Reader, T>)
58 template<concepts::IntegralOrEnum T>
62 auto const little_endian_value = di::bit_cast<LittleEndian<T>>(bytes);
63 return T(little_endian_value);
66 template<concepts::TupleLike T>
71 [&]<
typename U>(U&& element) -> Result<void> {
79 template<concepts::VariantLike T>
81 using IndexType =
u64;
92 template<concepts::DefaultConstructible T, concepts::InstanceOf<reflection::Fields> M>
97 [&](
auto field) -> Result<void> {
106 template<concepts::InstanceOf<container::
string::StringImpl> Str>
115 template<concepts::Container T>
118 using SizeType =
u64;
120 return range(
size) | transform([&](
auto) {
128 constexpr auto reader() && ->
Reader&& {
return util::move(*this).m_reader; }
140 template<concepts::Impl<io::Reader> Reader,
typename... Args>
144 constexpr auto operator()(
Reader&& reader, Args&&... args)
const {
A deserializer for a simple binary format.
Definition binary_serializer.h:116
constexpr auto deserialize(InPlaceType< T >, M fields) -> Result< T >
Definition binary_deserializer.h:93
constexpr auto deserialize(InPlaceType< T >) -> Result< T >
Definition binary_deserializer.h:59
constexpr auto reader() &&-> Reader &&
Definition binary_deserializer.h:128
constexpr auto reader() &-> Reader &
Definition binary_deserializer.h:126
constexpr auto deserialize(InPlaceType< T >) -> Result< T >
Definition binary_deserializer.h:117
constexpr auto deserialize(InPlaceType< Str >) -> Result< Str >
Definition binary_deserializer.h:107
BinaryFormat DeserializationFormat
Definition binary_deserializer.h:51
constexpr auto reader() const &-> Reader const &
Definition binary_deserializer.h:127
constexpr BinaryDeserializer(T &&reader)
Definition binary_deserializer.h:56
constexpr auto deserialize(InPlaceType< T >) -> Result< T >
Definition binary_deserializer.h:68
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
Definition binary_deserializer.h:137
Definition binary_deserializer.h:33
BinaryDeserializer(T &&) -> BinaryDeserializer< T >
constexpr auto binary_format
Definition binary_serializer.h:132
constexpr auto deserialize_binary
Definition binary_deserializer.h:151
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
Expected< T, Error > Result
Definition result.h:8
Definition zstring_parser.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 field
Definition field.h:42
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:54
constexpr auto deserialize
Definition deserialize.h:178
Definition binary_deserializer.h:139
Definition in_place_type.h:5
Definition span_fixed_size.h:37