diff src/CircularBuffer.h @ 89:5ef334c782f3

Moved some parts of the algorithm from arrays needing lots of data moved around to lighted circular buffers
author Adam Stark <adamstark.uk@gmail.com>
date Fri, 04 Mar 2016 18:10:23 +0000
parents
children f6708e4c69f1
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/CircularBuffer.h	Fri Mar 04 18:10:23 2016 +0000
@@ -0,0 +1,46 @@
+//
+//  CircularBuffer.hpp
+//  BTrack Tests
+//
+//  Created by Adam Stark on 04/02/2016.
+//  Copyright © 2016 Adam Stark. All rights reserved.
+//
+
+#ifndef CircularBuffer_h
+#define CircularBuffer_h
+
+#include <vector>
+
+class CircularBuffer
+{
+public:
+    CircularBuffer() : writeIndex(0)
+    {
+        
+    }
+    
+    double &operator[](int i)
+    {
+        int index = (i + writeIndex) % buffer.size();
+        return buffer[index];
+    }
+        
+    void addSampleToEnd (double v)
+    {
+        buffer[writeIndex] = v;
+        writeIndex = (writeIndex + 1) % buffer.size();
+    }
+    
+    void resize(int size)
+    {
+        buffer.resize(size);
+        writeIndex = 0;
+    }
+    
+private:
+    
+    std::vector<double> buffer;
+    int writeIndex;
+};
+
+#endif /* CircularBuffer_hpp */