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.
References mrpt::utils::circular_buffer< T >::m_size.
|
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.
References mrpt::utils::circular_buffer< T >::capacity(), and mrpt::utils::circular_buffer< T >::size().
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.
References mrpt::utils::circular_buffer< T >::m_size.
Referenced by mrpt::hwdrivers::CHokuyoURG::assureBufferHasBytes(), and mrpt::utils::circular_buffer< T >::available().

|
inline |
Delete all the stored data, if any.
Definition at line 163 of file circular_buffer.h.
References mrpt::utils::circular_buffer< T >::m_next_read, and mrpt::utils::circular_buffer< T >::m_next_write.
|
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.
References mrpt::utils::circular_buffer< T >::m_data, mrpt::utils::circular_buffer< T >::m_next_read, and mrpt::utils::circular_buffer< T >::m_next_write.
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.
References mrpt::utils::circular_buffer< T >::m_data, mrpt::utils::circular_buffer< T >::m_next_read, mrpt::utils::circular_buffer< T >::m_size, and mrpt::utils::circular_buffer< T >::size().

|
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.
References mrpt::utils::circular_buffer< T >::m_data, mrpt::utils::circular_buffer< T >::m_next_read, mrpt::utils::circular_buffer< T >::m_next_write, mrpt::utils::circular_buffer< T >::m_size, and val.
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.
References mrpt::utils::circular_buffer< T >::m_data, mrpt::utils::circular_buffer< T >::m_next_read, mrpt::utils::circular_buffer< T >::m_next_write, and mrpt::utils::circular_buffer< T >::m_size.
Referenced by mrpt::hwdrivers::CGPSInterface::parseBuffer(), mrpt::utils::circular_buffer< 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.
References mrpt::utils::circular_buffer< T >::m_data, mrpt::utils::circular_buffer< T >::m_next_read, mrpt::utils::circular_buffer< T >::m_next_write, and mrpt::utils::circular_buffer< T >::m_size.
|
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.
References mrpt::utils::circular_buffer< T >::pop().
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.
References mrpt::utils::circular_buffer< T >::m_data, mrpt::utils::circular_buffer< T >::m_next_read, mrpt::utils::circular_buffer< T >::m_next_write, and mrpt::utils::circular_buffer< T >::m_size.
Referenced by mrpt::utils::circular_buffer< 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.
References mrpt::utils::circular_buffer< T >::push().
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.
References mrpt::utils::circular_buffer< T >::m_data, mrpt::utils::circular_buffer< T >::m_next_read, mrpt::utils::circular_buffer< T >::m_next_write, and mrpt::utils::circular_buffer< T >::m_size.
|
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.
References mrpt::utils::circular_buffer< T >::m_next_read, mrpt::utils::circular_buffer< T >::m_next_write, and mrpt::utils::circular_buffer< T >::m_size.
Referenced by mrpt::hwdrivers::CHokuyoURG::assureBufferHasBytes(), mrpt::utils::circular_buffer< T >::available(), mrpt::hwdrivers::CGPSInterface::parseBuffer(), mrpt::utils::circular_buffer< T >::peek(), and mrpt::comms::CInterfaceFTDI::Read().

|
private |
|
private |
Definition at line 31 of file circular_buffer.h.
Referenced by mrpt::utils::circular_buffer< T >::clear(), mrpt::utils::circular_buffer< T >::peek(), mrpt::utils::circular_buffer< T >::peek_many(), mrpt::utils::circular_buffer< T >::pop(), mrpt::utils::circular_buffer< T >::push(), mrpt::utils::circular_buffer< T >::push_ref(), and mrpt::utils::circular_buffer< T >::size().
|
private |
Definition at line 31 of file circular_buffer.h.
Referenced by mrpt::utils::circular_buffer< T >::clear(), mrpt::utils::circular_buffer< T >::peek(), mrpt::utils::circular_buffer< T >::peek_many(), mrpt::utils::circular_buffer< T >::pop(), mrpt::utils::circular_buffer< T >::push(), mrpt::utils::circular_buffer< T >::push_ref(), and mrpt::utils::circular_buffer< 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< T >::capacity(), mrpt::utils::circular_buffer< T >::circular_buffer(), mrpt::utils::circular_buffer< T >::peek(), mrpt::utils::circular_buffer< T >::peek_many(), mrpt::utils::circular_buffer< T >::pop(), mrpt::utils::circular_buffer< T >::push(), mrpt::utils::circular_buffer< T >::push_ref(), and mrpt::utils::circular_buffer< T >::size().
| Page generated by Doxygen 1.9.1 for MRPT 1.9.9 Git: 63ea9d1f1 Thu Nov 23 00:06:53 2017 +0100 at mar 26 may 2026 12:19:29 CEST |