- added MultiBuffer
- improved tests
This commit is contained in:
+41
-4
@@ -31,6 +31,7 @@
|
||||
#include <stdint.h>
|
||||
#include <sys/types.h>
|
||||
#include <dsp_types.hpp>
|
||||
#include <iostream>
|
||||
|
||||
namespace dsp {
|
||||
|
||||
@@ -41,7 +42,7 @@ class Buffer
|
||||
uint m_mask;
|
||||
size_t m_capacity;
|
||||
vector<T> m_buffer;
|
||||
|
||||
|
||||
public:
|
||||
Buffer(size_t capacity)
|
||||
: m_index(0)
|
||||
@@ -75,13 +76,13 @@ class Buffer
|
||||
}
|
||||
|
||||
T & operator[](int offset)
|
||||
{
|
||||
return m_buffer[(m_index + (uint)offset) & m_mask];
|
||||
{
|
||||
return at(offset);
|
||||
}
|
||||
|
||||
const T & operator[](int offset) const
|
||||
{
|
||||
return m_buffer[(m_index + (uint)offset) & m_mask];
|
||||
return at(offset);
|
||||
}
|
||||
|
||||
Buffer & operator ++()
|
||||
@@ -112,7 +113,43 @@ class Buffer
|
||||
return *this;
|
||||
}
|
||||
|
||||
typedef std::vector<T>::iterator iterator;
|
||||
typedef std::vector<T>::const_iterator const_iterator;
|
||||
iterator begin()
|
||||
{
|
||||
return m_buffer.begin();
|
||||
}
|
||||
|
||||
iterator end()
|
||||
{
|
||||
return m_buffer.end();
|
||||
}
|
||||
|
||||
const_iterator begin() const
|
||||
{
|
||||
return m_buffer.begin();
|
||||
}
|
||||
|
||||
const_iterator end() const
|
||||
{
|
||||
return m_buffer.end();
|
||||
}
|
||||
|
||||
protected:
|
||||
virtual T & at(int offset)
|
||||
{
|
||||
int i = (m_index + (uint)offset) & m_mask;
|
||||
return m_buffer[i];
|
||||
}
|
||||
|
||||
virtual const T & at(int offset) const
|
||||
{
|
||||
return at(offset);
|
||||
}
|
||||
|
||||
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
#endif // DSP_BUFFER_H
|
||||
|
||||
Reference in New Issue
Block a user