From 7cd40ea0dd3659ee599dc842739b9e68286ea213 Mon Sep 17 00:00:00 2001 From: Jonathan Bradley Date: Sat, 12 Aug 2023 11:04:42 -0400 Subject: Add DynamicArray --- src/dynamic-array.cpp | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 src/dynamic-array.cpp (limited to 'src/dynamic-array.cpp') diff --git a/src/dynamic-array.cpp b/src/dynamic-array.cpp new file mode 100644 index 0000000..2ec35dd --- /dev/null +++ b/src/dynamic-array.cpp @@ -0,0 +1,21 @@ + +#include "dynamic-array.hpp" + +void inline DynArrayReserve(DynArrayBase *arr, int64_t count) { + if (arr->reservedSize >= count) return; + char *a = pke::PkeNew(arr->elementSize * count); + if (arr->ptr != nullptr) { + std::memcpy(a, arr->ptr, arr->elementSize * arr->reservedSize); + pke::PkeDelete(arr->ptr, arr->elementSize * arr->reservedSize); + } + arr->reservedSize = count; + arr->ptr = a; +} + +void inline DynArrayDestroy(DynArrayBase *arr) { + if (arr->ptr == nullptr) return; + if (arr->ptr == reinterpret_cast(0xCAFEBABE)) return; + pke::PkeDelete(arr->ptr, arr->elementSize * arr->reservedSize); + arr->ptr = reinterpret_cast(0xCAFEBABE); +} + -- cgit v1.2.3