00001
00034 #ifndef YASM_HAMT_H
00035 #define YASM_HAMT_H
00036
00037 #ifndef YASM_LIB_DECL
00038 #define YASM_LIB_DECL
00039 #endif
00040
00042 typedef struct HAMT HAMT;
00044 typedef struct HAMTEntry HAMTEntry;
00045
00052 YASM_LIB_DECL
00053 HAMT *HAMT_create(int nocase, void (*error_func)
00054 (const char *file, unsigned int line, const char *message));
00055
00061 YASM_LIB_DECL
00062 void HAMT_destroy( HAMT *hamt,
00063 void (*deletefunc) ( void *data));
00064
00081 YASM_LIB_DECL
00082 void *HAMT_insert(HAMT *hamt, const char *str,
00083 void *data, int *replace,
00084 void (*deletefunc) ( void *data));
00085
00091 YASM_LIB_DECL
00092 void *HAMT_search(HAMT *hamt, const char *str);
00093
00101 YASM_LIB_DECL
00102 int HAMT_traverse(HAMT *hamt, void *d,
00103 int (*func) ( void *node,
00104 void *d));
00105
00110 YASM_LIB_DECL
00111 const HAMTEntry *HAMT_first(const HAMT *hamt);
00112
00117 YASM_LIB_DECL
00118 const HAMTEntry *HAMT_next(const HAMTEntry *prev);
00119
00124 YASM_LIB_DECL
00125 void *HAMTEntry_get_data(const HAMTEntry *entry);
00126
00127 #endif