#define _RESOLVE_MODINIT_FUNC_NAME(NAME) \ PyInit_ ## NAME #define RESOLVE_MODINIT_FUNC_NAME(NAME) \ _RESOLVE_MODINIT_FUNC_NAME(NAME) static int ensure_xid_class(PyTypeObject *cls, crossinterpdatafunc getdata) { //assert(cls->tp_flags & Py_TPFLAGS_HEAPTYPE); return _PyCrossInterpreterData_RegisterClass(cls, getdata); } #ifdef REGISTERS_HEAP_TYPES static int clear_xid_class(PyTypeObject *cls) { return _PyCrossInterpreterData_UnregisterClass(cls); } #endif #ifdef RETURNS_INTERPID_OBJECT static PyObject * get_interpid_obj(PyInterpreterState *interp) { if (_PyInterpreterState_IDInitref(interp) != 0) { return NULL; }; int64_t id = PyInterpreterState_GetID(interp); if (id < 0) { return NULL; } assert(id < LLONG_MAX); return PyLong_FromLongLong(id); } #endif