Advertisement
Guest User

Untitled

a guest
Oct 22nd, 2019
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.82 KB | None | 0 0
  1. #include <ring.hpp>
  2.  
  3. RingBuffer::RingBuffer(int32_t size):
  4. next_index(0),
  5. newest_gotten_index(0),
  6. size(size) {
  7. data = new float_t[size]();
  8. }
  9.  
  10. RingBuffer::~RingBuffer() {
  11. delete[] data;
  12. }
  13.  
  14. void RingBuffer::Add(float_t val) {
  15. data[next_index] = val;
  16. next_index++;
  17. if (next_index >= size) next_index = 0;
  18. }
  19.  
  20. int32_t RingBuffer::Set(int32_t* offset) {
  21. int32_t _size;
  22. if (next_index >= newest_gotten_index) {
  23. _size = next_index - newest_gotten_index;
  24. } else {
  25. _size = (size - newest_gotten_index) + next_index;
  26. }
  27. *offset = newest_gotten_index;
  28. newest_gotten_index = next_index;
  29. return _size;
  30. }
  31.  
  32. float_t RingBuffer::Get(int32_t index) {
  33. index %= size;
  34. return data[index];
  35. }
  36.  
  37. void RingBuffer::Reset() {
  38. next_index = 0;
  39. newest_gotten_index = 0;
  40. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement