[Scipy-svn] r6716 - trunk/scipy/interpolate/src

scipy-svn at scipy.org scipy-svn at scipy.org
Sat Sep 11 20:48:59 EDT 2010


Author: ptvirtan
Date: 2010-09-11 19:48:58 -0500 (Sat, 11 Sep 2010)
New Revision: 6716

Modified:
   trunk/scipy/interpolate/src/_fitpackmodule.c
   trunk/scipy/interpolate/src/_interpolate.cpp
   trunk/scipy/interpolate/src/multipack.h
Log:
3K: scipy.interpolate builds and passes most tests.

Modified: trunk/scipy/interpolate/src/_fitpackmodule.c
===================================================================
--- trunk/scipy/interpolate/src/_fitpackmodule.c	2010-09-12 00:48:43 UTC (rev 6715)
+++ trunk/scipy/interpolate/src/_fitpackmodule.c	2010-09-12 00:48:58 UTC (rev 6716)
@@ -46,6 +46,39 @@
 {NULL, NULL, 0, NULL}
 };
 
+#if PY_VERSION_HEX >= 0x03000000
+static struct PyModuleDef moduledef = {
+    PyModuleDef_HEAD_INIT,
+    "_fitpack",
+    NULL,
+    -1,
+    fitpack_module_methods,
+    NULL,
+    NULL,
+    NULL,
+    NULL
+};
+
+PyObject *PyInit__fitpack(void)
+{
+    PyObject *m, *d, *s;
+
+    m = PyModule_Create(&moduledef);
+    import_array();
+
+    d = PyModule_GetDict(m);
+
+    s = PyUnicode_FromString(" 1.7 ");
+    PyDict_SetItemString(d, "__version__", s);
+    fitpack_error = PyErr_NewException ("fitpack.error", NULL, NULL);
+    Py_DECREF(s);
+    if (PyErr_Occurred()) {
+        Py_FatalError("can't initialize module fitpack");
+    }
+
+    return m;
+}
+#else
 PyMODINIT_FUNC init_fitpack(void) {
     PyObject *m, *d, *s;
     m = Py_InitModule("_fitpack", fitpack_module_methods);
@@ -60,3 +93,4 @@
         Py_FatalError("can't initialize module fitpack");
     }
 }
+#endif 

Modified: trunk/scipy/interpolate/src/_interpolate.cpp
===================================================================
--- trunk/scipy/interpolate/src/_interpolate.cpp	2010-09-12 00:48:43 UTC (rev 6715)
+++ trunk/scipy/interpolate/src/_interpolate.cpp	2010-09-12 00:48:58 UTC (rev 6716)
@@ -221,7 +221,29 @@
     {NULL, NULL, 0, NULL}
 };
 
+#if PY_VERSION_HEX >= 0x03000000
+static struct PyModuleDef moduledef = {
+    PyModuleDef_HEAD_INIT,
+    "_interpolate",
+    NULL,
+    -1,
+    interpolate_methods,
+    NULL,
+    NULL,
+    NULL,
+    NULL
+};
 
+PyObject *PyInit__interpolate(void)
+{
+    PyObject *m, *d, *s;
+
+    m = PyModule_Create(&moduledef);
+    import_array();
+
+    return m;
+}
+#else
 PyMODINIT_FUNC init_interpolate(void)
 {
     PyObject* m;
@@ -232,5 +254,5 @@
         return;
     import_array();
 }
-
+#endif
 } // extern "C"

Modified: trunk/scipy/interpolate/src/multipack.h
===================================================================
--- trunk/scipy/interpolate/src/multipack.h	2010-09-12 00:48:43 UTC (rev 6715)
+++ trunk/scipy/interpolate/src/multipack.h	2010-09-12 00:48:58 UTC (rev 6716)
@@ -31,6 +31,24 @@
 #include "Python.h"
 #include "numpy/arrayobject.h"
 
+#if PY_VERSION_HEX >= 0x03000000
+    #define PyString_AsString PyBytes_AsString
+    #define PyString_FromString PyBytes_FromString
+    #define PyString_ConcatAndDel PyBytes_ConcatAndDel
+
+    #define PyInt_AsLong PyLong_AsLong
+
+    /* Return True only if the long fits in a C long */
+    static NPY_INLINE int PyInt_Check(PyObject *op) {
+        int overflow = 0;
+        if (!PyLong_Check(op)) {
+            return 0;
+        }
+        PyLong_AsLongAndOverflow(op, &overflow);
+        return (overflow == 0);
+    }
+#endif
+
 #define PYERR(errobj,message) {PyErr_SetString(errobj,message); goto fail;}
 #define PYERR2(errobj,message) {PyErr_Print(); PyErr_SetString(errobj, message); goto fail;}
 #define ISCONTIGUOUS(m) ((m)->flags & CONTIGUOUS)




More information about the Scipy-svn mailing list