mirror of
https://github.com/4jcraft/4jcraft.git
synced 2026-04-24 04:03:35 +00:00
36 lines
1.1 KiB
C++
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;
|
|
}; |