58 #define INVALID_KEY 0u
62 #define HTE_NOTEXIST 2
63 #define HTE_INVALID_KEY 3
65 typedef unsigned long ht_key_t;
67 typedef struct _HashEntry{
70 struct _HashEntry *next;
73 typedef void (*freeObj)(
void* obj);
74 typedef struct _HashTable{
80 MGNCS_EXPORT
int hash_insert(HashTable* ht,ht_key_t key,
void *data);
82 MGNCS_EXPORT
int hash_delete(HashTable* ht,ht_key_t key);
84 MGNCS_EXPORT
void * hash_get(HashTable* ht,ht_key_t key);
86 MGNCS_EXPORT HashTable * hash_new(
int count, freeObj func);
88 MGNCS_EXPORT
void hash_free(HashTable *ht);
90 #define HT_FOR_EACH_CONTINUE 0
91 #define HT_FOR_EACH_DELETE 0x1
92 #define HT_FOR_EACH_BREAK 0x02
93 typedef int(*eachObj)(
void*,
void*);
94 MGNCS_EXPORT
void hash_for_each(HashTable *ht, eachObj each,
void* user);