Galago - desktop presence framework

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 /* _GALAGO_HASHTABLE_H_ */