python27_sys/
setobject.rs1use libc::c_int;
2
3use crate::object::*;
4use crate::pyport::Py_ssize_t;
5
6ignore! {
7 #[repr(C)] pub struct PySetObject { _private: [u8; 0] }
8}
9
10#[cfg_attr(windows, link(name = "pythonXY"))]
11extern "C" {
12 pub static mut PySet_Type: PyTypeObject;
13 pub static mut PyFrozenSet_Type: PyTypeObject;
14}
15
16#[inline]
17pub unsafe fn PyFrozenSet_CheckExact(ob: *mut PyObject) -> c_int {
18 let f: *mut PyTypeObject = &mut PyFrozenSet_Type;
19 (Py_TYPE(ob) == f) as c_int
20}
21
22#[inline]
23pub unsafe fn PyAnySet_CheckExact(ob: *mut PyObject) -> c_int {
24 let s: *mut PyTypeObject = &mut PySet_Type;
25 let f: *mut PyTypeObject = &mut PyFrozenSet_Type;
26 (Py_TYPE(ob) == s || Py_TYPE(ob) == f) as c_int
27}
28
29#[inline]
30pub unsafe fn PyAnySet_Check(ob: *mut PyObject) -> c_int {
31 (PyAnySet_CheckExact(ob) != 0
32 || PyType_IsSubtype(Py_TYPE(ob), &mut PySet_Type) != 0
33 || PyType_IsSubtype(Py_TYPE(ob), &mut PyFrozenSet_Type) != 0) as c_int
34}
35
36#[inline]
37pub unsafe fn PySet_Check(ob: *mut PyObject) -> c_int {
38 let s: *mut PyTypeObject = &mut PySet_Type;
39 (Py_TYPE(ob) == s || PyType_IsSubtype(Py_TYPE(ob), s) != 0) as c_int
40}
41
42#[inline]
43pub unsafe fn PyFrozenSet_Check(ob: *mut PyObject) -> c_int {
44 let f: *mut PyTypeObject = &mut PyFrozenSet_Type;
45 (Py_TYPE(ob) == f || PyType_IsSubtype(Py_TYPE(ob), f) != 0) as c_int
46}
47
48#[cfg_attr(windows, link(name = "pythonXY"))]
49extern "C" {
50 pub fn PySet_New(iterable: *mut PyObject) -> *mut PyObject;
51 pub fn PyFrozenSet_New(iterable: *mut PyObject) -> *mut PyObject;
52 pub fn PySet_Size(anyset: *mut PyObject) -> Py_ssize_t;
53 pub fn PySet_Clear(set: *mut PyObject) -> c_int;
54 pub fn PySet_Contains(anyset: *mut PyObject, key: *mut PyObject) -> c_int;
55 pub fn PySet_Discard(set: *mut PyObject, key: *mut PyObject) -> c_int;
56 pub fn PySet_Add(set: *mut PyObject, key: *mut PyObject) -> c_int;
57
58 ignore! {
59 pub fn _PySet_Next(set: *mut PyObject, pos: *mut Py_ssize_t, key: *mut *mut PyObject) -> c_int;
60 pub fn _PySet_NextEntry(
61 set: *mut PyObject,
62 pos: *mut Py_ssize_t,
63 key: *mut *mut PyObject,
64 hash: *mut c_long,
65 ) -> c_int;
66 }
67
68 pub fn PySet_Pop(set: *mut PyObject) -> *mut PyObject;
69
70 ignore! {
71 pub fn _PySet_Update(set: *mut PyObject, iterable: *mut PyObject) -> c_int;
72 }
73}