/
niceSOFT
/
swig
Обзор
Документация
Войти
/
niceSOFT
/
swig
Код
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
Lib/python/pyhead.swg
145 строк
5 KB
William S Fulton
Python: Remove Python 2 compatibility macros
07 июл 2026, 01:50
07 июл 2026, 01:50
79f7a2b
Код
Авторство
О чём код?
#if !defined(SWIG_NO_HEAPTYPES) #if !defined(SWIG_HEAPTYPES) #define SWIG_HEAPTYPES #endif #endif #if defined(SWIG_HEAPTYPES) #if PY_VERSION_HEX < 0x030c0000 #include <structmember.h> #define Py_READONLY READONLY #define Py_T_PYSSIZET T_PYSSIZET #endif #endif #include <stddef.h> /* For offsetof */ /* Wrapper around PyUnicode_AsUTF8AndSize - call Py_XDECREF on the returned pbytes when finished with the returned string */ SWIGINTERN const char * SWIG_PyUnicode_AsUTF8AndSize(PyObject *str, Py_ssize_t *psize, PyObject **pbytes) { #if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x030A0000 *pbytes = NULL; return PyUnicode_AsUTF8AndSize(str, psize); #else const char *chars; *pbytes = PyUnicode_AsUTF8String(str); chars = *pbytes ? PyBytes_AsString(*pbytes) : NULL; if (chars && psize) *psize = PyBytes_Size(*pbytes); return chars; #endif } #define SWIG_RUNTIME_MODULE "swig_runtime_data" SWIG_RUNTIME_VERSION /* SWIGPY_USE_CAPSULE is no longer used within SWIG itself, but some user interface files check for it. */ # define SWIGPY_USE_CAPSULE #ifdef SWIGPYTHON_BUILTIN # define SWIGPY_CAPSULE_ATTR_NAME "type_pointer_capsule_builtin" SWIG_TYPE_TABLE_NAME #else # define SWIGPY_CAPSULE_ATTR_NAME "type_pointer_capsule" SWIG_TYPE_TABLE_NAME #endif #define SWIGPY_CAPSULE_NAME SWIG_RUNTIME_MODULE "." SWIGPY_CAPSULE_ATTR_NAME #if defined(Py_LIMITED_API) # define PyTuple_GET_ITEM PyTuple_GetItem /* Note that PyTuple_SetItem() has different semantics from PyTuple_SET_ITEM as it decref's the original tuple item, so in general they cannot be used interchangeably. However in SWIG-generated code PyTuple_SET_ITEM is only used with newly initialized tuples without any items and for them this does work. */ # define PyTuple_SET_ITEM PyTuple_SetItem # define PyTuple_GET_SIZE PyTuple_Size # define PyCFunction_GET_FLAGS PyCFunction_GetFlags # define PyCFunction_GET_FUNCTION PyCFunction_GetFunction # define PyCFunction_GET_SELF PyCFunction_GetSelf # define PyList_GET_ITEM PyList_GetItem # define PyList_SET_ITEM PyList_SetItem # define PySliceObject PyObject #endif /* Increment and Decrement wrappers - for portability when using the stable abi and for performance otherwise */ #ifdef Py_LIMITED_API # define SWIG_Py_INCREF Py_IncRef # define SWIG_Py_XINCREF Py_IncRef # define SWIG_Py_DECREF Py_DecRef # define SWIG_Py_XDECREF Py_DecRef #else # define SWIG_Py_INCREF Py_INCREF # define SWIG_Py_XINCREF Py_XINCREF # define SWIG_Py_DECREF Py_DECREF # define SWIG_Py_XDECREF Py_XDECREF #endif #if (PY_VERSION_HEX >= 0x030d00a6) && (!defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x030d00a6) # define SWIG_PyType_GetFullyQualifiedName PyType_GetFullyQualifiedName #else SWIGINTERN PyObject * SWIG_PyType_GetFullyQualifiedName(PyTypeObject *type) { PyObject *result = NULL; PyObject *qualname = PyObject_GetAttrString((PyObject *)type, "__qualname__"); if (qualname) { PyObject *mod = PyObject_GetAttrString((PyObject *)type, "__module__"); if (mod) { if (PyUnicode_Check(mod) && PyUnicode_CompareWithASCIIString(mod, "builtins") && PyUnicode_CompareWithASCIIString(mod, "__main__")) { result = PyUnicode_FromFormat("%U%c%U", mod, '.', qualname); SWIG_Py_DECREF(qualname); } else { result = qualname; } SWIG_Py_DECREF(mod); } else { result = qualname; } } return result; } #endif /* gh-114329 added PyList_GetItemRef() to Python 3.13.0a4 */ #if (PY_VERSION_HEX >= 0x030d00a4) && (!defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x030d00a4) # define SWIG_PyList_GetItemRef PyList_GetItemRef #else SWIGINTERN PyObject * SWIG_PyList_GetItemRef(PyObject *op, Py_ssize_t index) { PyObject *item = PyList_GetItem(op, index); Py_XINCREF(item); return item; } #endif /* gh-106004 added PyDict_GetItemRef() and PyDict_GetItemStringRef() to Python 3.13.0a1 functions are renamed here for compatibility with abi3audit */ #if (PY_VERSION_HEX >= 0x030d00a1) && (!defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x030d00a1) # define SWIG_PyDict_GetItemRef PyDict_GetItemRef # define SWIG_PyDict_GetItemStringRef PyDict_GetItemStringRef #else SWIGINTERN int SWIG_PyDict_GetItemRef(PyObject *mp, PyObject *key, PyObject **result) { PyObject *item = PyDict_GetItemWithError(mp, key); if (item != NULL) { *result = (PyObject *)(item); SWIG_Py_INCREF(*result); return 1; } if (!PyErr_Occurred()) { *result = NULL; return 0; } *result = NULL; return -1; } SWIGINTERN int SWIG_PyDict_GetItemStringRef(PyObject *mp, const char *key, PyObject **result) { int res; PyObject *key_obj = PyUnicode_FromString(key); if (key_obj == NULL) { *result = NULL; return -1; } res = SWIG_PyDict_GetItemRef(mp, key_obj, result); Py_DECREF(key_obj); return res; } #endif