| Index: swig/Lib/python/pyhead.swg
|
| ===================================================================
|
| --- swig/Lib/python/pyhead.swg (revision 0)
|
| +++ swig/Lib/python/pyhead.swg (revision 0)
|
| @@ -0,0 +1,148 @@
|
| +/* 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 PyString_Format(fmt, args) PyUnicode_Format(fmt, args)
|
| +
|
| +#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
|
| +#endif
|
|
|