00001 /* -*- c++ -*- */ 00002 00014 #ifndef CIRCULARBUFFER_H 00015 #define CIRCULARBUFFER_H 00016 00017 #include "NTuple.h" 00018 00026 class MDL_HIPPOPLOT_API CircularBuffer : public NTuple 00027 { 00028 00029 private: 00030 00033 unsigned int m_capacity; 00034 00037 unsigned int m_next_row; 00038 00042 bool m_has_filled; 00043 00046 CircularBuffer & operator= ( const CircularBuffer & rhs ); 00047 00052 void incrementRowIndex (); 00053 00054 public: 00055 00058 CircularBuffer ( const std::string & name ); 00059 00062 CircularBuffer ( const std::vector < std::string > & labels ); 00063 00067 CircularBuffer ( const CircularBuffer & nt); 00068 00071 CircularBuffer ( unsigned int n ); 00072 00075 CircularBuffer (); 00076 00079 virtual void clear(); 00080 00087 virtual void addRow ( const std::vector<double> & v ); 00088 00091 virtual void reserve ( unsigned int count ); 00092 00093 }; 00094 00095 #endif // CIRCULARBUFFER_H