Beamlib 3.1.2
This is the Beam C++ class library.
|
A template first in first out data buffer to store any object types. More...
#include <BFifo.h>
Public Member Functions | |
BFifo (BUInt size) | |
~BFifo () | |
void | clear () |
BUInt | size () |
Returns fifo size. More... | |
BError | resize (BUInt size) |
Resize FIFO, clears it as well. More... | |
BError | rebase () |
Rebases fifo so read pointer is at zero moving memory as needed. More... | |
BUInt | writeAvailable () |
How many items that can be written. More... | |
BUInt | writeAvailableChunk () |
How many items that can be written in a chunk. More... | |
BError | write (const Type v) |
Write a single item. More... | |
BError | write (const Type *data, BUInt num) |
Write a set of items. Can only write a maximum of writeAvailableChunk() to save going beyond end of FIFO buffer. More... | |
Type * | writeData () |
Returns a pointer to the data. More... | |
Type * | writeData (BUInt &num) |
Returns a pointer to the data and how many can be written in a chunk. More... | |
void | writeDone (BUInt num) |
Indicates when write is complete. More... | |
void | writeBackup (BUInt num) |
Backup, remove num items at end of fifo. Careful, make sure read is not already happening. More... | |
BUInt | readAvailable () |
How many items are available to read. More... | |
BUInt | readAvailableChunk () |
How many items are available to read in a chunk. More... | |
Type | read () |
Read one item. More... | |
BError | read (Type *data, BUInt num) |
Read a set of items. More... | |
Type * | readData () |
Returns a pointer to the data. More... | |
Type * | readData (BUInt &num) |
Returns a pointer to the data and how many can be read in a chunk. More... | |
void | readDone (BUInt num) |
Type | readPos (BUInt pos) |
Read item at given offset from current read position. More... | |
void | writePos (BUInt pos, const Type &v) |
Write item at given offset from current read position. More... | |
Type & | operator[] (int pos) |
Direct access to read samples in buffer. More... | |
Protected Attributes | |
BUInt | osize |
The size of the FIFO. More... | |
Type * | odata |
FIFO memory buffer. More... | |
volatile BUInt | owritePos |
The write pointer. More... | |
volatile BUInt | oreadPos |
The read pointer. More... | |
A template first in first out data buffer to store any object types.
This class stores data in a ring buffer. It can store up to (size - 1) items. It has separate read and write pointers. These are thread safe. Note the read and write routines do not bounds check the Fifo. You have to use readAvailable()/writeAvailable() functions to check how much can be read/written before performing the reads or writes.
void BFifo< Type >::clear | ( | ) |
Rebases fifo so read pointer is at zero moving memory as needed.
How many items that can be written in a chunk.
Write a set of items. Can only write a maximum of writeAvailableChunk() to save going beyond end of FIFO buffer.
Type * BFifo< Type >::writeData | ( | ) |
Returns a pointer to the data.
Returns a pointer to the data and how many can be written in a chunk.
Backup, remove num items at end of fifo. Careful, make sure read is not already happening.
How many items are available to read in a chunk.
Type BFifo< Type >::read | ( | ) |
Read one item.
Type * BFifo< Type >::readData | ( | ) |
Returns a pointer to the data.
Returns a pointer to the data and how many can be read in a chunk.
Read item at given offset from current read position.
Write item at given offset from current read position.
Type & BFifo< Type >::operator[] | ( | int | pos | ) |
Direct access to read samples in buffer.
|
protected |
FIFO memory buffer.