From e29328a0ddbd9688abde6460f9c6db22f574b4bb Mon Sep 17 00:00:00 2001 From: IlushaShurupov Date: Wed, 5 Jul 2023 19:36:11 +0300 Subject: [PATCH] Buffer append buff --- Containers/public/Buffer.hpp | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/Containers/public/Buffer.hpp b/Containers/public/Buffer.hpp index 4c63166..1c9d3bf 100644 --- a/Containers/public/Buffer.hpp +++ b/Containers/public/Buffer.hpp @@ -90,7 +90,7 @@ namespace tp { Buffer& operator=(const Buffer& in) { if (this == &in) return *this; - ~Buffer(); + this->~Buffer(); new (this) Buffer(in); return *this; } @@ -156,6 +156,16 @@ namespace tp { mLoad++; } + void append(const Buffer& in) { + if (!in.mLoad) return; + auto newLoad = mLoad + in.mLoad; + auto newSize = mSize; + while (newLoad >= newSize) newSize = tResizePolicy(newSize); + if (newSize != mSize) resizeBuffer(newSize); + for (auto i = mLoad; i < newLoad; i++) new (&mBuff[i]) tType(in.mBuff[i - mLoad]); + mLoad = newLoad; + } + void pop() { DEBUG_ASSERT(mLoad) mBuff[mLoad].~tType(); @@ -165,6 +175,7 @@ namespace tp { if (prevSize > mLoad) resizeBuffer(prevSize); } + private: void resizeBuffer(ualni newSize) { DEBUG_ASSERT(newSize >= mLoad)