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