From 57a417ee736c66a4883c7c792ec5287e65b1c567 Mon Sep 17 00:00:00 2001
From: Justin Carpentier <justin.carpentier@inria.fr>
Date: Tue, 7 Sep 2021 15:42:25 +0200
Subject: [PATCH] core: fix NumpyEquivalentType

---
 include/eigenpy/numpy.hpp | 11 ++++++-----
 unittest/user_type.cpp    | 12 ++++++++----
 2 files changed, 14 insertions(+), 9 deletions(-)

diff --git a/include/eigenpy/numpy.hpp b/include/eigenpy/numpy.hpp
index 84c7575d..8269136f 100644
--- a/include/eigenpy/numpy.hpp
+++ b/include/eigenpy/numpy.hpp
@@ -44,12 +44,13 @@ namespace eigenpy
   template <> struct NumpyEquivalentType<bool>    { enum { type_code = NPY_BOOL  };};
   template <> struct NumpyEquivalentType<int>     { enum { type_code = NPY_INT    };};
   template <> struct NumpyEquivalentType<unsigned int>     { enum { type_code = NPY_UINT    };};
-#if __APPLE__
-  template <> struct NumpyEquivalentType<long>    { enum { type_code = NPY_INT64    };};
-#endif
+  template <> struct NumpyEquivalentType<long>    { enum { type_code = NPY_LONG    };};
+//#if defined _WIN32 || defined __CYGWIN__
+  template <> struct NumpyEquivalentType<long long>    { enum { type_code = NPY_LONGLONG    };};
+//#else
+//  template <> struct NumpyEquivalentType<long long>    { enum { type_code = NPY_LONGLONG    };};
+//#endif
   template <> struct NumpyEquivalentType<unsigned long>    { enum { type_code = NPY_ULONG    };};
-  template <> struct NumpyEquivalentType<int64_t>    { enum { type_code = NPY_INT64 };};
-//  template <> struct NumpyEquivalentType<long long>    { enum { type_code = NPY_LONGLONG };};
 
   template<typename Scalar>
   bool isNumpyNativeType()
diff --git a/unittest/user_type.cpp b/unittest/user_type.cpp
index 46a34480..bad7bc04 100644
--- a/unittest/user_type.cpp
+++ b/unittest/user_type.cpp
@@ -196,16 +196,20 @@ BOOST_PYTHON_MODULE(user_type)
   
   eigenpy::registerCast<DoubleType,double>(true);
   eigenpy::registerCast<double,DoubleType>(true);
-  eigenpy::registerCast<DoubleType,int32_t>(false);
-  eigenpy::registerCast<int32_t,DoubleType>(true);
+  eigenpy::registerCast<DoubleType,int>(false);
+  eigenpy::registerCast<int,DoubleType>(true);
   eigenpy::registerCast<DoubleType,long long>(false);
   eigenpy::registerCast<long long,DoubleType>(true);
+  eigenpy::registerCast<DoubleType,long>(false);
+  eigenpy::registerCast<long,DoubleType>(true);
   eigenpy::registerCast<FloatType,double>(true);
   eigenpy::registerCast<double,FloatType>(false);
   eigenpy::registerCast<FloatType,long long>(false);
   eigenpy::registerCast<long long,FloatType>(true);
-  eigenpy::registerCast<FloatType,int32_t>(false);
-  eigenpy::registerCast<int32_t,FloatType>(true);
+  eigenpy::registerCast<FloatType,int>(false);
+  eigenpy::registerCast<int,FloatType>(true);
+  eigenpy::registerCast<FloatType,long>(false);
+  eigenpy::registerCast<long,FloatType>(true);
 
   bp::implicitly_convertible<double,DoubleType>();
   bp::implicitly_convertible<DoubleType,double>();
-- 
GitLab