Lines Matching refs:na
1623 /* Merge the na elements starting at ssa with the nb elements starting at
1624 * ssb.keys = ssa.keys + na in a stable way, in-place. na and nb must be > 0.
1625 * Must also have that ssa.keys[na-1] belongs at the end of the merge, and
1626 * should have na <= nb. See listsort.txt for more info. Return 0 if
1630 merge_lo(MergeState *ms, sortslice ssa, Py_ssize_t na,
1638 assert(ms && ssa.keys && ssb.keys && na > 0 && nb > 0);
1639 assert(ssa.keys + na == ssb.keys);
1640 if (MERGE_GETMEM(ms, na) < 0)
1642 sortslice_memcpy(&ms->a, 0, &ssa, 0, na);
1650 if (na == 1)
1662 assert(na > 1 && nb > 0);
1680 --na;
1681 if (na == 1)
1695 assert(na > 1 && nb > 0);
1698 k = gallop_right(ms, ssb.keys[0], ssa.keys, na, 0);
1706 na -= k;
1707 if (na == 1)
1709 /* na==0 is impossible now if the comparison
1713 if (na == 0)
1734 --na;
1735 if (na == 1)
1744 if (na)
1745 sortslice_memcpy(&dest, 0, &ssa, 0, na);
1748 assert(na == 1 && nb > 0);
1755 /* Merge the na elements starting at pa with the nb elements starting at
1756 * ssb.keys = ssa.keys + na in a stable way, in-place. na and nb must be > 0.
1757 * Must also have that ssa.keys[na-1] belongs at the end of the merge, and
1758 * should have na >= nb. See listsort.txt for more info. Return 0 if
1762 merge_hi(MergeState *ms, sortslice ssa, Py_ssize_t na,
1770 assert(ms && ssa.keys && ssb.keys && na > 0 && nb > 0);
1771 assert(ssa.keys + na == ssb.keys);
1782 sortslice_advance(&ssa, na - 1);
1785 --na;
1786 if (na == 0)
1800 assert(na > 0 && nb > 1);
1808 --na;
1809 if (na == 0)
1833 assert(na > 0 && nb > 1);
1836 k = gallop_right(ms, ssb.keys[0], basea.keys, na, na-1);
1839 k = na - k;
1845 na -= k;
1846 if (na == 0)
1874 --na;
1875 if (na == 0)
1888 assert(nb == 1 && na > 0);
1890 sortslice_memmove(&dest, 1-na, &ssa, 1-na, na);
1891 sortslice_advance(&dest, -na);
1892 sortslice_advance(&ssa, -na);
1904 Py_ssize_t na, nb;
1913 na = ms->pending[i].len;
1916 assert(na > 0 && nb > 0);
1917 assert(ssa.keys + na == ssb.keys);
1923 ms->pending[i].len = na + nb;
1931 k = gallop_right(ms, *ssb.keys, ssa.keys, na, 0);
1935 na -= k;
1936 if (na == 0)
1942 nb = gallop_left(ms, ssa.keys[na-1], ssb.keys, nb, nb-1);
1947 * min(na, nb) elements.
1949 if (na <= nb)
1950 return merge_lo(ms, ssa, na, ssb, nb);
1952 return merge_hi(ms, ssa, na, ssb, nb);