2#ifndef CLICK_BIGHASHMAP_ARENA_HH
3#define CLICK_BIGHASHMAP_ARENA_HH
6class HashMap_Arena {
public:
8 HashMap_Arena(uint32_t element_size);
10 void use() { _refcount++; }
13 bool detached()
const {
return _detached; }
14 void detach() { _detached =
true; }
26 enum { NELEMENTS = 127 };
31 uint32_t _element_size;
40 HashMap_Arena(
const HashMap_Arena &);
42 HashMap_Arena &operator=(
const HashMap_Arena &);
50class HashMap_ArenaFactory {
public:
52 HashMap_ArenaFactory();
53 virtual ~HashMap_ArenaFactory();
55 static void static_initialize();
56 static void static_cleanup();
58 static HashMap_Arena *get_arena(uint32_t, HashMap_ArenaFactory * =0);
59 virtual HashMap_Arena *get_arena_func(uint32_t);
63 HashMap_Arena **_arenas[2];
66 static HashMap_ArenaFactory *the_factory;
85 }
else if (_buffer_pos > 0) {
86 _buffer_pos -= _element_size;
87 return _cur_buffer + _buffer_pos;
93HashMap_Arena::free(
void *v)
95 Link *link =
reinterpret_cast<Link *
>(v);