| #include "pyconfig.h" // Py_GIL_DISABLED | |
| #ifdef Py_GIL_DISABLED | |
| # define Py_TARGET_ABI3T 0x030f0000 | |
| #else | |
| // Need limited C API 3.5 for PyModule_AddFunctions() | |
| # define Py_LIMITED_API 0x03050000 | |
| #endif | |
| #include "parts.h" | |
| #include "util.h" | |
| static PyObject * | |
| pyweakref_check(PyObject *module, PyObject *obj) | |
| { | |
| NULLABLE(obj); | |
| return PyLong_FromLong(PyWeakref_Check(obj)); | |
| } | |
| static PyObject * | |
| pyweakref_checkref(PyObject *module, PyObject *obj) | |
| { | |
| NULLABLE(obj); | |
| return PyLong_FromLong(PyWeakref_CheckRef(obj)); | |
| } | |
| static PyObject * | |
| pyweakref_checkrefexact(PyObject *module, PyObject *obj) | |
| { | |
| NULLABLE(obj); | |
| return PyLong_FromLong(PyWeakref_CheckRefExact(obj)); | |
| } | |
| static PyObject * | |
| pyweakref_checkproxy(PyObject *module, PyObject *obj) | |
| { | |
| NULLABLE(obj); | |
| return PyLong_FromLong(PyWeakref_CheckProxy(obj)); | |
| } | |
| static PyObject * | |
| pyweakref_newref(PyObject *module, PyObject *args) | |
| { | |
| PyObject *obj; | |
| PyObject *callback = NULL; | |
| if (!PyArg_ParseTuple(args, "O|O", &obj, &callback)) { | |
| return NULL; | |
| } | |
| NULLABLE(obj); | |
| return PyWeakref_NewRef(obj, callback); | |
| } | |
| static PyObject * | |
| pyweakref_newproxy(PyObject *module, PyObject *args) | |
| { | |
| PyObject *obj; | |
| PyObject *callback = NULL; | |
| if (!PyArg_ParseTuple(args, "O|O", &obj, &callback)) { | |
| return NULL; | |
| } | |
| NULLABLE(obj); | |
| return PyWeakref_NewProxy(obj, callback); | |
| } | |
| static PyMethodDef test_methods[] = { | |
| {"pyweakref_check", pyweakref_check, METH_O}, | |
| {"pyweakref_checkref", pyweakref_checkref, METH_O}, | |
| {"pyweakref_checkrefexact", pyweakref_checkrefexact, METH_O}, | |
| {"pyweakref_checkproxy", pyweakref_checkproxy, METH_O}, | |
| {"pyweakref_newref", pyweakref_newref, METH_VARARGS}, | |
| {"pyweakref_newproxy", pyweakref_newproxy, METH_VARARGS}, | |
| {NULL}, | |
| }; | |
| int | |
| _PyTestLimitedCAPI_Init_Weakref(PyObject *m) | |
| { | |
| return PyModule_AddFunctions(m, test_methods); | |
| } |