aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/util/CircularBuffer.hxx44
-rw-r--r--test/TestCircularBuffer.hxx2
2 files changed, 24 insertions, 22 deletions
diff --git a/src/util/CircularBuffer.hxx b/src/util/CircularBuffer.hxx
index 60b6b3337..67b60e198 100644
--- a/src/util/CircularBuffer.hxx
+++ b/src/util/CircularBuffer.hxx
@@ -65,18 +65,18 @@ protected:
*/
size_type tail;
- const size_type size;
+ const size_type capacity;
const pointer_type data;
public:
- constexpr CircularBuffer(pointer_type _data, size_type _size)
- :head(0), tail(0), size(_size), data(_data) {}
+ constexpr CircularBuffer(pointer_type _data, size_type _capacity)
+ :head(0), tail(0), capacity(_capacity), data(_data) {}
CircularBuffer(const CircularBuffer &other) = delete;
protected:
constexpr size_type Next(size_type i) const {
- return i + 1 == size
+ return i + 1 == capacity
? 0
: i + 1;
}
@@ -86,8 +86,8 @@ public:
head = tail = 0;
}
- size_type GetSize() const {
- return size;
+ constexpr size_type GetCapacity() const {
+ return capacity;
}
constexpr bool IsEmpty() const {
@@ -103,15 +103,15 @@ public:
* When you are finished, call Append().
*/
Range Write() {
- assert(head < size);
- assert(tail < size);
+ assert(head < capacity);
+ assert(tail < capacity);
size_type end = tail < head
? head - 1
/* the "head==0" is there so we don't write
the last cell, as this situation cannot be
represented by head/tail */
- : size - (head == 0);
+ : capacity - (head == 0);
return Range(data + tail, end - tail);
}
@@ -121,15 +121,15 @@ public:
* to the buffer returned by Write().
*/
void Append(size_type n) {
- assert(head < size);
- assert(tail < size);
- assert(n < size);
- assert(tail + n <= size);
+ assert(head < capacity);
+ assert(tail < capacity);
+ assert(n < capacity);
+ assert(tail + n <= capacity);
assert(head <= tail || tail + n < head);
tail += n;
- if (tail == size) {
+ if (tail == capacity) {
assert(head > 0);
tail = 0;
}
@@ -140,24 +140,24 @@ public:
* writable, to allow modifications while parsing.
*/
Range Read() {
- assert(head < size);
- assert(tail < size);
+ assert(head < capacity);
+ assert(tail < capacity);
- return Range(data + head, (tail < head ? size : tail) - head);
+ return Range(data + head, (tail < head ? capacity : tail) - head);
}
/**
* Marks a chunk as consumed.
*/
void Consume(size_type n) {
- assert(head < size);
- assert(tail < size);
- assert(n < size);
- assert(head + n <= size);
+ assert(head < capacity);
+ assert(tail < capacity);
+ assert(n < capacity);
+ assert(head + n <= capacity);
assert(tail < head || head + n <= tail);
head += n;
- if (head == size)
+ if (head == capacity)
head = 0;
}
};
diff --git a/test/TestCircularBuffer.hxx b/test/TestCircularBuffer.hxx
index e4285484b..f8fb95418 100644
--- a/test/TestCircularBuffer.hxx
+++ b/test/TestCircularBuffer.hxx
@@ -24,6 +24,8 @@ public:
int data[N];
CircularBuffer<int> buffer(data, N);
+ CPPUNIT_ASSERT_EQUAL(size_t(N), buffer.GetCapacity());
+
/* '.' = empty; 'O' = occupied; 'X' = blocked */
/* checks on empty buffer */