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