From d4a3ba6331995015e06d7c8e7b4e4ab9b46507fc Mon Sep 17 00:00:00 2001 From: Jonathan Lambrechts <jonathan.lambrechts@uclouvain.be> Date: Mon, 24 Nov 2014 00:15:16 +0000 Subject: [PATCH] dg : update windows script to python3 --- wrappers/gmshpy/gmshtypemaps.i | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/wrappers/gmshpy/gmshtypemaps.i b/wrappers/gmshpy/gmshtypemaps.i index 5f91406d3f..42a077fb82 100644 --- a/wrappers/gmshpy/gmshtypemaps.i +++ b/wrappers/gmshpy/gmshtypemaps.i @@ -124,6 +124,27 @@ } return array; } + PyObject *fullMatrix2PyArrayConst(const fullMatrix<double> &fm) + { + npy_intp dims[2] = {fm.size1(), fm.size2()}; + double *data = (double*)fm.getDataPtr(); + /*PyObject *array = PyArray_New(&PyArray_Type, 2, dims, NPY_DOUBLE, NULL, NULL, 0, NPY_ARRAY_F_CONTIGUOUS, NULL); + // copy data + memcpy((void*)PyArray_DATA(array), data, dims[0] * dims[1] * sizeof(double));*/ + // do not copy data + PyObject *array = PyArray_New(&PyArray_Type, 2, dims, NPY_DOUBLE, NULL, (void*)data, 0, NPY_ARRAY_F_CONTIGUOUS, NULL); + PyArray_UpdateFlags((PyArrayObject*)array, NPY_ARRAY_ALIGNED); + /*if (fm.getOwnData()) { + fm.setOwnData(false); + %#if PY_MAJOR_VERSION==2 && PY_MINOR_VERSION==6 + PyObject *capsule = PyCObject_FromVoidPtr((void*)data, deleteCapsuleArray); + %#else + PyObject *capsule = PyCapsule_New((void*) data, NULL, deleteCapsuleArray); + %#endif + PyArray_SetBaseObject((PyArrayObject*)array, capsule); + }*/ + return array; + } PyObject *fullVector2PyArrayProxy(fullVector<double> &fv) { npy_intp dims[1] = {fv.size()}; @@ -186,6 +207,10 @@ $result = fullMatrix2PyArray($1); } +%typemap(out, fragment="fullMatrixConversion") const fullMatrix<double>& { + $result = fullMatrix2PyArrayConst(*$1); +} + %typemap(out, fragment="fullMatrixConversion") fullVector<double>& { $result = fullVector2PyArrayProxy(*$1); } -- GitLab