Lines Matching refs:tab

60 	const htab_t *tab,  in avl_search()  argument
64 htab_itemx_t *x = tab->avlt; in avl_search()
93 const htab_t *tab, in avl_search_next() argument
98 htab_itemx_t *x = tab->avlt; in avl_search_next()
276 htab_t *tab, in avl_insert() argument
288 if (tab->avlt == NULL) { in avl_insert()
289 tab->avlt = x; in avl_insert()
293 a = tab->avlt; in avl_insert()
294 p = tab->avlt; in avl_insert()
360 tab->avlt = c; in avl_insert()
369 if (x->uid > tab->buid) { in avl_insert()
370 tab->buid = x->uid; in avl_insert()
387 htab_t *tab, in new_uid() argument
400 avl_search(tab, uid) != NULL) { in new_uid()
410 if (uid > tab->buid && in new_uid()
411 (tab->flags & UID_FLAGS_SEQ) != 0) { in new_uid()
412 start = tab->buid + 1; in new_uid()
424 x->n = tab->list; in new_uid()
425 tab->list = x; in new_uid()
426 if (tab->tail == NULL) { in new_uid()
427 tab->tail = x; in new_uid()
435 avl_insert(tab, x); in new_uid()
460 htab_t *tab, in uid_insert() argument
473 x = avl_search(tab, uid); in uid_insert()
475 x = new_uid(tab, uid); in uid_insert()
484 x = tab->list; in uid_insert()
494 UID_REUSABLE(tab->c->timestamp(), x) == 0) { in uid_insert()
496 tab->list = x; in uid_insert()
497 x = new_uid(tab, tab->buid + 1); in uid_insert()
501 tab->list = n; in uid_insert()
504 if (tab->list == NULL) { in uid_insert()
505 tab->tail = NULL; in uid_insert()
534 htab_t *tab in enlarge_htab() argument
547 logsize = tab->logsize + 1; in enlarge_htab()
550 newsz * tab->chunks, sizeof (htab_item_t *)); in enlarge_htab()
554 oldsz = (1 << tab->logsize); in enlarge_htab()
556 while (i < tab->chunks) { in enlarge_htab()
559 item = tab->items[(i * oldsz) + j]; in enlarge_htab()
564 uid = tab->c->get_uid(item->p); in enlarge_htab()
566 tab->c->get_uid((*itemp)->p) > in enlarge_htab()
578 free(tab->items); in enlarge_htab()
579 tab->items = items; in enlarge_htab()
580 tab->logsize = logsize; in enlarge_htab()
581 tab->mask = mask; in enlarge_htab()
620 htab_t *tab = NULL; in htab_create() local
627 tab = (htab_t *)calloc(1, sizeof (htab_t)); in htab_create()
628 if (tab != NULL) { in htab_create()
633 tab->flags = flags; in htab_create()
634 tab->items = items; in htab_create()
635 tab->logsize = logsize; in htab_create()
636 tab->chunks = chunks; in htab_create()
637 tab->mask = count - 1; in htab_create()
638 tab->count = 1; /* reserve one */ in htab_create()
639 tab->avlt = NULL; in htab_create()
640 tab->buid = 0; in htab_create()
641 tab->list = NULL; in htab_create()
642 tab->tail = NULL; in htab_create()
644 free(tab); in htab_create()
645 tab = NULL; in htab_create()
650 return (tab); in htab_create()
695 htab_t *tab, in htab_add() argument
712 hval = VALID_HVAL(tab->c->get_hval(p, 0, &flags)); in htab_add()
715 items = tab->items[hval & tab->mask]; in htab_add()
717 if (tab->c->cmp(items->p, p, 0) == 0) { in htab_add()
719 ec = tab->c->replace_hook(items->p, p, uid_p, in htab_add()
737 items = (htab_item_t *)calloc(tab->chunks, sizeof (htab_item_t)); in htab_add()
740 tab->count == 0 || in htab_add()
741 (++tab->count) == 0) { in htab_add()
748 chunksz = (1 << tab->logsize); in htab_add()
749 if (tab->count >= (chunksz * HASH_RATIO) && in htab_add()
750 tab->logsize < MAX_LOGSIZE) { in htab_add()
751 enlarge_htab(tab); in htab_add()
752 chunksz = (1 << tab->logsize); in htab_add()
756 uid = tab->c->get_uid(p); in htab_add()
757 switch (uid_insert(tab, &uid, hval)) { in htab_add()
767 tab->c->set_uid(p, uid); in htab_add()
776 ec = tab->c->add_hook(p); in htab_add()
783 itemp = &tab->items[(i * chunksz) + (hval & tab->mask)]; in htab_add()
785 tab->c->get_uid((*itemp)->p) > uid) { in htab_add()
791 if (i < tab->chunks) { in htab_add()
792 hval = VALID_HVAL(tab->c->get_hval(p, i, &flags)); in htab_add()
806 tab->c->ddd(p, '+'); in htab_add()
836 htab_t *tab, in htab_remove() argument
854 x = avl_search(tab, uid); in htab_remove()
862 hval = VALID_HVAL(tab->c->get_hval(p, 0, &flags)); in htab_remove()
867 chunksz = (1 << tab->logsize); in htab_remove()
869 itemp = &tab->items[(i * chunksz) + (hval & tab->mask)]; in htab_remove()
873 if (tab->c->cmp(item->p, p, 1) == 0) { in htab_remove()
877 if ((clone = tab->c->clone(item->p, in htab_remove()
879 tab->c->ddd(item->p, '-'); in htab_remove()
880 tab->count --; in htab_remove()
906 if (zhizi != NULL && i < tab->chunks) { in htab_remove()
907 hval = VALID_HVAL(tab->c->get_hval( in htab_remove()
917 uid = tab->c->get_uid(zhizi); in htab_remove()
919 x = avl_search(tab, uid); in htab_remove()
925 x->t = tab->c->timestamp(); in htab_remove()
927 if (tab->list != NULL) { in htab_remove()
928 tab->tail->n = x; in htab_remove()
930 tab->list = x; in htab_remove()
932 tab->tail = x; in htab_remove()
961 htab_t *tab, in htab_lookup() argument
980 x = avl_search(tab, uid); in htab_lookup()
987 hval = VALID_HVAL(tab->c->get_hval(p, 0, &flags)); in htab_lookup()
993 chunksz = (1 << tab->logsize); in htab_lookup()
994 itemp = &tab->items[(i * chunksz) + (hval & tab->mask)]; in htab_lookup()
997 if (tab->c->cmp(item->p, p, 1) == 0) { in htab_lookup()
1010 *uid_p = tab->c->get_uid(zhizi); in htab_lookup()
1018 ASSERT(tab->chunks == 1 && x != NULL); in htab_lookup()
1023 hval = VALID_HVAL(tab->c->get_hval(zhizi, 0, &flags)); in htab_lookup()
1026 itemp = &tab->items[(hval & tab->mask)]; in htab_lookup()
1028 (tab->c->get_uid((*itemp)->p) > in htab_lookup()
1029 tab->c->get_uid(zhizi))) { in htab_lookup()
1056 htab_t *tab, in htab_get_next() argument
1064 x = avl_search_next(tab, uid); in htab_get_next()
1090 htab_t *tab in htab_dump() argument
1098 chunksz = (1 << tab->logsize); in htab_dump()
1101 items = tab->items[i]; in htab_dump()
1103 tab->c->dump(items->p); in htab_dump()