49 explicit
Simple(const std::
size_t& size);
57 Simple(const
char* data, const std::
size_t& length);
81 Simple(const std::span<const Byte>& data);
99 virtual ~
Simple() noexcept = default;
121 virtual
Simple& operator<<(const Data& data);
149 virtual
Simple& operator<<(const std::
string& data);
162 template <typename NumericType, typename = std::enable_if_t<std::is_arithmetic_v<std::decay_t<NumericType>>>>
163 Simple& operator<<(const NumericType& value) {
164 const auto* raw_data =
reinterpret_cast<const std::byte*
>(&value);
165 m_data.insert(m_data.end(), raw_data, raw_data +
sizeof(NumericType));
186 virtual
size_t Capacity() const noexcept;
192 virtual
void Clear();
203 virtual
Buffer::Data Data() const noexcept;
217 virtual
void Discard(const std::
size_t& length, const
Read::Position& mode =
Read::Position::Relative) noexcept;
223 virtual
bool Empty() const noexcept;
229 virtual
bool End() const noexcept;
251 virtual
Read::Status ExtractInto(const
size_t& length,
Simple& output) noexcept;
258 virtual
bool HasEnoughData(const std::
size_t& length) const;
269 virtual std::
string HexData(const std::
size_t& column_size = 16) const;
275 virtual
bool IsEoF() const noexcept;
293 virtual std::
size_t Position() const noexcept;
311 Read::Status Process(const std::
size_t& length, Processor function,
Simple& output) noexcept;
332 virtual
void Reserve(const std::
size_t& size);
339 virtual
void Seek(const std::ptrdiff_t& position, const
Read::Position& mode) const;
345 virtual std::
size_t Size() const noexcept;
357 const std::span<const Byte> Span() const noexcept;
369 std::span<Byte> Span() noexcept;
422 std::vector<std::
byte> m_data;
423 mutable std::
size_t m_position;
424 mutable std::
size_t m_minimum_chunk_size;