refactored
This commit is contained in:
@@ -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
|
||||||
@@ -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++
|
||||||
|
|
||||||
|
|||||||
@@ -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