python27_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#[repr(C)]
17#[derive(Copy, Clone)]
18pub struct PySliceObject {
19 #[cfg(py_sys_config = "Py_TRACE_REFS")]
20 pub _ob_next: *mut PyObject,
21 #[cfg(py_sys_config = "Py_TRACE_REFS")]
22 pub _ob_prev: *mut PyObject,
23 pub ob_refcnt: Py_ssize_t,
24 pub ob_type: *mut PyTypeObject,
25 pub start: *mut PyObject,
26 pub stop: *mut PyObject,
27 pub step: *mut PyObject,
28}
29
30#[cfg_attr(windows, link(name = "pythonXY"))]
31extern "C" {
32 pub static mut PySlice_Type: PyTypeObject;
33 pub static mut PyEllipsis_Type: PyTypeObject;
34}
35
36#[inline(always)]
37pub unsafe fn PySlice_Check(op: *mut PyObject) -> c_int {
38 (Py_TYPE(op) == &mut PySlice_Type) as c_int
39}
40
41#[cfg_attr(windows, link(name = "pythonXY"))]
42extern "C" {
43 pub fn PySlice_New(
44 start: *mut PyObject,
45 stop: *mut PyObject,
46 step: *mut PyObject,
47 ) -> *mut PyObject;
48 pub fn PySlice_GetIndices(
49 r: *mut PyObject,
50 length: Py_ssize_t,
51 start: *mut Py_ssize_t,
52 stop: *mut Py_ssize_t,
53 step: *mut Py_ssize_t,
54 ) -> c_int;
55 pub fn PySlice_GetIndicesEx(
56 r: *mut PyObject,
57 length: Py_ssize_t,
58 start: *mut Py_ssize_t,
59 stop: *mut Py_ssize_t,
60 step: *mut Py_ssize_t,
61 slicelength: *mut Py_ssize_t,
62 ) -> c_int;
63}