refactored

This commit is contained in:
2025-10-27 12:41:42 +01:00
parent c97e62b9fb
commit 75c47de5c5
4 changed files with 52 additions and 34 deletions
+13 -9
View File
@@ -23,8 +23,8 @@
* Author Jens Ahrensfeld on 26.10.2025. * Author Jens Ahrensfeld on 26.10.2025.
*/ */
#ifndef DSP_RINGBUFFER_H #ifndef DSP_BUFFER_H
#define DSP_RINGBUFFER_H #define DSP_BUFFER_H
#include <cstddef> #include <cstddef>
#include <math.h> #include <math.h>
@@ -35,7 +35,7 @@
namespace dsp { namespace dsp {
template <typename T> template <typename T>
class RingBuffer class Buffer
{ {
uint m_index; uint m_index;
uint m_mask; uint m_mask;
@@ -43,7 +43,7 @@ class RingBuffer
vector<T> m_buffer; vector<T> m_buffer;
public: public:
RingBuffer(size_t capacity) Buffer(size_t capacity)
: m_index(0) : m_index(0)
, m_mask(0) , m_mask(0)
, m_capacity(0) , m_capacity(0)
@@ -84,31 +84,35 @@ class RingBuffer
return m_buffer[(m_index + (uint)offset) & m_mask]; return m_buffer[(m_index + (uint)offset) & m_mask];
} }
RingBuffer & operator ++() Buffer & operator ++()
{ {
++m_index; ++m_index;
m_index &= m_mask;
return *this; return *this;
} }
RingBuffer & operator +=(int i) Buffer & operator +=(int i)
{ {
m_index += (uint)i; m_index += (uint)i;
m_index &= m_mask;
return *this; return *this;
} }
RingBuffer & operator --() Buffer & operator --()
{ {
--m_index; --m_index;
m_index &= m_mask;
return *this; return *this;
} }
RingBuffer & operator -=(int i) Buffer & operator -=(int i)
{ {
m_index -= (uint)i; m_index -= (uint)i;
m_index &= m_mask;
return *this; return *this;
} }
}; };
} }
#endif #endif // DSP_BUFFER_H
+2 -2
View File
@@ -5,7 +5,7 @@ CC=clang
CCC=clang++ CCC=clang++
CXX=clang++ CXX=clang++
NAME := test_dsp_ringbuffer NAME := test_dsp_buffer
CONFIG ?= debug CONFIG ?= debug
TARGET ?= $(NAME) TARGET ?= $(NAME)
@@ -13,7 +13,7 @@ CXXFLAGS += -std=c++20
INCLUDES += -I $(realpath .) -I $(realpath ../../) INCLUDES += -I $(realpath .) -I $(realpath ../../)
CXX_SRCS := test_ringbuffer.cpp CXX_SRCS := test_buffer.cpp
LIBS := -lstdc++ LIBS := -lstdc++
+37
View File
@@ -0,0 +1,37 @@
#include <algorithm>
#include <delay/buffer.hpp>
#include <cstdio>
#include <ranges>
#include <iostream>
void print(std::ranges::input_range auto&& range)
{
for(const auto&i : range)
{
std::cout << i << std::endl;
}
}
int main()
{
dsp::Buffer<int> buffer(10);
printf("Buffer capacity = %zu\n", buffer.capacity());
for (int i=0; i < 10; i++)
{
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);
}
std::vector<int> numbers{1, 2, 3, 4, 5};
auto v{std::views::take(numbers, 3)};
print<>(v);
return 0;
}
-23
View File
@@ -1,23 +0,0 @@
#include <delay/ringbuffer.hpp>
#include <cstdio>
int main()
{
dsp::RingBuffer<int> buffer(10);
printf("Buffer capacity = %zu\n", buffer.capacity());
for (int i=0; i < 10; i++)
{
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);
}
return 0;
}