XenevaOS
Loading...
Searching...
No Matches
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
libhelix::SingleBuffer< T > Class Template Reference

A simple Buffer implementation which just uses a (dynamically sized) array. More...

#include <Buffers.h>

Inheritance diagram for libhelix::SingleBuffer< T >:
Inheritance graph
[legend]
Collaboration diagram for libhelix::SingleBuffer< T >:
Collaboration graph
[legend]

Public Member Functions

 SingleBuffer (int size)
 Construct a new Single Buffer object.
 
 SingleBuffer ()
 Construct a new Single Buffer w/o allocating any memory.
 
void onExternalBufferRefilled (void *data, int len)
 notifies that the external buffer has been refilled
 
bool write (T sample) override
 write add an entry to the buffer
 
T read () override
 reads a single value
 
T peek () override
 peeks the actual entry from the buffer
 
int available () override
 provides the number of entries that are available to read
 
int availableForWrite () override
 provides the number of entries that are available to write
 
bool isFull () override
 checks if the buffer is full
 
int clearArray (int len) override
 consumes len bytes and moves current data to the beginning
 
T * address () override
 Provides address to beginning of the buffer.
 
T * data ()
 Provides address of actual data.
 
void reset () override
 clears the buffer
 
size_t setAvailable (size_t available_size)
 
size_t size () override
 
void resize (int size)
 
void setClearWithZero (bool flag)
 Sets the buffer to 0 on clear.
 
- Public Member Functions inherited from libhelix::BaseBuffer< T >
 BaseBuffer ()=default
 
virtual ~BaseBuffer ()=default
 
 BaseBuffer (BaseBuffer const &)=delete
 
BaseBuffer & operator= (BaseBuffer const &)=delete
 
virtual int readArray (T data[], int len)
 reads multiple values
 
virtual int writeArray (const T data[], int len)
 Fills the buffer data.
 
virtual int writeArrayOverwrite (const T data[], int len)
 Fills the buffer data and overwrites the oldest data if the buffer is full.
 
int readFrames (T data[][2], int len)
 reads multiple values for array of 2 dimensional frames
 
template<int rows, int channels>
int readFrames (T(&data)[rows][channels])
 
bool isEmpty ()
 
void clear ()
 same as reset
 

Protected Member Functions

void setWritePos (int pos)
 
- Protected Member Functions inherited from libhelix::BaseBuffer< T >
void setWritePos (int pos)
 

Protected Attributes

int max_size = 0
 
int current_read_pos = 0
 
int current_write_pos = 0
 
bool owns_buffer = true
 
bool is_clear_with_zero = false
 
Vector< T > buffer {0}
 

Detailed Description

template<typename T>
class libhelix::SingleBuffer< T >

A simple Buffer implementation which just uses a (dynamically sized) array.

Author
Phil Schatzmann

Constructor & Destructor Documentation

◆ SingleBuffer() [1/2]

template<typename T >
libhelix::SingleBuffer< T >::SingleBuffer ( int  size)
inline

Construct a new Single Buffer object.

Parameters
size

◆ SingleBuffer() [2/2]

template<typename T >
libhelix::SingleBuffer< T >::SingleBuffer ( )
inline

Construct a new Single Buffer w/o allocating any memory.

Member Function Documentation

◆ address()

template<typename T >
T * libhelix::SingleBuffer< T >::address ( )
inlineoverridevirtual

Provides address to beginning of the buffer.

Implements libhelix::BaseBuffer< T >.

◆ available()

template<typename T >
int libhelix::SingleBuffer< T >::available ( )
inlineoverridevirtual

provides the number of entries that are available to read

Implements libhelix::BaseBuffer< T >.

◆ availableForWrite()

template<typename T >
int libhelix::SingleBuffer< T >::availableForWrite ( )
inlineoverridevirtual

provides the number of entries that are available to write

Implements libhelix::BaseBuffer< T >.

◆ clearArray()

template<typename T >
int libhelix::SingleBuffer< T >::clearArray ( int  len)
inlineoverridevirtual

consumes len bytes and moves current data to the beginning

Reimplemented from libhelix::BaseBuffer< T >.

◆ data()

template<typename T >
T * libhelix::SingleBuffer< T >::data ( )
inline

Provides address of actual data.

◆ isFull()

template<typename T >
bool libhelix::SingleBuffer< T >::isFull ( )
inlineoverridevirtual

checks if the buffer is full

Implements libhelix::BaseBuffer< T >.

◆ onExternalBufferRefilled()

template<typename T >
void libhelix::SingleBuffer< T >::onExternalBufferRefilled ( void *  data,
int  len 
)
inline

notifies that the external buffer has been refilled

◆ peek()

template<typename T >
T libhelix::SingleBuffer< T >::peek ( )
inlineoverridevirtual

peeks the actual entry from the buffer

Implements libhelix::BaseBuffer< T >.

◆ read()

template<typename T >
T libhelix::SingleBuffer< T >::read ( )
inlineoverridevirtual

reads a single value

Implements libhelix::BaseBuffer< T >.

◆ reset()

template<typename T >
void libhelix::SingleBuffer< T >::reset ( )
inlineoverridevirtual

clears the buffer

Implements libhelix::BaseBuffer< T >.

◆ resize()

template<typename T >
void libhelix::SingleBuffer< T >::resize ( int  size)
inline

◆ setAvailable()

template<typename T >
size_t libhelix::SingleBuffer< T >::setAvailable ( size_t  available_size)
inline

If we load values directly into the address we need to set the avialeble size

◆ setClearWithZero()

template<typename T >
void libhelix::SingleBuffer< T >::setClearWithZero ( bool  flag)
inline

Sets the buffer to 0 on clear.

◆ setWritePos()

template<typename T >
void libhelix::SingleBuffer< T >::setWritePos ( int  pos)
inlineprotected

◆ size()

template<typename T >
size_t libhelix::SingleBuffer< T >::size ( )
inlineoverridevirtual

◆ write()

template<typename T >
bool libhelix::SingleBuffer< T >::write ( T  data)
inlineoverridevirtual

write add an entry to the buffer

Implements libhelix::BaseBuffer< T >.

Member Data Documentation

◆ buffer

template<typename T >
Vector<T> libhelix::SingleBuffer< T >::buffer {0}
protected

◆ current_read_pos

template<typename T >
int libhelix::SingleBuffer< T >::current_read_pos = 0
protected

◆ current_write_pos

template<typename T >
int libhelix::SingleBuffer< T >::current_write_pos = 0
protected

◆ is_clear_with_zero

template<typename T >
bool libhelix::SingleBuffer< T >::is_clear_with_zero = false
protected

◆ max_size

template<typename T >
int libhelix::SingleBuffer< T >::max_size = 0
protected

◆ owns_buffer

template<typename T >
bool libhelix::SingleBuffer< T >::owns_buffer = true
protected

The documentation for this class was generated from the following file: