15 #ifndef ECL_CONTAINERS_PUSH_AND_POP_FIXED_HPP_    16 #define ECL_CONTAINERS_PUSH_AND_POP_FIXED_HPP_    24 #include <ecl/config/macros.hpp>    25 #include <ecl/errors/compile_time_assert.hpp>    26 #include <ecl/exceptions/standard_exception.hpp>    27 #include "../array.hpp"    41 namespace formatters {
    43 template <
typename Type, 
size_t N> 
class PushAndPopFormatter;
    75 template<
typename Type, std::
size_t Size=DynamicStorage>
    79   typedef formatters::PushAndPopFormatter<Type,Size> 
Formatter; 
   101   Type & operator[] (
int idx)
   103     return data[ ((follower+idx)%size_fifo) ];
   106   const Type & operator[] (
int idx)
 const   108     return data[ ((follower+idx)%size_fifo) ];
   111   void operator() (
const PushAndPop<Type,Size> & otherOne )
   113     leader = otherOne.leader;
   114     follower = otherOne.follower;
   115     for( 
int i=0; i<size_fifo; i++ )
   117       data[i] = otherOne.data[i];
   127   void push_back( 
const Type & datum )
   129     data[ leader++ ] = datum;
   131     if( leader == follower )
   134       follower %= size_fifo;
   142     Type value = data[follower++];
   143     follower %= size_fifo;
   147   void fill( 
const Type & d )
   149     for( 
unsigned int i=0; i<size_fifo; i++ ) data[i] = d;
   162   unsigned int size()
 const   164     if( leader > follower ) 
return leader - follower;
   165     else if( leader < follower ) 
return size_fifo-follower+leader;
   177     std::cout << 
"[Size|Leader|Follower]: " << size_fifo << 
"|" << leader << 
"|" << follower << 
std::endl;
   182   unsigned int size_fifo;
 
#define LOC
Stringify the line of code you are at. 
#define ecl_assert_throw(expression, exception)
Debug mode throw with a logical condition check. 
ecl_geometry_PUBLIC int size(const Trajectory2D &trajectory)
#define ecl_assert_throw_decl(exception)
Assure throw exception declaration. 
MatrixFormatter< Derived, Scalar > Formatter