mirror of
https://github.com/python/cpython.git
synced 2026-06-12 12:51:51 +00:00
46 lines
963 B
C
46 lines
963 B
C
#include "parts.h"
|
|
#include "util.h"
|
|
|
|
|
|
static PyObject *
|
|
pyweakref_getref(PyObject *module, PyObject *ref)
|
|
{
|
|
NULLABLE(ref);
|
|
PyObject *obj = UNINITIALIZED_PTR;
|
|
int rc = PyWeakref_GetRef(ref, &obj);
|
|
if (rc == -1 && PyErr_Occurred()) {
|
|
assert(obj == NULL);
|
|
return NULL;
|
|
}
|
|
if (obj == NULL) {
|
|
return Py_BuildValue("i", rc);
|
|
}
|
|
else {
|
|
assert(obj != UNINITIALIZED_PTR);
|
|
return Py_BuildValue("iN", rc, obj);
|
|
}
|
|
}
|
|
|
|
static PyObject *
|
|
pyweakref_isdead(PyObject *module, PyObject *obj)
|
|
{
|
|
NULLABLE(obj);
|
|
int rc = PyWeakref_IsDead(obj);
|
|
if (rc == -1 && PyErr_Occurred()) {
|
|
return NULL;
|
|
}
|
|
return PyLong_FromLong(rc);
|
|
}
|
|
|
|
|
|
static PyMethodDef test_methods[] = {
|
|
{"pyweakref_getref", pyweakref_getref, METH_O},
|
|
{"pyweakref_isdead", pyweakref_isdead, METH_O},
|
|
{NULL},
|
|
};
|
|
|
|
int
|
|
_PyTestCapi_Init_Weakref(PyObject *m)
|
|
{
|
|
return PyModule_AddFunctions(m, test_methods);
|
|
}
|