changeset 90:935d69473ebd

Configuration changes.
author David Grundberg <individ@acc.umu.se>
date Sat, 26 Sep 2009 20:19:23 +0200
parents 2e8b52a5e1b1 (diff) 82459c7db185 (current diff)
children 9c35b62f9eaf
files ChangeLog setup.py.in
diffstat 2 files changed, 28 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Thu Sep 24 20:22:08 2009 +0200
+++ b/ChangeLog	Sat Sep 26 20:19:23 2009 +0200
@@ -1,15 +1,15 @@
-2009-09-24  David Grundberg  <individ@acc.umu.se>
+2009-09-26  David Grundberg  <individ@acc.umu.se>
 
 	* configure.ac: Make NumPy default. Replace --enable flags with
-	--with-type flags. Rework output. 
+	--with-type flags. Rework output.
 	* m4/ax_python_numeric.m4 (AX_PYTHON_NUMERIC): Check for Numeric
 	extentions for Python.
 
-2009-09-24  David Grundberg  <individ@acc.umu.se>
+2009-09-26  David Grundberg  <individ@acc.umu.se>
 
 	* m4/ax_python_numpy.m4 (AX_PYTHON_NUMPY): Restore CPPFLAGS.
 
-2009-09-20  David Grundberg  <individ@acc.umu.se>
+2009-09-26  David Grundberg  <individ@acc.umu.se>
 
 	* configure.ac: Look for NumPy. List which dependencies that are
 	missing.
@@ -21,6 +21,11 @@
 	* setup.py.in: Ditto.
 	* Jamfile.in: Add warning against using bjam.
 
+2009-09-21  Jaroslav Hajek  <highegg@gmail.com>
+
+	* python_to_octave.cc (copy_pyarrobj_to_octarray_boot,
+	pyarr_to_octvalue): Support NumPy string arrays.
+
 2009-09-18  Jaroslav Hajek  <highegg@gmail.com>
 
 	* package/pytave.py: Safer check for interactive (mod_wsgi in
--- a/python_to_octave.cc	Thu Sep 24 20:22:08 2009 +0200
+++ b/python_to_octave.cc	Sat Sep 26 20:19:23 2009 +0200
@@ -187,6 +187,7 @@
 
 #ifdef HAVE_NUMPY
          ARRAYCASE(PyArray_BOOL, bool)
+         ARRAYCASE(PyArray_STRING, char)
 #endif
 
          ARRAYCASE(PyArray_OBJECT, PyObject *)
@@ -209,7 +210,7 @@
    }
 
    static void pyarr_to_octvalue(octave_value &octvalue,
-                                 const PyArrayObject *pyarr) {
+                                 PyArrayObject *pyarr) {
       dim_vector dims;
       switch (pyarr->nd) {
          case 0:
@@ -278,6 +279,7 @@
             pyarrobj_to_octvalueNd<ComplexNDArray>(octvalue, pyarr, dims);
             break;
          case PyArray_CHAR:
+         case_PyArray_CHAR:
             pyarrobj_to_octvalueNd<charNDArray>(octvalue, pyarr, dims);
             // FIXME: is the following needed?
             octvalue = octvalue.convert_to_str(true, true, '"');
@@ -286,6 +288,22 @@
          case PyArray_BOOL:
             pyarrobj_to_octvalueNd<boolNDArray>(octvalue, pyarr, dims);
             break;
+         case PyArray_STRING:
+            {
+               if (pyarr->descr->elsize == 1)
+                  goto case_PyArray_CHAR;
+               else {
+                  // Create a new descriptor of the data.
+                  PyArray_Descr *view_descr = PyArray_DescrFromType(PyArray_CHAR);
+                  // Create a new view of the NumPy array.
+                  PyArrayObject *view = (PyArrayObject *)PyArray_View (pyarr, view_descr, NULL);
+                  // Store in a handle to ensure proper destruction.
+                  handle<PyObject> view_handle (allow_null ((PyObject *)view));
+                  // Call recursively.
+                  pyarr_to_octvalue (octvalue, view);
+               }
+            }
+            break;
 #endif
          case PyArray_OBJECT:
             pyarrobj_to_octvalueNd<Cell>(octvalue, pyarr, dims);