Home | History | Annotate | Download | only in Objects

Lines Matching refs:na

1451 /* Merge the na elements starting at pa with the nb elements starting at pb

1452 * in a stable way, in-place. na and nb must be > 0, and pa + na == pb.
1453 * Must also have that *pb < *pa, that pa[na-1] belongs at the end of the
1454 * merge, and should have na <= nb. See listsort.txt for more info.
1458 merge_lo(MergeState *ms, PyObject **pa, Py_ssize_t na,
1467 assert(ms && pa && pb && na > 0 && nb > 0 && pa + na == pb);
1468 if (MERGE_GETMEM(ms, na) < 0)
1470 memcpy(ms->a, pa, na * sizeof(PyObject*));
1478 if (na == 1)
1491 assert(na > 1 && nb > 0);
1509 --na;
1510 if (na == 1)
1524 assert(na > 1 && nb > 0);
1527 k = gallop_right(*pb, pa, na, 0, compare);
1535 na -= k;
1536 if (na == 1)
1538 /* na==0 is impossible now if the comparison
1542 if (na == 0)
1563 --na;
1564 if (na == 1)
1573 if (na)
1574 memcpy(dest, pa, na * sizeof(PyObject*));
1577 assert(na == 1 && nb > 0);
1584 /* Merge the na elements starting at pa with the nb elements starting at pb
1585 * in a stable way, in-place. na and nb must be > 0, and pa + na == pb.
1586 * Must also have that *pb < *pa, that pa[na-1] belongs at the end of the
1587 * merge, and should have na >= nb. See listsort.txt for more info.
1591 merge_hi(MergeState *ms, PyObject **pa, Py_ssize_t na, PyObject **pb, Py_ssize_t nb)
1601 assert(ms && pa && pb && na > 0 && nb > 0 && pa + na == pb);
1609 pa += na - 1;
1612 --na;
1613 if (na == 0)
1628 assert(na > 0 && nb > 1);
1636 --na;
1637 if (na == 0)
1661 assert(na > 0 && nb > 1);
1664 k = gallop_right(*pb, basea, na, na-1, compare);
1667 k = na - k;
1673 na -= k;
1674 if (na == 0)
1702 --na;
1703 na == 0)
1716 assert(nb == 1 && na > 0);
1718 dest -= na;
1719 pa -= na;
1720 memmove(dest+1, pa+1, na * sizeof(PyObject *));
1732 Py_ssize_t na, nb;
1742 na = ms->pending[i].len;
1745 assert(na > 0 && nb > 0);
1746 assert(pa + na == pb);
1752 ms->pending[i].len = na + nb;
1761 k = gallop_right(*pb, pa, na, 0, compare);
1765 na -= k;
1766 if (na == 0)
1772 nb = gallop_left(pa[na-1], pb, nb, nb-1, compare);
1777 * min(na, nb) elements.
1779 if (na <= nb)
1780 return merge_lo(ms, pa, na, pb, nb);
1782 return merge_hi(ms, pa, na, pb, nb);