hash.c revision 5e0ce63bb65db34d7f48b34bbb5545fa791781c4
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen/* Copyright (c) 2002-2003 Timo Sirainen */
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen/* @UNSAFE: whole file */
cf9d67e4a9bfee31cf3be05244555d51a3d1b9feTimo Sirainen size_t initial_size, nodes_count, removed_count;
cf9d67e4a9bfee31cf3be05244555d51a3d1b9feTimo Sirainenstatic int hash_resize(struct hash_table *table, int grow);
static unsigned int direct_hash(const void *p)
return POINTER_CAST_TO(p, unsigned int);
struct hash_table *
initial_size = 0;
return table;
size_t i;
if (free_nodes) {
static struct hash_node *
return node;
return NULL;
return FALSE;
return TRUE;
static struct hash_node *
int check_existing)
unsigned int hash;
return node;
return node;
if (check_existing) {
return node;
if (check_existing) {
return node;
return node;
size_t i;
unsigned int hash;
void *context)
size_t i;
if (foreach_stop) {
void hash_foreach_stop(void)
float nodes_per_list;
return FALSE;
return FALSE;
return FALSE;
for (i = 0; i < old_size; i++) {
return TRUE;
unsigned int str_hash(const void *p)
unsigned int strcase_hash(const void *p)