* deallocation is not supported by mempools, so delete/remove
* will leak pool memory.
* HASH_AUTO_POOL=size Create a pool of the given block size automatically.
- * HASH_PARAM_POOL Allocate all nodes from mempool given as a parameter to init().
* HASH_ZERO_FILL New entries should be initialized to all zeroes.
* HASH_TABLE_ALLOC The hash table itself will be allocated and freed using
* the same allocation functions as the nodes instead of
uns hash_size;
uns hash_count, hash_max, hash_min, hash_hard_max;
P(bucket) **ht;
-#if defined(HASH_AUTO_POOL) || defined(HASH_PARAM_POOL)
+#ifdef HASH_AUTO_POOL
struct mempool *pool;
#endif
};
static inline void P(init_alloc) (TAU) { }
static inline void P(cleanup_alloc) (TAU) { }
-#elif defined(HASH_PARAM_POOL)
-/* Use mempools given as a parameter to init() */
-#include "lib/mempool.h"
-static inline void * P(alloc) (TAUC unsigned int size) { return mp_alloc_fast(T.pool, size); }
-static inline void P(free) (TAUC void *x UNUSED) { }
-static inline void P(init_alloc) (TAU) { }
-static inline void P(cleanup_alloc) (TAU) { }
-#define HASH_USE_POOL
-
#elif defined(HASH_AUTO_POOL)
/* Use our own pools */
#include "lib/mempool.h"
#endif
#ifdef HASH_TABLE_ALLOC
-static inline void * P(table_alloc) (TAUC unsigned int size) { return P(alloc)(size); }
-static inline void P(table_free) (TAUC void *x) { P(free)(x); }
+static inline void * P(table_alloc) (TAUC unsigned int size) { return P(alloc)(TTC size); }
+static inline void P(table_free) (TAUC void *x) { P(free)(TTC x); }
#else
static inline void * P(table_alloc) (TAUC unsigned int size) { return xmalloc(size); }
static inline void P(table_free) (TAUC void *x) { xfree(x); }
T.hash_min = 0;
}
-#ifndef HASH_PARAM_POOL
static void P(init) (TA)
-#else
-static void P(init) (TAC struct mempool *pool)
-#endif
{
T.hash_count = 0;
T.hash_size = HASH_DEFAULT_SIZE;
T.hash_hard_max = 1 << HASH_FN_BITS;
#else
T.hash_hard_max = 1 << 28;
-#endif
- P(alloc_table)(TT);
-#ifdef HASH_PARAM_POOL
- T.pool = pool;
#endif
P(init_alloc)(TT);
+ P(alloc_table)(TT);
}
#ifdef HASH_WANT_CLEANUP
GLUE_(h_px,node) *h_var = &h_buck->n;
#define HASH_FOR_ALL(h_px, h_var) HASH_FOR_ALL_DYNAMIC(h_px, &GLUE_(h_px,table), h_var)
#define HASH_END_FOR } } while(0)
-#define HASH_BREAK
+#define HASH_BREAK
#define HASH_CONTINUE continue
#endif
#undef HASH_KEY_DECL
#undef HASH_KEY_ENDSTRING
#undef HASH_KEY_STRING
+#undef HASH_KEY_MEMORY
+#undef HASH_KEY_SIZE
#undef HASH_NOCASE
#undef HASH_NODE
#undef HASH_PREFIX
#undef HASH_USE_POOL
#undef HASH_AUTO_POOL
-#undef HASH_PARAM_POOL
#undef HASH_WANT_CLEANUP
#undef HASH_WANT_DELETE
#undef HASH_WANT_FIND