python3_sys/
weakrefobject.rs

1use libc::c_int;
2
3use crate::object::*;
4
5#[repr(C)]
6pub struct PyWeakReference {
7    _private: [u8; 0],
8}
9
10#[cfg_attr(windows, link(name = "pythonXY"))]
11extern "C" {
12    static mut _PyWeakref_RefType: PyTypeObject;
13    static mut _PyWeakref_ProxyType: PyTypeObject;
14    static mut _PyWeakref_CallableProxyType: PyTypeObject;
15}
16
17#[inline(always)]
18pub unsafe fn PyWeakref_CheckRef(op: *mut PyObject) -> c_int {
19    PyObject_TypeCheck(op, &mut _PyWeakref_RefType)
20}
21
22#[inline(always)]
23pub unsafe fn PyWeakref_CheckRefExact(op: *mut PyObject) -> c_int {
24    (Py_TYPE(op) == &mut _PyWeakref_RefType) as c_int
25}
26
27#[inline(always)]
28pub unsafe fn PyWeakref_CheckProxy(op: *mut PyObject) -> c_int {
29    ((Py_TYPE(op) == &mut _PyWeakref_ProxyType)
30        || (Py_TYPE(op) == &mut _PyWeakref_CallableProxyType)) as c_int
31}
32
33#[inline(always)]
34pub unsafe fn PyWeakref_Check(op: *mut PyObject) -> c_int {
35    (PyWeakref_CheckRef(op) != 0 || PyWeakref_CheckProxy(op) != 0) as c_int
36}
37
38#[cfg_attr(windows, link(name = "pythonXY"))]
39extern "C" {
40    pub fn PyWeakref_NewRef(ob: *mut PyObject, callback: *mut PyObject) -> *mut PyObject;
41    pub fn PyWeakref_NewProxy(ob: *mut PyObject, callback: *mut PyObject) -> *mut PyObject;
42    pub fn PyWeakref_GetObject(_ref: *mut PyObject) -> *mut PyObject;
43}