bglibs
bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/dict.h
1#ifndef DICT__H__
2#define DICT__H__
3
4#include "str.h"
5#include "uint32.h"
6
7#define DICT_HASHSTART 5381
8uint32 dict_hashadd(uint32 h, const unsigned char* data, unsigned long len);
9#define dict_hash(BUF,LEN) dict_hashadd(DICT_HASHSTART,BUF,LEN)
10#define dict_hashstr(STR) dict_hashadd(DICT_HASHSTART,(const unsigned char*)(STR)->s,(STR)->len)
11
12struct dict_entry
13{
14 uint32 hash;
15 str key;
16 void* data;
17};
18typedef struct dict_entry dict_entry;
19
20struct dict
21{
22 unsigned size;
23 unsigned count;
24 dict_entry** table;
25};
26typedef struct dict dict;
27
28extern int dict_init(dict*);
29extern void dict_free(dict*, void (*free_data)(void*));
30extern int dict_add(dict*, const str*, void*);
31extern dict_entry* dict_get(dict*, const str*);
32extern void dict_foreach(dict* d, void (*fn)(const str* key, void** dataptr));
33extern void dict_str_free(void*);
34
35extern int dict_load_list(dict*, const char* filename, int mustexist,
36 int (*xform)(str*));
37extern int dict_load_map(dict*, const char* filename, int mustexist, char sep,
38 int (*keyxform)(str*), int (*valxform)(str*));
39
40#endif
Definition: bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/dict.h:13
Definition: bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/dict.h:21
Definition: bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/bglibs/str.h:31