From 8941504bc66176540f71510f393aeabe382594cb Mon Sep 17 00:00:00 2001 From: Jonathan Bradley Date: Fri, 1 Sep 2023 10:07:29 -0400 Subject: add bucket container struct --- src/memory.hpp | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/memory.hpp b/src/memory.hpp index 329be51..8e733bf 100644 --- a/src/memory.hpp +++ b/src/memory.hpp @@ -13,6 +13,14 @@ struct MemBucket; +template +struct BucketContainer { + uint64_t incrementer; + CT bucketCounter{0}; + CT itemCounter{0}; + T *buckets = nullptr; +}; + void *Pke_New(std::size_t sz); void *Pke_New(std::size_t sz, MemBucket *bkt); void Pke_Delete(const void *ptr, std::size_t sz); @@ -39,6 +47,13 @@ inline void Pke_Delete(const void *ptr, long count) { return Pke_Delete(ptr, sizeof(T) * count); } + +template +void Buckets_Init(BucketContainer &bktContainer) { + assert(bktContainer.buckets == nullptr && "bucket container already initialized"); + bktContainer.buckets = Pke_New(bktContainer.incrementer); +} + uint64_t Buckets_NewHandle(std::size_t bucketBytes, uint64_t bucketItemCount, uint64_t &bucketIncrementer, uint64_t &bucketCounter, uint64_t &itemCounter, void*& buckets); template inline uint64_t Buckets_NewHandle(uint64_t bucketItemCount, uint64_t &bucketIncrementer, uint64_t &bucketCounter, uint64_t &itemCounter, T*& buckets) { @@ -48,6 +63,11 @@ template inline uint64_t Buckets_NewHandle(uint64_t bucketItemCount return handle; } +template +inline CT Buckets_NewHandle(uint64_t maxBucketItemCount, BucketContainer &bktContainer) { + return Buckets_NewHandle(maxBucketItemCount, bktContainer.incrementer, bktContainer.bucketCounter, bktContainer.itemCounter, bktContainer.buckets); +} + static inline constexpr uint64_t Buckets_GetBucketIndex(uint64_t handle) { return handle & 0x00000000FFFFFFFF; } -- cgit v1.2.3