4jcraft/Minecraft.World/IO/Streams/Buffer.h
2026-03-13 17:06:56 -05:00

36 lines
1.1 KiB
C++

#pragma once
// A buffer is a linear, finite sequence of elements of a specific primitive
// type. Aside from its content, the essential properties of a buffer are its
// capacity, limit, and position:
//
// A buffer's capacity is the number of elements it contains. The capacity of a
// buffer is never negative and never changes.
//
// A buffer's limit is the index of the first element that should not be read or
// written. A buffer's limit is never negative and is never greater than its
// capacity.
//
// A buffer's position is the index of the next element to be read or written.
// A buffer's position is never negative and is never greater than its limit.
class Buffer {
protected:
const unsigned int m_capacity;
unsigned int m_position;
unsigned int m_limit;
unsigned int m_mark;
bool hasBackingArray;
public:
Buffer(unsigned int capacity);
virtual ~Buffer() {}
Buffer* clear();
Buffer* limit(unsigned int newLimit);
unsigned int limit();
Buffer* position(unsigned int newPosition);
unsigned int position();
unsigned int remaining();
virtual Buffer* flip() = 0;
};