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 |