IT++ 4.3.1
itpp::Circular_Buffer< T > Class Template Reference

General circular buffer class. More...

#include <itpp/base/circular_buffer.h>

Public Member Functions

 Circular_Buffer ()
 Default constructor.
 
 Circular_Buffer (int n)
 Create a Circular_Buffer of size n.
 
 Circular_Buffer (const Circular_Buffer< T > &s)
 Create a copy of s.
 
virtual ~Circular_Buffer ()
 Default destructor.
 
void put (const T &in)
 Write the element in to the buffer.
 
void put (const Vec< T > &in)
 Write the vector of elements in to the circular buffer.
 
void put (const Array< T > &in)
 Write the vector of elements in to the circular buffer.
 
void get (T &out)
 Get the oldest element in the circular buffer.
 
get ()
 Get the oldest element in the circular buffer.
 
void get (Vec< T > &out, const int N=-1)
 Get the N oldest element in the circular buffer. N=-1 returns all elements in the buffer.
 
void get (Array< T > &out, const int N=-1)
 Get the N oldest element in the circular buffer. N=-1 returns all elements in the buffer.
 
void peek (T &out) const
 Peek at the oldest element in the circular buffer, without removing it.
 
peek () const
 Peek at the oldest element in the circular buffer, without removing it.
 
void peek (const int index, T &out) const
 Peek at the element with index index in the circular buffer, without removing it.
 
void peek (Vec< T > &out, const int N=-1) const
 Peek at the N first elements of the circular buffer, without removing them. N=-1 peeks all elements in the buffer.
 
void peek (const ivec &index, Vec< T > &out) const
 Peek at the elements with index index in the circular buffer, without removing them.
 
void peek (Array< T > &out, const int N=-1) const
 Peek at the N first elements of the circular buffer, without removing them. N=-1 peeks all elements in the buffer.
 
void peek (const ivec &index, Array< T > &out) const
 Peek at the elements with index index in the circular buffer, without removing them.
 
void peek_reverse (T &out) const
 Peek at the latest element in the circular buffer, without removing it.
 
peek_reverse () const
 Peek at the latest element in the circular buffer, without removing it.
 
void peek_reverse (Vec< T > &out, const int N=-1) const
 Peek at the N latest elements of the circular buffer in reverse order, without removing them. N=-1 returns all elements in the buffer.
 
void peek_reverse (Array< T > &out, const int N=-1) const
 Peek at the N latest elements of the circular buffer in reverse order, without removing them. N=-1 returns all elements in the buffer.
 
void clear ()
 Empty the circular buffer.
 
void operator= (const Circular_Buffer< T > &s)
 Assignment operator.
 
int size () const
 Returns the maximum number of data elements the circular buffer can store.
 
int nrof_elements () const
 Returns the number of data elements currently stored in the circular buffer.
 
void set_size (int n, bool copy=false)
 Resizing a Circular_Buffer<T>.
 

Detailed Description

template<class T>
class itpp::Circular_Buffer< T >

General circular buffer class.

This class is a general circular buffer class for arbitrary types.

For rarely used types you will need to instantiate the class by

template class Circular_Buffer<type>;
Circular_Buffer()
Default constructor.

The following example shows how to define a Circular_Buffer of doubles:

vec a = randn(3);
vec b = randn(8);
vec out_vec;
Array <double> out_array;
//Put the elements of a to the buffer
cb1.put(a);
//Vector output: Peek at the two oldest elements of the buffer (the two first extracted)
cb1.peek(out_vec,2);
cout << "peek(out_vec,2) = " << out_vec << ": display 2 first elements of the buffer, without affecting the content" << endl;
//Vector output: Peek at all elements of the buffer in reverse order
cb1.peek_reverse(out_vec);
cout << "peek_reverse(out_vec,-1) = " << out_vec << ": display buffer, without affecting the content" << endl;
//Array output: Peek at all elements of the buffer in reverse order
cb1.peek_reverse(out_array);
cout << "peek_reverse(out_array,-1) = " << out_array << ": display buffer, without affecting the content" << endl;
//Put the elements of \c b to the buffer
cb1.put(b);
//Extract the oldest element of the buffer
cb1.get(out_vec,1);
cout << "get(out_vec,1) = " << out_vec << endl ;
//Extract all element of the buffer
cb1.get(out_vec);
cout << "get(out_vec) = " << out_vec << endl ;
double randn(void)
Generates a random Gaussian (0,1) variable.
Definition random.h:831

