Lines Matching refs:hdl
238 dict_length(dict_hdl_t *hdl) in dict_length() argument
240 return (hdl->dh_length); in dict_length()
247 dict_free(dict_hdl_t **hdl) in dict_free() argument
249 if ((*hdl)->dh_length > 0) { in dict_free()
251 for (i = 0; i < (*hdl)->dh_size; i++) { in dict_free()
253 for (this = (*hdl)->dh_buckets[i]; this != NULL; in dict_free()
260 free((*hdl)->dh_buckets); in dict_free()
261 free((*hdl)); in dict_free()
262 *hdl = NULL; in dict_free()
273 dict_hdl_t *hdl; in dict_new() local
275 if ((hdl = calloc(1, sizeof (dict_hdl_t))) == NULL) in dict_new()
277 hdl->dh_size = DICT_SIZE; in dict_new()
278 if ((hdl->dh_buckets = calloc(hdl->dh_size, sizeof (dict_bucket_t *))) in dict_new()
280 free(hdl); in dict_new()
283 hdl->dh_cmp = cmp ? cmp : cmp_addr; in dict_new()
284 hdl->dh_hash = hash ? hash : hash_addr; in dict_new()
285 return (hdl); in dict_new()
293 dict_get(dict_hdl_t *hdl, const void *key) in dict_get() argument
298 i = (*hdl->dh_hash)(key)%hdl->dh_size; in dict_get()
299 for (bucket = hdl->dh_buckets[i]; bucket != NULL; in dict_get()
301 if ((*hdl->dh_cmp)(key, bucket->db_key) == 0) in dict_get()
311 dict_put(dict_hdl_t *hdl, const void *key, void *value) in dict_put() argument
317 i = (*hdl->dh_hash)(key)%hdl->dh_size; in dict_put()
318 for (bucket = hdl->dh_buckets[i]; bucket != NULL; in dict_put()
320 if ((*hdl->dh_cmp)(key, bucket->db_key) == 0) in dict_put()
327 bucket->db_next = hdl->dh_buckets[i]; in dict_put()
328 hdl->dh_buckets[i] = bucket; in dict_put()
329 hdl->dh_length++; in dict_put()
331 hdl->dh_change++; in dict_put()
341 dict_remove(dict_hdl_t *hdl, const void *key) in dict_remove() argument
346 hdl->dh_change++; in dict_remove()
347 i = (*hdl->dh_hash)(key)%hdl->dh_size; in dict_remove()
349 for (pbucket = &hdl->dh_buckets[i]; *pbucket != NULL; in dict_remove()
351 if ((*hdl->dh_cmp)(key, (*pbucket)->db_key) == 0) { in dict_remove()
357 hdl->dh_length--; in dict_remove()
371 dict_map(dict_hdl_t *hdl, void (*apply)(const void *, void **, void *), in dict_map() argument
376 uint64_t change_stamp = hdl->dh_change; in dict_map()
378 for (i = 0; i < hdl->dh_size; i++) { in dict_map()
379 for (bucket = hdl->dh_buckets[i]; bucket != NULL; in dict_map()
382 if (hdl->dh_change != change_stamp) in dict_map()