Lines Matching defs:rc

543 	RCURSOR *rc;
545 rc = *curs = malloc(sizeof(RCURSOR));
546 if (rc == NULL) {
550 memset(rc, 0, sizeof(*rc));
552 rc->ssize = RCURSOR_MINSS;
553 rc->stack = malloc(rc->ssize * sizeof(EPGNO));
554 if (rc->stack == NULL) {
555 free(rc);
559 bt_rcclr(rc);
567 RCURSOR *rc;
569 rc = *curs;
570 free(rc->stack);
571 free(rc);
576 bt_rcpush(rc, p, i)
577 RCURSOR *rc;
583 rc->sp->pgno = p;
584 rc->sp->index = i;
585 if (++rc->sp > rc->stack + rc->ssize) {
586 status = bt_rcgrowstk(rc);
594 bt_rcpop(rc)
595 RCURSOR *rc;
597 return (rc->sp == rc->stack) ? NULL : --rc->sp;
601 bt_rcclr(rc)
602 RCURSOR *rc;
604 rc->sp = rc->stack;
608 bt_rcgrowstk(rc)
609 RCURSOR *rc;
614 osize = rc->ssize;
615 rc->ssize *= 2;
616 e = realloc(rc->stack, rc->ssize * sizeof(EPGNO));
618 rc->ssize = osize;
622 rc->stack = e;
638 RCURSOR *rc;
660 rc = *curs;
670 if (F_ISSET(&rc->cursor, CURS_INIT)) {
671 status = bt_rseqadv(t, &e, rc, flags);
678 status = bt_rseqset(t, &e, key, rc, flags);
710 * rc: recursion cursor
715 * Updates rc's stack and cursor.
721 bt_rseqset(t, ep, key, rc, flags)
725 RCURSOR *rc;
743 bt_rcclr(rc);
758 status = bt_rcpush(rc, h->pgno, 0);
768 bt_rcclr(rc);
783 status = bt_rcpush(rc, h->pgno, NEXTINDEX(h) - 1);
792 rc->cursor.pg.pgno = ep->page->pgno;
793 rc->cursor.pg.index = ep->index;
794 F_CLR(&rc->cursor, CURS_ACQUIRE | CURS_AFTER | CURS_BEFORE);
795 F_SET(&rc->cursor, CURS_INIT);
806 * rc: recursion cursor
811 * Updates rc's stack and cursor.
817 bt_rseqadv(t, ep, rc, flags)
820 RCURSOR *rc;
834 c = &rc->cursor;
849 e = bt_rcpop(rc);
860 status = bt_rcpush(rc, h->pgno, idx);
874 e = bt_rcpop(rc);
886 status = bt_rcpush(rc, h->pgno, idx);