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.
*/
#ifndef DSP_RINGBUFFER_H
#define DSP_RINGBUFFER_H
#ifndef DSP_BUFFER_H
#define DSP_BUFFER_H
#include <cstddef>
#include <math.h>
@@ -35,7 +35,7 @@
namespace dsp {
template <typename T>
class RingBuffer
class Buffer
{
uint m_index;
uint m_mask;
@@ -43,7 +43,7 @@ class RingBuffer
vector<T> m_buffer;
public:
RingBuffer(size_t capacity)
Buffer(size_t capacity)
: m_index(0)
, m_mask(0)
, m_capacity(0)
@@ -84,31 +84,35 @@ class RingBuffer
return m_buffer[(m_index + (uint)offset) & m_mask];
}
RingBuffer & operator ++()
Buffer & operator ++()
{
++m_index;
m_index &= m_mask;
return *this;
}
RingBuffer & operator +=(int i)
Buffer & operator +=(int i)
{
m_index += (uint)i;
m_index &= m_mask;
return *this;
}
RingBuffer & operator --()
Buffer & operator --()
{
--m_index;
m_index &= m_mask;
return *this;
}
RingBuffer & operator -=(int i)
Buffer & operator -=(int i)
{
m_index -= (uint)i;
m_index &= m_mask;
return *this;
}
};
}
#endif
#endif // DSP_BUFFER_H
+2 -2
View File
@@ -5,7 +5,7 @@ CC=clang
CCC=clang++
CXX=clang++
NAME := test_dsp_ringbuffer
NAME := test_dsp_buffer
CONFIG ?= debug
TARGET ?= $(NAME)
@@ -13,7 +13,7 @@ CXXFLAGS += -std=c++20
INCLUDES += -I $(realpath .) -I $(realpath ../../)
CXX_SRCS := test_ringbuffer.cpp
CXX_SRCS := test_buffer.cpp
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;
}