// ----------------------------------------------------------------------------
// hash.h
// ============================================================================
// ----------------------------------------------------------------------------
// hash.h
// ============================================================================
struct hashtable *
create_hashtable(unsigned int minsize, float maxloadfactor,
unsigned int (*hashfunction) (void*),
struct hashtable *
create_hashtable(unsigned int minsize, float maxloadfactor,
unsigned int (*hashfunction) (void*),
#define DEFINE_HASHTABLE_INSERT(fnname, keytype, valuetype) \
static int fnname (struct hashtable *h, keytype *k, valuetype *v) \
{ \
#define DEFINE_HASHTABLE_INSERT(fnname, keytype, valuetype) \
static int fnname (struct hashtable *h, keytype *k, valuetype *v) \
{ \
#define DEFINE_HASHTABLE_CHANGE(fnname, keytype, valuetype) \
static int fnname (struct hashtable *h, keytype *k, valuetype *v) \
{ \
#define DEFINE_HASHTABLE_CHANGE(fnname, keytype, valuetype) \
static int fnname (struct hashtable *h, keytype *k, valuetype *v) \
{ \
#define DEFINE_HASHTABLE_SEARCH(fnname, keytype, valuetype) \
static valuetype * fnname (struct hashtable *h, keytype *k) \
{ \
#define DEFINE_HASHTABLE_SEARCH(fnname, keytype, valuetype) \
static valuetype * fnname (struct hashtable *h, keytype *k) \
{ \
#define DEFINE_HASHTABLE_REMOVE(fnname, keytype, valuetype) \
static valuetype * fnname (struct hashtable *h, keytype *k) \
{ \
#define DEFINE_HASHTABLE_REMOVE(fnname, keytype, valuetype) \
static valuetype * fnname (struct hashtable *h, keytype *k) \
{ \
hashtable_iterator(struct hashtable *h);
/*****************************************************************************/
hashtable_iterator(struct hashtable *h);
/*****************************************************************************/
void *
hashtable_iterator_key(struct hashtable_itr *i);
/*****************************************************************************/
void *
hashtable_iterator_key(struct hashtable_itr *i);
/*****************************************************************************/