34 lines
1.1 KiB
C++
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;
|
|
}; |