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