| 163 | bool empty() const { return m_data.empty(); } |
| 164 | |
| 165 | void read(Span<std::byte> dst) |
| 166 | { |
| 167 | if (dst.size() == 0) { |
| 168 | return; |
| 169 | } |
| 170 | |
| 171 | // Read from the beginning of the buffer |
| 172 | if (dst.size() > m_data.size()) { |
| 173 | throw std::ios_base::failure("SpanReader::read(): end of data"); |
| 174 | } |
| 175 | memcpy(dst.data(), m_data.data(), dst.size()); |
| 176 | m_data = m_data.subspan(dst.size()); |
| 177 | } |
| 178 | }; |
| 179 | |
| 180 | /** Double ended buffer combining vector and stream-like interfaces. |