This class implements a queue of some type via a circular buffer. More...
#include "circBuffer.h"
Public Member Functions | |
const Thing & | back () const |
Returns a reference to the last item in the queue. More... | |
Thing & | back () |
Returns a reference to the last item in the queue. More... | |
void | clear () |
Removes all items from the queue. More... | |
bool | empty () const |
Returns true if the buffer is empty. More... | |
const Thing & | front () const |
Returns a reference to the first item in the queue. More... | |
Thing & | front () |
Returns a reference to the first item in the queue. More... | |
bool | full () const |
Returns true if the buffer is full; if this is true, push_back() will fail. More... | |
const Thing & | operator[] (int n) const |
Returns the nth element in the buffer. More... | |
Thing & | operator[] (int n) |
Returns the nth element in the buffer. More... | |
void | pop_front () |
Removes the first item from the buffer. More... | |
void | push_back (const Thing &t) |
Adds an item to the end of the buffer. More... | |
int | size () const |
Returns the number of items currently in the buffer. More... | |
This class implements a queue of some type via a circular buffer.
The circular buffer has the advantage that no synchronization is required when one process adds to the queue while another process extracts. It works for any kind of Thing that has a valid assignment operator and copy constructor defined.
Definition at line 27 of file circBuffer.h.
|
inline |
Returns a reference to the last item in the queue.
It is invalid to call this if empty() is true. It is safe to call this without synchronization primitives only from the writing thread: the thread that calls push_back().
Definition at line 147 of file circBuffer.I.
|
inline |
Returns a reference to the last item in the queue.
It is invalid to call this if empty() is true. It is safe to call this without synchronization primitives only from the writing thread: the thread that calls push_back().
Definition at line 159 of file circBuffer.I.
|
inline |
Removes all items from the queue.
Definition at line 184 of file circBuffer.I.
|
inline |
Returns true if the buffer is empty.
It is safe to call this without synchronization primitives from either the reader or the writer thread, but the result may vary without warning after the call.
Definition at line 54 of file circBuffer.I.
|
inline |
Returns a reference to the first item in the queue.
It is invalid to call this if empty() is true. It is safe to call this without synchronization only from the reading thread: the thread that calls pop_front().
Definition at line 78 of file circBuffer.I.
|
inline |
Returns a reference to the first item in the queue.
It is invalid to call this if empty() is true. It is safe to call this without synchronization only from the reading thread: the thread that calls pop_front().
Definition at line 90 of file circBuffer.I.
|
inline |
Returns true if the buffer is full; if this is true, push_back() will fail.
It is safe to call this without synchronization primitives from either the reader or the writer thread, but the result may vary without warning after the call.
Definition at line 66 of file circBuffer.I.
|
inline |
Returns the nth element in the buffer.
It is safe to call this without synchronization only from the reading thread: the thread that calls pop_front().
Definition at line 102 of file circBuffer.I.
|
inline |
Returns the nth element in the buffer.
It is safe to call this without synchronization only from the reading thread: the thread that calls pop_front().
Definition at line 114 of file circBuffer.I.
|
inline |
Removes the first item from the buffer.
Definition at line 125 of file circBuffer.I.
|
inline |
Adds an item to the end of the buffer.
This may fail if full() is true.
Definition at line 169 of file circBuffer.I.
|
inline |
Returns the number of items currently in the buffer.
This can safely be called without synchronization from either the reader or the writer thread, but the size may of course vary without warning after the call.
Definition at line 42 of file circBuffer.I.