galago-hashtable.h
Go to the documentation of this file.00001
00021 #ifndef _GALAGO_HASHTABLE_H_
00022 #define _GALAGO_HASHTABLE_H_
00023
00024 typedef struct _GalagoHashTable GalagoHashTable;
00025
00026 #include <libgalago/galago-list.h>
00027 #include <libgalago/galago-types.h>
00028
00029 #ifdef __cplusplus
00030 extern "C" {
00031 #endif
00032
00033
00035
00046 GalagoHashTable *galago_hash_table_new(GalagoHashFunc hash_func,
00047 GalagoEqualFunc key_equal_func);
00058 GalagoHashTable *galago_hash_table_new_full(GalagoHashFunc hash_func,
00059 GalagoEqualFunc key_equal_func,
00060 GalagoFreeFunc destroy_key_func,
00061 GalagoFreeFunc destroy_value_func);
00062
00068 void galago_hash_table_destroy(GalagoHashTable *hash_table);
00069
00075 void galago_hash_table_clear(GalagoHashTable *hash_table);
00076
00084 void galago_hash_table_insert(GalagoHashTable *hash_table, void *key,
00085 void *value);
00086
00094 void galago_hash_table_replace(GalagoHashTable *hash_table, void *key,
00095 void *value);
00096
00103 void galago_hash_table_remove(GalagoHashTable *hash_table, const void *key);
00104
00113 void *galago_hash_table_lookup(const GalagoHashTable *hash_table,
00114 const void *key);
00115
00124 galago_bool galago_hash_table_exists(const GalagoHashTable *hash_table,
00125 const void *key);
00126
00136 GalagoList *galago_hash_table_get_keys(const GalagoHashTable *hash_table);
00137
00147 GalagoList *galago_hash_table_get_values(const GalagoHashTable *hash_table);
00148
00156 void galago_hash_table_foreach(const GalagoHashTable *hash_table,
00157 GalagoHForEachFunc func, void *user_data);
00158
00166 void galago_hash_table_foreach_key(const GalagoHashTable *hash_table,
00167 GalagoForEachFunc func, void *user_data);
00168
00176 void galago_hash_table_foreach_value(const GalagoHashTable *hash_table,
00177 GalagoForEachFunc func, void *user_data);
00178
00186 size_t galago_hash_table_get_size(const GalagoHashTable *hash_table);
00187
00190
00192
00203 galago_bool galago_str_equal(const void *a, const void *b);
00204
00212 unsigned int galago_str_hash(const void *str);
00213
00222 galago_bool galago_int_equal(const void *a, const void *b);
00223
00231 unsigned int galago_int_hash(const void *i);
00232
00241 galago_bool galago_direct_equal(const void *a, const void *b);
00242
00250 unsigned int galago_direct_hash(const void *ptr);
00251
00254 #ifdef __cplusplus
00255 }
00256 #endif
00257
00258 #endif