diff options
Diffstat (limited to 'src/data_buffer.cpp')
-rw-r--r-- | src/data_buffer.cpp | 29 |
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; +} |