]> granicus.if.org Git - python/commitdiff
Issue #2543: Make ctypes compatible (again) with Python 2.3, 2.4, and 2.5.
authorThomas Heller <theller@ctypes.org>
Fri, 4 Apr 2008 08:35:44 +0000 (08:35 +0000)
committerThomas Heller <theller@ctypes.org>
Fri, 4 Apr 2008 08:35:44 +0000 (08:35 +0000)
Lib/ctypes/test/test_prototypes.py
Modules/_ctypes/_ctypes.c
Modules/_ctypes/ctypes.h

index 5a4117a5a6402ddbd76714ddb9ab33e588f86833..33deae3e596160182dbe6f271967ec96747f0098 100644 (file)
@@ -57,7 +57,7 @@ class CharPointersTestCase(unittest.TestCase):
 
         try:
             func()
-        except TypeError as details:
+        except TypeError, details:
             self.failUnlessEqual(str(details), "required argument 'input' missing")
         else:
             self.fail("TypeError not raised")
index 77c15f3a0273475665c9f7cabc6d3145296c1bd0..c127a8b5bea93ca3b27d4c01de76e9c199c1367d 100644 (file)
@@ -139,6 +139,34 @@ char *conversion_mode_errors = NULL;
 \f
 /****************************************************************/
 
+#if (PY_VERSION_HEX < 0x02040000)
+/* Only in Python 2.4 and up */
+static PyObject *
+PyTuple_Pack(int n, ...)
+{
+       int i;
+       PyObject *o;
+       PyObject *result;
+       PyObject **items;
+       va_list vargs;
+
+       va_start(vargs, n);
+       result = PyTuple_New(n);
+       if (result == NULL)
+               return NULL;
+       items = ((PyTupleObject *)result)->ob_item;
+       for (i = 0; i < n; i++) {
+               o = va_arg(vargs, PyObject *);
+               Py_INCREF(o);
+               items[i] = o;
+       }
+       va_end(vargs);
+       return result;
+}
+#endif
+
+/****************************************************************/
+
 typedef struct {
        PyObject_HEAD
        PyObject *key;
@@ -4432,32 +4460,6 @@ static PyNumberMethods Simple_as_number = {
        (inquiry)Simple_nonzero, /* nb_nonzero */
 };
 
-#if (PY_VERSION_HEX < 0x02040000)
-/* Only in Python 2.4 and up */
-static PyObject *
-PyTuple_Pack(int n, ...)
-{
-       int i;
-       PyObject *o;
-       PyObject *result;
-       PyObject **items;
-       va_list vargs;
-
-       va_start(vargs, n);
-       result = PyTuple_New(n);
-       if (result == NULL)
-               return NULL;
-       items = ((PyTupleObject *)result)->ob_item;
-       for (i = 0; i < n; i++) {
-               o = va_arg(vargs, PyObject *);
-               Py_INCREF(o);
-               items[i] = o;
-       }
-       va_end(vargs);
-       return result;
-}
-#endif
-
 /* "%s(%s)" % (self.__class__.__name__, self.value) */
 static PyObject *
 Simple_repr(CDataObject *self)
index aa09989d57dec5427c149de356f05980b25261ea..7dfdb1818b264f9984f5657aab93a8d1cf621100 100644 (file)
@@ -9,8 +9,18 @@
 #if (PY_VERSION_HEX < 0x02050000)
 typedef int Py_ssize_t;
 #define PyInt_FromSsize_t PyInt_FromLong
+#define PyNumber_AsSsize_t(ob, exc) PyInt_AsLong(ob)
 #endif
 
+#if (PY_VERSION_HEX < 0x02060000)
+#define Py_TYPE(ob) (((PyObject*)(ob))->ob_type)
+#define PyVarObject_HEAD_INIT(type, size) \
+       PyObject_HEAD_INIT(type) size,
+#define PyImport_ImportModuleNoBlock PyImport_ImportModule
+#define PyIndex_Check(ob) PyInt_Check(ob)
+#endif
+
+
 #ifndef MS_WIN32
 #define max(a, b) ((a) > (b) ? (a) : (b))
 #define min(a, b) ((a) < (b) ? (a) : (b))