adamstark@89: // adamstark@89: // CircularBuffer.hpp adamstark@89: // BTrack Tests adamstark@89: // adamstark@89: // Created by Adam Stark on 04/02/2016. adamstark@89: // Copyright © 2016 Adam Stark. All rights reserved. adamstark@89: // adamstark@89: adamstark@89: #ifndef CircularBuffer_h adamstark@89: #define CircularBuffer_h adamstark@89: adamstark@89: #include adamstark@89: adamstark@89: class CircularBuffer adamstark@89: { adamstark@89: public: adamstark@92: CircularBuffer() : writeIndex (0) adamstark@89: { adamstark@89: adamstark@89: } adamstark@89: adamstark@89: double &operator[](int i) adamstark@89: { adamstark@89: int index = (i + writeIndex) % buffer.size(); adamstark@89: return buffer[index]; adamstark@89: } adamstark@89: adamstark@89: void addSampleToEnd (double v) adamstark@89: { adamstark@89: buffer[writeIndex] = v; adamstark@89: writeIndex = (writeIndex + 1) % buffer.size(); adamstark@89: } adamstark@89: adamstark@89: void resize(int size) adamstark@89: { adamstark@92: buffer.resize (size); adamstark@89: writeIndex = 0; adamstark@89: } adamstark@89: adamstark@89: private: adamstark@89: adamstark@89: std::vector buffer; adamstark@89: int writeIndex; adamstark@89: }; adamstark@89: adamstark@89: #endif /* CircularBuffer_hpp */