rtmlib
Public Types | Public Member Functions | Public Attributes | Private Member Functions | Private Attributes | List of all members
RTML_buffer< T, N > Class Template Reference

#include <circularbuffer.h>

Public Types

enum  error_t { OK = 0, EMPTY, OVERFLOW, OUT_OF_BOUND }
 
typedef T event_t
 

Public Member Functions

 RTML_buffer ()
 
error_t push (const event_t &)
 
error_t pull (event_t &)
 
error_t pop (event_t &)
 
error_t read (event_t &, size_t) const
 
error_t state (size_t &, size_t &, timespanw &) const
 
size_t length () const
 
void debug () const
 

Public Attributes

const size_t size = N
 

Private Member Functions

size_t & operator++ ()
 
size_t operator++ (int)
 
size_t & operator-- ()
 
size_t operator-- (int)
 

Private Attributes

array [N+1]
 
size_t top
 
size_t bottom
 
bool writer
 

Detailed Description

template<typename T, size_t N>
class RTML_buffer< T, N >

RTML_buffer implements a circular buffer. This buffer is the support for RTML_reader and RTML_writer classes. For instance, The monitor uses an instance of RTML_reader and SUO uses RTML_writer.

See also
Event
RTML_reader
RTML_monitor
Author
André Pedro
Date

Member Typedef Documentation

◆ event_t

template<typename T , size_t N>
typedef T RTML_buffer< T, N >::event_t

Member Enumeration Documentation

◆ error_t

template<typename T , size_t N>
enum RTML_buffer::error_t
Enumerator
OK 
EMPTY 
OVERFLOW 
OUT_OF_BOUND 

Constructor & Destructor Documentation

◆ RTML_buffer()

template<typename T , size_t N>
RTML_buffer< T, N >::RTML_buffer ( )

Instantiates a new RTML_buffer.

Member Function Documentation

◆ debug()

template<typename T , size_t N>
void RTML_buffer< T, N >::debug ( ) const

Print buffer into the stdout

◆ length()

template<typename T , size_t N>
size_t RTML_buffer< T, N >::length ( ) const

Get buffer length

Returns
the template parameter N.

◆ operator++() [1/2]

template<typename T , size_t N>
size_t& RTML_buffer< T, N >::operator++ ( )
inlineprivate

Increment top of the buffer (++ is just a mnemonic)

◆ operator++() [2/2]

template<typename T , size_t N>
size_t RTML_buffer< T, N >::operator++ ( int  )
inlineprivate

Increment top of the buffer (++ is just a mnemonic)

◆ operator--() [1/2]

template<typename T , size_t N>
size_t& RTML_buffer< T, N >::operator-- ( )
inlineprivate

Increment bottom of the buffer (– is just a mnemonic)

◆ operator--() [2/2]

template<typename T , size_t N>
size_t RTML_buffer< T, N >::operator-- ( int  )
inlineprivate

Increment bottom of the buffer (– is just a mnemonic)

◆ pop()

template<typename T , size_t N>
RTML_buffer< T, N >::error_t RTML_buffer< T, N >::pop ( event_t event)

Pop event

◆ pull()

template<typename T , size_t N>
RTML_buffer< T, N >::error_t RTML_buffer< T, N >::pull ( event_t event)

Pull a node in FIFO order

◆ push()

template<typename T , size_t N>
RTML_buffer< T, N >::error_t RTML_buffer< T, N >::push ( const event_t node)

Push a node

◆ read()

template<typename T , size_t N>
RTML_buffer< T, N >::error_t RTML_buffer< T, N >::read ( event_t event,
size_t  index 
) const

Get node at index

◆ state()

template<typename T , size_t N>
RTML_buffer< T, N >::error_t RTML_buffer< T, N >::state ( size_t &  b,
size_t &  t,
timespanw ts 
) const

Member Data Documentation

◆ array

template<typename T , size_t N>
T RTML_buffer< T, N >::array[N+1]
private

The T buffer where data is kept. The size is defined via template parameter N which avoids dynamic memory usage.

See also
T

◆ bottom

template<typename T , size_t N>
size_t RTML_buffer< T, N >::bottom
private

The bottom of the circular buffer

◆ size

template<typename T , size_t N>
const size_t RTML_buffer< T, N >::size = N

◆ top

template<typename T , size_t N>
size_t RTML_buffer< T, N >::top
private

The circular buffer contains a top and a bottom

◆ writer

template<typename T , size_t N>
bool RTML_buffer< T, N >::writer
private

The writer flag that indicates if a writer has been attached.


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