From 6a3de7eeacc21e2a6ccec853a24c9d0917d274e4 Mon Sep 17 00:00:00 2001 From: Jonathan Bradley Date: Tue, 29 Aug 2023 14:15:10 -0400 Subject: move boilerplate bucket code to memory file --- src/memory.hpp | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'src/memory.hpp') diff --git a/src/memory.hpp b/src/memory.hpp index 83ffd8f..74e72a3 100644 --- a/src/memory.hpp +++ b/src/memory.hpp @@ -3,6 +3,7 @@ #include "macros.hpp" +#include #include #include #include @@ -43,4 +44,21 @@ inline void PkeDelete(const void *ptr, long count) { } /* pke */ +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) { + void *ptr = reinterpret_cast(buckets); + uint64_t handle = Buckets_NewHandle(sizeof(T), bucketItemCount, bucketIncrementer, bucketCounter, itemCounter, ptr); + buckets = reinterpret_cast(ptr); + return handle; +} + +static inline constexpr uint64_t Buckets_GetBucketIndex(uint64_t handle) { + return handle & 0x00000000FFFFFFFF; +} + +static inline constexpr uint64_t Buckets_GetItemIndex(uint64_t handle) { + return handle >> 32; +} + #endif /* PKE_MEMORY_HPP */ -- cgit v1.2.3