• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /macosx-10.9.5/dtrace-118.1/tools/ctfconvert/

Lines Matching refs:hash

27 #pragma ident	"@(#)hash.c	1.5	05/06/08 SMI"
30 * Routines for manipulating hash tables
40 #include "hash.h"
52 #include "hash.h"
58 struct hash {
109 hash_t *hash;
111 hash = xmalloc(sizeof (hash_t));
112 hash->h_buckets = xcalloc(sizeof (list_t *) * nbuckets);
113 hash->h_nbuckets = nbuckets;
114 hash->h_hashfn = hashfn ? hashfn : (int (*)())hash_def_hash;
115 hash->h_cmp = cmp ? cmp : (int (*)())hash_def_cmp;
117 return (hash);
121 hash_add(hash_t *hash, void *key)
123 int bucket = hash->h_hashfn(hash->h_nbuckets, key);
125 list_add(&hash->h_buckets[bucket], key);
142 hash_remove_cb(void *key1, void *key2, hash_t *hash)
144 return (hash->h_cmp(key1, key2));
148 hash_remove(hash_t *hash, void *key)
150 int bucket = hash->h_hashfn(hash->h_nbuckets, key);
152 (void) list_remove(&hash->h_buckets[bucket], key,
153 (int (*)())hash_remove_cb, hash);
157 hash_match(hash_t *hash, void *key, int (*fun)(void *, void *),
160 int bucket = hash->h_hashfn(hash->h_nbuckets, key);
162 return (list_iter(hash->h_buckets[bucket], fun, private) < 0);
181 hash_find_iter(hash_t *hash, void *key, int (*fun)(void *, void *),
184 int bucket = hash->h_hashfn(hash->h_nbuckets, key);
187 hd.hd_hash = hash;
192 return (list_iter(hash->h_buckets[bucket], (int (*)())hash_find_list_cb,
209 hash_find(hash_t *hash, void *key, void **value)
214 hd.hd_hash = hash;
218 ret = hash_match(hash, key, (int (*)())hash_find_first_cb, &hd);
226 hash_iter(hash_t *hash, int (*fun)(void *, void *), void *private)
232 for (i = 0; i < hash->h_nbuckets; i++) {
233 if (hash->h_buckets[i] != NULL) {
234 if ((cbrc = list_iter(hash->h_buckets[i], fun,
245 hash_count(hash_t *hash)
249 for (num = 0, i = 0; i < hash->h_nbuckets; i++)
250 num += list_count(hash->h_buckets[i]);
256 hash_free(hash_t *hash, void (*datafree)(void *, void *), void *private)
260 if (hash == NULL)
263 for (i = 0; i < hash->h_nbuckets; i++)
264 list_free(hash->h_buckets[i], datafree, private);
265 free(hash->h_buckets);
266 free(hash);
270 hash_stats(hash_t *hash, int verbose)
272 int min = list_count(hash->h_buckets[0]);
282 for (i = 1; i < hash->h_nbuckets; i++) {
283 count = list_count(hash->h_buckets[i]);
298 printf(" Buckets: %d\n", hash->h_nbuckets);
301 printf(" Average: %5.2f\n", (float)tot / (float)hash->h_nbuckets);