JabberWerxC  2015.1.1
htable.h
Go to the documentation of this file.
1 
20 #ifndef JABBERWERX_UTIL_HTABLE_H
21 #define JABBERWERX_UTIL_HTABLE_H
22 
23 #include "../basics.h"
24 
25 
27 typedef struct _jw_htable jw_htable;
28 
30 typedef struct _jw_hnode jw_hnode;
31 
32 
42 typedef unsigned int (*jw_htable_hashfunc)(const void *key);
43 
54 typedef int (*jw_htable_cmpfunc)(const void *key1, const void *key2);
55 
64 typedef int (*jw_htable_walkfunc)(void *user_data, const void *key, void *data);
65 
77 typedef void (*jw_htable_cleanfunc)(
78  bool replace, bool destroy_key, void *key, void *data);
79 
80 
81 #ifdef __cplusplus
82 extern "C"
83 {
84 #endif
85 
93 JABBERWERX_API const void *jw_hnode_get_key(jw_hnode *node);
94 
103 
114  void *data,
115  jw_htable_cleanfunc cleaner);
116 
135 JABBERWERX_API bool jw_htable_create(int buckets,
136  jw_htable_hashfunc hash,
137  jw_htable_cmpfunc cmp,
138  jw_htable **tbl,
139  jw_err *err);
140 
153 
161 JABBERWERX_API unsigned int jw_htable_get_count(jw_htable *tbl);
162 
173  const void *key);
174 
185  jw_hnode *node);
186 
196  const void *key);
197 
217  const void *key,
218  void *value,
219  jw_htable_cleanfunc cleaner,
220  jw_err *err);
221 
231  const void *key);
232 
241 
251 
262  jw_hnode *cur);
263 
274 JABBERWERX_API unsigned int jw_htable_walk(jw_htable *tbl,
275  jw_htable_walkfunc func,
276  void *user_data);
277 
284 JABBERWERX_API unsigned int jw_str_hashcode(const void *key);
285 
298 
305 JABBERWERX_API unsigned int jw_strcase_hashcode(const void *key);
306 
319 
326 JABBERWERX_API unsigned int jw_int_hashcode(const void *key);
327 
337 JABBERWERX_API int jw_int_compare(const void *key1, const void *key2);
338 
349  bool replace, bool destroy_key, void *key, void *data);
350 
351 #ifdef __cplusplus
352 }
353 #endif
354 
355 #endif /* JABBERWERX_UTIL_HTABLE_H */
#define JABBERWERX_API
Definition: basics.h:32
JABBERWERX_API const void * jw_hnode_get_key(jw_hnode *node)
unsigned int(* jw_htable_hashfunc)(const void *key)
Definition: htable.h:42
JABBERWERX_API void * jw_hnode_get_value(jw_hnode *node)
JABBERWERX_API jw_htable_cmpfunc jw_str_compare
JABBERWERX_API void jw_htable_remove_node(jw_htable *tbl, jw_hnode *node)
void(* jw_htable_cleanfunc)(bool replace, bool destroy_key, void *key, void *data)
Definition: htable.h:77
JABBERWERX_API unsigned int jw_int_hashcode(const void *key)
JABBERWERX_API jw_hnode * jw_htable_get_first_node(jw_htable *tbl)
JABBERWERX_API void jw_hnode_put_value(jw_hnode *node, void *data, jw_htable_cleanfunc cleaner)
int(* jw_htable_cmpfunc)(const void *key1, const void *key2)
Definition: htable.h:54
struct _jw_hnode jw_hnode
Definition: htable.h:30
JABBERWERX_API bool jw_htable_put(jw_htable *tbl, const void *key, void *value, jw_htable_cleanfunc cleaner, jw_err *err)
JABBERWERX_API unsigned int jw_htable_get_count(jw_htable *tbl)
JABBERWERX_API unsigned int jw_strcase_hashcode(const void *key)
JABBERWERX_API jw_htable_cmpfunc jw_strcase_compare
JABBERWERX_API unsigned int jw_htable_walk(jw_htable *tbl, jw_htable_walkfunc func, void *user_data)
int(* jw_htable_walkfunc)(void *user_data, const void *key, void *data)
Definition: htable.h:64
JABBERWERX_API int jw_int_compare(const void *key1, const void *key2)
JABBERWERX_API void * jw_htable_get(jw_htable *tbl, const void *key)
struct _jw_htable jw_htable
Definition: htable.h:27
Definition: basics.h:157
JABBERWERX_API void jw_htable_clear(jw_htable *tbl)
JABBERWERX_API jw_hnode * jw_htable_get_node(jw_htable *tbl, const void *key)
JABBERWERX_API jw_hnode * jw_htable_get_next_node(jw_htable *tbl, jw_hnode *cur)
JABBERWERX_API unsigned int jw_str_hashcode(const void *key)
JABBERWERX_API void jw_htable_free_data_cleaner(bool replace, bool destroy_key, void *key, void *data)
JABBERWERX_API void jw_htable_destroy(jw_htable *tbl)
JABBERWERX_API bool jw_htable_create(int buckets, jw_htable_hashfunc hash, jw_htable_cmpfunc cmp, jw_htable **tbl, jw_err *err)
JABBERWERX_API void jw_htable_remove(jw_htable *tbl, const void *key)