summaryrefslogtreecommitdiff
path: root/src/bucketed-array.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/bucketed-array.hpp')
-rw-r--r--src/bucketed-array.hpp28
1 files changed, 15 insertions, 13 deletions
diff --git a/src/bucketed-array.hpp b/src/bucketed-array.hpp
index b40251c..0f8b395 100644
--- a/src/bucketed-array.hpp
+++ b/src/bucketed-array.hpp
@@ -2,31 +2,33 @@
#define PKE_BUCKETED_ARRAY_HPP
#include <cstddef>
+#include <cassert>
-#include "memory.hpp"
+#include "vendor/pk.h"
-constexpr PkeHandleBucketIndex_T BucketContainerDefaultBucketCount = 16;
-constexpr PkeHandleItemIndex_T BucketContainerDefaultItemCount = 256;
+constexpr pk_handle_bucket_index_T BucketContainerDefaultBucketCount = 16;
+constexpr pk_handle_item_index_T BucketContainerDefaultItemCount = 256;
-template<typename T, typename CT = PkeHandle, PkeHandleBucketIndex_T BKT_CNT = BucketContainerDefaultBucketCount>
+template<typename T, typename CT = struct pk_handle, pk_handle_item_index_T BKT_CNT = BucketContainerDefaultBucketCount>
struct BucketContainer {
CT limits;
CT pkeHandle;
T* buckets[BKT_CNT];
};
-template<typename T, typename CT, PkeHandleBucketIndex_T BKT_CNT>
+template<typename T, typename CT, pk_handle_item_index_T BKT_CNT>
void Buckets_Init(BucketContainer<T, CT, BKT_CNT> &bktContainer, size_t maxItemCount = BucketContainerDefaultItemCount) {
bktContainer.limits.bucketIndex = BKT_CNT;
bktContainer.limits.itemIndex = maxItemCount;
- bktContainer.pkeHandle.hash = 0;
- for (PkeHandleBucketIndex_T i = 0; i < BKT_CNT; ++i) {
+ bktContainer.pkeHandle.bucketIndex = 0;
+ bktContainer.pkeHandle.itemIndex = 0;
+ for (pk_handle_item_index_T i = 0; i < BKT_CNT; ++i) {
bktContainer.buckets[i] = nullptr;
}
- bktContainer.buckets[0] = Pke_New<T>(maxItemCount);
+ bktContainer.buckets[0] = pk_new<T>(maxItemCount);
}
-template<typename T, typename CT, PkeHandleBucketIndex_T BKT_CNT>
+template<typename T, typename CT, pk_handle_item_index_T BKT_CNT>
inline CT Buckets_NewHandle(BucketContainer<T, CT, BKT_CNT> &bktContainer) {
CT returnValue = bktContainer.pkeHandle;
bktContainer.pkeHandle.itemIndex += 1;
@@ -36,15 +38,15 @@ inline CT Buckets_NewHandle(BucketContainer<T, CT, BKT_CNT> &bktContainer) {
assert(bktContainer.pkeHandle.bucketIndex < bktContainer.limits.bucketIndex);
}
if (bktContainer.pkeHandle.itemIndex == 0) {
- bktContainer.buckets[bktContainer.pkeHandle.bucketIndex] = Pke_New<T>(bktContainer.limits.itemIndex);
+ bktContainer.buckets[bktContainer.pkeHandle.bucketIndex] = pk_new<T>(bktContainer.limits.itemIndex);
}
return returnValue;
}
-template<typename T, typename CT, PkeHandleBucketIndex_T BKT_CNT>
+template<typename T, typename CT, pk_handle_item_index_T BKT_CNT>
static inline constexpr void Buckets_Destroy(BucketContainer<T, CT, BKT_CNT> &bktContainer) {
- for (PkeHandleBucketIndex_T i = 0; i <= bktContainer.pkeHandle.bucketIndex; ++i) {
- Pke_Delete<T>(bktContainer.buckets[i], bktContainer.limits.itemIndex);
+ for (pk_handle_item_index_T i = 0; i <= bktContainer.pkeHandle.bucketIndex; ++i) {
+ pk_delete<T>(bktContainer.buckets[i], bktContainer.limits.itemIndex);
bktContainer.buckets[i] = CAFE_BABE(T);
}
}