Mercurial > pytave
comparison python_to_octave.cc @ 79:d60165bfc849
Support 0D Numeric arrays
author | Jaroslav Hajek <highegg@gmail.com> |
---|---|
date | Fri, 18 Sep 2009 10:31:15 +0200 |
parents | b0991511a16d |
children | 2e8b52a5e1b1 |
comparison
equal
deleted
inserted
replaced
78:2357a9a5fc34 | 79:d60165bfc849 |
---|---|
54 for (int i = 0; i < pyarr->dimensions[dimension]; i++) { | 54 for (int i = 0; i < pyarr->dimensions[dimension]; i++) { |
55 matrix.elem(matindex + i*matstride) | 55 matrix.elem(matindex + i*matstride) |
56 = *(PythonPrimitive*) | 56 = *(PythonPrimitive*) |
57 &ptr[offset + i*pyarr->strides[dimension]]; | 57 &ptr[offset + i*pyarr->strides[dimension]]; |
58 } | 58 } |
59 } else if (pyarr->nd == 0) { | |
60 matrix.elem(0) = *(PythonPrimitive*) ptr; | |
59 } else { | 61 } else { |
60 for (int i = 0; i < pyarr->dimensions[dimension]; i++) { | 62 for (int i = 0; i < pyarr->dimensions[dimension]; i++) { |
61 copy_pyarrobj_to_octarray<PythonPrimitive, OctaveBase>( | 63 copy_pyarrobj_to_octarray<PythonPrimitive, OctaveBase>( |
62 matrix, | 64 matrix, |
63 pyarr, | 65 pyarr, |
83 PyObject *pobj = *(PyObject **) | 85 PyObject *pobj = *(PyObject **) |
84 &ptr[offset + i*pyarr->strides[dimension]]; | 86 &ptr[offset + i*pyarr->strides[dimension]]; |
85 pyobj_to_octvalue (matrix.elem(matindex + i*matstride), | 87 pyobj_to_octvalue (matrix.elem(matindex + i*matstride), |
86 object(handle<PyObject> (borrowed (pobj)))); | 88 object(handle<PyObject> (borrowed (pobj)))); |
87 } | 89 } |
90 } else if (pyarr->nd == 0) { | |
91 PyObject *pobj = *(PyObject **) ptr; | |
92 pyobj_to_octvalue (matrix.elem(0), | |
93 object(handle<PyObject> (borrowed (pobj)))); | |
88 } else { | 94 } else { |
89 for (int i = 0; i < pyarr->dimensions[dimension]; i++) { | 95 for (int i = 0; i < pyarr->dimensions[dimension]; i++) { |
90 copy_pyarrobj_to_octarray<PyObject *, Cell>( | 96 copy_pyarrobj_to_octarray<PyObject *, Cell>( |
91 matrix, | 97 matrix, |
92 pyarr, | 98 pyarr, |
202 octvalue = array; | 208 octvalue = array; |
203 } | 209 } |
204 | 210 |
205 static void pyarr_to_octvalue(octave_value &octvalue, | 211 static void pyarr_to_octvalue(octave_value &octvalue, |
206 const PyArrayObject *pyarr) { | 212 const PyArrayObject *pyarr) { |
207 if (pyarr->nd < 1) | |
208 throw object_convert_exception("Less than 1 dimensions not supported"); | |
209 dim_vector dims; | 213 dim_vector dims; |
210 switch (pyarr->nd) { | 214 switch (pyarr->nd) { |
215 case 0: | |
216 dims = dim_vector (1, 1); | |
217 break; | |
211 case 1: | 218 case 1: |
212 // Always make PyArray vectors row vectors. | 219 // Always make PyArray vectors row vectors. |
213 dims = dim_vector(1, pyarr->dimensions[0]); | 220 dims = dim_vector(1, pyarr->dimensions[0]); |
214 break; | 221 break; |
215 default: | 222 default: |