8#ifndef SEN_CORE_IO_BUFFER_WRITER_H
9#define SEN_CORE_IO_BUFFER_WRITER_H
26 virtual ~
Writer() noexcept = default;
30 virtual uint8_t*
advance(
size_t size) = 0;
46 [[nodiscard]] uint8_t*
advance(
size_t size)
override;
57template <
typename Container = std::vector<u
int8_t>>
67 [[nodiscard]] uint8_t*
advance(
size_t size)
override;
71 buffer_.resize(buffer_.size() - size);
88 auto* oldCursor = cursor_;
97template <
typename Container>
100 const auto cursor = buffer_.size();
101 buffer_.resize(buffer_.size() + size);
102 return buffer_.data() + cursor;
The following macros implement a replacement of assert that is connected to the overall fault handlin...
~BufferWriter() override=default
BufferWriter(Span< uint8_t > buffer) noexcept
Definition buffer_writer.h:42
void reverse(size_t size) override
Moves the cursor 'size' bytes.
Definition buffer_writer.h:47
uint8_t * advance(size_t size) override
Returns a buffer of 'size' bytes, owned by the writer.
Definition buffer_writer.h:86
~ResizableBufferWriter() override=default
ResizableBufferWriter(Container &buffer) noexcept
Definition buffer_writer.h:63
void reverse(size_t size) override
Moves the cursor 'size' bytes.
Definition buffer_writer.h:68
uint8_t * advance(size_t size) override
Returns a buffer of 'size' bytes, owned by the writer.
Definition buffer_writer.h:98
Contiguous view of elements of type T. Inspired by http://www.open-std.org/jtc1/sc22/wg21/docs/papers...
Definition span.h:34
virtual uint8_t * advance(size_t size)=0
Returns a buffer of 'size' bytes, owned by the writer.
virtual void reverse(size_t size)=0
Moves the cursor 'size' bytes.
Writer() noexcept=default
#define SEN_ASSERT(expr)
Checks an intermediate result produced by a procedure (not an input or output). NOLINTNEXTLINE.
Definition assert.h:39