summaryrefslogtreecommitdiff
path: root/src/data_buffer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/data_buffer.cpp')
-rw-r--r--src/data_buffer.cpp29
1 files changed, 29 insertions, 0 deletions
diff --git a/src/data_buffer.cpp b/src/data_buffer.cpp
new file mode 100644
index 0000000..33cb0b3
--- /dev/null
+++ b/src/data_buffer.cpp
@@ -0,0 +1,29 @@
+/* SPDX-License-Identifier: Unlicense
+ */
+
+#include "data_buffer.h"
+
+#include <cassert>
+#include <cstring>
+
+void DataBuffer::Expand(size_t new_size)
+{
+ assert(buffer);
+ if (new_size <= buffer_size) {
+ return;
+ }
+ uint8_t *new_buffer{new uint8_t[new_size]};
+ assert(new_buffer);
+ memcpy(new_buffer, buffer, occupied_size);
+ delete [] buffer;
+ buffer = new_buffer;
+ buffer_size = new_size;
+}
+
+DataBuffer::~DataBuffer()
+{
+ delete [] buffer;
+ buffer = nullptr;
+ buffer_size = 0;
+ occupied_size = 0;
+}