Lines Matching refs:hdl

236 dict_length(dict_hdl_t *hdl)  in dict_length()  argument
238 return (hdl->dh_length); in dict_length()
245 dict_free(dict_hdl_t **hdl) in dict_free() argument
247 if ((*hdl)->dh_length > 0) { in dict_free()
249 for (i = 0; i < (*hdl)->dh_size; i++) { in dict_free()
251 for (this = (*hdl)->dh_buckets[i]; this != NULL; in dict_free()
258 free((*hdl)->dh_buckets); in dict_free()
259 free((*hdl)); in dict_free()
260 *hdl = NULL; in dict_free()
271 dict_hdl_t *hdl; in dict_new() local
273 if ((hdl = calloc(1, sizeof (dict_hdl_t))) == NULL) in dict_new()
275 hdl->dh_size = DICT_SIZE; in dict_new()
276 if ((hdl->dh_buckets = calloc(hdl->dh_size, sizeof (dict_bucket_t *))) in dict_new()
278 free(hdl); in dict_new()
281 hdl->dh_cmp = cmp ? cmp : cmp_addr; in dict_new()
282 hdl->dh_hash = hash ? hash : hash_addr; in dict_new()
283 return (hdl); in dict_new()
291 dict_get(dict_hdl_t *hdl, const void *key) in dict_get() argument
296 i = (*hdl->dh_hash)(key)%hdl->dh_size; in dict_get()
297 for (bucket = hdl->dh_buckets[i]; bucket != NULL; in dict_get()
299 if ((*hdl->dh_cmp)(key, bucket->db_key) == 0) in dict_get()
309 dict_put(dict_hdl_t *hdl, const void *key, void *value) in dict_put() argument
315 i = (*hdl->dh_hash)(key)%hdl->dh_size; in dict_put()
316 for (bucket = hdl->dh_buckets[i]; bucket != NULL; in dict_put()
318 if ((*hdl->dh_cmp)(key, bucket->db_key) == 0) in dict_put()
325 bucket->db_next = hdl->dh_buckets[i]; in dict_put()
326 hdl->dh_buckets[i] = bucket; in dict_put()
327 hdl->dh_length++; in dict_put()
329 hdl->dh_change++; in dict_put()
339 dict_remove(dict_hdl_t *hdl, const void *key) in dict_remove() argument
344 hdl->dh_change++; in dict_remove()
345 i = (*hdl->dh_hash)(key)%hdl->dh_size; in dict_remove()
347 for (pbucket = &hdl->dh_buckets[i]; *pbucket != NULL; in dict_remove()
349 if ((*hdl->dh_cmp)(key, (*pbucket)->db_key) == 0) { in dict_remove()
355 hdl->dh_length--; in dict_remove()
369 dict_map(dict_hdl_t *hdl, void (*apply)(const void *, void **, void *), in dict_map() argument
374 uint64_t change_stamp = hdl->dh_change; in dict_map()
376 for (i = 0; i < hdl->dh_size; i++) { in dict_map()
377 for (bucket = hdl->dh_buckets[i]; bucket != NULL; in dict_map()
380 if (hdl->dh_change != change_stamp) in dict_map()