IT++ Logo
Public Member Functions | List of all members
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>;

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;
Circular_Buffer<double> cb1(10);
//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 ;

Definition at line 92 of file circular_buffer.h.


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

Generated on Sat May 25 2013 16:32:29 for IT++ by Doxygen 1.8.2