59#ifndef GHT_HASH_TABLE_H
60#define GHT_HASH_TABLE_H
68#define GHT_HEURISTICS_NONE 0
69#define GHT_HEURISTICS_TRANSPOSE 1
70#define GHT_HEURISTICS_MOVE_TO_FRONT 2
71#define GHT_AUTOMATIC_REHASH 4
118 ght_hash_entry_t *p_entry;
119 ght_hash_entry_t *p_next;
147typedef void *(*ght_fn_alloc_t)(
size_t size);
181 ght_hash_entry_t **pp_entries;
184 unsigned int bucket_limit;
186 ght_hash_entry_t *p_oldest;
187 ght_hash_entry_t *p_newest;
357 unsigned int i_key_size,
const void *p_key_data);
374 unsigned int i_key_size,
const void *p_key_data);
388 unsigned int i_key_size,
const void *p_key_data);
401 unsigned int i_key_size,
const void *p_key_data);
ght_uint32_t(*) ght_fn_hash_t(ght_hash_key_t *p_key)
Definition ght_hash_table.h:135
void * ght_first_keysize(ght_hash_table_t *p_ht, ght_iterator_t *p_iterator, const void **pp_key, unsigned int *size)
void * ght_next(ght_hash_table_t *p_ht, ght_iterator_t *p_iterator, const void **pp_key)
void ght_set_hash(ght_hash_table_t *p_ht, ght_fn_hash_t fn_hash)
struct s_hash_key ght_hash_key_t
unsigned int ght_size(ght_hash_table_t *p_ht)
void * ght_replace(ght_hash_table_t *p_ht, void *p_entry_data, unsigned int i_key_size, const void *p_key_data)
void * ght_first(ght_hash_table_t *p_ht, ght_iterator_t *p_iterator, const void **pp_key)
void ght_finalize(ght_hash_table_t *p_ht)
void * ght_next_keysize(ght_hash_table_t *p_ht, ght_iterator_t *p_iterator, const void **pp_key, unsigned int *size)
ght_uint32_t ght_rotating_hash(ght_hash_key_t *p_key)
void ght_set_heuristics(ght_hash_table_t *p_ht, int i_heuristics)
void ght_rehash(ght_hash_table_t *p_ht, unsigned int i_size)
void ght_set_alloc(ght_hash_table_t *p_ht, ght_fn_alloc_t fn_alloc, ght_fn_free_t fn_free)
unsigned int ght_uint32_t
Definition ght_hash_table.h:82
void(*) ght_fn_free_t(void *ptr)
Definition ght_hash_table.h:155
ght_uint32_t ght_crc_hash(ght_hash_key_t *p_key)
ght_uint32_t ght_one_at_a_time_hash(ght_hash_key_t *p_key)
int ght_insert(ght_hash_table_t *p_ht, void *p_entry_data, unsigned int i_key_size, const void *p_key_data)
void ght_set_rehash(ght_hash_table_t *p_ht, int b_rehash)
void(*) ght_fn_bucket_free_callback_t(void *data, const void *key)
Definition ght_hash_table.h:164
void * ght_remove(ght_hash_table_t *p_ht, unsigned int i_key_size, const void *p_key_data)
void ght_set_bounded_buckets(ght_hash_table_t *p_ht, unsigned int limit, ght_fn_bucket_free_callback_t fn)
unsigned int ght_table_size(ght_hash_table_t *p_ht)
ght_hash_table_t * ght_create(unsigned int i_size)
void * ght_get(ght_hash_table_t *p_ht, unsigned int i_key_size, const void *p_key_data)
void *(*) ght_fn_alloc_t(size_t size)
Definition ght_hash_table.h:147
Definition ght_hash_table.h:170
unsigned int i_items
Definition ght_hash_table.h:171
int i_heuristics
Definition ght_hash_table.h:177
unsigned int i_size
Definition ght_hash_table.h:172
ght_fn_alloc_t fn_alloc
Definition ght_hash_table.h:174
ght_fn_hash_t fn_hash
Definition ght_hash_table.h:173
ght_fn_bucket_free_callback_t fn_bucket_free
Definition ght_hash_table.h:176
ght_fn_free_t fn_free
Definition ght_hash_table.h:175
int i_automatic_rehash
Definition ght_hash_table.h:178
Definition ght_hash_table.h:117
Definition ght_hash_table.h:100
Definition ght_hash_table.h:89
const void * p_key
Definition ght_hash_table.h:91
unsigned int i_size
Definition ght_hash_table.h:90