Changeset 13990
- Timestamp:
- 11/20/12 11:57:30 (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/wrappers/python/io/FetchPythonData.cpp
r13749 r13990 67 67 npy_intp* dims=NULL; 68 68 69 /*retrive dimensions: */ 69 /*intermediary:*/ 70 long* lmatrix=NULL; 71 bool* bmatrix=NULL; 72 int i; 73 74 /*retrieve dimensions: */ 70 75 ndim=PyArray_NDIM((const PyArrayObject*)py_matrix); 71 76 if(ndim!=2)_error_("expecting an MxN matrix in input!"); … … 74 79 75 80 if (M && N) { 76 /*retrieve internal value: */ 77 dmatrix=(double*)PyArray_DATA((PyArrayObject*)py_matrix); 78 79 /*copy matrix: */ 80 matrix=xNew<double>(M*N); 81 memcpy(matrix,dmatrix,(M*N)*sizeof(double)); 81 if (PyArray_TYPE((PyArrayObject*)py_matrix) == NPY_DOUBLE) { 82 /*retrieve internal value: */ 83 dmatrix=(double*)PyArray_DATA((PyArrayObject*)py_matrix); 84 85 /*copy matrix: */ 86 matrix=xNew<double>(M*N); 87 memcpy(matrix,dmatrix,(M*N)*sizeof(double)); 88 } 89 90 else if (PyArray_TYPE((PyArrayObject*)py_matrix) == NPY_INT64) { 91 /*retrieve internal value: */ 92 lmatrix=(long*)PyArray_DATA((PyArrayObject*)py_matrix); 93 94 /*transform into double matrix: */ 95 matrix=xNew<double>(M*N); 96 for(i=0;i<M*N;i++)matrix[i]=(double)lmatrix[i]; 97 } 98 99 else if (PyArray_TYPE((PyArrayObject*)py_matrix) == NPY_BOOL) { 100 /*retrieve internal value: */ 101 bmatrix=(bool*)PyArray_DATA((PyArrayObject*)py_matrix); 102 103 /*transform into double matrix: */ 104 matrix=xNew<double>(M*N); 105 for(i=0;i<M*N;i++)matrix[i]=(double)bmatrix[i]; 106 } 107 108 else 109 _error_("unrecognized matrix type in input!"); 82 110 } 83 111 else … … 94 122 95 123 /*output: */ 96 double* dmatrix=NULL;97 124 int* matrix=NULL; 98 125 int M,N; 99 100 /*intermediary:*/101 int i;102 126 int ndim; 103 127 npy_intp* dims=NULL; 104 128 105 /*retrive dimensions: */ 129 /*intermediary:*/ 130 double* dmatrix=NULL; 131 long* lmatrix=NULL; 132 bool* bmatrix=NULL; 133 int i; 134 135 /*retrieve dimensions: */ 106 136 ndim=PyArray_NDIM((const PyArrayObject*)py_matrix); 107 137 if(ndim!=2)_error_("expecting an MxN matrix in input!"); … … 110 140 111 141 if (M && N) { 112 /*retrieve internal value: */ 113 dmatrix=(double*)PyArray_DATA((PyArrayObject*)py_matrix); 114 115 /*transform into integer matrix: */ 116 matrix=xNew<int>(M*N); 117 for(i=0;i<M*N;i++)matrix[i]=(int)dmatrix[i]; 142 if (PyArray_TYPE((PyArrayObject*)py_matrix) == NPY_DOUBLE) { 143 /*retrieve internal value: */ 144 dmatrix=(double*)PyArray_DATA((PyArrayObject*)py_matrix); 145 146 /*transform into integer matrix: */ 147 matrix=xNew<int>(M*N); 148 for(i=0;i<M*N;i++)matrix[i]=(int)dmatrix[i]; 149 } 150 151 else if (PyArray_TYPE((PyArrayObject*)py_matrix) == NPY_INT64) { 152 /*retrieve internal value: */ 153 lmatrix=(long*)PyArray_DATA((PyArrayObject*)py_matrix); 154 155 /*transform into integer matrix: */ 156 matrix=xNew<int>(M*N); 157 for(i=0;i<M*N;i++)matrix[i]=(int)lmatrix[i]; 158 } 159 160 else if (PyArray_TYPE((PyArrayObject*)py_matrix) == NPY_BOOL) { 161 /*retrieve internal value: */ 162 bmatrix=(bool*)PyArray_DATA((PyArrayObject*)py_matrix); 163 164 /*transform into integer matrix: */ 165 matrix=xNew<int>(M*N); 166 for(i=0;i<M*N;i++)matrix[i]=(int)bmatrix[i]; 167 } 168 169 else 170 _error_("unrecognized matrix type in input!"); 118 171 } 119 172 else … … 136 189 npy_intp* dims=NULL; 137 190 138 /*retrive dimensions: */ 191 /*intermediary:*/ 192 long* lvector=NULL; 193 bool* bvector=NULL; 194 int i; 195 196 /*retrieve dimensions: */ 139 197 ndim=PyArray_NDIM((const PyArrayObject*)py_vector); 140 198 if(ndim!=1)_error_("expecting an Mx1 vector in input!"); … … 143 201 144 202 if (M) { 145 /*retrieve internal value: */ 146 dvector=(double*)PyArray_DATA((PyArrayObject*)py_vector); 147 148 /*copy vector: */ 149 vector=xNew<double>(M); 150 memcpy(vector,dvector,(M)*sizeof(double)); 203 if (PyArray_TYPE((PyArrayObject*)py_vector) == NPY_DOUBLE) { 204 /*retrieve internal value: */ 205 dvector=(double*)PyArray_DATA((PyArrayObject*)py_vector); 206 207 /*copy vector: */ 208 vector=xNew<double>(M); 209 memcpy(vector,dvector,(M)*sizeof(double)); 210 } 211 212 else if (PyArray_TYPE((PyArrayObject*)py_vector) == NPY_INT64) { 213 /*retrieve internal value: */ 214 lvector=(long*)PyArray_DATA((PyArrayObject*)py_vector); 215 216 /*transform into double vector: */ 217 vector=xNew<double>(M); 218 for(i=0;i<M;i++)vector[i]=(double)lvector[i]; 219 } 220 221 else if (PyArray_TYPE((PyArrayObject*)py_vector) == NPY_BOOL) { 222 /*retrieve internal value: */ 223 bvector=(bool*)PyArray_DATA((PyArrayObject*)py_vector); 224 225 /*transform into double vector: */ 226 vector=xNew<double>(M); 227 for(i=0;i<M;i++)vector[i]=(double)bvector[i]; 228 } 229 230 else 231 _error_("unrecognized vector type in input!"); 151 232 } 152 233 else
Note:
See TracChangeset
for help on using the changeset viewer.