Lines Matching refs:htab
42 static Hashentry *_search(Hashtab * htab, /* The hash table */
50 Hashtab *htab;
55 htab = (Hashtab *) malloc(sizeof(Hashtab) + (sz - 1) * sizeof(Hashentry *));
56 if (htab == NULL)
60 htab->tab[i] = NULL;
62 htab->cmp = cmp;
63 htab->hash = hash;
64 htab->sz = sz;
65 return htab;
71 _search(Hashtab * htab, void *ptr)
75 assert(htab && ptr);
77 for (hptr = htab->tab[(*htab->hash) (ptr) % htab->sz];
80 if ((*htab->cmp) (ptr, hptr->ptr) == 0)
88 hashtabsearch(Hashtab * htab, void *ptr)
92 tmp = _search(htab, ptr);
101 hashtabadd(Hashtab * htab, void *ptr)
103 Hashentry *h = _search(htab, ptr);
106 assert(htab && ptr);
115 tabptr = &htab->tab[(*htab->hash) (ptr) % htab->sz];
129 _hashtabdel(Hashtab * htab, void *ptr, int freep)
133 assert(htab && ptr);
135 h = _search(htab, ptr);
150 hashtabforeach(Hashtab * htab, int (*func) (void *ptr, void *arg),
155 assert(htab);
157 for (h = htab->tab; h < &htab->tab[htab->sz]; ++h)