17db96d56Sopenharmony_ci/*[clinic input]
27db96d56Sopenharmony_cipreserve
37db96d56Sopenharmony_ci[clinic start generated code]*/
47db96d56Sopenharmony_ci
57db96d56Sopenharmony_ciPyDoc_STRVAR(_bisect_bisect_right__doc__,
67db96d56Sopenharmony_ci"bisect_right($module, /, a, x, lo=0, hi=None, *, key=None)\n"
77db96d56Sopenharmony_ci"--\n"
87db96d56Sopenharmony_ci"\n"
97db96d56Sopenharmony_ci"Return the index where to insert item x in list a, assuming a is sorted.\n"
107db96d56Sopenharmony_ci"\n"
117db96d56Sopenharmony_ci"The return value i is such that all e in a[:i] have e <= x, and all e in\n"
127db96d56Sopenharmony_ci"a[i:] have e > x.  So if x already appears in the list, a.insert(i, x) will\n"
137db96d56Sopenharmony_ci"insert just after the rightmost x already there.\n"
147db96d56Sopenharmony_ci"\n"
157db96d56Sopenharmony_ci"Optional args lo (default 0) and hi (default len(a)) bound the\n"
167db96d56Sopenharmony_ci"slice of a to be searched.");
177db96d56Sopenharmony_ci
187db96d56Sopenharmony_ci#define _BISECT_BISECT_RIGHT_METHODDEF    \
197db96d56Sopenharmony_ci    {"bisect_right", _PyCFunction_CAST(_bisect_bisect_right), METH_FASTCALL|METH_KEYWORDS, _bisect_bisect_right__doc__},
207db96d56Sopenharmony_ci
217db96d56Sopenharmony_cistatic Py_ssize_t
227db96d56Sopenharmony_ci_bisect_bisect_right_impl(PyObject *module, PyObject *a, PyObject *x,
237db96d56Sopenharmony_ci                          Py_ssize_t lo, Py_ssize_t hi, PyObject *key);
247db96d56Sopenharmony_ci
257db96d56Sopenharmony_cistatic PyObject *
267db96d56Sopenharmony_ci_bisect_bisect_right(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
277db96d56Sopenharmony_ci{
287db96d56Sopenharmony_ci    PyObject *return_value = NULL;
297db96d56Sopenharmony_ci    static const char * const _keywords[] = {"a", "x", "lo", "hi", "key", NULL};
307db96d56Sopenharmony_ci    static _PyArg_Parser _parser = {NULL, _keywords, "bisect_right", 0};
317db96d56Sopenharmony_ci    PyObject *argsbuf[5];
327db96d56Sopenharmony_ci    Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 2;
337db96d56Sopenharmony_ci    PyObject *a;
347db96d56Sopenharmony_ci    PyObject *x;
357db96d56Sopenharmony_ci    Py_ssize_t lo = 0;
367db96d56Sopenharmony_ci    Py_ssize_t hi = -1;
377db96d56Sopenharmony_ci    PyObject *key = Py_None;
387db96d56Sopenharmony_ci    Py_ssize_t _return_value;
397db96d56Sopenharmony_ci
407db96d56Sopenharmony_ci    args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 2, 4, 0, argsbuf);
417db96d56Sopenharmony_ci    if (!args) {
427db96d56Sopenharmony_ci        goto exit;
437db96d56Sopenharmony_ci    }
447db96d56Sopenharmony_ci    a = args[0];
457db96d56Sopenharmony_ci    x = args[1];
467db96d56Sopenharmony_ci    if (!noptargs) {
477db96d56Sopenharmony_ci        goto skip_optional_pos;
487db96d56Sopenharmony_ci    }
497db96d56Sopenharmony_ci    if (args[2]) {
507db96d56Sopenharmony_ci        {
517db96d56Sopenharmony_ci            Py_ssize_t ival = -1;
527db96d56Sopenharmony_ci            PyObject *iobj = _PyNumber_Index(args[2]);
537db96d56Sopenharmony_ci            if (iobj != NULL) {
547db96d56Sopenharmony_ci                ival = PyLong_AsSsize_t(iobj);
557db96d56Sopenharmony_ci                Py_DECREF(iobj);
567db96d56Sopenharmony_ci            }
577db96d56Sopenharmony_ci            if (ival == -1 && PyErr_Occurred()) {
587db96d56Sopenharmony_ci                goto exit;
597db96d56Sopenharmony_ci            }
607db96d56Sopenharmony_ci            lo = ival;
617db96d56Sopenharmony_ci        }
627db96d56Sopenharmony_ci        if (!--noptargs) {
637db96d56Sopenharmony_ci            goto skip_optional_pos;
647db96d56Sopenharmony_ci        }
657db96d56Sopenharmony_ci    }
667db96d56Sopenharmony_ci    if (args[3]) {
677db96d56Sopenharmony_ci        if (!_Py_convert_optional_to_ssize_t(args[3], &hi)) {
687db96d56Sopenharmony_ci            goto exit;
697db96d56Sopenharmony_ci        }
707db96d56Sopenharmony_ci        if (!--noptargs) {
717db96d56Sopenharmony_ci            goto skip_optional_pos;
727db96d56Sopenharmony_ci        }
737db96d56Sopenharmony_ci    }
747db96d56Sopenharmony_ciskip_optional_pos:
757db96d56Sopenharmony_ci    if (!noptargs) {
767db96d56Sopenharmony_ci        goto skip_optional_kwonly;
777db96d56Sopenharmony_ci    }
787db96d56Sopenharmony_ci    key = args[4];
797db96d56Sopenharmony_ciskip_optional_kwonly:
807db96d56Sopenharmony_ci    _return_value = _bisect_bisect_right_impl(module, a, x, lo, hi, key);
817db96d56Sopenharmony_ci    if ((_return_value == -1) && PyErr_Occurred()) {
827db96d56Sopenharmony_ci        goto exit;
837db96d56Sopenharmony_ci    }
847db96d56Sopenharmony_ci    return_value = PyLong_FromSsize_t(_return_value);
857db96d56Sopenharmony_ci
867db96d56Sopenharmony_ciexit:
877db96d56Sopenharmony_ci    return return_value;
887db96d56Sopenharmony_ci}
897db96d56Sopenharmony_ci
907db96d56Sopenharmony_ciPyDoc_STRVAR(_bisect_insort_right__doc__,
917db96d56Sopenharmony_ci"insort_right($module, /, a, x, lo=0, hi=None, *, key=None)\n"
927db96d56Sopenharmony_ci"--\n"
937db96d56Sopenharmony_ci"\n"
947db96d56Sopenharmony_ci"Insert item x in list a, and keep it sorted assuming a is sorted.\n"
957db96d56Sopenharmony_ci"\n"
967db96d56Sopenharmony_ci"If x is already in a, insert it to the right of the rightmost x.\n"
977db96d56Sopenharmony_ci"\n"
987db96d56Sopenharmony_ci"Optional args lo (default 0) and hi (default len(a)) bound the\n"
997db96d56Sopenharmony_ci"slice of a to be searched.");
1007db96d56Sopenharmony_ci
1017db96d56Sopenharmony_ci#define _BISECT_INSORT_RIGHT_METHODDEF    \
1027db96d56Sopenharmony_ci    {"insort_right", _PyCFunction_CAST(_bisect_insort_right), METH_FASTCALL|METH_KEYWORDS, _bisect_insort_right__doc__},
1037db96d56Sopenharmony_ci
1047db96d56Sopenharmony_cistatic PyObject *
1057db96d56Sopenharmony_ci_bisect_insort_right_impl(PyObject *module, PyObject *a, PyObject *x,
1067db96d56Sopenharmony_ci                          Py_ssize_t lo, Py_ssize_t hi, PyObject *key);
1077db96d56Sopenharmony_ci
1087db96d56Sopenharmony_cistatic PyObject *
1097db96d56Sopenharmony_ci_bisect_insort_right(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
1107db96d56Sopenharmony_ci{
1117db96d56Sopenharmony_ci    PyObject *return_value = NULL;
1127db96d56Sopenharmony_ci    static const char * const _keywords[] = {"a", "x", "lo", "hi", "key", NULL};
1137db96d56Sopenharmony_ci    static _PyArg_Parser _parser = {NULL, _keywords, "insort_right", 0};
1147db96d56Sopenharmony_ci    PyObject *argsbuf[5];
1157db96d56Sopenharmony_ci    Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 2;
1167db96d56Sopenharmony_ci    PyObject *a;
1177db96d56Sopenharmony_ci    PyObject *x;
1187db96d56Sopenharmony_ci    Py_ssize_t lo = 0;
1197db96d56Sopenharmony_ci    Py_ssize_t hi = -1;
1207db96d56Sopenharmony_ci    PyObject *key = Py_None;
1217db96d56Sopenharmony_ci
1227db96d56Sopenharmony_ci    args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 2, 4, 0, argsbuf);
1237db96d56Sopenharmony_ci    if (!args) {
1247db96d56Sopenharmony_ci        goto exit;
1257db96d56Sopenharmony_ci    }
1267db96d56Sopenharmony_ci    a = args[0];
1277db96d56Sopenharmony_ci    x = args[1];
1287db96d56Sopenharmony_ci    if (!noptargs) {
1297db96d56Sopenharmony_ci        goto skip_optional_pos;
1307db96d56Sopenharmony_ci    }
1317db96d56Sopenharmony_ci    if (args[2]) {
1327db96d56Sopenharmony_ci        {
1337db96d56Sopenharmony_ci            Py_ssize_t ival = -1;
1347db96d56Sopenharmony_ci            PyObject *iobj = _PyNumber_Index(args[2]);
1357db96d56Sopenharmony_ci            if (iobj != NULL) {
1367db96d56Sopenharmony_ci                ival = PyLong_AsSsize_t(iobj);
1377db96d56Sopenharmony_ci                Py_DECREF(iobj);
1387db96d56Sopenharmony_ci            }
1397db96d56Sopenharmony_ci            if (ival == -1 && PyErr_Occurred()) {
1407db96d56Sopenharmony_ci                goto exit;
1417db96d56Sopenharmony_ci            }
1427db96d56Sopenharmony_ci            lo = ival;
1437db96d56Sopenharmony_ci        }
1447db96d56Sopenharmony_ci        if (!--noptargs) {
1457db96d56Sopenharmony_ci            goto skip_optional_pos;
1467db96d56Sopenharmony_ci        }
1477db96d56Sopenharmony_ci    }
1487db96d56Sopenharmony_ci    if (args[3]) {
1497db96d56Sopenharmony_ci        if (!_Py_convert_optional_to_ssize_t(args[3], &hi)) {
1507db96d56Sopenharmony_ci            goto exit;
1517db96d56Sopenharmony_ci        }
1527db96d56Sopenharmony_ci        if (!--noptargs) {
1537db96d56Sopenharmony_ci            goto skip_optional_pos;
1547db96d56Sopenharmony_ci        }
1557db96d56Sopenharmony_ci    }
1567db96d56Sopenharmony_ciskip_optional_pos:
1577db96d56Sopenharmony_ci    if (!noptargs) {
1587db96d56Sopenharmony_ci        goto skip_optional_kwonly;
1597db96d56Sopenharmony_ci    }
1607db96d56Sopenharmony_ci    key = args[4];
1617db96d56Sopenharmony_ciskip_optional_kwonly:
1627db96d56Sopenharmony_ci    return_value = _bisect_insort_right_impl(module, a, x, lo, hi, key);
1637db96d56Sopenharmony_ci
1647db96d56Sopenharmony_ciexit:
1657db96d56Sopenharmony_ci    return return_value;
1667db96d56Sopenharmony_ci}
1677db96d56Sopenharmony_ci
1687db96d56Sopenharmony_ciPyDoc_STRVAR(_bisect_bisect_left__doc__,
1697db96d56Sopenharmony_ci"bisect_left($module, /, a, x, lo=0, hi=None, *, key=None)\n"
1707db96d56Sopenharmony_ci"--\n"
1717db96d56Sopenharmony_ci"\n"
1727db96d56Sopenharmony_ci"Return the index where to insert item x in list a, assuming a is sorted.\n"
1737db96d56Sopenharmony_ci"\n"
1747db96d56Sopenharmony_ci"The return value i is such that all e in a[:i] have e < x, and all e in\n"
1757db96d56Sopenharmony_ci"a[i:] have e >= x.  So if x already appears in the list, a.insert(i, x) will\n"
1767db96d56Sopenharmony_ci"insert just before the leftmost x already there.\n"
1777db96d56Sopenharmony_ci"\n"
1787db96d56Sopenharmony_ci"Optional args lo (default 0) and hi (default len(a)) bound the\n"
1797db96d56Sopenharmony_ci"slice of a to be searched.");
1807db96d56Sopenharmony_ci
1817db96d56Sopenharmony_ci#define _BISECT_BISECT_LEFT_METHODDEF    \
1827db96d56Sopenharmony_ci    {"bisect_left", _PyCFunction_CAST(_bisect_bisect_left), METH_FASTCALL|METH_KEYWORDS, _bisect_bisect_left__doc__},
1837db96d56Sopenharmony_ci
1847db96d56Sopenharmony_cistatic Py_ssize_t
1857db96d56Sopenharmony_ci_bisect_bisect_left_impl(PyObject *module, PyObject *a, PyObject *x,
1867db96d56Sopenharmony_ci                         Py_ssize_t lo, Py_ssize_t hi, PyObject *key);
1877db96d56Sopenharmony_ci
1887db96d56Sopenharmony_cistatic PyObject *
1897db96d56Sopenharmony_ci_bisect_bisect_left(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
1907db96d56Sopenharmony_ci{
1917db96d56Sopenharmony_ci    PyObject *return_value = NULL;
1927db96d56Sopenharmony_ci    static const char * const _keywords[] = {"a", "x", "lo", "hi", "key", NULL};
1937db96d56Sopenharmony_ci    static _PyArg_Parser _parser = {NULL, _keywords, "bisect_left", 0};
1947db96d56Sopenharmony_ci    PyObject *argsbuf[5];
1957db96d56Sopenharmony_ci    Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 2;
1967db96d56Sopenharmony_ci    PyObject *a;
1977db96d56Sopenharmony_ci    PyObject *x;
1987db96d56Sopenharmony_ci    Py_ssize_t lo = 0;
1997db96d56Sopenharmony_ci    Py_ssize_t hi = -1;
2007db96d56Sopenharmony_ci    PyObject *key = Py_None;
2017db96d56Sopenharmony_ci    Py_ssize_t _return_value;
2027db96d56Sopenharmony_ci
2037db96d56Sopenharmony_ci    args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 2, 4, 0, argsbuf);
2047db96d56Sopenharmony_ci    if (!args) {
2057db96d56Sopenharmony_ci        goto exit;
2067db96d56Sopenharmony_ci    }
2077db96d56Sopenharmony_ci    a = args[0];
2087db96d56Sopenharmony_ci    x = args[1];
2097db96d56Sopenharmony_ci    if (!noptargs) {
2107db96d56Sopenharmony_ci        goto skip_optional_pos;
2117db96d56Sopenharmony_ci    }
2127db96d56Sopenharmony_ci    if (args[2]) {
2137db96d56Sopenharmony_ci        {
2147db96d56Sopenharmony_ci            Py_ssize_t ival = -1;
2157db96d56Sopenharmony_ci            PyObject *iobj = _PyNumber_Index(args[2]);
2167db96d56Sopenharmony_ci            if (iobj != NULL) {
2177db96d56Sopenharmony_ci                ival = PyLong_AsSsize_t(iobj);
2187db96d56Sopenharmony_ci                Py_DECREF(iobj);
2197db96d56Sopenharmony_ci            }
2207db96d56Sopenharmony_ci            if (ival == -1 && PyErr_Occurred()) {
2217db96d56Sopenharmony_ci                goto exit;
2227db96d56Sopenharmony_ci            }
2237db96d56Sopenharmony_ci            lo = ival;
2247db96d56Sopenharmony_ci        }
2257db96d56Sopenharmony_ci        if (!--noptargs) {
2267db96d56Sopenharmony_ci            goto skip_optional_pos;
2277db96d56Sopenharmony_ci        }
2287db96d56Sopenharmony_ci    }
2297db96d56Sopenharmony_ci    if (args[3]) {
2307db96d56Sopenharmony_ci        if (!_Py_convert_optional_to_ssize_t(args[3], &hi)) {
2317db96d56Sopenharmony_ci            goto exit;
2327db96d56Sopenharmony_ci        }
2337db96d56Sopenharmony_ci        if (!--noptargs) {
2347db96d56Sopenharmony_ci            goto skip_optional_pos;
2357db96d56Sopenharmony_ci        }
2367db96d56Sopenharmony_ci    }
2377db96d56Sopenharmony_ciskip_optional_pos:
2387db96d56Sopenharmony_ci    if (!noptargs) {
2397db96d56Sopenharmony_ci        goto skip_optional_kwonly;
2407db96d56Sopenharmony_ci    }
2417db96d56Sopenharmony_ci    key = args[4];
2427db96d56Sopenharmony_ciskip_optional_kwonly:
2437db96d56Sopenharmony_ci    _return_value = _bisect_bisect_left_impl(module, a, x, lo, hi, key);
2447db96d56Sopenharmony_ci    if ((_return_value == -1) && PyErr_Occurred()) {
2457db96d56Sopenharmony_ci        goto exit;
2467db96d56Sopenharmony_ci    }
2477db96d56Sopenharmony_ci    return_value = PyLong_FromSsize_t(_return_value);
2487db96d56Sopenharmony_ci
2497db96d56Sopenharmony_ciexit:
2507db96d56Sopenharmony_ci    return return_value;
2517db96d56Sopenharmony_ci}
2527db96d56Sopenharmony_ci
2537db96d56Sopenharmony_ciPyDoc_STRVAR(_bisect_insort_left__doc__,
2547db96d56Sopenharmony_ci"insort_left($module, /, a, x, lo=0, hi=None, *, key=None)\n"
2557db96d56Sopenharmony_ci"--\n"
2567db96d56Sopenharmony_ci"\n"
2577db96d56Sopenharmony_ci"Insert item x in list a, and keep it sorted assuming a is sorted.\n"
2587db96d56Sopenharmony_ci"\n"
2597db96d56Sopenharmony_ci"If x is already in a, insert it to the left of the leftmost x.\n"
2607db96d56Sopenharmony_ci"\n"
2617db96d56Sopenharmony_ci"Optional args lo (default 0) and hi (default len(a)) bound the\n"
2627db96d56Sopenharmony_ci"slice of a to be searched.");
2637db96d56Sopenharmony_ci
2647db96d56Sopenharmony_ci#define _BISECT_INSORT_LEFT_METHODDEF    \
2657db96d56Sopenharmony_ci    {"insort_left", _PyCFunction_CAST(_bisect_insort_left), METH_FASTCALL|METH_KEYWORDS, _bisect_insort_left__doc__},
2667db96d56Sopenharmony_ci
2677db96d56Sopenharmony_cistatic PyObject *
2687db96d56Sopenharmony_ci_bisect_insort_left_impl(PyObject *module, PyObject *a, PyObject *x,
2697db96d56Sopenharmony_ci                         Py_ssize_t lo, Py_ssize_t hi, PyObject *key);
2707db96d56Sopenharmony_ci
2717db96d56Sopenharmony_cistatic PyObject *
2727db96d56Sopenharmony_ci_bisect_insort_left(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
2737db96d56Sopenharmony_ci{
2747db96d56Sopenharmony_ci    PyObject *return_value = NULL;
2757db96d56Sopenharmony_ci    static const char * const _keywords[] = {"a", "x", "lo", "hi", "key", NULL};
2767db96d56Sopenharmony_ci    static _PyArg_Parser _parser = {NULL, _keywords, "insort_left", 0};
2777db96d56Sopenharmony_ci    PyObject *argsbuf[5];
2787db96d56Sopenharmony_ci    Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 2;
2797db96d56Sopenharmony_ci    PyObject *a;
2807db96d56Sopenharmony_ci    PyObject *x;
2817db96d56Sopenharmony_ci    Py_ssize_t lo = 0;
2827db96d56Sopenharmony_ci    Py_ssize_t hi = -1;
2837db96d56Sopenharmony_ci    PyObject *key = Py_None;
2847db96d56Sopenharmony_ci
2857db96d56Sopenharmony_ci    args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 2, 4, 0, argsbuf);
2867db96d56Sopenharmony_ci    if (!args) {
2877db96d56Sopenharmony_ci        goto exit;
2887db96d56Sopenharmony_ci    }
2897db96d56Sopenharmony_ci    a = args[0];
2907db96d56Sopenharmony_ci    x = args[1];
2917db96d56Sopenharmony_ci    if (!noptargs) {
2927db96d56Sopenharmony_ci        goto skip_optional_pos;
2937db96d56Sopenharmony_ci    }
2947db96d56Sopenharmony_ci    if (args[2]) {
2957db96d56Sopenharmony_ci        {
2967db96d56Sopenharmony_ci            Py_ssize_t ival = -1;
2977db96d56Sopenharmony_ci            PyObject *iobj = _PyNumber_Index(args[2]);
2987db96d56Sopenharmony_ci            if (iobj != NULL) {
2997db96d56Sopenharmony_ci                ival = PyLong_AsSsize_t(iobj);
3007db96d56Sopenharmony_ci                Py_DECREF(iobj);
3017db96d56Sopenharmony_ci            }
3027db96d56Sopenharmony_ci            if (ival == -1 && PyErr_Occurred()) {
3037db96d56Sopenharmony_ci                goto exit;
3047db96d56Sopenharmony_ci            }
3057db96d56Sopenharmony_ci            lo = ival;
3067db96d56Sopenharmony_ci        }
3077db96d56Sopenharmony_ci        if (!--noptargs) {
3087db96d56Sopenharmony_ci            goto skip_optional_pos;
3097db96d56Sopenharmony_ci        }
3107db96d56Sopenharmony_ci    }
3117db96d56Sopenharmony_ci    if (args[3]) {
3127db96d56Sopenharmony_ci        if (!_Py_convert_optional_to_ssize_t(args[3], &hi)) {
3137db96d56Sopenharmony_ci            goto exit;
3147db96d56Sopenharmony_ci        }
3157db96d56Sopenharmony_ci        if (!--noptargs) {
3167db96d56Sopenharmony_ci            goto skip_optional_pos;
3177db96d56Sopenharmony_ci        }
3187db96d56Sopenharmony_ci    }
3197db96d56Sopenharmony_ciskip_optional_pos:
3207db96d56Sopenharmony_ci    if (!noptargs) {
3217db96d56Sopenharmony_ci        goto skip_optional_kwonly;
3227db96d56Sopenharmony_ci    }
3237db96d56Sopenharmony_ci    key = args[4];
3247db96d56Sopenharmony_ciskip_optional_kwonly:
3257db96d56Sopenharmony_ci    return_value = _bisect_insort_left_impl(module, a, x, lo, hi, key);
3267db96d56Sopenharmony_ci
3277db96d56Sopenharmony_ciexit:
3287db96d56Sopenharmony_ci    return return_value;
3297db96d56Sopenharmony_ci}
3307db96d56Sopenharmony_ci/*[clinic end generated code: output=ee8c32ff8d3d1fac input=a9049054013a1b77]*/
331