11#include "utils/Range.h"
28 std::shared_ptr<unsigned char> buffer_;
31 static void delete_buffer(
unsigned char* buffer) {
41 : buffer_(new unsigned char[
size], delete_buffer),
42 range_(buffer_.get(), buffer_.get() +
size) {}
45 : buffer_(buffer), range_(
data) {}
59 auto firstPiece = range_.subpiece(0, n);
61 return Buffer(buffer_, firstPiece);
83 const unsigned char*
data()
const {
96 return range_.empty();
const unsigned char * data() const
Definition Buffer.h:83
unsigned char * data()
Definition Buffer.h:87
void advance(std::size_t n)
Modifies the buffer to point to the range [begin + n, end).
Definition Buffer.h:65
Buffer()
Construct an empty buffer that owns no data.
Definition Buffer.h:37
Buffer splitAt(std::size_t n)
Definition Buffer.h:58
bool empty() const
Definition Buffer.h:95
Buffer(Buffer &&)=default
MutableByteRange range()
Returns a mutable Range pointing to the Buffers data.
Definition Buffer.h:79
Buffer(std::shared_ptr< unsigned char > buffer, MutableByteRange data)
Definition Buffer.h:44
Buffer(std::size_t size)
Construct a Buffer that owns a new underlying buffer of size size.
Definition Buffer.h:40
void subtract(std::size_t n)
Modifies the buffer to point to the range [begin, end - n).
Definition Buffer.h:70
std::size_t size() const
Definition Buffer.h:91
ByteRange range() const
Returns a read only Range pointing to the Buffers data.
Definition Buffer.h:75
Buffer & operator=(Buffer &&)=default
Definition ErrorHolder.h:16
Range< unsigned char * > MutableByteRange
Definition Range.h:129
Definition poolTests.c:28