Lines Matching refs:rc

546 	RCURSOR *rc;
548 rc = *curs = malloc(sizeof(RCURSOR));
549 if (rc == NULL) {
553 memset(rc, 0, sizeof(*rc));
555 rc->ssize = RCURSOR_MINSS;
556 rc->stack = malloc(rc->ssize * sizeof(EPGNO));
557 if (rc->stack == NULL) {
558 free(rc);
562 bt_rcclr(rc);
570 RCURSOR *rc;
572 rc = *curs;
573 free(rc->stack);
574 free(rc);
579 bt_rcpush(rc, p, i)
580 RCURSOR *rc;
586 rc->sp->pgno = p;
587 rc->sp->index = i;
588 if (++rc->sp > rc->stack + rc->ssize) {
589 status = bt_rcgrowstk(rc);
597 bt_rcpop(rc)
598 RCURSOR *rc;
600 return (rc->sp == rc->stack) ? NULL : --rc->sp;
604 bt_rcclr(rc)
605 RCURSOR *rc;
607 rc->sp = rc->stack;
611 bt_rcgrowstk(rc)
612 RCURSOR *rc;
617 osize = rc->ssize;
618 rc->ssize *= 2;
619 e = realloc(rc->stack, rc->ssize * sizeof(EPGNO));
621 rc->ssize = osize;
625 rc->stack = e;
641 RCURSOR *rc;
663 rc = *curs;
673 if (F_ISSET(&rc->cursor, CURS_INIT)) {
674 status = bt_rseqadv(t, &e, rc, flags);
681 status = bt_rseqset(t, &e, key, rc, flags);
713 * rc: recursion cursor
718 * Updates rc's stack and cursor.
724 bt_rseqset(t, ep, key, rc, flags)
728 RCURSOR *rc;
746 bt_rcclr(rc);
761 status = bt_rcpush(rc, h->pgno, 0);
771 bt_rcclr(rc);
786 status = bt_rcpush(rc, h->pgno, NEXTINDEX(h) - 1);
795 rc->cursor.pg.pgno = ep->page->pgno;
796 rc->cursor.pg.index = ep->index;
797 F_CLR(&rc->cursor, CURS_ACQUIRE | CURS_AFTER | CURS_BEFORE);
798 F_SET(&rc->cursor, CURS_INIT);
809 * rc: recursion cursor
814 * Updates rc's stack and cursor.
820 bt_rseqadv(t, ep, rc, flags)
823 RCURSOR *rc;
837 c = &rc->cursor;
852 e = bt_rcpop(rc);
863 status = bt_rcpush(rc, h->pgno, idx);
877 e = bt_rcpop(rc);
889 status = bt_rcpush(rc, h->pgno, idx);