17db96d56Sopenharmony_ci/*[clinic input] 27db96d56Sopenharmony_cipreserve 37db96d56Sopenharmony_ci[clinic start generated code]*/ 47db96d56Sopenharmony_ci 57db96d56Sopenharmony_ciPyDoc_STRVAR(_weakref_getweakrefcount__doc__, 67db96d56Sopenharmony_ci"getweakrefcount($module, object, /)\n" 77db96d56Sopenharmony_ci"--\n" 87db96d56Sopenharmony_ci"\n" 97db96d56Sopenharmony_ci"Return the number of weak references to \'object\'."); 107db96d56Sopenharmony_ci 117db96d56Sopenharmony_ci#define _WEAKREF_GETWEAKREFCOUNT_METHODDEF \ 127db96d56Sopenharmony_ci {"getweakrefcount", (PyCFunction)_weakref_getweakrefcount, METH_O, _weakref_getweakrefcount__doc__}, 137db96d56Sopenharmony_ci 147db96d56Sopenharmony_cistatic Py_ssize_t 157db96d56Sopenharmony_ci_weakref_getweakrefcount_impl(PyObject *module, PyObject *object); 167db96d56Sopenharmony_ci 177db96d56Sopenharmony_cistatic PyObject * 187db96d56Sopenharmony_ci_weakref_getweakrefcount(PyObject *module, PyObject *object) 197db96d56Sopenharmony_ci{ 207db96d56Sopenharmony_ci PyObject *return_value = NULL; 217db96d56Sopenharmony_ci Py_ssize_t _return_value; 227db96d56Sopenharmony_ci 237db96d56Sopenharmony_ci _return_value = _weakref_getweakrefcount_impl(module, object); 247db96d56Sopenharmony_ci if ((_return_value == -1) && PyErr_Occurred()) { 257db96d56Sopenharmony_ci goto exit; 267db96d56Sopenharmony_ci } 277db96d56Sopenharmony_ci return_value = PyLong_FromSsize_t(_return_value); 287db96d56Sopenharmony_ci 297db96d56Sopenharmony_ciexit: 307db96d56Sopenharmony_ci return return_value; 317db96d56Sopenharmony_ci} 327db96d56Sopenharmony_ci 337db96d56Sopenharmony_ciPyDoc_STRVAR(_weakref__remove_dead_weakref__doc__, 347db96d56Sopenharmony_ci"_remove_dead_weakref($module, dct, key, /)\n" 357db96d56Sopenharmony_ci"--\n" 367db96d56Sopenharmony_ci"\n" 377db96d56Sopenharmony_ci"Atomically remove key from dict if it points to a dead weakref."); 387db96d56Sopenharmony_ci 397db96d56Sopenharmony_ci#define _WEAKREF__REMOVE_DEAD_WEAKREF_METHODDEF \ 407db96d56Sopenharmony_ci {"_remove_dead_weakref", _PyCFunction_CAST(_weakref__remove_dead_weakref), METH_FASTCALL, _weakref__remove_dead_weakref__doc__}, 417db96d56Sopenharmony_ci 427db96d56Sopenharmony_cistatic PyObject * 437db96d56Sopenharmony_ci_weakref__remove_dead_weakref_impl(PyObject *module, PyObject *dct, 447db96d56Sopenharmony_ci PyObject *key); 457db96d56Sopenharmony_ci 467db96d56Sopenharmony_cistatic PyObject * 477db96d56Sopenharmony_ci_weakref__remove_dead_weakref(PyObject *module, PyObject *const *args, Py_ssize_t nargs) 487db96d56Sopenharmony_ci{ 497db96d56Sopenharmony_ci PyObject *return_value = NULL; 507db96d56Sopenharmony_ci PyObject *dct; 517db96d56Sopenharmony_ci PyObject *key; 527db96d56Sopenharmony_ci 537db96d56Sopenharmony_ci if (!_PyArg_CheckPositional("_remove_dead_weakref", nargs, 2, 2)) { 547db96d56Sopenharmony_ci goto exit; 557db96d56Sopenharmony_ci } 567db96d56Sopenharmony_ci if (!PyDict_Check(args[0])) { 577db96d56Sopenharmony_ci _PyArg_BadArgument("_remove_dead_weakref", "argument 1", "dict", args[0]); 587db96d56Sopenharmony_ci goto exit; 597db96d56Sopenharmony_ci } 607db96d56Sopenharmony_ci dct = args[0]; 617db96d56Sopenharmony_ci key = args[1]; 627db96d56Sopenharmony_ci return_value = _weakref__remove_dead_weakref_impl(module, dct, key); 637db96d56Sopenharmony_ci 647db96d56Sopenharmony_ciexit: 657db96d56Sopenharmony_ci return return_value; 667db96d56Sopenharmony_ci} 677db96d56Sopenharmony_ci 687db96d56Sopenharmony_ciPyDoc_STRVAR(_weakref_getweakrefs__doc__, 697db96d56Sopenharmony_ci"getweakrefs($module, object, /)\n" 707db96d56Sopenharmony_ci"--\n" 717db96d56Sopenharmony_ci"\n" 727db96d56Sopenharmony_ci"Return a list of all weak reference objects pointing to \'object\'."); 737db96d56Sopenharmony_ci 747db96d56Sopenharmony_ci#define _WEAKREF_GETWEAKREFS_METHODDEF \ 757db96d56Sopenharmony_ci {"getweakrefs", (PyCFunction)_weakref_getweakrefs, METH_O, _weakref_getweakrefs__doc__}, 767db96d56Sopenharmony_ci 777db96d56Sopenharmony_ciPyDoc_STRVAR(_weakref_proxy__doc__, 787db96d56Sopenharmony_ci"proxy($module, object, callback=None, /)\n" 797db96d56Sopenharmony_ci"--\n" 807db96d56Sopenharmony_ci"\n" 817db96d56Sopenharmony_ci"Create a proxy object that weakly references \'object\'.\n" 827db96d56Sopenharmony_ci"\n" 837db96d56Sopenharmony_ci"\'callback\', if given, is called with a reference to the\n" 847db96d56Sopenharmony_ci"proxy when \'object\' is about to be finalized."); 857db96d56Sopenharmony_ci 867db96d56Sopenharmony_ci#define _WEAKREF_PROXY_METHODDEF \ 877db96d56Sopenharmony_ci {"proxy", _PyCFunction_CAST(_weakref_proxy), METH_FASTCALL, _weakref_proxy__doc__}, 887db96d56Sopenharmony_ci 897db96d56Sopenharmony_cistatic PyObject * 907db96d56Sopenharmony_ci_weakref_proxy_impl(PyObject *module, PyObject *object, PyObject *callback); 917db96d56Sopenharmony_ci 927db96d56Sopenharmony_cistatic PyObject * 937db96d56Sopenharmony_ci_weakref_proxy(PyObject *module, PyObject *const *args, Py_ssize_t nargs) 947db96d56Sopenharmony_ci{ 957db96d56Sopenharmony_ci PyObject *return_value = NULL; 967db96d56Sopenharmony_ci PyObject *object; 977db96d56Sopenharmony_ci PyObject *callback = NULL; 987db96d56Sopenharmony_ci 997db96d56Sopenharmony_ci if (!_PyArg_CheckPositional("proxy", nargs, 1, 2)) { 1007db96d56Sopenharmony_ci goto exit; 1017db96d56Sopenharmony_ci } 1027db96d56Sopenharmony_ci object = args[0]; 1037db96d56Sopenharmony_ci if (nargs < 2) { 1047db96d56Sopenharmony_ci goto skip_optional; 1057db96d56Sopenharmony_ci } 1067db96d56Sopenharmony_ci callback = args[1]; 1077db96d56Sopenharmony_ciskip_optional: 1087db96d56Sopenharmony_ci return_value = _weakref_proxy_impl(module, object, callback); 1097db96d56Sopenharmony_ci 1107db96d56Sopenharmony_ciexit: 1117db96d56Sopenharmony_ci return return_value; 1127db96d56Sopenharmony_ci} 1137db96d56Sopenharmony_ci/*[clinic end generated code: output=f4be6b8177fbceb8 input=a9049054013a1b77]*/ 114