24 if (len == 0 ||
data ==
nullptr)
26 _buffer.insert(_buffer.end(),
data,
data + len);
31 size_t size = value.length();
34 _buffer.insert(_buffer.end(), value.begin(), value.end());
43 if (
size + _cursor > _buffer.size())
44 throw std::out_of_range(
"Buffer overflow on read");
46 value.assign(_buffer.begin() + _cursor, _buffer.begin() + _cursor +
size);
54 return _buffer.size() - _cursor;
59 return std::vector<unsigned char>(_buffer.begin() + _cursor, _buffer.end());
69 if (_cursor + amount > _buffer.size())
70 throw std::out_of_range(
"Buffer overflow on increaseCursor");
83 throw std::out_of_range(
"Buffer underflow on decreaseCursor");
A simple LIFO data buffer for serialization and deserialization for simple data types and std::string...
void reset() const
Reset the read/write cursor to the beginning of the buffer.
void increaseCursor(size_t amount) const
Increase the read/write cursor by a specified amount.
const DataBuffer & operator>>(std::string &value) const
void clear()
Clear the buffer and reset the cursor.
const std::vector< unsigned char > data() const
void decreaseCursor(size_t amount) const
Decrease the read/write cursor by a specified amount.
void append(const unsigned char *data, size_t len)
DataBuffer & operator<<(const std::string &value)