21#define xCalloc(n,Type) (Type *)calloc((size_t)(n), sizeof (Type))
24#define xMalloc(n,Type) (Type *)malloc((size_t)(n) * sizeof (Type))
27#define eFree(x) free(x)
75 keyfreefn (
entry->key);
77 valfreefn (
entry->value);
98 if (equalfn( key,
entry->key))
110 if (equalfn (key, (*entry)->key))
124 if (!proc (
entry->key,
entry->value, user_data))
176 for (i = 0; i < htable->
size; i++)
220 for (i = 0; i < htable->
size; i++)
226static bool track_chain (
const void *
const key,
void *value,
void *chain_data)
280bool hashPtreq (
const void *
const a,
const void *
const b)
282 return (a == b)?
true:
false;
290 unsigned long hash = 5381;
294 hash = ((hash << 5) + hash) + c;
302 unsigned long hash = 5381;
307 if ((
'a' <= c) && (c <=
'z'))
309 hash = ((hash << 5) + hash) + c;
318 const char *
const s = x;
319 return (
unsigned int)
djb2((
const unsigned char *)s);
324 return !!(strcmp (a, b) == 0);
339bool hashInteq (
const void *
const a,
const void *
const b)
350 const char *
const s = x;
351 return (
unsigned int)
casedjb2((
const unsigned char *)s);
#define CTAGS_ATTR_UNUSED
#define strcasecmp(s1, s2)
bool hashCstrcaseeq(const void *const a, const void *const b)
bool hashTableForeachItemOnChain(hashTable *htable, const void *key, hashTableForeachFunc proc, void *user_data)
unsigned int hashCstrhash(const void *const x)
static bool track_chain(const void *const key, void *value, void *chain_data)
static unsigned long djb2(const unsigned char *str)
void hashTablePutItem(hashTable *htable, void *key, void *value)
static hentry * entry_destroy(hentry *entry, hashTableFreeFunc keyfreefn, hashTableFreeFunc valfreefn)
static hentry * entry_new(void *key, void *value, hentry *next)
static void entry_reclaim(hentry *entry, hashTableFreeFunc keyfreefn, hashTableFreeFunc valfreefn)
unsigned int hashPtrhash(const void *const x)
bool hashTableForeachItem(hashTable *htable, hashTableForeachFunc proc, void *user_data)
static void * entry_find(hentry *entry, const void *const key, hashTableEqualFunc equalfn)
hashTable * hashTableNew(unsigned int size, hashTableHashFunc hashfn, hashTableEqualFunc equalfn, hashTableFreeFunc keyfreefn, hashTableFreeFunc valfreefn)
void hashTableDelete(hashTable *htable)
unsigned int hashCstrcasehash(const void *const x)
void * hashTableGetItem(hashTable *htable, const void *key)
bool hashTableHasItem(hashTable *htable, const void *key)
static bool count(const void *const key, void *value, void *data)
static unsigned long casedjb2(const unsigned char *str)
bool hashPtreq(const void *const a, const void *const b)
int hashTableCountItem(hashTable *htable)
static bool entry_foreach(hentry *entry, hashTableForeachFunc proc, void *user_data)
hashTable * hashTableIntNew(unsigned int size, hashTableHashFunc hashfn, hashTableEqualFunc equalfn, hashTableFreeFunc keyfreefn)
bool hashTableDeleteItem(hashTable *htable, const void *key)
bool hashCstreq(const void *const a, const void *const b)
void hashTableClear(hashTable *htable)
unsigned int hashInthash(const void *const x)
static bool entry_delete(hentry **entry, const void *key, hashTableEqualFunc equalfn, hashTableFreeFunc keyfreefn, hashTableFreeFunc valfreefn)
bool hashInteq(const void *const a, const void *const b)
bool(* hashTableForeachFunc)(const void *key, void *value, void *user_data)
void(* hashTableFreeFunc)(void *ptr)
unsigned int(* hashTableHashFunc)(const void *const key)
bool(* hashTableEqualFunc)(const void *a, const void *b)
void eFree(void *const ptr)
hashTableEqualFunc equalfn
const void *const target_key
hashTableForeachFunc user_proc
hashTableFreeFunc keyfreefn
hashTableEqualFunc equalfn
hashTableFreeFunc valfreefn