Buffer 2d (No tests)

This commit is contained in:
IlushaShurupov 2023-07-15 13:25:10 +03:00 committed by Ilya Shurupov
parent ffa90323a4
commit 0ec44ee2d1
4 changed files with 97 additions and 1 deletions

View file

@ -0,0 +1,67 @@
#include "Buffer.hpp"
namespace tp {
template< typename tType, ualni tSizeX, ualni tSizeY >
using ConstSizeBuffer2D = ConstSizeBuffer<ConstSizeBuffer<tType, tSizeX>, tSizeY>;
template <typename tType>
class Buffer2D {
typedef SelCopyArg<tType> tTypeArg;
typedef Pair<uhalni, uhalni> Size;
Size mSize;
tType* mBuff = nullptr;
public:
Buffer2D() = default;
~Buffer2D() {
delete mBuff;
}
explicit Buffer2D(Pair<ualni, ualni> aSize) {
reserve(aSize);
}
[[nodiscard]] Pair<ualni, ualni> size() const {
return { mSize.x, mSize.y };
}
tType* getBuff() const {
return mBuff;
}
inline tType& get(uhalni x, uhalni y) {
DEBUG_ASSERT(x < mSize.x && y < mSize.y && x >= 0 && y >= 0)
return *(mBuff + mSize.x * y + x);
}
inline const tType& get(uhalni x, uhalni y) const {
DEBUG_ASSERT(x < mSize.x && y < mSize.y && x >= 0 && y >= 0)
return *(mBuff + mSize.x * y + x);
}
inline void set(uhalni x, uhalni y, tTypeArg value) {
DEBUG_ASSERT(x < mSize.x && y < mSize.y && x >= 0 && y >= 0)
*(mBuff + mSize.x * y + x) = value;
}
void reserve(Size newSize) {
if (mSize.x != newSize.x || mSize.y != newSize.y) {
delete mBuff;
mBuff = new tType[newSize.x * newSize.y];
mSize = newSize;
}
}
void assign(tType value) {
uhalni len = mSize.x * mSize.y;
for (uhalni i = 0; i < len; i++) {
mBuff[i] = value;
}
}
};
}

View file

@ -0,0 +1,27 @@
#include "Tests.hpp"
#include "Testing.hpp"
#include "Buffer2D.hpp"
#include <iostream>
using namespace tp;
const ualni size = 1000;
TEST_DEF_STATIC(Simple1) {
Buffer2D<int> buff;
buff.reserve({ 4, 4 });
buff.set( 2, 2, 5);
TEST(buff.get(2, 2) == 5);
}
TEST_DEF_STATIC(Simple2) {
// TEST(false);
}
TEST_DEF(Buffer2d) {
testSimple1();
testSimple2();
}

View file

@ -37,6 +37,7 @@ int main() {
testMap(); testMap();
testAvl(); testAvl();
testBuffer(); testBuffer();
testBuffer2d();
testModule.deinitialize(); testModule.deinitialize();
} }

View file

@ -72,3 +72,4 @@ void testList();
void testMap(); void testMap();
void testAvl(); void testAvl();
void testBuffer(); void testBuffer();
void testBuffer2d();