28 requires std::ranges::random_access_range<R> && std::same_as<typename R::value_type, uint8_t>
42 : m_buffer(&buffer) {};
106 void reserve(
const std::function<std::size_t()>& calculate_reserve_size);
113 [[nodiscard]]
size_t size()
const;
122 template <
typename R>
123 requires std::ranges::random_access_range<R> && std::same_as<typename R::value_type, uint8_t>
126 m_buffer->insert(m_buffer->end(), s, s + count);
130 template <
typename R>
131 requires std::ranges::random_access_range<R> && std::same_as<typename R::value_type, uint8_t>
134 m_buffer->insert(m_buffer->end(), span.begin(), span.end());
138 template <
typename R>
139 requires std::ranges::random_access_range<R> && std::same_as<typename R::value_type, uint8_t>
142 m_buffer->insert(m_buffer->end(), count, value);
146 template <
typename R>
147 requires std::ranges::random_access_range<R> && std::same_as<typename R::value_type, uint8_t>
150 m_buffer->push_back(
static_cast<uint8_t
>(value));
154 template <
typename R>
155 requires std::ranges::random_access_range<R> && std::same_as<typename R::value_type, uint8_t>
161 template <
typename R>
162 requires std::ranges::random_access_range<R> && std::same_as<typename R::value_type, uint8_t>
165 m_buffer->reserve(calculate_reserve_size());
168 template <
typename R>
169 requires std::ranges::random_access_range<R> && std::same_as<typename R::value_type, uint8_t>
172 return m_buffer->size();
An output stream that writes data to a contiguous memory buffer.
size_t size() const
Gets the current size of the buffer.
memory_output_stream & write(const char *s, std::streamsize count)
Writes character data to the buffer.
void reserve(std::size_t size)
Reserves capacity in the underlying buffer.
memory_output_stream & put(char value)
Writes a single character to the buffer.
memory_output_stream(R &buffer)
Constructs a memory output stream with a reference to a buffer.