| 
									
										
										
										
											1996-07-30 16:42:30 +00:00
										 |  |  | #ifndef Py_SLICEOBJECT_H
 | 
					
						
							|  |  |  | #define Py_SLICEOBJECT_H
 | 
					
						
							|  |  |  | #ifdef __cplusplus
 | 
					
						
							|  |  |  | extern "C" { | 
					
						
							|  |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1996-10-11 16:25:41 +00:00
										 |  |  | /* The unique ellipsis object "..." */ | 
					
						
							| 
									
										
										
										
											1996-07-30 16:42:30 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-08-12 07:21:58 +00:00
										 |  |  | PyAPI_DATA(PyObject) _Py_EllipsisObject; /* Don't use this directly */ | 
					
						
							| 
									
										
										
										
											1996-07-30 16:42:30 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1996-10-11 16:25:41 +00:00
										 |  |  | #define Py_Ellipsis (&_Py_EllipsisObject)
 | 
					
						
							| 
									
										
										
										
											1996-07-30 16:42:30 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | /* Slice object interface */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /*
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | A slice object containing start, stop, and step data members (the | 
					
						
							|  |  |  | names are from range).  After much talk with Guido, it was decided to | 
					
						
							| 
									
										
										
										
											2004-10-28 16:32:00 +00:00
										 |  |  | let these be any arbitrary python type.  Py_None stands for omitted values. | 
					
						
							| 
									
										
										
										
											1996-07-30 16:42:30 +00:00
										 |  |  | */ | 
					
						
							| 
									
										
										
										
											2010-12-03 20:14:31 +00:00
										 |  |  | #ifndef Py_LIMITED_API
 | 
					
						
							| 
									
										
										
										
											1996-07-30 16:42:30 +00:00
										 |  |  | typedef struct { | 
					
						
							| 
									
										
										
										
											2000-07-09 00:55:06 +00:00
										 |  |  |     PyObject_HEAD | 
					
						
							| 
									
										
										
										
											2017-11-28 17:56:10 +02:00
										 |  |  |     PyObject *start, *stop, *step;      /* not NULL */ | 
					
						
							| 
									
										
										
										
											1996-07-30 16:42:30 +00:00
										 |  |  | } PySliceObject; | 
					
						
							| 
									
										
										
										
											2010-12-03 20:14:31 +00:00
										 |  |  | #endif
 | 
					
						
							| 
									
										
										
										
											1996-07-30 16:42:30 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-08-12 07:21:58 +00:00
										 |  |  | PyAPI_DATA(PyTypeObject) PySlice_Type; | 
					
						
							| 
									
										
										
										
											2009-04-20 02:09:13 +00:00
										 |  |  | PyAPI_DATA(PyTypeObject) PyEllipsis_Type; | 
					
						
							| 
									
										
										
										
											1996-07-30 16:42:30 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-12-19 02:45:37 +00:00
										 |  |  | #define PySlice_Check(op) (Py_TYPE(op) == &PySlice_Type)
 | 
					
						
							| 
									
										
										
										
											1996-07-30 16:42:30 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-08-12 07:21:58 +00:00
										 |  |  | PyAPI_FUNC(PyObject *) PySlice_New(PyObject* start, PyObject* stop, | 
					
						
							| 
									
										
										
										
											2000-07-09 00:55:06 +00:00
										 |  |  |                                   PyObject* step); | 
					
						
							| 
									
										
										
										
											2010-12-03 20:14:31 +00:00
										 |  |  | #ifndef Py_LIMITED_API
 | 
					
						
							| 
									
										
										
										
											2006-04-21 10:40:58 +00:00
										 |  |  | PyAPI_FUNC(PyObject *) _PySlice_FromIndices(Py_ssize_t start, Py_ssize_t stop); | 
					
						
							| 
									
										
										
										
											2012-11-17 19:18:10 +00:00
										 |  |  | PyAPI_FUNC(int) _PySlice_GetLongIndices(PySliceObject *self, PyObject *length, | 
					
						
							|  |  |  |                                  PyObject **start_ptr, PyObject **stop_ptr, | 
					
						
							|  |  |  |                                  PyObject **step_ptr); | 
					
						
							| 
									
										
										
										
											2010-12-03 20:14:31 +00:00
										 |  |  | #endif
 | 
					
						
							|  |  |  | PyAPI_FUNC(int) PySlice_GetIndices(PyObject *r, Py_ssize_t length, | 
					
						
							| 
									
										
										
										
											2006-02-15 17:27:45 +00:00
										 |  |  |                                   Py_ssize_t *start, Py_ssize_t *stop, Py_ssize_t *step); | 
					
						
							| 
									
										
										
										
											2019-05-28 09:16:33 -06:00
										 |  |  | Py_DEPRECATED(3.7) | 
					
						
							| 
									
										
										
										
											2010-12-03 20:14:31 +00:00
										 |  |  | PyAPI_FUNC(int) PySlice_GetIndicesEx(PyObject *r, Py_ssize_t length, | 
					
						
							| 
									
										
										
										
											2017-01-25 13:23:05 +02:00
										 |  |  |                                      Py_ssize_t *start, Py_ssize_t *stop, | 
					
						
							| 
									
										
										
										
											2019-05-28 09:16:33 -06:00
										 |  |  |                                      Py_ssize_t *step, | 
					
						
							|  |  |  |                                      Py_ssize_t *slicelength); | 
					
						
							| 
									
										
										
										
											2017-01-25 13:23:05 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | #if !defined(Py_LIMITED_API) || (Py_LIMITED_API+0 >= 0x03050400 && Py_LIMITED_API+0 < 0x03060000) || Py_LIMITED_API+0 >= 0x03060100
 | 
					
						
							|  |  |  | #define PySlice_GetIndicesEx(slice, length, start, stop, step, slicelen) (  \
 | 
					
						
							| 
									
										
										
										
											2017-02-04 11:04:00 +02:00
										 |  |  |     PySlice_Unpack((slice), (start), (stop), (step)) < 0 ?                  \ | 
					
						
							|  |  |  |     ((*(slicelen) = 0), -1) :                                               \ | 
					
						
							|  |  |  |     ((*(slicelen) = PySlice_AdjustIndices((length), (start), (stop), *(step))), \ | 
					
						
							| 
									
										
										
										
											2017-01-25 13:23:05 +02:00
										 |  |  |      0)) | 
					
						
							|  |  |  | PyAPI_FUNC(int) PySlice_Unpack(PyObject *slice, | 
					
						
							|  |  |  |                                Py_ssize_t *start, Py_ssize_t *stop, Py_ssize_t *step); | 
					
						
							|  |  |  | PyAPI_FUNC(Py_ssize_t) PySlice_AdjustIndices(Py_ssize_t length, | 
					
						
							|  |  |  |                                              Py_ssize_t *start, Py_ssize_t *stop, | 
					
						
							|  |  |  |                                              Py_ssize_t step); | 
					
						
							|  |  |  | #endif
 | 
					
						
							| 
									
										
										
										
											1996-07-30 16:42:30 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | #ifdef __cplusplus
 | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | #endif
 | 
					
						
							|  |  |  | #endif /* !Py_SLICEOBJECT_H */
 |