15 data(
new uint8_t[N + 1]),
20 size_t BytesFree()
const
22 return (write < read) ? read - write - 1 : dataSize - 1 - (write - read);
25 size_t BytesAvailable()
const
27 return dataSize - BytesFree() - 1;
30 size_t WriteChunk()
const
32 return (write < read) ? read - write - 1 : data.get() + dataSize - write - (data.get() == read);
37 assert(n <= BytesFree());
38 write = Increment(write, n);
41 template<
class T> T ReadFromLittleEndian()
44 for (
size_t i = 0; i <
sizeof(T); ++i) {
45 result += (((T)(*read)) << (8 * i));
46 read = Increment(read, 1);
53 assert(n <= BytesAvailable());
54 read = Increment(read, n);
58 const size_t dataSize;
59 const std::unique_ptr<uint8_t[]> data;
61 inline uint8_t* Increment(
const uint8_t* ptr,
size_t n)
63 return data.get() + ((ptr - data.get() + n) % dataSize);
Definition: RingBuffer.h:12