Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <ring.hpp>
- RingBuffer::RingBuffer(int32_t size):
- next_index(0),
- newest_gotten_index(0),
- size(size) {
- data = new float_t[size]();
- }
- RingBuffer::~RingBuffer() {
- delete[] data;
- }
- void RingBuffer::Add(float_t val) {
- data[next_index] = val;
- next_index++;
- if (next_index >= size) next_index = 0;
- }
- int32_t RingBuffer::Set(int32_t* offset) {
- int32_t _size;
- if (next_index >= newest_gotten_index) {
- _size = next_index - newest_gotten_index;
- } else {
- _size = (size - newest_gotten_index) + next_index;
- }
- *offset = newest_gotten_index;
- newest_gotten_index = next_index;
- return _size;
- }
- float_t RingBuffer::Get(int32_t index) {
- index %= size;
- return data[index];
- }
- void RingBuffer::Reset() {
- next_index = 0;
- newest_gotten_index = 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement