diff options
Diffstat (limited to 'src/bucketed-array.hpp')
| -rw-r--r-- | src/bucketed-array.hpp | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/bucketed-array.hpp b/src/bucketed-array.hpp index fb24712..150fa66 100644 --- a/src/bucketed-array.hpp +++ b/src/bucketed-array.hpp @@ -14,9 +14,19 @@ struct BucketContainer { CT limits; CT pkeHandle; T* buckets[BKT_CNT]; + T& operator[](CT) const; }; template<typename T, typename CT, pk_handle_item_index_T BKT_CNT> +T& +BucketContainer<T, CT, BKT_CNT>::operator[](CT handle) const { + assert(handle.bucketIndex < this->limits.bucketIndex); + assert(handle.itemIndex < this->limits.itemIndex); + assert(handle.bucketIndex != this->pkeHandle.bucketIndex || handle.itemIndex < this->pkeHandle.itemIndex); + return this->buckets[handle.bucketIndex][handle.itemIndex]; +} + +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; |
