python3_sys/
sliceobject.rs1use libc::c_int;
2
3use crate::object::*;
4use crate::pyport::Py_ssize_t;
5
6#[cfg_attr(windows, link(name = "pythonXY"))]
7extern "C" {
8 static mut _Py_EllipsisObject: PyObject;
9}
10
11#[inline(always)]
12pub unsafe fn Py_Ellipsis() -> *mut PyObject {
13 &mut _Py_EllipsisObject
14}
15
16#[cfg_attr(windows, link(name = "pythonXY"))]
17extern "C" {
18 pub static mut PySlice_Type: PyTypeObject;
19 pub static mut PyEllipsis_Type: PyTypeObject;
20}
21
22#[inline(always)]
23pub unsafe fn PySlice_Check(op: *mut PyObject) -> c_int {
24 (Py_TYPE(op) == &mut PySlice_Type) as c_int
25}
26
27#[cfg_attr(windows, link(name = "pythonXY"))]
28extern "C" {
29 pub fn PySlice_New(
30 start: *mut PyObject,
31 stop: *mut PyObject,
32 step: *mut PyObject,
33 ) -> *mut PyObject;
34 pub fn PySlice_GetIndices(
35 r: *mut PyObject,
36 length: Py_ssize_t,
37 start: *mut Py_ssize_t,
38 stop: *mut Py_ssize_t,
39 step: *mut Py_ssize_t,
40 ) -> c_int;
41 pub fn PySlice_GetIndicesEx(
42 r: *mut PyObject,
43 length: Py_ssize_t,
44 start: *mut Py_ssize_t,
45 stop: *mut Py_ssize_t,
46 step: *mut Py_ssize_t,
47 slicelength: *mut Py_ssize_t,
48 ) -> c_int;
49
50 #[cfg(Py_3_7)] pub fn PySlice_Unpack(
52 slice: *mut PyObject,
53 start: *mut Py_ssize_t,
54 stop: *mut Py_ssize_t,
55 step: *mut Py_ssize_t,
56 ) -> c_int;
57 #[cfg(Py_3_7)] pub fn PySlice_AdjustIndices(
59 length: Py_ssize_t,
60 start: *mut Py_ssize_t,
61 stop: *mut Py_ssize_t,
62 step: Py_ssize_t,
63 ) -> Py_ssize_t;
64}