GetVTable (used by MergeVTables) */
| 21915 | |
| 21916 | /* GetVTable (used by MergeVTables) */ |
| 21917 | static void* __Pyx_GetVtable(PyTypeObject *type) { |
| 21918 | void* ptr; |
| 21919 | #if CYTHON_COMPILING_IN_LIMITED_API |
| 21920 | PyObject *ob = PyObject_GetAttr((PyObject *)type, __pyx_mstate_global->__pyx_n_u_pyx_vtable); |
| 21921 | #else |
| 21922 | PyObject *ob = PyObject_GetItem(type->tp_dict, __pyx_mstate_global->__pyx_n_u_pyx_vtable); |
| 21923 | #endif |
| 21924 | if (!ob) |
| 21925 | goto bad; |
| 21926 | ptr = PyCapsule_GetPointer(ob, 0); |
| 21927 | if (!ptr && !PyErr_Occurred()) |
| 21928 | PyErr_SetString(PyExc_RuntimeError, "invalid vtable found for imported type"); |
| 21929 | Py_DECREF(ob); |
| 21930 | return ptr; |
| 21931 | bad: |
| 21932 | Py_XDECREF(ob); |
| 21933 | return NULL; |
| 21934 | } |
| 21935 | |
| 21936 | /* MergeVTables */ |
| 21937 | static int __Pyx_MergeVtables(PyTypeObject *type) { |
no outgoing calls
no test coverage detected