diff options
| author | Jonathan Bradley <jcb@pikum.xyz> | 2023-08-29 14:15:10 -0400 |
|---|---|---|
| committer | Jonathan Bradley <jcb@pikum.xyz> | 2023-09-06 17:19:09 -0400 |
| commit | 6a3de7eeacc21e2a6ccec853a24c9d0917d274e4 (patch) | |
| tree | 4d79080adda9fed223c1ca0e46f7f57c6b7702ee /src/memory.hpp | |
| parent | 86ece47fd62bbaaf76581828936946555211459b (diff) | |
move boilerplate bucket code to memory file
Diffstat (limited to 'src/memory.hpp')
| -rw-r--r-- | src/memory.hpp | 18 |
1 files changed, 18 insertions, 0 deletions
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 <cstring> #include <cstdint> #include <cstdlib> #include <cstdio> @@ -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 <typename T> inline uint64_t Buckets_NewHandle(uint64_t bucketItemCount, uint64_t &bucketIncrementer, uint64_t &bucketCounter, uint64_t &itemCounter, T*& buckets) { + void *ptr = reinterpret_cast<void *>(buckets); + uint64_t handle = Buckets_NewHandle(sizeof(T), bucketItemCount, bucketIncrementer, bucketCounter, itemCounter, ptr); + buckets = reinterpret_cast<T *>(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 */ |
