25 #ifndef INTERN_TABLE_HPP_
26 #define INTERN_TABLE_HPP_ 1
61 template<
class _Entry,
size_t concurrency_factor=4>
72 assert(load_factor > 0);
73 assert(load_factor < 100);
74 assert(initial_capacity > 0);
81 for (
size_t i = 0;
i < concurrency_factor; ++
i) {
93 template<
typename Thunk>
97 size_t hash = t.hash();
106 void initialize(
size_t initial_capacity,
size_t load_factor) {
115 template<
typename Thunk>
129 #endif // INTERN_TABLE_HPP_
bool is_initialized() const
static const size_t DEFAULT_INITIAL_CAPACITY
Entry & insert(const T &t)
Dummy implementation of a mutex.
void initialize(size_t initial_capacity=DEFAULT_INITIAL_CAPACITY, size_t load_factor=DEFAULT_LOAD_FACTOR)
static const size_t DEFAULT_LOAD_FACTOR
void set_load_factor(size_t load_factor)
const Entry & intern(const Thunk &t)
Helper class used to implicitly acquire and release a mutex within a method scope.
#define EXPENSIVE_ASSERT(EXPR)
An assertion that performs computations too expensive even for a normal debug build.
Additional assertion macros.
const Entry & intern(const Thunk &thunk)
void initialize(size_t initial_capacity, size_t load_factor)
static size_t divide_rounding_up(size_t a, size_t b)
Perform unsigned integer division.
InternTable & operator=(const InternTable &)