A simple ring buffer implementation based on std::vector. More...
#include <tRingBuffer.h>
Public Types | |
typedef size_t | size_type |
typedef T | value_type |
Public Member Functions | |
const T & | At (size_type pos) const |
Read an arbitrary element from the ring buffer without removing it. | |
T & | At (size_type pos) |
Access an arbitrary element in the ring buffer without removing it. | |
size_type | Capacity () const |
Returns the capacity of the ring buffer. | |
void | Clear () |
Clears the ring buffer. | |
tRingBuffer & | operator= (const tRingBuffer< T > &other) |
Assignment operator. | |
T | Read () |
Removes an element from the ring buffer provided there is one present. | |
void | SetCapacity (size_type capacity) |
Changes the capacity of the ring buffer. | |
size_type | Size () const |
Returns the current number of elements in the ring buffer. | |
void | Skip () |
Removes an element from the ring buffer without returning it. | |
tRingBuffer (size_type capacity=cDEFAULT_CAPACITY) | |
Default constructor. | |
tRingBuffer (const tRingBuffer< T > &other) | |
Copy constructor. | |
void | Write (const T &val, bool overwrite=false) |
Adds an element to the ring buffer provided there is room. | |
~tRingBuffer () | |
Static Public Attributes | |
static const size_type | cDEFAULT_CAPACITY = 32 |
Private Attributes | |
std::vector< T > | m_buffer |
size_type | m_read |
size_type | m_write |
A simple ring buffer implementation based on std::vector.
Definition at line 43 of file tRingBuffer.h.
typedef size_t icl_core::tRingBuffer< T >::size_type |
Definition at line 47 of file tRingBuffer.h.
typedef T icl_core::tRingBuffer< T >::value_type |
Definition at line 46 of file tRingBuffer.h.
icl_core::tRingBuffer< T >::tRingBuffer | ( | size_type | capacity = cDEFAULT_CAPACITY | ) | [inline] |
Default constructor.
Definition at line 51 of file tRingBuffer.h.
icl_core::tRingBuffer< T >::tRingBuffer | ( | const tRingBuffer< T > & | other | ) | [inline] |
Copy constructor.
Definition at line 56 of file tRingBuffer.h.
icl_core::tRingBuffer< T >::~tRingBuffer | ( | ) | [inline] |
Destructor documentation which Jan Oberlaender hasn't done till now!
Definition at line 229 of file tRingBuffer.h.
const T& icl_core::tRingBuffer< T >::At | ( | size_type | pos | ) | const [inline] |
Read an arbitrary element from the ring buffer without removing it.
Throws an exception if the index is out of range.
pos | The position into the buffer. 0 is the oldest element currently present. |
Definition at line 104 of file tRingBuffer.h.
T& icl_core::tRingBuffer< T >::At | ( | size_type | pos | ) | [inline] |
Access an arbitrary element in the ring buffer without removing it.
Throws an exception if the index is out of range.
pos | The position into the buffer. 0 is the oldest element currently present. |
Definition at line 126 of file tRingBuffer.h.
size_type icl_core::tRingBuffer< T >::Capacity | ( | ) | const [inline] |
Returns the capacity of the ring buffer.
Definition at line 189 of file tRingBuffer.h.
void icl_core::tRingBuffer< T >::Clear | ( | ) | [inline] |
Clears the ring buffer.
Definition at line 70 of file tRingBuffer.h.
tRingBuffer& icl_core::tRingBuffer< T >::operator= | ( | const tRingBuffer< T > & | other | ) | [inline] |
Assignment operator.
Definition at line 61 of file tRingBuffer.h.
T icl_core::tRingBuffer< T >::Read | ( | ) | [inline] |
Removes an element from the ring buffer provided there is one present.
Throws an exception if the buffer is empty.
Definition at line 160 of file tRingBuffer.h.
void icl_core::tRingBuffer< T >::SetCapacity | ( | size_type | capacity | ) | [inline] |
Changes the capacity of the ring buffer.
If the new capacity is less than the current buffer size, only the latest capacity elements are kept, the rest are destroyed.
Definition at line 196 of file tRingBuffer.h.
size_type icl_core::tRingBuffer< T >::Size | ( | ) | const [inline] |
Returns the current number of elements in the ring buffer.
Definition at line 176 of file tRingBuffer.h.
void icl_core::tRingBuffer< T >::Skip | ( | ) | [inline] |
Removes an element from the ring buffer without returning it.
Definition at line 144 of file tRingBuffer.h.
void icl_core::tRingBuffer< T >::Write | ( | const T & | val, |
bool | overwrite = false |
||
) | [inline] |
Adds an element to the ring buffer provided there is room.
If overwrite == false
, throws an exception if the element can not be added. If overwrite == true
, old elements are discarded to make room for new ones.
Definition at line 77 of file tRingBuffer.h.
const size_type icl_core::tRingBuffer< T >::cDEFAULT_CAPACITY = 32 [static] |
Definition at line 48 of file tRingBuffer.h.
std::vector<T> icl_core::tRingBuffer< T >::m_buffer [private] |
Definition at line 233 of file tRingBuffer.h.
size_type icl_core::tRingBuffer< T >::m_read [private] |
Definition at line 235 of file tRingBuffer.h.
size_type icl_core::tRingBuffer< T >::m_write [private] |
Definition at line 234 of file tRingBuffer.h.