00001
00002
00014 #ifndef CIRCULARBUFFER_H
00015 #define CIRCULARBUFFER_H
00016
00017 #include "NTuple.h"
00018
00019 namespace hippodraw {
00020
00028 class MDL_HIPPOPLOT_API CircularBuffer : public NTuple
00029 {
00030
00031 private:
00032
00035 unsigned int m_capacity;
00036
00039 unsigned int m_next_row;
00040
00044 bool m_has_filled;
00045
00048 CircularBuffer & operator= ( const CircularBuffer & rhs );
00049
00054 void incrementRowIndex ();
00055
00056 public:
00057
00060 CircularBuffer ( const std::string & name );
00061
00064 CircularBuffer ( const std::vector < std::string > & labels );
00065
00069 CircularBuffer ( const CircularBuffer & nt);
00070
00073 CircularBuffer ( unsigned int n );
00074
00077 CircularBuffer ();
00078
00081 virtual void clear();
00082
00089 virtual void addRow ( const std::vector<double> & v );
00090
00093 virtual void reserve ( unsigned int count );
00094
00095 };
00096
00097 }
00098
00099 #endif // CIRCULARBUFFER_H