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

61 lines
1.9 KiB
C++

#include "../../Platform/stdafx.h"
#include "Buffer.h"
Buffer::Buffer(unsigned int capacity)
: m_capacity(capacity),
m_position(0),
m_limit(capacity),
hasBackingArray(false) {}
// Clears this buffer. The position is set to zero, the limit is set to the
// capacity, and the mark is discarded. This method does not actually erase the
// data in the buffer, but it is named as if it did because it will most often
// be used in situations in which that might as well be the case.
//
// Returns:
// This buffer
Buffer* Buffer::clear() {
m_position = 0;
m_limit = m_capacity;
return this;
}
// Sets this buffer's limit. If the position is larger than the new limit then
// it is set to the new limit. If the mark is defined and larger than the new
// limit then it is discarded. Parameters: newLimit - The new limit value; must
// be non-negative and no larger than this buffer's capacity Returns: This
// buffer
Buffer* Buffer::limit(unsigned int newLimit) {
assert(newLimit <= m_capacity);
m_limit = newLimit;
if (m_position > newLimit) m_position = newLimit;
return this;
}
unsigned int Buffer::limit() { return m_limit; }
// Sets this buffer's position. If the mark is defined and larger than the new
// position then it is discarded. Parameters: newPosition - The new position
// value; must be non-negative and no larger than the current limit Returns:
// This buffer
Buffer* Buffer::position(unsigned int newPosition) {
assert(newPosition <= m_limit);
m_position = newPosition;
return this;
}
// Returns this buffer's position.
// Returns:
// The position of this buffer
unsigned int Buffer::position() { return m_position; }
// Returns the number of elements between the current position and the limit.
// Returns:
// The number of elements remaining in this buffer
unsigned int Buffer::remaining() { return m_limit - m_position; }