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