Changeset 14316
- Timestamp:
- 02/04/13 09:14:30 (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/wrappers/python/io/FetchPythonData.cpp
r14236 r14316 103 103 long* lmatrix=NULL; 104 104 bool* bmatrix=NULL; 105 int i; 105 int i,j,k,ipt=0; 106 int mstride,nstride; 107 npy_intp* strides=NULL; 108 // PyObject* py_matrix2; 106 109 107 110 if (PyArray_Check((PyArrayObject*)py_matrix)) { … … 111 114 dims=PyArray_DIMS((PyArrayObject*)py_matrix); 112 115 M=dims[0]; N=dims[1]; 116 strides=PyArray_STRIDES((PyArrayObject*)py_matrix); 117 mstride=strides[0]; nstride=strides[1]; 113 118 } 114 119 else if (ndim==1) { 115 120 dims=PyArray_DIMS((PyArrayObject*)py_matrix); 116 121 M=dims[0]; N=1; 122 strides=PyArray_STRIDES((PyArrayObject*)py_matrix); 123 mstride=strides[0]; nstride=1; 117 124 } 118 125 else 119 126 _error_("expecting an MxN matrix or M vector in input!"); 127 128 // _printf_(1,"M=%d, N=%d\n",M,N); 129 // _printf_(1,"mstride=%d, nstride=%d\n",mstride,nstride); 130 // _printf_(1,"py_matrix: FLAGS=%d, NPY_ARRAY_C_CONTIGUOUS=%d, FLAGS & NPY_ARRAY_C_CONTIGUOUS=%d\n",PyArray_FLAGS((PyArrayObject*)py_matrix),NPY_ARRAY_C_CONTIGUOUS,PyArray_FLAGS((PyArrayObject*)py_matrix) & NPY_ARRAY_C_CONTIGUOUS); 131 // _printf_(1,"NPY_SIZEOF_DOUBLE=%d\n",NPY_SIZEOF_DOUBLE); 132 // _printf_(1,"NPY_SIZEOF_INT64=%d\n",NPY_SIZEOF_INT64); 133 // _printf_(1,"NPY_SIZEOF_BOOL=%d\n",NPY_SIZEOF_BOOL); 134 // _printf_(1,"NPY_LONG=%d\n",NPY_LONG); 135 // _printf_(1,"NPY_INT64=%d\n",NPY_INT64); 136 // _printf_(1,"NPY_BOOL=%d\n",NPY_BOOL); 137 // _printf_(1,"NPY_CHAR=%d\n",NPY_CHAR); 120 138 121 139 if (M && N) { … … 126 144 /*copy matrix: */ 127 145 matrix=xNew<double>(M*N); 128 memcpy(matrix,dmatrix,(M*N)*sizeof(double)); 129 } 130 131 else if (PyArray_TYPE((PyArrayObject*)py_matrix) == NPY_INT64) { 146 if (PyArray_FLAGS((PyArrayObject*)py_matrix) & NPY_ARRAY_C_CONTIGUOUS) { 147 memcpy(matrix,dmatrix,(M*N)*sizeof(double)); 148 } 149 else { 150 mstride/=PyArray_ITEMSIZE((PyArrayObject*)py_matrix); 151 nstride/=PyArray_ITEMSIZE((PyArrayObject*)py_matrix); 152 for (i=0; i<M; i++) { 153 k=i*mstride; 154 for (j=0; j<N; j++) { 155 matrix[ipt++]=dmatrix[k]; 156 k+=nstride; 157 } 158 } 159 // py_matrix2=PyArray_FromObject(py_matrix,NPY_DOUBLE,PyArray_NDIM((const PyArrayObject*)py_matrix),PyArray_NDIM((const PyArrayObject*)py_matrix)); 160 // _printf_(1,"py_matrix2: FLAGS=%d, NPY_ARRAY_C_CONTIGUOUS=%d, FLAGS & NPY_ARRAY_C_CONTIGUOUS=%d\n",PyArray_FLAGS((PyArrayObject*)py_matrix2),NPY_ARRAY_C_CONTIGUOUS,PyArray_FLAGS((PyArrayObject*)py_matrix2) & NPY_ARRAY_C_CONTIGUOUS); 161 // dmatrix=(double*)PyArray_DATA((PyArrayObject*)py_matrix2); 162 // memcpy(matrix,dmatrix,(M*N)*sizeof(double)); 163 } 164 } 165 166 else if (PyArray_TYPE((PyArrayObject*)py_matrix) == NPY_LONG) { 132 167 /*retrieve internal value: */ 133 168 lmatrix=(long*)PyArray_DATA((PyArrayObject*)py_matrix); … … 206 241 } 207 242 208 else if (PyArray_TYPE((PyArrayObject*)py_matrix) == NPY_ INT64) {243 else if (PyArray_TYPE((PyArrayObject*)py_matrix) == NPY_LONG) { 209 244 /*retrieve internal value: */ 210 245 lmatrix=(long*)PyArray_DATA((PyArrayObject*)py_matrix); … … 283 318 } 284 319 285 else if (PyArray_TYPE((PyArrayObject*)py_matrix) == NPY_ INT64) {320 else if (PyArray_TYPE((PyArrayObject*)py_matrix) == NPY_LONG) { 286 321 /*retrieve internal value: */ 287 322 lmatrix=(long*)PyArray_DATA((PyArrayObject*)py_matrix); … … 363 398 } 364 399 365 else if (PyArray_TYPE((PyArrayObject*)py_vector) == NPY_ INT64) {400 else if (PyArray_TYPE((PyArrayObject*)py_vector) == NPY_LONG) { 366 401 /*retrieve internal value: */ 367 402 lvector=(long*)PyArray_DATA((PyArrayObject*)py_vector); … … 441 476 } 442 477 443 else if (PyArray_TYPE((PyArrayObject*)py_vector) == NPY_ INT64) {478 else if (PyArray_TYPE((PyArrayObject*)py_vector) == NPY_LONG) { 444 479 /*retrieve internal value: */ 445 480 lvector=(long*)PyArray_DATA((PyArrayObject*)py_vector); … … 519 554 } 520 555 521 else if (PyArray_TYPE((PyArrayObject*)py_vector) == NPY_ INT64) {556 else if (PyArray_TYPE((PyArrayObject*)py_vector) == NPY_LONG) { 522 557 /*retrieve internal value: */ 523 558 lvector=(long*)PyArray_DATA((PyArrayObject*)py_vector);
Note:
See TracChangeset
for help on using the changeset viewer.