Circle buffer and png cleaning.

This commit is contained in:
James Grogan 2022-11-24 09:05:39 +00:00
parent 59cc910d58
commit 5400a232dd
13 changed files with 353 additions and 122 deletions

View file

@ -0,0 +1,64 @@
#pragma once
#include <vector>
#include <iostream>
template<typename T>
class CircleBuffer
{
public:
CircleBuffer(std::size_t size)
: mData(size)
{
}
void addItem(const T& item)
{
if (mEndPointer < mData.size())
{
mData[mEndPointer] = item;
mEndPointer++;
}
else
{
mData[mStartPointer] = item;
if (mStartPointer < mData.size() - 1)
{
mStartPointer++;
}
else
{
mStartPointer = 0;
}
}
}
std::size_t getNumItems() const
{
return mEndPointer;
}
const T& getItem(std::size_t index) const
{
if (mEndPointer < mData.size())
{
return mData[index];
}
else
{
auto offset = mStartPointer + index;
if (offset >= mData.size())
{
offset -= mData.size();
}
return mData[offset];
}
}
private:
std::size_t mStartPointer{0};
std::size_t mEndPointer{0};
std::vector<T> mData;
};