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.hpp10
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;