refactored
This commit is contained in:
@@ -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
|
||||
@@ -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++
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
Reference in New Issue
Block a user