Lines Matching refs:d

68 static int dictionary_grow(dictionary * d)  in dictionary_grow()  argument
74 new_val = (char**) calloc(d->size * 2, sizeof * d->val); in dictionary_grow()
75 new_key = (char**) calloc(d->size * 2, sizeof * d->key); in dictionary_grow()
76 new_hash = (unsigned*) calloc(d->size * 2, sizeof * d->hash); in dictionary_grow()
88 memcpy(new_val, d->val, d->size * sizeof(char *)); in dictionary_grow()
89 memcpy(new_key, d->key, d->size * sizeof(char *)); in dictionary_grow()
90 memcpy(new_hash, d->hash, d->size * sizeof(unsigned)); in dictionary_grow()
92 free(d->val); in dictionary_grow()
93 free(d->key); in dictionary_grow()
94 free(d->hash); in dictionary_grow()
96 d->size *= 2 ; in dictionary_grow()
97 d->val = new_val; in dictionary_grow()
98 d->key = new_key; in dictionary_grow()
99 d->hash = new_hash; in dictionary_grow()
152 dictionary * d ; in dictionary_new() local
157 d = (dictionary*) calloc(1, sizeof * d) ; in dictionary_new()
159 if (d) { in dictionary_new()
160 d->size = size ; in dictionary_new()
161 d->val = (char**) calloc(size, sizeof * d->val); in dictionary_new()
162 d->key = (char**) calloc(size, sizeof * d->key); in dictionary_new()
163 d->hash = (unsigned*) calloc(size, sizeof * d->hash); in dictionary_new()
165 return d ; in dictionary_new()
177 void dictionary_del(dictionary * d) in dictionary_del() argument
181 if (d == NULL) return ; in dictionary_del()
182 for (i = 0 ; i < d->size ; i++) { in dictionary_del()
183 if (d->key[i] != NULL) in dictionary_del()
184 free(d->key[i]); in dictionary_del()
185 if (d->val[i] != NULL) in dictionary_del()
186 free(d->val[i]); in dictionary_del()
188 free(d->val); in dictionary_del()
189 free(d->key); in dictionary_del()
190 free(d->hash); in dictionary_del()
191 free(d); in dictionary_del()
209 const char * dictionary_get(const dictionary * d, const char * key, const char * def) in dictionary_get() argument
215 for (i = 0 ; i < d->size ; i++) { in dictionary_get()
216 if (d->key[i] == NULL) in dictionary_get()
219 if (hash == d->hash[i]) { in dictionary_get()
221 if (!strcmp(key, d->key[i])) { in dictionary_get()
222 return d->val[i] ; in dictionary_get()
255 int dictionary_set(dictionary * d, const char * key, const char * val) in dictionary_set() argument
260 if (d == NULL || key == NULL) return -1 ; in dictionary_set()
265 if (d->n > 0) { in dictionary_set()
266 for (i = 0 ; i < d->size ; i++) { in dictionary_set()
267 if (d->key[i] == NULL) in dictionary_set()
269 if (hash == d->hash[i]) { /* Same hash value */ in dictionary_set()
270 if (!strcmp(key, d->key[i])) { /* Same key */ in dictionary_set()
272 if (d->val[i] != NULL) in dictionary_set()
273 free(d->val[i]); in dictionary_set()
274 d->val[i] = (val ? xstrdup(val) : NULL); in dictionary_set()
283 if (d->n == d->size) { in dictionary_set()
285 if (dictionary_grow(d) != 0) in dictionary_set()
292 for (i = d->n ; d->key[i] ; ) { in dictionary_set()
293 if (++i == d->size) i = 0; in dictionary_set()
296 d->key[i] = xstrdup(key); in dictionary_set()
297 d->val[i] = (val ? xstrdup(val) : NULL) ; in dictionary_set()
298 d->hash[i] = hash; in dictionary_set()
299 d->n ++ ; in dictionary_set()
314 void dictionary_unset(dictionary * d, const char * key) in dictionary_unset() argument
319 if (key == NULL || d == NULL) { in dictionary_unset()
324 for (i = 0 ; i < d->size ; i++) { in dictionary_unset()
325 if (d->key[i] == NULL) in dictionary_unset()
328 if (hash == d->hash[i]) { in dictionary_unset()
330 if (!strcmp(key, d->key[i])) { in dictionary_unset()
336 if (i >= d->size) in dictionary_unset()
340 free(d->key[i]); in dictionary_unset()
341 d->key[i] = NULL ; in dictionary_unset()
342 if (d->val[i] != NULL) { in dictionary_unset()
343 free(d->val[i]); in dictionary_unset()
344 d->val[i] = NULL ; in dictionary_unset()
346 d->hash[i] = 0 ; in dictionary_unset()
347 d->n -- ; in dictionary_unset()
363 void dictionary_dump(const dictionary * d, FILE * out) in dictionary_dump() argument
367 if (d == NULL || out == NULL) return ; in dictionary_dump()
368 if (d->n < 1) { in dictionary_dump()
372 for (i = 0 ; i < d->size ; i++) { in dictionary_dump()
373 if (d->key[i]) { in dictionary_dump()
375 d->key[i], in dictionary_dump()
376 d->val[i] ? d->val[i] : "UNDEF"); in dictionary_dump()