Files
2026-03-01 12:16:08 +08:00

34 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;
};