blob: 3743ff8a892399e6930e9b6958827dbd7dea3ef9 [file] [log] [blame]
Georg Brandlf6842722008-01-19 22:08:21 +00001.. highlightlang:: c
2
3.. _slice-objects:
4
5Slice Objects
6-------------
7
8
9.. cvar:: PyTypeObject PySlice_Type
10
11 .. index:: single: SliceType (in module types)
12
13 The type object for slice objects. This is the same as ``slice`` and
14 ``types.SliceType``.
15
16
17.. cfunction:: int PySlice_Check(PyObject *ob)
18
19 Return true if *ob* is a slice object; *ob* must not be *NULL*.
20
21
22.. cfunction:: PyObject* PySlice_New(PyObject *start, PyObject *stop, PyObject *step)
23
24 Return a new slice object with the given values. The *start*, *stop*, and
Jeroen Ruigrok van der Werven84441cc2009-04-25 18:31:20 +000025 *step* parameters are used as the values of the slice object attributes of
26 the same names. Any of the values may be *NULL*, in which case the
27 ``None`` will be used for the corresponding attribute. Return *NULL* if
28 the new object could not be allocated.
Georg Brandlf6842722008-01-19 22:08:21 +000029
30
31.. cfunction:: int PySlice_GetIndices(PySliceObject *slice, Py_ssize_t length, Py_ssize_t *start, Py_ssize_t *stop, Py_ssize_t *step)
32
33 Retrieve the start, stop and step indices from the slice object *slice*,
Jeroen Ruigrok van der Werven84441cc2009-04-25 18:31:20 +000034 assuming a sequence of length *length*. Treats indices greater than
35 *length* as errors.
Georg Brandlf6842722008-01-19 22:08:21 +000036
Jeroen Ruigrok van der Werven84441cc2009-04-25 18:31:20 +000037 Returns 0 on success and -1 on error with no exception set (unless one of
38 the indices was not :const:`None` and failed to be converted to an integer,
39 in which case -1 is returned with an exception set).
Georg Brandlf6842722008-01-19 22:08:21 +000040
Jeroen Ruigrok van der Werven84441cc2009-04-25 18:31:20 +000041 You probably do not want to use this function. If you want to use slice
42 objects in versions of Python prior to 2.3, you would probably do well to
43 incorporate the source of :cfunc:`PySlice_GetIndicesEx`, suitably renamed,
44 in the source of your extension.
Georg Brandlf6842722008-01-19 22:08:21 +000045
46
47.. cfunction:: int PySlice_GetIndicesEx(PySliceObject *slice, Py_ssize_t length, Py_ssize_t *start, Py_ssize_t *stop, Py_ssize_t *step, Py_ssize_t *slicelength)
48
Jeroen Ruigrok van der Werven84441cc2009-04-25 18:31:20 +000049 Usable replacement for :cfunc:`PySlice_GetIndices`. Retrieve the start,
50 stop, and step indices from the slice object *slice* assuming a sequence of
51 length *length*, and store the length of the slice in *slicelength*. Out
52 of bounds indices are clipped in a manner consistent with the handling of
53 normal slices.
Georg Brandlf6842722008-01-19 22:08:21 +000054
55 Returns 0 on success and -1 on error with exception set.
56
57 .. versionadded:: 2.3