Go to the documentation of this file.
9 #ifndef EAGINE_SERIALIZE_DATA_SINK_HPP
10 #define EAGINE_SERIALIZE_DATA_SINK_HPP
12 #include "../interface.hpp"
13 #include "../memory/split_block.hpp"
14 #include "../span.hpp"
15 #include "../string_span.hpp"
49 const auto errors{
write(data.tail())};
51 return {data.skip_to_end()};
54 return {data.advance(before)};
56 return {data, errors};
83 #endif // EAGINE_SERIALIZE_DATA_SINK_HPP
std::ptrdiff_t span_size_t
Signed span size type used by eagine.
Definition: types.hpp:36
static constexpr auto as_bytes(basic_span< T, P, S > spn) noexcept -> basic_block< std::is_const_v< T >>
Converts a span into a basic_block.
Definition: block.hpp:39
Common code is placed in this namespace.
Definition: eagine.hpp:21
Primary template for conditionally valid values.
Definition: decl.hpp:49
auto write_some(memory::const_split_block data) -> serialization_result< memory::const_split_block >
Writes as much as possible from a split data block.
Definition: data_sink.hpp:46
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
std::uintptr_t transaction_handle
Alias for type indentifying sink transaction that can be rolled back.
Definition: data_sink.hpp:60
auto write(string_view str) -> result
Writes a string view into this sink.
Definition: data_sink.hpp:41
virtual auto write(memory::const_block data) -> result=0
Writes a block of data into this sink.
Base template for polymorphic classes, implements common functionality.
Definition: interface.hpp:42
auto write(char chr) -> result
Writes a single string character into this sink.
Definition: data_sink.hpp:36
Non-owning view of a contiguous range of memory with ValueType elements.
Definition: flatten_fwd.hpp:16
virtual auto finalize() -> result=0
Does additional finalization, like compression after serialization operation.
virtual auto remaining_size() -> span_size_t=0
Returns the remaining available size for data in this sink.
@ incomplete_write
Incomplete write, remaining data should be written later.
virtual auto begin_work() -> transaction_handle=0
Begins a write transaction on this data sink.
Template for classes representing a memory span split in two parts.
Definition: split_span.hpp:26
virtual void rollback(transaction_handle)=0
Rolls-back writes done as a part of transaction identified by argument.
virtual void commit(transaction_handle)=0
Commits writes done as a part of transaction identified by argument.
bitfield< serialization_error_code > serialization_errors
Alias for serialization error bitfield.
Definition: result.hpp:100