blob: 14c1d4948bc4cf388a49aa79693cebcd2ff3ce75 [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
Jeroen Ruigrok van der Werven23919182009-04-25 18:46:03 +000046 .. versionchanged:: 2.5
47 This function used an :ctype:`int` type for *length* and an
48 :ctype:`int *` type for *start*, *stop*, and *step*. This might require
49 changes in your code for properly supporting 64-bit systems.
50
Georg Brandlf6842722008-01-19 22:08:21 +000051
52.. 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)
53
Jeroen Ruigrok van der Werven84441cc2009-04-25 18:31:20 +000054 Usable replacement for :cfunc:`PySlice_GetIndices`. Retrieve the start,
55 stop, and step indices from the slice object *slice* assuming a sequence of
56 length *length*, and store the length of the slice in *slicelength*. Out
57 of bounds indices are clipped in a manner consistent with the handling of
58 normal slices.
Georg Brandlf6842722008-01-19 22:08:21 +000059
60 Returns 0 on success and -1 on error with exception set.
61
62 .. versionadded:: 2.3
Jeroen Ruigrok van der Werven23919182009-04-25 18:46:03 +000063
64 .. versionchanged:: 2.5
65 This function used an :ctype:`int` type for *length* and an
66 :ctype:`int *` type for *start*, *stop*, *step*, and *slicelength*. This
67 might require changes in your code for properly supporting 64-bit
68 systems.