blob: 2ec35dda99faa85055e451c83557ca22fd1c3dcb (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
#include "dynamic-array.hpp"
void inline DynArrayReserve(DynArrayBase *arr, int64_t count) {
if (arr->reservedSize >= count) return;
char *a = pke::PkeNew<char>(arr->elementSize * count);
if (arr->ptr != nullptr) {
std::memcpy(a, arr->ptr, arr->elementSize * arr->reservedSize);
pke::PkeDelete<char>(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<char *>(0xCAFEBABE)) return;
pke::PkeDelete<char>(arr->ptr, arr->elementSize * arr->reservedSize);
arr->ptr = reinterpret_cast<char *>(0xCAFEBABE);
}
|