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