A circular buffer of fixed size (defined at construction-time), implemented with a std::vector as the underlying storage.
Definition at line 25 of file circular_buffer.h.
#include <mrpt/utils/circular_buffer.h>
Public Member Functions | |
circular_buffer (const size_t size) | |
void | push (T d) |
Insert a copy of the given element in the buffer. More... | |
void | push_ref (const T &d) |
Insert a reference of the given element in the buffer. More... | |
void | push_many (T *array_elements, size_t count) |
Insert an array of elements in the buffer. More... | |
T | pop () |
Retrieve an element from the buffer. More... | |
void | pop (T &out_val) |
Retrieve an element from the buffer. More... | |
void | pop_many (T *out_array, size_t count) |
Pop a number of elements into a user-provided array. More... | |
T | peek () const |
Peek (see without modifying) what is to be read from the buffer if pop() was to be called. More... | |
T | peek (size_t index) const |
Like peek(), but seeking ahead in the buffer (index=0 means the immediate next element, index=1 the following one, etc.) More... | |
void | peek_many (T *out_array, size_t count) const |
Like peek(), for multiple elements, storing a number of elements into a user-provided array. More... | |
size_t | size () const |
Return the number of elements available for read ("pop") in the buffer (this is NOT the maximum size of the internal buffer) More... | |
size_t | capacity () const |
Return the maximum capacity of the buffer. More... | |
size_t | available () const |
The maximum number of elements that can be written ("push") without rising an overflow error. More... | |
void | clear () |
Delete all the stored data, if any. More... | |
Private Attributes | |
std::vector< T > | m_data |
size_t | m_size |
not "const" to allow copy/move = ops. More... | |
size_t | m_next_read |
size_t | m_next_write |
|
inline |
Definition at line 34 of file circular_buffer.h.
|
inline |
The maximum number of elements that can be written ("push") without rising an overflow error.
Definition at line 161 of file circular_buffer.h.
Referenced by mrpt::hwdrivers::CHokuyoURG::assureBufferHasBytes(), mrpt::hwdrivers::CGPSInterface::doProcess(), and mrpt::comms::CInterfaceFTDI::Read().
|
inline |
Return the maximum capacity of the buffer.
Definition at line 157 of file circular_buffer.h.
Referenced by mrpt::hwdrivers::CHokuyoURG::assureBufferHasBytes(), and mrpt::utils::circular_buffer< uint8_t >::available().
|
inline |
Delete all the stored data, if any.
Definition at line 163 of file circular_buffer.h.
|
inline |
Peek (see without modifying) what is to be read from the buffer if pop() was to be called.
std::out_of_range | If the buffer is empty. |
Definition at line 109 of file circular_buffer.h.
Referenced by TEST().
|
inline |
Like peek(), but seeking ahead in the buffer (index=0 means the immediate next element, index=1 the following one, etc.)
std::out_of_range | If trying to read passing the number of available elements. |
Definition at line 119 of file circular_buffer.h.
|
inline |
Like peek(), for multiple elements, storing a number of elements into a user-provided array.
std::out_of_range | If the buffer has less elements than requested. |
Definition at line 130 of file circular_buffer.h.
Referenced by TEST().
|
inline |
Retrieve an element from the buffer.
std::out_of_range | If the buffer is empty. |
Definition at line 76 of file circular_buffer.h.
Referenced by mrpt::hwdrivers::CGPSInterface::parseBuffer(), mrpt::utils::circular_buffer< uint8_t >::pop_many(), mrpt::hwdrivers::CHokuyoURG::receiveResponse(), and TEST().
|
inline |
Retrieve an element from the buffer.
std::out_of_range | If the buffer is empty. |
Definition at line 89 of file circular_buffer.h.
|
inline |
Pop a number of elements into a user-provided array.
std::out_of_range | If the buffer has less elements than requested. |
Definition at line 101 of file circular_buffer.h.
Referenced by mrpt::comms::CInterfaceFTDI::Read(), and TEST().
|
inline |
Insert a copy of the given element in the buffer.
std::out_of_range | If the buffer run out of space. |
Definition at line 44 of file circular_buffer.h.
Referenced by mrpt::utils::circular_buffer< uint8_t >::push_many(), and TEST().
|
inline |
Insert an array of elements in the buffer.
std::out_of_range | If the buffer run out of space. |
Definition at line 68 of file circular_buffer.h.
Referenced by mrpt::hwdrivers::CHokuyoURG::assureBufferHasBytes(), mrpt::hwdrivers::CGPSInterface::doProcess(), mrpt::comms::CInterfaceFTDI::Read(), and TEST().
|
inline |
Insert a reference of the given element in the buffer.
std::out_of_range | If the buffer run out of space. |
Definition at line 56 of file circular_buffer.h.
|
inline |
Return the number of elements available for read ("pop") in the buffer (this is NOT the maximum size of the internal buffer)
Definition at line 146 of file circular_buffer.h.
Referenced by mrpt::hwdrivers::CHokuyoURG::assureBufferHasBytes(), mrpt::utils::circular_buffer< uint8_t >::available(), mrpt::hwdrivers::CGPSInterface::parseBuffer(), mrpt::utils::circular_buffer< uint8_t >::peek(), and mrpt::comms::CInterfaceFTDI::Read().
|
private |
Definition at line 28 of file circular_buffer.h.
Referenced by mrpt::utils::circular_buffer< uint8_t >::peek(), mrpt::utils::circular_buffer< uint8_t >::peek_many(), mrpt::utils::circular_buffer< uint8_t >::pop(), mrpt::utils::circular_buffer< uint8_t >::push(), and mrpt::utils::circular_buffer< uint8_t >::push_ref().
|
private |
Definition at line 31 of file circular_buffer.h.
Referenced by mrpt::utils::circular_buffer< uint8_t >::clear(), mrpt::utils::circular_buffer< uint8_t >::peek(), mrpt::utils::circular_buffer< uint8_t >::peek_many(), mrpt::utils::circular_buffer< uint8_t >::pop(), mrpt::utils::circular_buffer< uint8_t >::push(), mrpt::utils::circular_buffer< uint8_t >::push_ref(), and mrpt::utils::circular_buffer< uint8_t >::size().
|
private |
Definition at line 31 of file circular_buffer.h.
Referenced by mrpt::utils::circular_buffer< uint8_t >::clear(), mrpt::utils::circular_buffer< uint8_t >::peek(), mrpt::utils::circular_buffer< uint8_t >::peek_many(), mrpt::utils::circular_buffer< uint8_t >::pop(), mrpt::utils::circular_buffer< uint8_t >::push(), mrpt::utils::circular_buffer< uint8_t >::push_ref(), and mrpt::utils::circular_buffer< uint8_t >::size().
|
private |
not "const" to allow copy/move = ops.
Definition at line 30 of file circular_buffer.h.
Referenced by mrpt::utils::circular_buffer< uint8_t >::capacity(), mrpt::utils::circular_buffer< uint8_t >::circular_buffer(), mrpt::utils::circular_buffer< uint8_t >::peek(), mrpt::utils::circular_buffer< uint8_t >::peek_many(), mrpt::utils::circular_buffer< uint8_t >::pop(), mrpt::utils::circular_buffer< uint8_t >::push(), mrpt::utils::circular_buffer< uint8_t >::push_ref(), and mrpt::utils::circular_buffer< uint8_t >::size().
Page generated by Doxygen 1.8.14 for MRPT 1.9.9 Git: ae4571287 Thu Nov 23 00:06:53 2017 +0100 at dom oct 27 23:51:55 CET 2019 |