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)
84 if((rv = htable_free(&((*dictionaryptr)->htable))))
88 *dictionaryptr = NULL;
94 dictionary_clear(dictionary_t dictionary)
99 return htable_clear(dictionary->htable);
103 dictionary_get_size(dictionary_t dictionary)
111 return htable_get_size(dictionary->htable);
115 dictionary_is_empty(dictionary_t dictionary)
123 return htable_is_empty(dictionary->htable);
127 dictionary_remove(dictionary_t dictionary,const char* key)
135 return htable_remove(dictionary->htable,key);