blob: 7c3ad8565991b7e4bf23c9502f856983122401fd [file] [edit]
#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);
}