summaryrefslogtreecommitdiff
path: root/data_buffer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'data_buffer.cpp')
-rw-r--r--data_buffer.cpp25
1 files changed, 25 insertions, 0 deletions
diff --git a/data_buffer.cpp b/data_buffer.cpp
new file mode 100644
index 0000000..e691b97
--- /dev/null
+++ b/data_buffer.cpp
@@ -0,0 +1,25 @@
+#include "data_buffer.h"
+
+#include <cassert>
+#include <cstring>
+
+void DataBuffer::Expand(size_t new_size)
+{
+ 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;
+}