From bb10b92d22f5df4d73ca4abcf6b6730ac8c69863 Mon Sep 17 00:00:00 2001 From: Justin Carpentier <justin.carpentier@inria.fr> Date: Wed, 20 Nov 2019 18:49:37 +0100 Subject: [PATCH] core: move loadNumpyArray to the lib no need to compile it again --- include/eigenpy/details.hpp | 5 +---- include/eigenpy/eigenpy.hpp | 4 ++++ src/eigenpy.cpp | 15 +++++++++++++++ 3 files changed, 20 insertions(+), 4 deletions(-) diff --git a/include/eigenpy/details.hpp b/include/eigenpy/details.hpp index e7becd5..23f586b 100644 --- a/include/eigenpy/details.hpp +++ b/include/eigenpy/details.hpp @@ -10,7 +10,6 @@ #include "eigenpy/fwd.hpp" #include <patchlevel.h> // For PY_MAJOR_VERSION -#include <numpy/arrayobject.h> #include <iostream> #include "eigenpy/eigenpy.hpp" @@ -543,8 +542,6 @@ namespace eigenpy } }; -#define numpy_import_array() {if (_import_array() < 0) {PyErr_Print(); PyErr_SetString(PyExc_ImportError, "numpy.core.multiarray failed to import"); } } - template<typename MatType,typename EigenEquivalentType> void enableEigenPySpecific() { @@ -581,7 +578,7 @@ namespace eigenpy template<typename MatType> void enableEigenPySpecific() { - numpy_import_array(); + loadNumpyArray(); if(check_registration<MatType>()) return; bp::to_python_converter<MatType,EigenToPy<MatType> >(); diff --git a/include/eigenpy/eigenpy.hpp b/include/eigenpy/eigenpy.hpp index 0c5cc8f..0b23d1c 100644 --- a/include/eigenpy/eigenpy.hpp +++ b/include/eigenpy/eigenpy.hpp @@ -26,6 +26,10 @@ namespace eigenpy { + + /* Load numpy through Python */ + void loadNumpyArray(); + /* Enable Eigen-Numpy serialization for a set of standard MatrixBase instance. */ void EIGENPY_EXPORT enableEigenPy(); diff --git a/src/eigenpy.cpp b/src/eigenpy.cpp index 9d7490e..657e969 100644 --- a/src/eigenpy.cpp +++ b/src/eigenpy.cpp @@ -5,9 +5,24 @@ #include "eigenpy/eigenpy.hpp" +#include <numpy/arrayobject.h> + namespace eigenpy { + void loadNumpyArray() + { + static bool loaded = false; + if(loaded) return; + + if(_import_array() < 0) + { + PyErr_Print(); PyErr_SetString(PyExc_ImportError, "numpy.core.multiarray failed to import"); + } + else + loaded = true; + } + /* Enable Eigen-Numpy serialization for a set of standard MatrixBase instances. */ void enableEigenPy() { -- GitLab