| 
									
										
										
										
											2017-03-19 08:47:58 +02:00
										 |  |  | /*[clinic input]
 | 
					
						
							|  |  |  | preserve | 
					
						
							|  |  |  | [clinic start generated code]*/ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-10-17 14:30:31 +02:00
										 |  |  | #include "pycore_modsupport.h"    // _PyArg_CheckPositional()
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-19 08:47:58 +02:00
										 |  |  | PyDoc_STRVAR(tuple_index__doc__, | 
					
						
							|  |  |  | "index($self, value, start=0, stop=sys.maxsize, /)\n" | 
					
						
							|  |  |  | "--\n" | 
					
						
							|  |  |  | "\n" | 
					
						
							|  |  |  | "Return first index of value.\n" | 
					
						
							|  |  |  | "\n" | 
					
						
							|  |  |  | "Raises ValueError if the value is not present."); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #define TUPLE_INDEX_METHODDEF    \
 | 
					
						
							| 
									
										
										
										
											2022-05-03 20:25:41 +02:00
										 |  |  |     {"index", _PyCFunction_CAST(tuple_index), METH_FASTCALL, tuple_index__doc__}, | 
					
						
							| 
									
										
										
										
											2017-03-19 08:47:58 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | static PyObject * | 
					
						
							|  |  |  | tuple_index_impl(PyTupleObject *self, PyObject *value, Py_ssize_t start, | 
					
						
							|  |  |  |                  Py_ssize_t stop); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | static PyObject * | 
					
						
							| 
									
										
										
										
											2017-12-15 13:11:11 +02:00
										 |  |  | tuple_index(PyTupleObject *self, PyObject *const *args, Py_ssize_t nargs) | 
					
						
							| 
									
										
										
										
											2017-03-19 08:47:58 +02:00
										 |  |  | { | 
					
						
							|  |  |  |     PyObject *return_value = NULL; | 
					
						
							|  |  |  |     PyObject *value; | 
					
						
							|  |  |  |     Py_ssize_t start = 0; | 
					
						
							|  |  |  |     Py_ssize_t stop = PY_SSIZE_T_MAX; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-01-11 16:01:14 +02:00
										 |  |  |     if (!_PyArg_CheckPositional("index", nargs, 1, 3)) { | 
					
						
							| 
									
										
										
										
											2017-03-19 08:47:58 +02:00
										 |  |  |         goto exit; | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2019-01-11 16:01:14 +02:00
										 |  |  |     value = args[0]; | 
					
						
							|  |  |  |     if (nargs < 2) { | 
					
						
							|  |  |  |         goto skip_optional; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     if (!_PyEval_SliceIndexNotNone(args[1], &start)) { | 
					
						
							|  |  |  |         goto exit; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     if (nargs < 3) { | 
					
						
							|  |  |  |         goto skip_optional; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     if (!_PyEval_SliceIndexNotNone(args[2], &stop)) { | 
					
						
							|  |  |  |         goto exit; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | skip_optional: | 
					
						
							| 
									
										
										
										
											2017-03-19 08:47:58 +02:00
										 |  |  |     return_value = tuple_index_impl(self, value, start, stop); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | exit: | 
					
						
							|  |  |  |     return return_value; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | PyDoc_STRVAR(tuple_count__doc__, | 
					
						
							|  |  |  | "count($self, value, /)\n" | 
					
						
							|  |  |  | "--\n" | 
					
						
							|  |  |  | "\n" | 
					
						
							|  |  |  | "Return number of occurrences of value."); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #define TUPLE_COUNT_METHODDEF    \
 | 
					
						
							|  |  |  |     {"count", (PyCFunction)tuple_count, METH_O, tuple_count__doc__}, | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | PyDoc_STRVAR(tuple_new__doc__, | 
					
						
							|  |  |  | "tuple(iterable=(), /)\n" | 
					
						
							|  |  |  | "--\n" | 
					
						
							|  |  |  | "\n" | 
					
						
							|  |  |  | "Built-in immutable sequence.\n" | 
					
						
							|  |  |  | "\n" | 
					
						
							|  |  |  | "If no argument is given, the constructor returns an empty tuple.\n" | 
					
						
							|  |  |  | "If iterable is specified the tuple is initialized from iterable\'s items.\n" | 
					
						
							|  |  |  | "\n" | 
					
						
							|  |  |  | "If the argument is a tuple, the return value is the same object."); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | static PyObject * | 
					
						
							|  |  |  | tuple_new_impl(PyTypeObject *type, PyObject *iterable); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | static PyObject * | 
					
						
							|  |  |  | tuple_new(PyTypeObject *type, PyObject *args, PyObject *kwargs) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     PyObject *return_value = NULL; | 
					
						
							| 
									
										
										
										
											2023-01-31 21:42:03 +01:00
										 |  |  |     PyTypeObject *base_tp = &PyTuple_Type; | 
					
						
							| 
									
										
										
										
											2017-03-19 08:47:58 +02:00
										 |  |  |     PyObject *iterable = NULL; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-01-31 21:42:03 +01:00
										 |  |  |     if ((type == base_tp || type->tp_init == base_tp->tp_init) && | 
					
						
							| 
									
										
										
										
											2017-03-19 08:47:58 +02:00
										 |  |  |         !_PyArg_NoKeywords("tuple", kwargs)) { | 
					
						
							|  |  |  |         goto exit; | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2019-01-11 18:01:42 +02:00
										 |  |  |     if (!_PyArg_CheckPositional("tuple", PyTuple_GET_SIZE(args), 0, 1)) { | 
					
						
							| 
									
										
										
										
											2017-03-19 08:47:58 +02:00
										 |  |  |         goto exit; | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2019-01-11 18:01:42 +02:00
										 |  |  |     if (PyTuple_GET_SIZE(args) < 1) { | 
					
						
							|  |  |  |         goto skip_optional; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     iterable = PyTuple_GET_ITEM(args, 0); | 
					
						
							|  |  |  | skip_optional: | 
					
						
							| 
									
										
										
										
											2017-03-19 08:47:58 +02:00
										 |  |  |     return_value = tuple_new_impl(type, iterable); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | exit: | 
					
						
							|  |  |  |     return return_value; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | PyDoc_STRVAR(tuple___getnewargs____doc__, | 
					
						
							|  |  |  | "__getnewargs__($self, /)\n" | 
					
						
							|  |  |  | "--\n" | 
					
						
							|  |  |  | "\n"); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #define TUPLE___GETNEWARGS___METHODDEF    \
 | 
					
						
							|  |  |  |     {"__getnewargs__", (PyCFunction)tuple___getnewargs__, METH_NOARGS, tuple___getnewargs____doc__}, | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | static PyObject * | 
					
						
							|  |  |  | tuple___getnewargs___impl(PyTupleObject *self); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | static PyObject * | 
					
						
							|  |  |  | tuple___getnewargs__(PyTupleObject *self, PyObject *Py_UNUSED(ignored)) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     return tuple___getnewargs___impl(self); | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2023-10-17 14:30:31 +02:00
										 |  |  | /*[clinic end generated code: output=a6a9abba5d121f4c input=a9049054013a1b77]*/ |