1 2 #define MHTSZ 32 3 #define MHTNO 0 4 5 typedef ut64 dicti; 6 7 typedef struct { 8 dicti k; 9 dicti v; 10 void *u; 11 #if 0 12 // unaligned 13 // on 32bits 14 void *pad; 15 // on 64bits 16 void *pad; 17 #endif 18 } dictkv; 19 20 // 4 + 4 + 4 = 12 .. missing 4 more 21 // 8 + 8 + 4 = 20 .. missing 16, what about 32 ? 22 // 8 + 8 + 8 = 24 .. still not there, missing 8 23 // 4 + 4 + 8 = 16 .. lgtm 24 25 typedef void (*dict_freecb)(void *); 26 typedef int (*dictkv_cb)(dictkv *, void *); 27 28 typedef struct { 29 void **table; //[MHTSZ]; 30 dict_freecb f; 31 ut32 size; 32 } dict; 33 34 typedef dict SdbMini; 35 36 SDB_API dict *dict_new(ut32 size, dict_freecb f); 37 SDB_API void dict_free(dict*); 38 SDB_API bool dict_init(dict *m, ut32, dict_freecb f); 39 SDB_API void dict_fini(dict *m); 40 SDB_API void dict_stats(dict *m); 41 SDB_API dicti dict_hash(const char *s); 42 SDB_API bool dict_set(dict *m, dicti k, dicti v, void *u); 43 SDB_API dictkv *dict_getr(dict *m, dicti k); 44 SDB_API dictkv *dict_getr(dict *m, dicti k); 45 SDB_API dicti dict_get(dict *m, dicti k); 46 SDB_API dicti dict_get(dict *m, dicti k); 47 SDB_API void *dict_getu(dict *m, dicti k); 48 SDB_API bool dict_add(dict *m, dicti k, dicti v, void *u); 49 SDB_API bool dict_del(dict *m, dicti k); 50 SDB_API void dict_foreach(dict *m, dictkv_cb cb, void *u); 51