Lines Matching +full:key +full:- +full:value
41 heim_object_t key; member
42 heim_object_t value; member
56 for (h = dict->tab; h < &dict->tab[dict->size]; ++h) { in dict_dealloc()
58 i = g->next; in dict_dealloc()
59 heim_release(g->key); in dict_dealloc()
60 heim_release(g->value); in dict_dealloc()
64 free(dict->tab); in dict_dealloc()
69 "dict-object",
118 dict->size = findprime(size); in heim_dict_create()
119 if (dict->size == 0) { in heim_dict_create()
124 dict->tab = calloc(dict->size, sizeof(dict->tab[0])); in heim_dict_create()
125 if (dict->tab == NULL) { in heim_dict_create()
126 dict->size = 0; in heim_dict_create()
154 for (p = dict->tab[v % dict->size]; p != NULL; p = p->next) in _search()
155 if (heim_cmp(ptr, p->key) == 0) in _search()
164 * @value dict the dict to search in
165 * @value key the key to search for
167 * @return a retained copy of the value for key or NULL if not found
171 heim_dict_copy_value(heim_dict_t dict, heim_object_t key) in heim_dict_copy_value() argument
174 p = _search(dict, key); in heim_dict_copy_value()
178 return heim_retain(p->value); in heim_dict_copy_value()
182 * Add key and value to dict
184 * @value dict the dict to add too
185 * @value key the key to add
186 * @value value the value to add
192 heim_dict_add_value(heim_dict_t dict, heim_object_t key, heim_object_t value) in heim_dict_add_value() argument
196 h = _search(dict, key); in heim_dict_add_value()
198 heim_release(h->value); in heim_dict_add_value()
199 h->value = heim_retain(value); in heim_dict_add_value()
207 h->key = heim_retain(key); in heim_dict_add_value()
208 h->value = heim_retain(value); in heim_dict_add_value()
210 v = heim_get_hash(key); in heim_dict_add_value()
212 tabptr = &dict->tab[v % dict->size]; in heim_dict_add_value()
213 h->next = *tabptr; in heim_dict_add_value()
215 h->prev = tabptr; in heim_dict_add_value()
216 if (h->next) in heim_dict_add_value()
217 h->next->prev = &h->next; in heim_dict_add_value()
224 * Delete element with key key
226 * @value dict the dict to delete from
227 * @value key the key to delete
231 heim_dict_delete_key(heim_dict_t dict, heim_object_t key) in heim_dict_delete_key() argument
233 struct hashentry *h = _search(dict, key); in heim_dict_delete_key()
238 heim_release(h->key); in heim_dict_delete_key()
239 heim_release(h->value); in heim_dict_delete_key()
241 if ((*(h->prev) = h->next) != NULL) in heim_dict_delete_key()
242 h->next->prev = h->prev; in heim_dict_delete_key()
250 * @value dict the dict to interate over
251 * @value func the function to search for
252 * @value arg argument to func
260 for (h = dict->tab; h < &dict->tab[dict->size]; ++h) in heim_dict_iterate_f()
261 for (g = *h; g; g = g->next) in heim_dict_iterate_f()
262 func(g->key, g->value, arg); in heim_dict_iterate_f()
269 * @value dict the dict to interate over
270 * @value func the function to search for
278 for (h = dict->tab; h < &dict->tab[dict->size]; ++h)
279 for (g = *h; g; g = g->next)
280 func(g->key, g->value);