5#ifndef _Stroika_Foundation_Containers_Private_HashTableSupport_h_
6#define _Stroika_Foundation_Containers_Private_HashTableSupport_h_
8#include "Stroika/Foundation/StroikaPreComp.h"
10#include "Stroika/Foundation/Common/Common.h"
12#include "Stroika/Foundation/Containers/Common.h"
13#include "Stroika/Foundation/Containers/DataStructures/HashTable.h"
41 template <
typename THIS_CONTAINER,
typename BASE_CONTAINER>
46 using BASE_CONTAINER::BASE_CONTAINER;
52 nonvirtual
void ReHash (
size_t newBucketCount);
58 nonvirtual
void ReHashIfNeeded ();
64 nonvirtual
size_t bucket_count ()
const;
70 nonvirtual
size_t bucket_size (
size_t bucketIdx)
const;
76 nonvirtual
float load_factor ()
const;
82 nonvirtual
float max_load_factor ()
const;
88 nonvirtual
void max_load_factor (
float mlf);
101 template <
typename CONTAINER_REP_BASE_CLASS>
104 virtual void ReHash (
size_t newBucketCount) = 0;
105 virtual void ReHashIfNeeded () = 0;
106 virtual size_t bucket_count ()
const = 0;
107 virtual size_t bucket_size (
size_t bucketIdx)
const = 0;
108 virtual float load_factor ()
const = 0;
109 virtual float max_load_factor ()
const = 0;
110 virtual void max_load_factor (
float mlf) = 0;
134 template <
typename THIS_CONTAINER_REP,
typename BASE_CONTAINER_REP>
139 using BASE_CONTAINER_REP::BASE_CONTAINER_REP;
140 virtual void ReHash (
size_t newBucketCount)
override;
141 virtual void ReHashIfNeeded ()
override;
142 virtual size_t bucket_count ()
const override;
143 virtual size_t bucket_size (
size_t bucketIdx)
const override;
144 virtual float load_factor ()
const override;
145 virtual float max_load_factor ()
const override;
146 virtual void max_load_factor (
float mlf)
override;
156#include "HashTableSupport.inl"
HashTableBasedContainer is a Stroika implementation detail, but its public methods are fair game and ...
impl detail for array based container support
CRTP applied when HashTableBasedContainerIRep used.