89 lines
2.5 KiB
Text
89 lines
2.5 KiB
Text
/* Compatibility macros for Python 3 */
|
|
#if PY_VERSION_HEX >= 0x03000000
|
|
|
|
#define PyClass_Check(obj) PyObject_IsInstance(obj, (PyObject *)&PyType_Type)
|
|
#define PyInt_Check(x) PyLong_Check(x)
|
|
#define PyInt_AsLong(x) PyLong_AsLong(x)
|
|
#define PyInt_FromLong(x) PyLong_FromLong(x)
|
|
#define PyInt_FromSize_t(x) PyLong_FromSize_t(x)
|
|
#define PyString_Check(name) PyBytes_Check(name)
|
|
#define PyString_FromString(x) PyUnicode_FromString(x)
|
|
#define PyString_Format(fmt, args) PyUnicode_Format(fmt, args)
|
|
#define PyString_AsString(str) PyBytes_AsString(str)
|
|
#define PyString_Size(str) PyBytes_Size(str)
|
|
#define PyString_InternFromString(key) PyUnicode_InternFromString(key)
|
|
#define Py_TPFLAGS_HAVE_CLASS Py_TPFLAGS_BASETYPE
|
|
#define PyString_AS_STRING(x) PyUnicode_AS_STRING(x)
|
|
#define _PyLong_FromSsize_t(x) PyLong_FromSsize_t(x)
|
|
|
|
#endif
|
|
|
|
#ifndef Py_TYPE
|
|
# define Py_TYPE(op) ((op)->ob_type)
|
|
#endif
|
|
|
|
/* SWIG APIs for compatibility of both Python 2 & 3 */
|
|
|
|
#if PY_VERSION_HEX >= 0x03000000
|
|
# define SWIG_Python_str_FromFormat PyUnicode_FromFormat
|
|
#else
|
|
# define SWIG_Python_str_FromFormat PyString_FromFormat
|
|
#endif
|
|
|
|
|
|
/* Warning: This function will allocate a new string in Python 3,
|
|
* so please call SWIG_Python_str_DelForPy3(x) to free the space.
|
|
*/
|
|
SWIGINTERN char*
|
|
SWIG_Python_str_AsChar(PyObject *str)
|
|
{
|
|
#if PY_VERSION_HEX >= 0x03000000
|
|
char *newstr = 0;
|
|
str = PyUnicode_AsUTF8String(str);
|
|
if (str) {
|
|
char *cstr;
|
|
Py_ssize_t len;
|
|
if (PyBytes_AsStringAndSize(str, &cstr, &len) != -1) {
|
|
newstr = (char *) malloc(len+1);
|
|
if (newstr)
|
|
memcpy(newstr, cstr, len+1);
|
|
}
|
|
Py_XDECREF(str);
|
|
}
|
|
return newstr;
|
|
#else
|
|
return PyString_AsString(str);
|
|
#endif
|
|
}
|
|
|
|
#if PY_VERSION_HEX >= 0x03000000
|
|
# define SWIG_Python_str_DelForPy3(x) free( (void*) (x) )
|
|
#else
|
|
# define SWIG_Python_str_DelForPy3(x)
|
|
#endif
|
|
|
|
|
|
SWIGINTERN PyObject*
|
|
SWIG_Python_str_FromChar(const char *c)
|
|
{
|
|
#if PY_VERSION_HEX >= 0x03000000
|
|
return PyUnicode_FromString(c);
|
|
#else
|
|
return PyString_FromString(c);
|
|
#endif
|
|
}
|
|
|
|
#ifndef PyObject_DEL
|
|
# define PyObject_DEL PyObject_Del
|
|
#endif
|
|
|
|
// SWIGPY_USE_CAPSULE is no longer used within SWIG itself, but some user
|
|
// interface files check for it.
|
|
# define SWIGPY_USE_CAPSULE
|
|
# define SWIGPY_CAPSULE_NAME ("swig_runtime_data" SWIG_RUNTIME_VERSION ".type_pointer_capsule" SWIG_TYPE_TABLE_NAME)
|
|
|
|
#if PY_VERSION_HEX < 0x03020000
|
|
#define PyDescr_TYPE(x) (((PyDescrObject *)(x))->d_type)
|
|
#define PyDescr_NAME(x) (((PyDescrObject *)(x))->d_name)
|
|
#define Py_hash_t long
|
|
#endif
|