python3_sys/
weakrefobject.rs1use 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}