123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218 |
- /* 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 *cstr;
- char *newstr;
- Py_ssize_t len;
- str = PyUnicode_AsUTF8String(str);
- PyBytes_AsStringAndSize(str, &cstr, &len);
- newstr = (char *) malloc(len+1);
- 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
- }
- /* Add PyOS_snprintf for old Pythons */
- #if PY_VERSION_HEX < 0x02020000
- # if defined(_MSC_VER) || defined(__BORLANDC__) || defined(_WATCOM)
- # define PyOS_snprintf _snprintf
- # else
- # define PyOS_snprintf snprintf
- # endif
- #endif
- /* A crude PyString_FromFormat implementation for old Pythons */
- #if PY_VERSION_HEX < 0x02020000
- #ifndef SWIG_PYBUFFER_SIZE
- # define SWIG_PYBUFFER_SIZE 1024
- #endif
- static PyObject *
- PyString_FromFormat(const char *fmt, ...) {
- va_list ap;
- char buf[SWIG_PYBUFFER_SIZE * 2];
- int res;
- va_start(ap, fmt);
- res = vsnprintf(buf, sizeof(buf), fmt, ap);
- va_end(ap);
- return (res < 0 || res >= (int)sizeof(buf)) ? 0 : PyString_FromString(buf);
- }
- #endif
- /* Add PyObject_Del for old Pythons */
- #if PY_VERSION_HEX < 0x01060000
- # define PyObject_Del(op) PyMem_DEL((op))
- #endif
- #ifndef PyObject_DEL
- # define PyObject_DEL PyObject_Del
- #endif
- /* A crude PyExc_StopIteration exception for old Pythons */
- #if PY_VERSION_HEX < 0x02020000
- # ifndef PyExc_StopIteration
- # define PyExc_StopIteration PyExc_RuntimeError
- # endif
- # ifndef PyObject_GenericGetAttr
- # define PyObject_GenericGetAttr 0
- # endif
- #endif
- /* Py_NotImplemented is defined in 2.1 and up. */
- #if PY_VERSION_HEX < 0x02010000
- # ifndef Py_NotImplemented
- # define Py_NotImplemented PyExc_RuntimeError
- # endif
- #endif
- /* A crude PyString_AsStringAndSize implementation for old Pythons */
- #if PY_VERSION_HEX < 0x02010000
- # ifndef PyString_AsStringAndSize
- # define PyString_AsStringAndSize(obj, s, len) {*s = PyString_AsString(obj); *len = *s ? strlen(*s) : 0;}
- # endif
- #endif
- /* PySequence_Size for old Pythons */
- #if PY_VERSION_HEX < 0x02000000
- # ifndef PySequence_Size
- # define PySequence_Size PySequence_Length
- # endif
- #endif
- /* PyBool_FromLong for old Pythons */
- #if PY_VERSION_HEX < 0x02030000
- static
- PyObject *PyBool_FromLong(long ok)
- {
- PyObject *result = ok ? Py_True : Py_False;
- Py_INCREF(result);
- return result;
- }
- #endif
- /* Py_ssize_t for old Pythons */
- /* This code is as recommended by: */
- /* http://www.python.org/dev/peps/pep-0353/#conversion-guidelines */
- #if PY_VERSION_HEX < 0x02050000 && !defined(PY_SSIZE_T_MIN)
- typedef int Py_ssize_t;
- # define PY_SSIZE_T_MAX INT_MAX
- # define PY_SSIZE_T_MIN INT_MIN
- typedef inquiry lenfunc;
- typedef intargfunc ssizeargfunc;
- typedef intintargfunc ssizessizeargfunc;
- typedef intobjargproc ssizeobjargproc;
- typedef intintobjargproc ssizessizeobjargproc;
- typedef getreadbufferproc readbufferproc;
- typedef getwritebufferproc writebufferproc;
- typedef getsegcountproc segcountproc;
- typedef getcharbufferproc charbufferproc;
- static long PyNumber_AsSsize_t (PyObject *x, void *SWIGUNUSEDPARM(exc))
- {
- long result = 0;
- PyObject *i = PyNumber_Int(x);
- if (i) {
- result = PyInt_AsLong(i);
- Py_DECREF(i);
- }
- return result;
- }
- #endif
- #if PY_VERSION_HEX < 0x02050000
- #define PyInt_FromSize_t(x) PyInt_FromLong((long)x)
- #endif
- #if PY_VERSION_HEX < 0x02040000
- #define Py_VISIT(op) \
- do { \
- if (op) { \
- int vret = visit((op), arg); \
- if (vret) \
- return vret; \
- } \
- } while (0)
- #endif
- #if PY_VERSION_HEX < 0x02030000
- typedef struct {
- PyTypeObject type;
- PyNumberMethods as_number;
- PyMappingMethods as_mapping;
- PySequenceMethods as_sequence;
- PyBufferProcs as_buffer;
- PyObject *name, *slots;
- } PyHeapTypeObject;
- #endif
- #if PY_VERSION_HEX < 0x02030000
- typedef destructor freefunc;
- #endif
- #if ((PY_MAJOR_VERSION == 2 && PY_MINOR_VERSION > 6) || \
- (PY_MAJOR_VERSION == 3 && PY_MINOR_VERSION > 0) || \
- (PY_MAJOR_VERSION > 3))
- # define SWIGPY_USE_CAPSULE
- # define SWIGPY_CAPSULE_NAME ((char*)"swig_runtime_data" SWIG_RUNTIME_VERSION ".type_pointer_capsule" SWIG_TYPE_TABLE_NAME)
- #endif
- #if PY_VERSION_HEX < 0x03020000
- #define PyDescr_TYPE(x) (((PyDescrObject *)(x))->d_type)
- #define PyDescr_NAME(x) (((PyDescrObject *)(x))->d_name)
- #endif
|