Lines Matching refs:qpi
1923 dns_qpiter_init(dns_qpreadable_t qpr, dns_qpiter_t *qpi) {
1926 REQUIRE(qpi != NULL);
1927 *qpi = (dns_qpiter_t){
1938 last_twig(dns_qpiter_t *qpi, bool forward) {
1940 if (qpi->sp > 0) {
1941 dns_qpnode_t *child = qpi->stack[qpi->sp];
1942 dns_qpnode_t *parent = qpi->stack[qpi->sp - 1];
1943 pos = child - ref_ptr(qpi->qp, branch_twigs_ref(parent));
1957 iterate(bool forward, dns_qpiter_t *qpi, dns_name_t *name, void **pval_r,
1962 REQUIRE(QPITER_VALID(qpi));
1964 dns_qpreader_t *qp = qpi->qp;
1974 if (qpi->stack[qpi->sp] == NULL) {
1976 INSIST(qpi->sp == 0);
1977 qpi->stack[0] = node;
1986 INSIST(qpi->sp > 0);
1987 } else if (last_twig(qpi, forward)) {
1992 if (qpi->sp == 0) {
1997 dns_qpiter_init(qpi->qp, qpi);
2004 qpi->stack[qpi->sp] = NULL;
2005 qpi->sp--;
2012 qpi->stack[qpi->sp] += (forward ? 1 : -1);
2013 node = qpi->stack[qpi->sp];
2021 qpi->sp++;
2022 INSIST(qpi->sp < DNS_QP_MAXKEY);
2025 qpi->stack[qpi->sp] = node;
2033 maybe_set_name(qpi->qp, node, name);
2038 dns_qpiter_next(dns_qpiter_t *qpi, dns_name_t *name, void **pval_r,
2040 return iterate(true, qpi, name, pval_r, ival_r);
2044 dns_qpiter_prev(dns_qpiter_t *qpi, dns_name_t *name, void **pval_r,
2046 return iterate(false, qpi, name, pval_r, ival_r);
2050 dns_qpiter_current(dns_qpiter_t *qpi, dns_name_t *name, void **pval_r,
2054 REQUIRE(QPITER_VALID(qpi));
2056 node = qpi->stack[qpi->sp];
2063 maybe_set_name(qpi->qp, node, name);