Go to the documentation of this file.
9 #ifndef EAGINE_SERIALIZE_WRITE_BACKEND_HPP
10 #define EAGINE_SERIALIZE_WRITE_BACKEND_HPP
12 #include "../identifier.hpp"
13 #include "../interface.hpp"
14 #include "../reflect/decl_name.hpp"
127 template <
typename Derived,
typename Sink = serializer_data_sink>
156 return derived().do_write(values, done);
160 return derived().do_write(values, done);
165 return derived().do_write(values, done);
169 return derived().do_write(values, done);
173 return derived().do_write(values, done);
177 return derived().do_write(values, done);
182 return derived().do_write(values, done);
187 return derived().do_write(values, done);
192 return derived().do_write(values, done);
197 return derived().do_write(values, done);
202 return derived().do_write(values, done);
207 return derived().do_write(values, done);
211 return derived().do_write(values, done);
216 return derived().do_write(values, done);
221 return derived().do_write(values, done);
226 return derived().do_write(values, done);
231 return derived().do_write(values, done);
264 EAGINE_ASSERT(_sink);
265 return _sink->remaining_size();
268 template <
typename... Args>
270 EAGINE_ASSERT(_sink);
271 return _sink->write(std::forward<Args>(args)...);
275 Sink* _sink{
nullptr};
277 auto derived() noexcept -> Derived& {
278 return *
static_cast<Derived*
>(
this);
286 template <
typename Base,
identifier_t Id>
300 #endif // EAGINE_SERIALIZE_WRITE_BACKEND_HPP
Base class partially implementing serializer and deserialized backends.
Definition: write_backend.hpp:287
virtual auto begin_struct(span_size_t member_count) -> result=0
Begins the serialization of a structure instance.
serialization_errors result
Alias for the serialization operations result type.
Definition: write_backend.hpp:29
auto write(span< const std::int8_t > values, span_size_t &done) -> result override
Writes 8-bit int values, returns how many were done through second argument.
Definition: write_backend.hpp:163
virtual auto sink() -> serializer_data_sink *=0
Returns a pointer to the associated data sink, if any.
std::ptrdiff_t span_size_t
Signed span size type used by eagine.
Definition: types.hpp:36
auto write(span< const long long > values, span_size_t &done) -> result override
Writes long long values, returns how many were done through second argument.
Definition: write_backend.hpp:180
common_serializer_backend(Sink &s) noexcept
Construction from a reference to a Sink.
Definition: write_backend.hpp:134
Common code is placed in this namespace.
Definition: eagine.hpp:21
auto write(span< const unsigned short > values, span_size_t &done) -> result override
Writes ushort values, returns how many were done through second argument.
Definition: write_backend.hpp:190
auto sink() -> serializer_data_sink *final
Returns a pointer to the associated data sink, if any.
Definition: write_backend.hpp:143
virtual auto type_id() -> identifier=0
Returns a descriptive identifier of the implementation.
virtual auto finish_element(span_size_t index) -> result=0
Finishes the serialization of a container element.
Class for manipulating and testing a group of enumeration-based bits.
Definition: bitfield.hpp:19
Abstract base class for serialization data sinks.
Definition: data_sink.hpp:24
auto write(span< const bool > values, span_size_t &done) -> result override
Writes boolean values, returns how many were done through second argument.
Definition: write_backend.hpp:155
auto write(span< const unsigned long long > values, span_size_t &done) -> result override
Writes ulong long values, returns how many were done through second argument.
Definition: write_backend.hpp:205
auto begin_element(span_size_t) -> result override
Begins the serialization of a container element.
Definition: write_backend.hpp:249
auto finish_struct() -> result override
Finishes the serialization of a structure instance.
Definition: write_backend.hpp:243
auto write(span< const decl_name > values, span_size_t &done) -> result override
Writes decl_name values, returns how many were done through second argument.
Definition: write_backend.hpp:224
virtual auto finish_list() -> result=0
Finishes the serialization of a container instance.
auto finish_element(span_size_t) -> result override
Finishes the serialization of a container element.
Definition: write_backend.hpp:252
Base template for abstract interfaces, implements common functionality.
Definition: interface.hpp:18
auto write(span< const string_view > values, span_size_t &done) -> result override
Writes string values, returns how many were done through second argument.
Definition: write_backend.hpp:229
auto begin_struct(span_size_t) -> result override
Begins the serialization of a structure instance.
Definition: write_backend.hpp:234
auto begin() -> result override
Starts the serialization of a potentially complex structured value.
Definition: write_backend.hpp:151
virtual auto finish_struct() -> result=0
Finishes the serialization of a structure instance.
auto finish_list() -> result override
Finishes the serialization of a container instance.
Definition: write_backend.hpp:255
auto write(span< const long > values, span_size_t &done) -> result override
Writes long values, returns how many were done through second argument.
Definition: write_backend.hpp:176
auto write(span< const double > values, span_size_t &done) -> result override
Writes double values, returns how many were done through second argument.
Definition: write_backend.hpp:214
virtual auto write(span< const bool >, span_size_t &) -> result=0
Writes boolean values, returns how many were done through second argument.
auto set_sink(Sink &s) noexcept -> auto &
Sets a reference to a new Sink object.
Definition: write_backend.hpp:138
auto write(span< const short > values, span_size_t &done) -> result override
Writes short int values, returns how many were done through second argument.
Definition: write_backend.hpp:168
virtual auto begin() -> result=0
Starts the serialization of a potentially complex structured value.
virtual auto finish_member(string_view name) -> result=0
Finishes the serialization of a structure data member.
virtual auto finish() -> result=0
Finishes the serialization of a potentially complex structured value.
auto write(span< const std::uint8_t > values, span_size_t &done) -> result override
Writes 8-bit uint values, returns how many were done through second argument.
Definition: write_backend.hpp:185
auto write(span< const identifier > values, span_size_t &done) -> result override
Writes identifier values, returns how many were done through second argument.
Definition: write_backend.hpp:219
auto write(span< const unsigned > values, span_size_t &done) -> result override
Writes uint values, returns how many were done through second argument.
Definition: write_backend.hpp:195
CRTP mixin implementing the common parts of serializer backends.
Definition: write_backend.hpp:128
auto finish_member(string_view) -> result override
Finishes the serialization of a structure data member.
Definition: write_backend.hpp:240
auto begin_member(string_view) -> result override
Begins the serialization of a structure data member.
Definition: write_backend.hpp:237
auto enum_as_string() -> bool override
@brie Indicates if the backed stores enumerators as strings (or numeric values).
Definition: write_backend.hpp:147
virtual auto begin_member(string_view name) -> result=0
Begins the serialization of a structure data member.
auto finish() -> result override
Finishes the serialization of a potentially complex structured value.
Definition: write_backend.hpp:258
virtual auto enum_as_string() -> bool=0
@brie Indicates if the backed stores enumerators as strings (or numeric values).
std::uint64_t identifier_t
The underlying integer type for eagine::identifier.
Definition: identifier_t.hpp:19
auto write(span< const int > values, span_size_t &done) -> result override
Writes int values, returns how many were done through second argument.
Definition: write_backend.hpp:172
auto write(span< const char > values, span_size_t &done) -> result override
Writes character values, returns how many were done through second argument.
Definition: write_backend.hpp:159
auto write(span< const unsigned long > values, span_size_t &done) -> result override
Writes ulong values, returns how many were done through second argument.
Definition: write_backend.hpp:200
virtual auto begin_list(span_size_t element_count) -> result=0
Begins the serialization of a container instance.
virtual auto begin_element(span_size_t index) -> result=0
Begins the serialization of a container element.
auto write(span< const float > values, span_size_t &done) -> result override
Writes float values, returns how many were done through second argument.
Definition: write_backend.hpp:210
Interface for serialization write backends.
Definition: write_backend.hpp:26
bitfield< serialization_error_code > serialization_errors
Alias for serialization error bitfield.
Definition: result.hpp:100
common_serializer_backend() noexcept=default
Default constructor.
auto begin_list(span_size_t) -> result override
Begins the serialization of a container instance.
Definition: write_backend.hpp:246