BTrack - A Real-Time Beat Tracker
Loading...
Searching...
No Matches
CircularBuffer.h
Go to the documentation of this file.
1//=======================================================================
20//=======================================================================
21
22#ifndef CircularBuffer_h
23#define CircularBuffer_h
24
25#include <vector>
26
27//=======================================================================
34{
35public:
36
39 : writeIndex (0)
40 {
41
42 }
43
45 double &operator[] (int i)
46 {
47 int index = (i + writeIndex) % buffer.size();
48 return buffer[index];
49 }
50
52 void addSampleToEnd (double v)
53 {
54 buffer[writeIndex] = v;
55 writeIndex = (writeIndex + 1) % buffer.size();
56 }
57
59 void resize (int size)
60 {
61 buffer.resize (size);
62 std::fill (buffer.begin(), buffer.end(), 0.0);
63 writeIndex = 0;
64 }
65
67 int size()
68 {
69 return static_cast<int> (buffer.size());
70 }
71
72private:
73
74 std::vector<double> buffer;
75 int writeIndex;
76};
77
78#endif /* CircularBuffer_hpp */
Definition CircularBuffer.h:34
void resize(int size)
Definition CircularBuffer.h:59
double & operator[](int i)
Definition CircularBuffer.h:45
CircularBuffer()
Definition CircularBuffer.h:38
void addSampleToEnd(double v)
Definition CircularBuffer.h:52
int size()
Definition CircularBuffer.h:67