CircularBuffer.cxx
Go to the documentation of this file.
1 
12 #include "CircularBuffer.h"
13 
14 #include <stdexcept>
15 
16 using std::runtime_error;
17 using std::string;
18 
19 using namespace hippodraw;
20 
21 CircularBuffer::CircularBuffer ( const std::string & filename )
22  : NTuple ( filename ),
23  m_capacity ( 0 ),
24  m_next_row ( 0 ),
25  m_has_filled ( false )
26 {
27 }
28 
29 CircularBuffer::CircularBuffer ( const std::vector< std::string > & v )
30  : NTuple ( v ),
31  m_capacity ( 0 ),
32  m_next_row ( 0 ),
33  m_has_filled ( false )
34 {
35 }
36 
38  : NTuple ( nt ),
39  m_capacity ( nt.m_capacity ),
40  m_next_row ( nt.m_next_row ),
41  m_has_filled ( nt.m_has_filled )
42 {
43 }
44 
46  : NTuple ( n ),
47  m_capacity ( 0 ),
48  m_next_row ( 0 ),
49  m_has_filled ( false )
50 {
51 }
52 
54  : NTuple (),
55  m_capacity ( 0 ),
56  m_next_row ( 0 ),
57  m_has_filled ( false )
58 {
59 }
60 
62 {
63  m_next_row = 0;
64  m_has_filled = false;
65 
66  NTuple::clear ();
67 }
68 
69 void
72 {
73  m_next_row++;
74  if ( m_next_row == m_capacity ) {
75  m_next_row = 0;
76  m_has_filled = true;
77  }
78 }
79 
80 void
82 addRow ( const std::vector< double > & v )
83 {
84  if ( m_has_filled ) {
86  }
87  else {
88  NTuple::addRow ( v );
89  }
90 
92 }
93 
94 void CircularBuffer::reserve ( unsigned int count )
95 {
96  if ( empty () == false ) {
97  const string what ( "CircularBuffer: Attempt to set the capacity of "
98  "non-empty buffer is not allowed" );
99  throw runtime_error ( what );
100  }
101 
102  NTuple::reserve ( count );
103  m_capacity = count;
104 }

Generated for HippoDraw Class Library by doxygen