17db96d56Sopenharmony_ci/*[clinic input] 27db96d56Sopenharmony_cipreserve 37db96d56Sopenharmony_ci[clinic start generated code]*/ 47db96d56Sopenharmony_ci 57db96d56Sopenharmony_ciPyDoc_STRVAR(enum_new__doc__, 67db96d56Sopenharmony_ci"enumerate(iterable, start=0)\n" 77db96d56Sopenharmony_ci"--\n" 87db96d56Sopenharmony_ci"\n" 97db96d56Sopenharmony_ci"Return an enumerate object.\n" 107db96d56Sopenharmony_ci"\n" 117db96d56Sopenharmony_ci" iterable\n" 127db96d56Sopenharmony_ci" an object supporting iteration\n" 137db96d56Sopenharmony_ci"\n" 147db96d56Sopenharmony_ci"The enumerate object yields pairs containing a count (from start, which\n" 157db96d56Sopenharmony_ci"defaults to zero) and a value yielded by the iterable argument.\n" 167db96d56Sopenharmony_ci"\n" 177db96d56Sopenharmony_ci"enumerate is useful for obtaining an indexed list:\n" 187db96d56Sopenharmony_ci" (0, seq[0]), (1, seq[1]), (2, seq[2]), ..."); 197db96d56Sopenharmony_ci 207db96d56Sopenharmony_cistatic PyObject * 217db96d56Sopenharmony_cienum_new_impl(PyTypeObject *type, PyObject *iterable, PyObject *start); 227db96d56Sopenharmony_ci 237db96d56Sopenharmony_cistatic PyObject * 247db96d56Sopenharmony_cienum_new(PyTypeObject *type, PyObject *args, PyObject *kwargs) 257db96d56Sopenharmony_ci{ 267db96d56Sopenharmony_ci PyObject *return_value = NULL; 277db96d56Sopenharmony_ci static const char * const _keywords[] = {"iterable", "start", NULL}; 287db96d56Sopenharmony_ci static _PyArg_Parser _parser = {NULL, _keywords, "enumerate", 0}; 297db96d56Sopenharmony_ci PyObject *argsbuf[2]; 307db96d56Sopenharmony_ci PyObject * const *fastargs; 317db96d56Sopenharmony_ci Py_ssize_t nargs = PyTuple_GET_SIZE(args); 327db96d56Sopenharmony_ci Py_ssize_t noptargs = nargs + (kwargs ? PyDict_GET_SIZE(kwargs) : 0) - 1; 337db96d56Sopenharmony_ci PyObject *iterable; 347db96d56Sopenharmony_ci PyObject *start = 0; 357db96d56Sopenharmony_ci 367db96d56Sopenharmony_ci fastargs = _PyArg_UnpackKeywords(_PyTuple_CAST(args)->ob_item, nargs, kwargs, NULL, &_parser, 1, 2, 0, argsbuf); 377db96d56Sopenharmony_ci if (!fastargs) { 387db96d56Sopenharmony_ci goto exit; 397db96d56Sopenharmony_ci } 407db96d56Sopenharmony_ci iterable = fastargs[0]; 417db96d56Sopenharmony_ci if (!noptargs) { 427db96d56Sopenharmony_ci goto skip_optional_pos; 437db96d56Sopenharmony_ci } 447db96d56Sopenharmony_ci start = fastargs[1]; 457db96d56Sopenharmony_ciskip_optional_pos: 467db96d56Sopenharmony_ci return_value = enum_new_impl(type, iterable, start); 477db96d56Sopenharmony_ci 487db96d56Sopenharmony_ciexit: 497db96d56Sopenharmony_ci return return_value; 507db96d56Sopenharmony_ci} 517db96d56Sopenharmony_ci 527db96d56Sopenharmony_ciPyDoc_STRVAR(reversed_new__doc__, 537db96d56Sopenharmony_ci"reversed(sequence, /)\n" 547db96d56Sopenharmony_ci"--\n" 557db96d56Sopenharmony_ci"\n" 567db96d56Sopenharmony_ci"Return a reverse iterator over the values of the given sequence."); 577db96d56Sopenharmony_ci 587db96d56Sopenharmony_cistatic PyObject * 597db96d56Sopenharmony_cireversed_new_impl(PyTypeObject *type, PyObject *seq); 607db96d56Sopenharmony_ci 617db96d56Sopenharmony_cistatic PyObject * 627db96d56Sopenharmony_cireversed_new(PyTypeObject *type, PyObject *args, PyObject *kwargs) 637db96d56Sopenharmony_ci{ 647db96d56Sopenharmony_ci PyObject *return_value = NULL; 657db96d56Sopenharmony_ci PyObject *seq; 667db96d56Sopenharmony_ci 677db96d56Sopenharmony_ci if ((type == &PyReversed_Type || 687db96d56Sopenharmony_ci type->tp_init == PyReversed_Type.tp_init) && 697db96d56Sopenharmony_ci !_PyArg_NoKeywords("reversed", kwargs)) { 707db96d56Sopenharmony_ci goto exit; 717db96d56Sopenharmony_ci } 727db96d56Sopenharmony_ci if (!_PyArg_CheckPositional("reversed", PyTuple_GET_SIZE(args), 1, 1)) { 737db96d56Sopenharmony_ci goto exit; 747db96d56Sopenharmony_ci } 757db96d56Sopenharmony_ci seq = PyTuple_GET_ITEM(args, 0); 767db96d56Sopenharmony_ci return_value = reversed_new_impl(type, seq); 777db96d56Sopenharmony_ci 787db96d56Sopenharmony_ciexit: 797db96d56Sopenharmony_ci return return_value; 807db96d56Sopenharmony_ci} 817db96d56Sopenharmony_ci/*[clinic end generated code: output=a3937b6b33499560 input=a9049054013a1b77]*/ 82