#include "Python.h"#define GET_WEAKREFS_LISTPTR(o) \((PyWeakReference **) PyObject_GET_WEAKREFS_LISTPTR(o))PyDoc_STRVAR(weakref_getweakrefcount__doc__,"getweakrefcount(object) -- return the number of weak references\n""to 'object'.");static PyObject *weakref_getweakrefcount(PyObject *self, PyObject *object){PyObject *result = NULL;if (PyType_SUPPORTS_WEAKREFS(Py_TYPE(object))) {PyWeakReference **list = GET_WEAKREFS_LISTPTR(object);result = PyInt_FromSsize_t(_PyWeakref_GetWeakrefCount(*list));}elseresult = PyInt_FromLong(0);return result;}PyDoc_STRVAR(weakref_getweakrefs__doc__,"getweakrefs(object) -- return a list of all weak reference objects\n""that point to 'object'.");static PyObject *weakref_getweakrefs(PyObject *self, PyObject *object){PyObject *result = NULL;if (PyType_SUPPORTS_WEAKREFS(Py_TYPE(object))) {PyWeakReference **list = GET_WEAKREFS_LISTPTR(object);Py_ssize_t count = _PyWeakref_GetWeakrefCount(*list);result = PyList_New(count);if (result != NULL) {PyWeakReference *current = *list;Py_ssize_t i;for (i = 0; i < count; ++i) {PyList_SET_ITEM(result, i, (PyObject *) current);Py_INCREF(current);current = current->wr_next;}}}else {result = PyList_New(0);}return result;}PyDoc_STRVAR(weakref_proxy__doc__,"proxy(object[, callback]) -- create a proxy object that weakly\n""references 'object'. 'callback', if given, is called with a\n""reference to the proxy when 'object' is about to be finalized.");static PyObject *weakref_proxy(PyObject *self, PyObject *args){PyObject *object;PyObject *callback = NULL;PyObject *result = NULL;if (PyArg_UnpackTuple(args, "proxy", 1, 2, &object, &callback)) {result = PyWeakref_NewProxy(object, callback);}return result;}static PyMethodDefweakref_functions[] = {{"getweakrefcount", weakref_getweakrefcount, METH_O,weakref_getweakrefcount__doc__},{"getweakrefs", weakref_getweakrefs, METH_O,weakref_getweakrefs__doc__},{"proxy", weakref_proxy, METH_VARARGS,weakref_proxy__doc__},{NULL, NULL, 0, NULL}};PyMODINIT_FUNCinit_weakref(void){PyObject *m;m = Py_InitModule3("_weakref", weakref_functions,"Weak-reference support module.");if (m != NULL) {Py_INCREF(&_PyWeakref_RefType);PyModule_AddObject(m, "ref",(PyObject *) &_PyWeakref_RefType);Py_INCREF(&_PyWeakref_RefType);PyModule_AddObject(m, "ReferenceType",(PyObject *) &_PyWeakref_RefType);Py_INCREF(&_PyWeakref_ProxyType);PyModule_AddObject(m, "ProxyType",(PyObject *) &_PyWeakref_ProxyType);Py_INCREF(&_PyWeakref_CallableProxyType);PyModule_AddObject(m, "CallableProxyType",(PyObject *) &_PyWeakref_CallableProxyType);}}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。