8#ifndef SEN_CORE_IO_BUFFER_WRITER_H
9#define SEN_CORE_IO_BUFFER_WRITER_H
25 virtual ~
Writer() noexcept = default;
29 virtual uint8_t*
advance(
size_t size) = 0;
45 [[nodiscard]] uint8_t*
advance(
size_t size)
override;
56template <
typename Container = std::vector<u
int8_t>>
66 [[nodiscard]] uint8_t*
advance(
size_t size)
override;
67 void reverse(
size_t size)
override { buffer_.resize(buffer_.size() - size); }
83 auto* oldCursor = cursor_;
92template <
typename Container>
95 const auto cursor = buffer_.size();
96 buffer_.resize(buffer_.size() + size);
97 return buffer_.data() + cursor;
~BufferWriter() override=default
BufferWriter(Span< uint8_t > buffer) noexcept
Definition buffer_writer.h:41
void reverse(size_t size) override
Moves the cursor 'size' bytes.
Definition buffer_writer.h:46
uint8_t * advance(size_t size) override
Returns a buffer of 'size' bytes, owned by the writer.
Definition buffer_writer.h:81
~ResizableBufferWriter() override=default
ResizableBufferWriter(Container &buffer) noexcept
Definition buffer_writer.h:62
void reverse(size_t size) override
Moves the cursor 'size' bytes.
Definition buffer_writer.h:67
uint8_t * advance(size_t size) override
Returns a buffer of 'size' bytes, owned by the writer.
Definition buffer_writer.h:93
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