From 24a887ec400222d8a4cfd729f620827795ac11c4 Mon Sep 17 00:00:00 2001 From: Jens Ahrensfeld Date: Sun, 26 Oct 2025 13:30:24 +0100 Subject: [PATCH] [RingBugffer]\n- added operators\n- Remove get() and put() --- delay/public/dsp_ringbuffer.hpp | 46 +++++++++++++++++++++++++++------ delay/tests/test_ringbuffer.cpp | 12 ++++++--- 2 files changed, 46 insertions(+), 12 deletions(-) diff --git a/delay/public/dsp_ringbuffer.hpp b/delay/public/dsp_ringbuffer.hpp index b68de20..cc9f98c 100644 --- a/delay/public/dsp_ringbuffer.hpp +++ b/delay/public/dsp_ringbuffer.hpp @@ -30,6 +30,7 @@ #include #include #include +#include #include "../../dsp_types.hpp" namespace dsp { @@ -37,8 +38,8 @@ namespace dsp { template class RingBuffer { - uint32_t m_index; - uint32_t m_mask; + uint m_index; + uint m_mask; size_t m_capacity; vector m_buffer; @@ -55,6 +56,12 @@ class RingBuffer { return m_buffer.capacity(); } + + void reset() + { + m_index = 0; + } + void resize(int capacity, T value=T()) { m_capacity = 1; @@ -68,17 +75,40 @@ class RingBuffer m_index = 0; } - void put(T sample) + T & operator[](int offset) { - m_index = (m_index + 1) & m_mask; - m_buffer[m_index] = sample; + return m_buffer[(m_index + (uint)offset) & m_mask]; } - T get(uint32_t delay = 0) + const T & operator[](int offset) const { - uint32_t i = (m_index - delay) & m_mask; - return m_buffer[i]; + return m_buffer[(m_index + (uint)offset) & m_mask]; } + + RingBuffer & operator ++() + { + ++m_index; + return *this; + } + + RingBuffer & operator +=(int i) + { + m_index += (uint)i; + return *this; + } + + RingBuffer & operator --() + { + --m_index; + return *this; + } + + RingBuffer & operator -=(int i) + { + m_index -= (uint)i; + return *this; + } + }; } diff --git a/delay/tests/test_ringbuffer.cpp b/delay/tests/test_ringbuffer.cpp index ae81c12..8fc7b69 100644 --- a/delay/tests/test_ringbuffer.cpp +++ b/delay/tests/test_ringbuffer.cpp @@ -6,12 +6,16 @@ int main() { dsp::RingBuffer buffer(10); printf("Buffer capacity = %zu\n", buffer.capacity()); - for (int i; i < 10; i++) + for (int i=0; i < 10; i++) { - buffer.put(i+1); - int v = buffer.get(2); - printf("i=%d: v=%d\n", i, v); + buffer[i] = i+1; + } + buffer += 5; + for (int i=-5; i < 5; i++) + { + int v = buffer[i]; + printf("i=%d: v=%d\n", i, v); }