Definition at line 92 of file circular_buffer.h.

Constructor & Destructor Documentation

◆ Circular_Buffer() [1/3]

template<class T>
itpp::Circular_Buffer< T >::Circular_Buffer ( )

Default constructor.

Definition at line 192 of file circular_buffer.h.

Referenced by Circular_Buffer(), and operator=().

◆ Circular_Buffer() [2/3]

template<class T>
itpp::Circular_Buffer< T >::Circular_Buffer ( int n)

Create a Circular_Buffer of size n.

Definition at line 202 of file circular_buffer.h.

◆ Circular_Buffer() [3/3]

template<class T>
itpp::Circular_Buffer< T >::Circular_Buffer ( const Circular_Buffer< T > & s)

Create a copy of s.

Definition at line 211 of file circular_buffer.h.

References Circular_Buffer().

◆ ~Circular_Buffer()

template<class T>
itpp::Circular_Buffer< T >::~Circular_Buffer ( )
virtual

Default destructor.

Definition at line 224 of file circular_buffer.h.

Member Function Documentation

◆ put() [1/3]

template<class T>
void itpp::Circular_Buffer< T >::put ( const T & in)

Write the element in to the buffer.

Definition at line 463 of file circular_buffer.h.

References get().

Referenced by set_size().

◆ put() [2/3]

template<class T>
void itpp::Circular_Buffer< T >::put ( const Vec< T > & in)

Write the vector of elements in to the circular buffer.

Definition at line 483 of file circular_buffer.h.

References get(), and itpp::Vec< Num_T >::size().

◆ put() [3/3]

template<class T>
void itpp::Circular_Buffer< T >::put ( const Array< T > & in)

Write the vector of elements in to the circular buffer.

Definition at line 505 of file circular_buffer.h.

References get(), and itpp::Array< T >::size().

◆ get() [1/4]

template<class T>
void itpp::Circular_Buffer< T >::get ( T & out)

Get the oldest element in the circular buffer.

Definition at line 230 of file circular_buffer.h.

References it_assert_debug.

Referenced by get(), put(), put(), and put().

◆ get() [2/4]

template<class T>
T itpp::Circular_Buffer< T >::get ( )

Get the oldest element in the circular buffer.

Definition at line 241 of file circular_buffer.h.

References get().

◆ get() [3/4]

template<class T>
void itpp::Circular_Buffer< T >::get ( Vec< T > & out,
const int N = -1 )

Get the N oldest element in the circular buffer. N=-1 returns all elements in the buffer.

Definition at line 250 of file circular_buffer.h.

References it_assert_debug, and itpp::Vec< Num_T >::set_size().

◆ get() [4/4]

template<class T>
void itpp::Circular_Buffer< T >::get ( Array< T > & out,
const int N = -1 )

Get the N oldest element in the circular buffer. N=-1 returns all elements in the buffer.

Definition at line 273 of file circular_buffer.h.

References it_assert_debug, and itpp::Array< T >::set_size().

◆ peek() [1/7]

template<class T>
void itpp::Circular_Buffer< T >::peek ( T & out) const

Peek at the oldest element in the circular buffer, without removing it.

Definition at line 296 of file circular_buffer.h.

References it_assert_debug.

Referenced by peek().

◆ peek() [2/7]

template<class T>
T itpp::Circular_Buffer< T >::peek ( ) const

Peek at the oldest element in the circular buffer, without removing it.

Definition at line 303 of file circular_buffer.h.

References peek().

◆ peek() [3/7]

template<class T>
void itpp::Circular_Buffer< T >::peek ( const int index,
T & out ) const

Peek at the element with index index in the circular buffer, without removing it.

Definition at line 312 of file circular_buffer.h.

References it_assert_debug.

◆ peek() [4/7]

template<class T>
void itpp::Circular_Buffer< T >::peek ( Vec< T > & out,
const int N = -1 ) const

Peek at the N first elements of the circular buffer, without removing them. N=-1 peeks all elements in the buffer.

Definition at line 319 of file circular_buffer.h.

References it_assert_debug, and itpp::Vec< Num_T >::set_size().

◆ peek() [5/7]

template<class T>
void itpp::Circular_Buffer< T >::peek ( const ivec & index,
Vec< T > & out ) const

Peek at the elements with index index in the circular buffer, without removing them.

Definition at line 341 of file circular_buffer.h.

References it_assert_debug, and itpp::Vec< Num_T >::set_size().

◆ peek() [6/7]

template<class T>
void itpp::Circular_Buffer< T >::peek ( Array< T > & out,
const int N = -1 ) const

Peek at the N first elements of the circular buffer, without removing them. N=-1 peeks all elements in the buffer.

Definition at line 352 of file circular_buffer.h.

References it_assert_debug, and itpp::Array< T >::set_size().

◆ peek() [7/7]

template<class T>
void itpp::Circular_Buffer< T >::peek ( const ivec & index,
Array< T > & out ) const

Peek at the elements with index index in the circular buffer, without removing them.

Definition at line 374 of file circular_buffer.h.

References it_assert_debug, and itpp::Array< T >::set_size().

◆ peek_reverse() [1/4]

template<class T>
void itpp::Circular_Buffer< T >::peek_reverse ( T & out) const

Peek at the latest element in the circular buffer, without removing it.

Definition at line 385 of file circular_buffer.h.

References it_assert_debug.

Referenced by peek_reverse(), and set_size().

◆ peek_reverse() [2/4]

template<class T>
T itpp::Circular_Buffer< T >::peek_reverse ( ) const

Peek at the latest element in the circular buffer, without removing it.

Definition at line 400 of file circular_buffer.h.

References peek_reverse().

◆ peek_reverse() [3/4]

template<class T>
void itpp::Circular_Buffer< T >::peek_reverse ( Vec< T > & out,
const int N = -1 ) const

Peek at the N latest elements of the circular buffer in reverse order, without removing them. N=-1 returns all elements in the buffer.

Definition at line 409 of file circular_buffer.h.

References it_assert_debug, and itpp::Vec< Num_T >::set_size().

◆ peek_reverse() [4/4]

template<class T>
void itpp::Circular_Buffer< T >::peek_reverse ( Array< T > & out,
const int N = -1 ) const

Peek at the N latest elements of the circular buffer in reverse order, without removing them. N=-1 returns all elements in the buffer.

Definition at line 436 of file circular_buffer.h.

References it_assert_debug, and itpp::Array< T >::set_size().

◆ clear()

template<class T>
void itpp::Circular_Buffer< T >::clear ( )

Empty the circular buffer.

Definition at line 526 of file circular_buffer.h.

Referenced by set_size().

◆ operator=()

template<class T>
void itpp::Circular_Buffer< T >::operator= ( const Circular_Buffer< T > & s)

Assignment operator.

Definition at line 563 of file circular_buffer.h.

References Circular_Buffer(), and set_size().

◆ size()

template<class T>
int itpp::Circular_Buffer< T >::size ( ) const
inline

Returns the maximum number of data elements the circular buffer can store.

Definition at line 168 of file circular_buffer.h.

◆ nrof_elements()

template<class T>
int itpp::Circular_Buffer< T >::nrof_elements ( ) const
inline

Returns the number of data elements currently stored in the circular buffer.

Definition at line 171 of file circular_buffer.h.

◆ set_size()

template<class T>
void itpp::Circular_Buffer< T >::set_size ( int n,
bool copy = false )

Resizing a Circular_Buffer<T>.

Definition at line 574 of file circular_buffer.h.

References clear(), peek_reverse(), and put().

Referenced by operator=().


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