Mercurial > hg > btrack
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 */