2 #include <dictionary.h>
9 #define __DEFAULT_BLOCK_CAPACITY ((int)512)
10 #define __DEFAULT_TABLE_SIZE ((int)256)
13 hfunc(const char* key)
15 unsigned int hval = 5381;
18 while ( (ch = *key++) )
19 hval = ((hval << 5) + hval) + ch;
25 cmp_key(const char* key1, const char* key2)
27 return !strcmp(key1,key2);
32 dictionary_new(fn_finalize_t fn_finalize)
34 dictionary_t dictionary;
36 if(!(dictionary = (dictionary_t)calloc(1,sizeof(s_dictionary_t))))
39 if(!(dictionary->htable = htable_new(
40 __DEFAULT_BLOCK_CAPACITY,
43 (fn_cmp_key_t)cmp_key,
54 dictionary_set(dictionary_t dictionary,const char* key, const void* val)
56 if(!dictionary || !key || !val)
59 return htable_set(dictionary->htable,(const void*)key,val);
63 dictionary_get(dictionary_t dictionary, const char* key)
66 if(!dictionary || !key)
72 return htable_lookup(dictionary->htable,(const void*)key);
77 dictionary_free(dictionary_t* dictionaryptr)
82 if((errno = htable_free(&((*dictionaryptr)->htable))))
86 *dictionaryptr = NULL;
92 dictionary_clear(dictionary_t dictionary)
97 return htable_clear(dictionary->htable);
101 dictionary_get_size(dictionary_t dictionary)
109 return htable_get_size(dictionary->htable);
113 dictionary_is_empty(dictionary_t dictionary)
121 return htable_is_empty(dictionary->htable);
125 dictionary_remove(dictionary_t dictionary,const char* key)
133 return htable_remove(dictionary->htable,key);