17db96d56Sopenharmony_ci/*[clinic input]
27db96d56Sopenharmony_cipreserve
37db96d56Sopenharmony_ci[clinic start generated code]*/
47db96d56Sopenharmony_ci
57db96d56Sopenharmony_ciPyDoc_STRVAR(_heapq_heappush__doc__,
67db96d56Sopenharmony_ci"heappush($module, heap, item, /)\n"
77db96d56Sopenharmony_ci"--\n"
87db96d56Sopenharmony_ci"\n"
97db96d56Sopenharmony_ci"Push item onto heap, maintaining the heap invariant.");
107db96d56Sopenharmony_ci
117db96d56Sopenharmony_ci#define _HEAPQ_HEAPPUSH_METHODDEF    \
127db96d56Sopenharmony_ci    {"heappush", _PyCFunction_CAST(_heapq_heappush), METH_FASTCALL, _heapq_heappush__doc__},
137db96d56Sopenharmony_ci
147db96d56Sopenharmony_cistatic PyObject *
157db96d56Sopenharmony_ci_heapq_heappush_impl(PyObject *module, PyObject *heap, PyObject *item);
167db96d56Sopenharmony_ci
177db96d56Sopenharmony_cistatic PyObject *
187db96d56Sopenharmony_ci_heapq_heappush(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
197db96d56Sopenharmony_ci{
207db96d56Sopenharmony_ci    PyObject *return_value = NULL;
217db96d56Sopenharmony_ci    PyObject *heap;
227db96d56Sopenharmony_ci    PyObject *item;
237db96d56Sopenharmony_ci
247db96d56Sopenharmony_ci    if (!_PyArg_CheckPositional("heappush", nargs, 2, 2)) {
257db96d56Sopenharmony_ci        goto exit;
267db96d56Sopenharmony_ci    }
277db96d56Sopenharmony_ci    if (!PyList_Check(args[0])) {
287db96d56Sopenharmony_ci        _PyArg_BadArgument("heappush", "argument 1", "list", args[0]);
297db96d56Sopenharmony_ci        goto exit;
307db96d56Sopenharmony_ci    }
317db96d56Sopenharmony_ci    heap = args[0];
327db96d56Sopenharmony_ci    item = args[1];
337db96d56Sopenharmony_ci    return_value = _heapq_heappush_impl(module, heap, item);
347db96d56Sopenharmony_ci
357db96d56Sopenharmony_ciexit:
367db96d56Sopenharmony_ci    return return_value;
377db96d56Sopenharmony_ci}
387db96d56Sopenharmony_ci
397db96d56Sopenharmony_ciPyDoc_STRVAR(_heapq_heappop__doc__,
407db96d56Sopenharmony_ci"heappop($module, heap, /)\n"
417db96d56Sopenharmony_ci"--\n"
427db96d56Sopenharmony_ci"\n"
437db96d56Sopenharmony_ci"Pop the smallest item off the heap, maintaining the heap invariant.");
447db96d56Sopenharmony_ci
457db96d56Sopenharmony_ci#define _HEAPQ_HEAPPOP_METHODDEF    \
467db96d56Sopenharmony_ci    {"heappop", (PyCFunction)_heapq_heappop, METH_O, _heapq_heappop__doc__},
477db96d56Sopenharmony_ci
487db96d56Sopenharmony_cistatic PyObject *
497db96d56Sopenharmony_ci_heapq_heappop_impl(PyObject *module, PyObject *heap);
507db96d56Sopenharmony_ci
517db96d56Sopenharmony_cistatic PyObject *
527db96d56Sopenharmony_ci_heapq_heappop(PyObject *module, PyObject *arg)
537db96d56Sopenharmony_ci{
547db96d56Sopenharmony_ci    PyObject *return_value = NULL;
557db96d56Sopenharmony_ci    PyObject *heap;
567db96d56Sopenharmony_ci
577db96d56Sopenharmony_ci    if (!PyList_Check(arg)) {
587db96d56Sopenharmony_ci        _PyArg_BadArgument("heappop", "argument", "list", arg);
597db96d56Sopenharmony_ci        goto exit;
607db96d56Sopenharmony_ci    }
617db96d56Sopenharmony_ci    heap = arg;
627db96d56Sopenharmony_ci    return_value = _heapq_heappop_impl(module, heap);
637db96d56Sopenharmony_ci
647db96d56Sopenharmony_ciexit:
657db96d56Sopenharmony_ci    return return_value;
667db96d56Sopenharmony_ci}
677db96d56Sopenharmony_ci
687db96d56Sopenharmony_ciPyDoc_STRVAR(_heapq_heapreplace__doc__,
697db96d56Sopenharmony_ci"heapreplace($module, heap, item, /)\n"
707db96d56Sopenharmony_ci"--\n"
717db96d56Sopenharmony_ci"\n"
727db96d56Sopenharmony_ci"Pop and return the current smallest value, and add the new item.\n"
737db96d56Sopenharmony_ci"\n"
747db96d56Sopenharmony_ci"This is more efficient than heappop() followed by heappush(), and can be\n"
757db96d56Sopenharmony_ci"more appropriate when using a fixed-size heap.  Note that the value\n"
767db96d56Sopenharmony_ci"returned may be larger than item!  That constrains reasonable uses of\n"
777db96d56Sopenharmony_ci"this routine unless written as part of a conditional replacement:\n"
787db96d56Sopenharmony_ci"\n"
797db96d56Sopenharmony_ci"    if item > heap[0]:\n"
807db96d56Sopenharmony_ci"        item = heapreplace(heap, item)");
817db96d56Sopenharmony_ci
827db96d56Sopenharmony_ci#define _HEAPQ_HEAPREPLACE_METHODDEF    \
837db96d56Sopenharmony_ci    {"heapreplace", _PyCFunction_CAST(_heapq_heapreplace), METH_FASTCALL, _heapq_heapreplace__doc__},
847db96d56Sopenharmony_ci
857db96d56Sopenharmony_cistatic PyObject *
867db96d56Sopenharmony_ci_heapq_heapreplace_impl(PyObject *module, PyObject *heap, PyObject *item);
877db96d56Sopenharmony_ci
887db96d56Sopenharmony_cistatic PyObject *
897db96d56Sopenharmony_ci_heapq_heapreplace(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
907db96d56Sopenharmony_ci{
917db96d56Sopenharmony_ci    PyObject *return_value = NULL;
927db96d56Sopenharmony_ci    PyObject *heap;
937db96d56Sopenharmony_ci    PyObject *item;
947db96d56Sopenharmony_ci
957db96d56Sopenharmony_ci    if (!_PyArg_CheckPositional("heapreplace", nargs, 2, 2)) {
967db96d56Sopenharmony_ci        goto exit;
977db96d56Sopenharmony_ci    }
987db96d56Sopenharmony_ci    if (!PyList_Check(args[0])) {
997db96d56Sopenharmony_ci        _PyArg_BadArgument("heapreplace", "argument 1", "list", args[0]);
1007db96d56Sopenharmony_ci        goto exit;
1017db96d56Sopenharmony_ci    }
1027db96d56Sopenharmony_ci    heap = args[0];
1037db96d56Sopenharmony_ci    item = args[1];
1047db96d56Sopenharmony_ci    return_value = _heapq_heapreplace_impl(module, heap, item);
1057db96d56Sopenharmony_ci
1067db96d56Sopenharmony_ciexit:
1077db96d56Sopenharmony_ci    return return_value;
1087db96d56Sopenharmony_ci}
1097db96d56Sopenharmony_ci
1107db96d56Sopenharmony_ciPyDoc_STRVAR(_heapq_heappushpop__doc__,
1117db96d56Sopenharmony_ci"heappushpop($module, heap, item, /)\n"
1127db96d56Sopenharmony_ci"--\n"
1137db96d56Sopenharmony_ci"\n"
1147db96d56Sopenharmony_ci"Push item on the heap, then pop and return the smallest item from the heap.\n"
1157db96d56Sopenharmony_ci"\n"
1167db96d56Sopenharmony_ci"The combined action runs more efficiently than heappush() followed by\n"
1177db96d56Sopenharmony_ci"a separate call to heappop().");
1187db96d56Sopenharmony_ci
1197db96d56Sopenharmony_ci#define _HEAPQ_HEAPPUSHPOP_METHODDEF    \
1207db96d56Sopenharmony_ci    {"heappushpop", _PyCFunction_CAST(_heapq_heappushpop), METH_FASTCALL, _heapq_heappushpop__doc__},
1217db96d56Sopenharmony_ci
1227db96d56Sopenharmony_cistatic PyObject *
1237db96d56Sopenharmony_ci_heapq_heappushpop_impl(PyObject *module, PyObject *heap, PyObject *item);
1247db96d56Sopenharmony_ci
1257db96d56Sopenharmony_cistatic PyObject *
1267db96d56Sopenharmony_ci_heapq_heappushpop(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
1277db96d56Sopenharmony_ci{
1287db96d56Sopenharmony_ci    PyObject *return_value = NULL;
1297db96d56Sopenharmony_ci    PyObject *heap;
1307db96d56Sopenharmony_ci    PyObject *item;
1317db96d56Sopenharmony_ci
1327db96d56Sopenharmony_ci    if (!_PyArg_CheckPositional("heappushpop", nargs, 2, 2)) {
1337db96d56Sopenharmony_ci        goto exit;
1347db96d56Sopenharmony_ci    }
1357db96d56Sopenharmony_ci    if (!PyList_Check(args[0])) {
1367db96d56Sopenharmony_ci        _PyArg_BadArgument("heappushpop", "argument 1", "list", args[0]);
1377db96d56Sopenharmony_ci        goto exit;
1387db96d56Sopenharmony_ci    }
1397db96d56Sopenharmony_ci    heap = args[0];
1407db96d56Sopenharmony_ci    item = args[1];
1417db96d56Sopenharmony_ci    return_value = _heapq_heappushpop_impl(module, heap, item);
1427db96d56Sopenharmony_ci
1437db96d56Sopenharmony_ciexit:
1447db96d56Sopenharmony_ci    return return_value;
1457db96d56Sopenharmony_ci}
1467db96d56Sopenharmony_ci
1477db96d56Sopenharmony_ciPyDoc_STRVAR(_heapq_heapify__doc__,
1487db96d56Sopenharmony_ci"heapify($module, heap, /)\n"
1497db96d56Sopenharmony_ci"--\n"
1507db96d56Sopenharmony_ci"\n"
1517db96d56Sopenharmony_ci"Transform list into a heap, in-place, in O(len(heap)) time.");
1527db96d56Sopenharmony_ci
1537db96d56Sopenharmony_ci#define _HEAPQ_HEAPIFY_METHODDEF    \
1547db96d56Sopenharmony_ci    {"heapify", (PyCFunction)_heapq_heapify, METH_O, _heapq_heapify__doc__},
1557db96d56Sopenharmony_ci
1567db96d56Sopenharmony_cistatic PyObject *
1577db96d56Sopenharmony_ci_heapq_heapify_impl(PyObject *module, PyObject *heap);
1587db96d56Sopenharmony_ci
1597db96d56Sopenharmony_cistatic PyObject *
1607db96d56Sopenharmony_ci_heapq_heapify(PyObject *module, PyObject *arg)
1617db96d56Sopenharmony_ci{
1627db96d56Sopenharmony_ci    PyObject *return_value = NULL;
1637db96d56Sopenharmony_ci    PyObject *heap;
1647db96d56Sopenharmony_ci
1657db96d56Sopenharmony_ci    if (!PyList_Check(arg)) {
1667db96d56Sopenharmony_ci        _PyArg_BadArgument("heapify", "argument", "list", arg);
1677db96d56Sopenharmony_ci        goto exit;
1687db96d56Sopenharmony_ci    }
1697db96d56Sopenharmony_ci    heap = arg;
1707db96d56Sopenharmony_ci    return_value = _heapq_heapify_impl(module, heap);
1717db96d56Sopenharmony_ci
1727db96d56Sopenharmony_ciexit:
1737db96d56Sopenharmony_ci    return return_value;
1747db96d56Sopenharmony_ci}
1757db96d56Sopenharmony_ci
1767db96d56Sopenharmony_ciPyDoc_STRVAR(_heapq__heappop_max__doc__,
1777db96d56Sopenharmony_ci"_heappop_max($module, heap, /)\n"
1787db96d56Sopenharmony_ci"--\n"
1797db96d56Sopenharmony_ci"\n"
1807db96d56Sopenharmony_ci"Maxheap variant of heappop.");
1817db96d56Sopenharmony_ci
1827db96d56Sopenharmony_ci#define _HEAPQ__HEAPPOP_MAX_METHODDEF    \
1837db96d56Sopenharmony_ci    {"_heappop_max", (PyCFunction)_heapq__heappop_max, METH_O, _heapq__heappop_max__doc__},
1847db96d56Sopenharmony_ci
1857db96d56Sopenharmony_cistatic PyObject *
1867db96d56Sopenharmony_ci_heapq__heappop_max_impl(PyObject *module, PyObject *heap);
1877db96d56Sopenharmony_ci
1887db96d56Sopenharmony_cistatic PyObject *
1897db96d56Sopenharmony_ci_heapq__heappop_max(PyObject *module, PyObject *arg)
1907db96d56Sopenharmony_ci{
1917db96d56Sopenharmony_ci    PyObject *return_value = NULL;
1927db96d56Sopenharmony_ci    PyObject *heap;
1937db96d56Sopenharmony_ci
1947db96d56Sopenharmony_ci    if (!PyList_Check(arg)) {
1957db96d56Sopenharmony_ci        _PyArg_BadArgument("_heappop_max", "argument", "list", arg);
1967db96d56Sopenharmony_ci        goto exit;
1977db96d56Sopenharmony_ci    }
1987db96d56Sopenharmony_ci    heap = arg;
1997db96d56Sopenharmony_ci    return_value = _heapq__heappop_max_impl(module, heap);
2007db96d56Sopenharmony_ci
2017db96d56Sopenharmony_ciexit:
2027db96d56Sopenharmony_ci    return return_value;
2037db96d56Sopenharmony_ci}
2047db96d56Sopenharmony_ci
2057db96d56Sopenharmony_ciPyDoc_STRVAR(_heapq__heapreplace_max__doc__,
2067db96d56Sopenharmony_ci"_heapreplace_max($module, heap, item, /)\n"
2077db96d56Sopenharmony_ci"--\n"
2087db96d56Sopenharmony_ci"\n"
2097db96d56Sopenharmony_ci"Maxheap variant of heapreplace.");
2107db96d56Sopenharmony_ci
2117db96d56Sopenharmony_ci#define _HEAPQ__HEAPREPLACE_MAX_METHODDEF    \
2127db96d56Sopenharmony_ci    {"_heapreplace_max", _PyCFunction_CAST(_heapq__heapreplace_max), METH_FASTCALL, _heapq__heapreplace_max__doc__},
2137db96d56Sopenharmony_ci
2147db96d56Sopenharmony_cistatic PyObject *
2157db96d56Sopenharmony_ci_heapq__heapreplace_max_impl(PyObject *module, PyObject *heap,
2167db96d56Sopenharmony_ci                             PyObject *item);
2177db96d56Sopenharmony_ci
2187db96d56Sopenharmony_cistatic PyObject *
2197db96d56Sopenharmony_ci_heapq__heapreplace_max(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
2207db96d56Sopenharmony_ci{
2217db96d56Sopenharmony_ci    PyObject *return_value = NULL;
2227db96d56Sopenharmony_ci    PyObject *heap;
2237db96d56Sopenharmony_ci    PyObject *item;
2247db96d56Sopenharmony_ci
2257db96d56Sopenharmony_ci    if (!_PyArg_CheckPositional("_heapreplace_max", nargs, 2, 2)) {
2267db96d56Sopenharmony_ci        goto exit;
2277db96d56Sopenharmony_ci    }
2287db96d56Sopenharmony_ci    if (!PyList_Check(args[0])) {
2297db96d56Sopenharmony_ci        _PyArg_BadArgument("_heapreplace_max", "argument 1", "list", args[0]);
2307db96d56Sopenharmony_ci        goto exit;
2317db96d56Sopenharmony_ci    }
2327db96d56Sopenharmony_ci    heap = args[0];
2337db96d56Sopenharmony_ci    item = args[1];
2347db96d56Sopenharmony_ci    return_value = _heapq__heapreplace_max_impl(module, heap, item);
2357db96d56Sopenharmony_ci
2367db96d56Sopenharmony_ciexit:
2377db96d56Sopenharmony_ci    return return_value;
2387db96d56Sopenharmony_ci}
2397db96d56Sopenharmony_ci
2407db96d56Sopenharmony_ciPyDoc_STRVAR(_heapq__heapify_max__doc__,
2417db96d56Sopenharmony_ci"_heapify_max($module, heap, /)\n"
2427db96d56Sopenharmony_ci"--\n"
2437db96d56Sopenharmony_ci"\n"
2447db96d56Sopenharmony_ci"Maxheap variant of heapify.");
2457db96d56Sopenharmony_ci
2467db96d56Sopenharmony_ci#define _HEAPQ__HEAPIFY_MAX_METHODDEF    \
2477db96d56Sopenharmony_ci    {"_heapify_max", (PyCFunction)_heapq__heapify_max, METH_O, _heapq__heapify_max__doc__},
2487db96d56Sopenharmony_ci
2497db96d56Sopenharmony_cistatic PyObject *
2507db96d56Sopenharmony_ci_heapq__heapify_max_impl(PyObject *module, PyObject *heap);
2517db96d56Sopenharmony_ci
2527db96d56Sopenharmony_cistatic PyObject *
2537db96d56Sopenharmony_ci_heapq__heapify_max(PyObject *module, PyObject *arg)
2547db96d56Sopenharmony_ci{
2557db96d56Sopenharmony_ci    PyObject *return_value = NULL;
2567db96d56Sopenharmony_ci    PyObject *heap;
2577db96d56Sopenharmony_ci
2587db96d56Sopenharmony_ci    if (!PyList_Check(arg)) {
2597db96d56Sopenharmony_ci        _PyArg_BadArgument("_heapify_max", "argument", "list", arg);
2607db96d56Sopenharmony_ci        goto exit;
2617db96d56Sopenharmony_ci    }
2627db96d56Sopenharmony_ci    heap = arg;
2637db96d56Sopenharmony_ci    return_value = _heapq__heapify_max_impl(module, heap);
2647db96d56Sopenharmony_ci
2657db96d56Sopenharmony_ciexit:
2667db96d56Sopenharmony_ci    return return_value;
2677db96d56Sopenharmony_ci}
2687db96d56Sopenharmony_ci/*[clinic end generated code: output=9a22715a8bf0c91d input=a9049054013a1b77]*/
269