summaryrefslogtreecommitdiff
path: root/src/array.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/array.hpp')
-rw-r--r--src/array.hpp89
1 files changed, 0 insertions, 89 deletions
diff --git a/src/array.hpp b/src/array.hpp
deleted file mode 100644
index 883d512..0000000
--- a/src/array.hpp
+++ /dev/null
@@ -1,89 +0,0 @@
-#ifndef PKE_ARRAY_HPP
-#define PKE_ARRAY_HPP
-
-#include "pk.h"
-
-#include <cstdint>
-#include <cstring>
-#include <type_traits>
-
-typedef uint32_t PkeArray_Count_T;
-
-struct PkeArray_Base {
- PkeArray_Count_T next = 0;
- PkeArray_Count_T reserved = 0;
- struct pk_membucket *bkt;
-};
-
-template<typename D>
-struct PkeArray : PkeArray_Base {
- using PkeArray_Base::next;
- using PkeArray_Base::reserved;
- using PkeArray_Base::bkt;
- D *data = nullptr;
-};
-
-template<typename D>
-void PkeArray_HardReset(PkeArray_Base *arrIn) {
- auto *arr = static_cast<PkeArray<D> *>(arrIn);
- arr->next = 0;
- arr->reserved = 0;
- arr->data = CAFE_BABE(D);
-}
-
-inline void PkeArray_SoftReset(PkeArray_Base *arrIn) {
- arrIn->next = 0;
-}
-
-template<typename D>
-inline void PkeArray_Add(PkeArray_Base *arrIn, const D &val) {
- auto *arr = static_cast<PkeArray<D> *>(arrIn);
- if (arr->reserved == arr->next) {
- long originalCount = arr->reserved;
- long diff = 0;
- if (arr->reserved == 0) {
- diff = 16;
- arr->reserved = 16;
- } else {
- arr->reserved *= 2.5;
- diff = arr->reserved - originalCount;
- }
- auto *newData = pk_new<D>(arr->reserved, arr->bkt);
- if constexpr (std::is_trivial<D>::value) {
- memset(newData + (sizeof(D) * originalCount), 0x00, sizeof(D) * diff);
- } else {
- for (int64_t i = originalCount; i < arr->reserved; ++i) {
- newData[i] = {};
- }
- }
- if (arr->data != nullptr && arr->data != CAFE_BABE(D)) {
- if constexpr (std::is_trivial<D>::value) {
- memcpy(newData, arr->data, sizeof(D) * originalCount);
- } else {
- for (int64_t i = 0; i < diff; ++i) {
- newData[i] = arr->data[i];
- }
- }
- pk_delete<D>(arr->data, originalCount, arr->bkt);
- }
- arr->data = newData;
- }
- if constexpr (std::is_assignable<D&, const D&>::value) {
- arr->data[arr->next++] = val;
- } else {
- memcpy(arr->data[arr->next++], val, sizeof(D));
- }
-}
-
-template<typename D, typename D2, typename F = bool(const D&, const D2&)>
-inline int64_t PkeArray_FindFirstIndex(PkeArray_Base *arrIn, F fn, const D2 &d2) {
- auto *arr = static_cast<PkeArray<D> *>(arrIn);
- for (int64_t i = 0; i < arr->next; ++i) {
- if (fn(arr->data[i], d2)) {
- return i;
- }
- }
- return -1;
-}
-
-#endif /* PKE_ARRAY_HPP */