17db96d56Sopenharmony_ci/*[clinic input]
27db96d56Sopenharmony_cipreserve
37db96d56Sopenharmony_ci[clinic start generated code]*/
47db96d56Sopenharmony_ci
57db96d56Sopenharmony_ciPyDoc_STRVAR(list_insert__doc__,
67db96d56Sopenharmony_ci"insert($self, index, object, /)\n"
77db96d56Sopenharmony_ci"--\n"
87db96d56Sopenharmony_ci"\n"
97db96d56Sopenharmony_ci"Insert object before index.");
107db96d56Sopenharmony_ci
117db96d56Sopenharmony_ci#define LIST_INSERT_METHODDEF    \
127db96d56Sopenharmony_ci    {"insert", _PyCFunction_CAST(list_insert), METH_FASTCALL, list_insert__doc__},
137db96d56Sopenharmony_ci
147db96d56Sopenharmony_cistatic PyObject *
157db96d56Sopenharmony_cilist_insert_impl(PyListObject *self, Py_ssize_t index, PyObject *object);
167db96d56Sopenharmony_ci
177db96d56Sopenharmony_cistatic PyObject *
187db96d56Sopenharmony_cilist_insert(PyListObject *self, PyObject *const *args, Py_ssize_t nargs)
197db96d56Sopenharmony_ci{
207db96d56Sopenharmony_ci    PyObject *return_value = NULL;
217db96d56Sopenharmony_ci    Py_ssize_t index;
227db96d56Sopenharmony_ci    PyObject *object;
237db96d56Sopenharmony_ci
247db96d56Sopenharmony_ci    if (!_PyArg_CheckPositional("insert", nargs, 2, 2)) {
257db96d56Sopenharmony_ci        goto exit;
267db96d56Sopenharmony_ci    }
277db96d56Sopenharmony_ci    {
287db96d56Sopenharmony_ci        Py_ssize_t ival = -1;
297db96d56Sopenharmony_ci        PyObject *iobj = _PyNumber_Index(args[0]);
307db96d56Sopenharmony_ci        if (iobj != NULL) {
317db96d56Sopenharmony_ci            ival = PyLong_AsSsize_t(iobj);
327db96d56Sopenharmony_ci            Py_DECREF(iobj);
337db96d56Sopenharmony_ci        }
347db96d56Sopenharmony_ci        if (ival == -1 && PyErr_Occurred()) {
357db96d56Sopenharmony_ci            goto exit;
367db96d56Sopenharmony_ci        }
377db96d56Sopenharmony_ci        index = ival;
387db96d56Sopenharmony_ci    }
397db96d56Sopenharmony_ci    object = args[1];
407db96d56Sopenharmony_ci    return_value = list_insert_impl(self, index, object);
417db96d56Sopenharmony_ci
427db96d56Sopenharmony_ciexit:
437db96d56Sopenharmony_ci    return return_value;
447db96d56Sopenharmony_ci}
457db96d56Sopenharmony_ci
467db96d56Sopenharmony_ciPyDoc_STRVAR(list_clear__doc__,
477db96d56Sopenharmony_ci"clear($self, /)\n"
487db96d56Sopenharmony_ci"--\n"
497db96d56Sopenharmony_ci"\n"
507db96d56Sopenharmony_ci"Remove all items from list.");
517db96d56Sopenharmony_ci
527db96d56Sopenharmony_ci#define LIST_CLEAR_METHODDEF    \
537db96d56Sopenharmony_ci    {"clear", (PyCFunction)list_clear, METH_NOARGS, list_clear__doc__},
547db96d56Sopenharmony_ci
557db96d56Sopenharmony_cistatic PyObject *
567db96d56Sopenharmony_cilist_clear_impl(PyListObject *self);
577db96d56Sopenharmony_ci
587db96d56Sopenharmony_cistatic PyObject *
597db96d56Sopenharmony_cilist_clear(PyListObject *self, PyObject *Py_UNUSED(ignored))
607db96d56Sopenharmony_ci{
617db96d56Sopenharmony_ci    return list_clear_impl(self);
627db96d56Sopenharmony_ci}
637db96d56Sopenharmony_ci
647db96d56Sopenharmony_ciPyDoc_STRVAR(list_copy__doc__,
657db96d56Sopenharmony_ci"copy($self, /)\n"
667db96d56Sopenharmony_ci"--\n"
677db96d56Sopenharmony_ci"\n"
687db96d56Sopenharmony_ci"Return a shallow copy of the list.");
697db96d56Sopenharmony_ci
707db96d56Sopenharmony_ci#define LIST_COPY_METHODDEF    \
717db96d56Sopenharmony_ci    {"copy", (PyCFunction)list_copy, METH_NOARGS, list_copy__doc__},
727db96d56Sopenharmony_ci
737db96d56Sopenharmony_cistatic PyObject *
747db96d56Sopenharmony_cilist_copy_impl(PyListObject *self);
757db96d56Sopenharmony_ci
767db96d56Sopenharmony_cistatic PyObject *
777db96d56Sopenharmony_cilist_copy(PyListObject *self, PyObject *Py_UNUSED(ignored))
787db96d56Sopenharmony_ci{
797db96d56Sopenharmony_ci    return list_copy_impl(self);
807db96d56Sopenharmony_ci}
817db96d56Sopenharmony_ci
827db96d56Sopenharmony_ciPyDoc_STRVAR(list_append__doc__,
837db96d56Sopenharmony_ci"append($self, object, /)\n"
847db96d56Sopenharmony_ci"--\n"
857db96d56Sopenharmony_ci"\n"
867db96d56Sopenharmony_ci"Append object to the end of the list.");
877db96d56Sopenharmony_ci
887db96d56Sopenharmony_ci#define LIST_APPEND_METHODDEF    \
897db96d56Sopenharmony_ci    {"append", (PyCFunction)list_append, METH_O, list_append__doc__},
907db96d56Sopenharmony_ci
917db96d56Sopenharmony_ciPyDoc_STRVAR(list_extend__doc__,
927db96d56Sopenharmony_ci"extend($self, iterable, /)\n"
937db96d56Sopenharmony_ci"--\n"
947db96d56Sopenharmony_ci"\n"
957db96d56Sopenharmony_ci"Extend list by appending elements from the iterable.");
967db96d56Sopenharmony_ci
977db96d56Sopenharmony_ci#define LIST_EXTEND_METHODDEF    \
987db96d56Sopenharmony_ci    {"extend", (PyCFunction)list_extend, METH_O, list_extend__doc__},
997db96d56Sopenharmony_ci
1007db96d56Sopenharmony_ciPyDoc_STRVAR(list_pop__doc__,
1017db96d56Sopenharmony_ci"pop($self, index=-1, /)\n"
1027db96d56Sopenharmony_ci"--\n"
1037db96d56Sopenharmony_ci"\n"
1047db96d56Sopenharmony_ci"Remove and return item at index (default last).\n"
1057db96d56Sopenharmony_ci"\n"
1067db96d56Sopenharmony_ci"Raises IndexError if list is empty or index is out of range.");
1077db96d56Sopenharmony_ci
1087db96d56Sopenharmony_ci#define LIST_POP_METHODDEF    \
1097db96d56Sopenharmony_ci    {"pop", _PyCFunction_CAST(list_pop), METH_FASTCALL, list_pop__doc__},
1107db96d56Sopenharmony_ci
1117db96d56Sopenharmony_cistatic PyObject *
1127db96d56Sopenharmony_cilist_pop_impl(PyListObject *self, Py_ssize_t index);
1137db96d56Sopenharmony_ci
1147db96d56Sopenharmony_cistatic PyObject *
1157db96d56Sopenharmony_cilist_pop(PyListObject *self, PyObject *const *args, Py_ssize_t nargs)
1167db96d56Sopenharmony_ci{
1177db96d56Sopenharmony_ci    PyObject *return_value = NULL;
1187db96d56Sopenharmony_ci    Py_ssize_t index = -1;
1197db96d56Sopenharmony_ci
1207db96d56Sopenharmony_ci    if (!_PyArg_CheckPositional("pop", nargs, 0, 1)) {
1217db96d56Sopenharmony_ci        goto exit;
1227db96d56Sopenharmony_ci    }
1237db96d56Sopenharmony_ci    if (nargs < 1) {
1247db96d56Sopenharmony_ci        goto skip_optional;
1257db96d56Sopenharmony_ci    }
1267db96d56Sopenharmony_ci    {
1277db96d56Sopenharmony_ci        Py_ssize_t ival = -1;
1287db96d56Sopenharmony_ci        PyObject *iobj = _PyNumber_Index(args[0]);
1297db96d56Sopenharmony_ci        if (iobj != NULL) {
1307db96d56Sopenharmony_ci            ival = PyLong_AsSsize_t(iobj);
1317db96d56Sopenharmony_ci            Py_DECREF(iobj);
1327db96d56Sopenharmony_ci        }
1337db96d56Sopenharmony_ci        if (ival == -1 && PyErr_Occurred()) {
1347db96d56Sopenharmony_ci            goto exit;
1357db96d56Sopenharmony_ci        }
1367db96d56Sopenharmony_ci        index = ival;
1377db96d56Sopenharmony_ci    }
1387db96d56Sopenharmony_ciskip_optional:
1397db96d56Sopenharmony_ci    return_value = list_pop_impl(self, index);
1407db96d56Sopenharmony_ci
1417db96d56Sopenharmony_ciexit:
1427db96d56Sopenharmony_ci    return return_value;
1437db96d56Sopenharmony_ci}
1447db96d56Sopenharmony_ci
1457db96d56Sopenharmony_ciPyDoc_STRVAR(list_sort__doc__,
1467db96d56Sopenharmony_ci"sort($self, /, *, key=None, reverse=False)\n"
1477db96d56Sopenharmony_ci"--\n"
1487db96d56Sopenharmony_ci"\n"
1497db96d56Sopenharmony_ci"Sort the list in ascending order and return None.\n"
1507db96d56Sopenharmony_ci"\n"
1517db96d56Sopenharmony_ci"The sort is in-place (i.e. the list itself is modified) and stable (i.e. the\n"
1527db96d56Sopenharmony_ci"order of two equal elements is maintained).\n"
1537db96d56Sopenharmony_ci"\n"
1547db96d56Sopenharmony_ci"If a key function is given, apply it once to each list item and sort them,\n"
1557db96d56Sopenharmony_ci"ascending or descending, according to their function values.\n"
1567db96d56Sopenharmony_ci"\n"
1577db96d56Sopenharmony_ci"The reverse flag can be set to sort in descending order.");
1587db96d56Sopenharmony_ci
1597db96d56Sopenharmony_ci#define LIST_SORT_METHODDEF    \
1607db96d56Sopenharmony_ci    {"sort", _PyCFunction_CAST(list_sort), METH_FASTCALL|METH_KEYWORDS, list_sort__doc__},
1617db96d56Sopenharmony_ci
1627db96d56Sopenharmony_cistatic PyObject *
1637db96d56Sopenharmony_cilist_sort_impl(PyListObject *self, PyObject *keyfunc, int reverse);
1647db96d56Sopenharmony_ci
1657db96d56Sopenharmony_cistatic PyObject *
1667db96d56Sopenharmony_cilist_sort(PyListObject *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
1677db96d56Sopenharmony_ci{
1687db96d56Sopenharmony_ci    PyObject *return_value = NULL;
1697db96d56Sopenharmony_ci    static const char * const _keywords[] = {"key", "reverse", NULL};
1707db96d56Sopenharmony_ci    static _PyArg_Parser _parser = {NULL, _keywords, "sort", 0};
1717db96d56Sopenharmony_ci    PyObject *argsbuf[2];
1727db96d56Sopenharmony_ci    Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 0;
1737db96d56Sopenharmony_ci    PyObject *keyfunc = Py_None;
1747db96d56Sopenharmony_ci    int reverse = 0;
1757db96d56Sopenharmony_ci
1767db96d56Sopenharmony_ci    args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 0, 0, 0, argsbuf);
1777db96d56Sopenharmony_ci    if (!args) {
1787db96d56Sopenharmony_ci        goto exit;
1797db96d56Sopenharmony_ci    }
1807db96d56Sopenharmony_ci    if (!noptargs) {
1817db96d56Sopenharmony_ci        goto skip_optional_kwonly;
1827db96d56Sopenharmony_ci    }
1837db96d56Sopenharmony_ci    if (args[0]) {
1847db96d56Sopenharmony_ci        keyfunc = args[0];
1857db96d56Sopenharmony_ci        if (!--noptargs) {
1867db96d56Sopenharmony_ci            goto skip_optional_kwonly;
1877db96d56Sopenharmony_ci        }
1887db96d56Sopenharmony_ci    }
1897db96d56Sopenharmony_ci    reverse = _PyLong_AsInt(args[1]);
1907db96d56Sopenharmony_ci    if (reverse == -1 && PyErr_Occurred()) {
1917db96d56Sopenharmony_ci        goto exit;
1927db96d56Sopenharmony_ci    }
1937db96d56Sopenharmony_ciskip_optional_kwonly:
1947db96d56Sopenharmony_ci    return_value = list_sort_impl(self, keyfunc, reverse);
1957db96d56Sopenharmony_ci
1967db96d56Sopenharmony_ciexit:
1977db96d56Sopenharmony_ci    return return_value;
1987db96d56Sopenharmony_ci}
1997db96d56Sopenharmony_ci
2007db96d56Sopenharmony_ciPyDoc_STRVAR(list_reverse__doc__,
2017db96d56Sopenharmony_ci"reverse($self, /)\n"
2027db96d56Sopenharmony_ci"--\n"
2037db96d56Sopenharmony_ci"\n"
2047db96d56Sopenharmony_ci"Reverse *IN PLACE*.");
2057db96d56Sopenharmony_ci
2067db96d56Sopenharmony_ci#define LIST_REVERSE_METHODDEF    \
2077db96d56Sopenharmony_ci    {"reverse", (PyCFunction)list_reverse, METH_NOARGS, list_reverse__doc__},
2087db96d56Sopenharmony_ci
2097db96d56Sopenharmony_cistatic PyObject *
2107db96d56Sopenharmony_cilist_reverse_impl(PyListObject *self);
2117db96d56Sopenharmony_ci
2127db96d56Sopenharmony_cistatic PyObject *
2137db96d56Sopenharmony_cilist_reverse(PyListObject *self, PyObject *Py_UNUSED(ignored))
2147db96d56Sopenharmony_ci{
2157db96d56Sopenharmony_ci    return list_reverse_impl(self);
2167db96d56Sopenharmony_ci}
2177db96d56Sopenharmony_ci
2187db96d56Sopenharmony_ciPyDoc_STRVAR(list_index__doc__,
2197db96d56Sopenharmony_ci"index($self, value, start=0, stop=sys.maxsize, /)\n"
2207db96d56Sopenharmony_ci"--\n"
2217db96d56Sopenharmony_ci"\n"
2227db96d56Sopenharmony_ci"Return first index of value.\n"
2237db96d56Sopenharmony_ci"\n"
2247db96d56Sopenharmony_ci"Raises ValueError if the value is not present.");
2257db96d56Sopenharmony_ci
2267db96d56Sopenharmony_ci#define LIST_INDEX_METHODDEF    \
2277db96d56Sopenharmony_ci    {"index", _PyCFunction_CAST(list_index), METH_FASTCALL, list_index__doc__},
2287db96d56Sopenharmony_ci
2297db96d56Sopenharmony_cistatic PyObject *
2307db96d56Sopenharmony_cilist_index_impl(PyListObject *self, PyObject *value, Py_ssize_t start,
2317db96d56Sopenharmony_ci                Py_ssize_t stop);
2327db96d56Sopenharmony_ci
2337db96d56Sopenharmony_cistatic PyObject *
2347db96d56Sopenharmony_cilist_index(PyListObject *self, PyObject *const *args, Py_ssize_t nargs)
2357db96d56Sopenharmony_ci{
2367db96d56Sopenharmony_ci    PyObject *return_value = NULL;
2377db96d56Sopenharmony_ci    PyObject *value;
2387db96d56Sopenharmony_ci    Py_ssize_t start = 0;
2397db96d56Sopenharmony_ci    Py_ssize_t stop = PY_SSIZE_T_MAX;
2407db96d56Sopenharmony_ci
2417db96d56Sopenharmony_ci    if (!_PyArg_CheckPositional("index", nargs, 1, 3)) {
2427db96d56Sopenharmony_ci        goto exit;
2437db96d56Sopenharmony_ci    }
2447db96d56Sopenharmony_ci    value = args[0];
2457db96d56Sopenharmony_ci    if (nargs < 2) {
2467db96d56Sopenharmony_ci        goto skip_optional;
2477db96d56Sopenharmony_ci    }
2487db96d56Sopenharmony_ci    if (!_PyEval_SliceIndexNotNone(args[1], &start)) {
2497db96d56Sopenharmony_ci        goto exit;
2507db96d56Sopenharmony_ci    }
2517db96d56Sopenharmony_ci    if (nargs < 3) {
2527db96d56Sopenharmony_ci        goto skip_optional;
2537db96d56Sopenharmony_ci    }
2547db96d56Sopenharmony_ci    if (!_PyEval_SliceIndexNotNone(args[2], &stop)) {
2557db96d56Sopenharmony_ci        goto exit;
2567db96d56Sopenharmony_ci    }
2577db96d56Sopenharmony_ciskip_optional:
2587db96d56Sopenharmony_ci    return_value = list_index_impl(self, value, start, stop);
2597db96d56Sopenharmony_ci
2607db96d56Sopenharmony_ciexit:
2617db96d56Sopenharmony_ci    return return_value;
2627db96d56Sopenharmony_ci}
2637db96d56Sopenharmony_ci
2647db96d56Sopenharmony_ciPyDoc_STRVAR(list_count__doc__,
2657db96d56Sopenharmony_ci"count($self, value, /)\n"
2667db96d56Sopenharmony_ci"--\n"
2677db96d56Sopenharmony_ci"\n"
2687db96d56Sopenharmony_ci"Return number of occurrences of value.");
2697db96d56Sopenharmony_ci
2707db96d56Sopenharmony_ci#define LIST_COUNT_METHODDEF    \
2717db96d56Sopenharmony_ci    {"count", (PyCFunction)list_count, METH_O, list_count__doc__},
2727db96d56Sopenharmony_ci
2737db96d56Sopenharmony_ciPyDoc_STRVAR(list_remove__doc__,
2747db96d56Sopenharmony_ci"remove($self, value, /)\n"
2757db96d56Sopenharmony_ci"--\n"
2767db96d56Sopenharmony_ci"\n"
2777db96d56Sopenharmony_ci"Remove first occurrence of value.\n"
2787db96d56Sopenharmony_ci"\n"
2797db96d56Sopenharmony_ci"Raises ValueError if the value is not present.");
2807db96d56Sopenharmony_ci
2817db96d56Sopenharmony_ci#define LIST_REMOVE_METHODDEF    \
2827db96d56Sopenharmony_ci    {"remove", (PyCFunction)list_remove, METH_O, list_remove__doc__},
2837db96d56Sopenharmony_ci
2847db96d56Sopenharmony_ciPyDoc_STRVAR(list___init____doc__,
2857db96d56Sopenharmony_ci"list(iterable=(), /)\n"
2867db96d56Sopenharmony_ci"--\n"
2877db96d56Sopenharmony_ci"\n"
2887db96d56Sopenharmony_ci"Built-in mutable sequence.\n"
2897db96d56Sopenharmony_ci"\n"
2907db96d56Sopenharmony_ci"If no argument is given, the constructor creates a new empty list.\n"
2917db96d56Sopenharmony_ci"The argument must be an iterable if specified.");
2927db96d56Sopenharmony_ci
2937db96d56Sopenharmony_cistatic int
2947db96d56Sopenharmony_cilist___init___impl(PyListObject *self, PyObject *iterable);
2957db96d56Sopenharmony_ci
2967db96d56Sopenharmony_cistatic int
2977db96d56Sopenharmony_cilist___init__(PyObject *self, PyObject *args, PyObject *kwargs)
2987db96d56Sopenharmony_ci{
2997db96d56Sopenharmony_ci    int return_value = -1;
3007db96d56Sopenharmony_ci    PyObject *iterable = NULL;
3017db96d56Sopenharmony_ci
3027db96d56Sopenharmony_ci    if ((Py_IS_TYPE(self, &PyList_Type) ||
3037db96d56Sopenharmony_ci         Py_TYPE(self)->tp_new == PyList_Type.tp_new) &&
3047db96d56Sopenharmony_ci        !_PyArg_NoKeywords("list", kwargs)) {
3057db96d56Sopenharmony_ci        goto exit;
3067db96d56Sopenharmony_ci    }
3077db96d56Sopenharmony_ci    if (!_PyArg_CheckPositional("list", PyTuple_GET_SIZE(args), 0, 1)) {
3087db96d56Sopenharmony_ci        goto exit;
3097db96d56Sopenharmony_ci    }
3107db96d56Sopenharmony_ci    if (PyTuple_GET_SIZE(args) < 1) {
3117db96d56Sopenharmony_ci        goto skip_optional;
3127db96d56Sopenharmony_ci    }
3137db96d56Sopenharmony_ci    iterable = PyTuple_GET_ITEM(args, 0);
3147db96d56Sopenharmony_ciskip_optional:
3157db96d56Sopenharmony_ci    return_value = list___init___impl((PyListObject *)self, iterable);
3167db96d56Sopenharmony_ci
3177db96d56Sopenharmony_ciexit:
3187db96d56Sopenharmony_ci    return return_value;
3197db96d56Sopenharmony_ci}
3207db96d56Sopenharmony_ci
3217db96d56Sopenharmony_ciPyDoc_STRVAR(list___sizeof____doc__,
3227db96d56Sopenharmony_ci"__sizeof__($self, /)\n"
3237db96d56Sopenharmony_ci"--\n"
3247db96d56Sopenharmony_ci"\n"
3257db96d56Sopenharmony_ci"Return the size of the list in memory, in bytes.");
3267db96d56Sopenharmony_ci
3277db96d56Sopenharmony_ci#define LIST___SIZEOF___METHODDEF    \
3287db96d56Sopenharmony_ci    {"__sizeof__", (PyCFunction)list___sizeof__, METH_NOARGS, list___sizeof____doc__},
3297db96d56Sopenharmony_ci
3307db96d56Sopenharmony_cistatic PyObject *
3317db96d56Sopenharmony_cilist___sizeof___impl(PyListObject *self);
3327db96d56Sopenharmony_ci
3337db96d56Sopenharmony_cistatic PyObject *
3347db96d56Sopenharmony_cilist___sizeof__(PyListObject *self, PyObject *Py_UNUSED(ignored))
3357db96d56Sopenharmony_ci{
3367db96d56Sopenharmony_ci    return list___sizeof___impl(self);
3377db96d56Sopenharmony_ci}
3387db96d56Sopenharmony_ci
3397db96d56Sopenharmony_ciPyDoc_STRVAR(list___reversed____doc__,
3407db96d56Sopenharmony_ci"__reversed__($self, /)\n"
3417db96d56Sopenharmony_ci"--\n"
3427db96d56Sopenharmony_ci"\n"
3437db96d56Sopenharmony_ci"Return a reverse iterator over the list.");
3447db96d56Sopenharmony_ci
3457db96d56Sopenharmony_ci#define LIST___REVERSED___METHODDEF    \
3467db96d56Sopenharmony_ci    {"__reversed__", (PyCFunction)list___reversed__, METH_NOARGS, list___reversed____doc__},
3477db96d56Sopenharmony_ci
3487db96d56Sopenharmony_cistatic PyObject *
3497db96d56Sopenharmony_cilist___reversed___impl(PyListObject *self);
3507db96d56Sopenharmony_ci
3517db96d56Sopenharmony_cistatic PyObject *
3527db96d56Sopenharmony_cilist___reversed__(PyListObject *self, PyObject *Py_UNUSED(ignored))
3537db96d56Sopenharmony_ci{
3547db96d56Sopenharmony_ci    return list___reversed___impl(self);
3557db96d56Sopenharmony_ci}
3567db96d56Sopenharmony_ci/*[clinic end generated code: output=eab97a76b1568a03 input=a9049054013a1b77]*/
357