From fcd51fc742a9d892f54de07878976c88f4706dda Mon Sep 17 00:00:00 2001
From: Justin Carpentier <justin.carpentier@inria.fr>
Date: Fri, 21 Feb 2020 17:50:45 +0100
Subject: [PATCH] core: add dedicated file for FromTypeToType

---
 CMakeLists.txt                        |  1 +
 include/eigenpy/details.hpp           | 32 ++-----------------
 include/eigenpy/scalar-conversion.hpp | 44 +++++++++++++++++++++++++++
 3 files changed, 47 insertions(+), 30 deletions(-)
 create mode 100644 include/eigenpy/scalar-conversion.hpp

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 908bd085..1ec991bb 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -102,6 +102,7 @@ SET(${PROJECT_NAME}_HEADERS
   include/eigenpy/computation-info.hpp
   include/eigenpy/eigenpy.hpp
   include/eigenpy/exception.hpp
+  include/eigenpy/scalar-conversion.hpp
   include/eigenpy/expose.hpp
   include/eigenpy/details.hpp
   include/eigenpy/fwd.hpp
diff --git a/include/eigenpy/details.hpp b/include/eigenpy/details.hpp
index 529bc44c..fddd6604 100644
--- a/include/eigenpy/details.hpp
+++ b/include/eigenpy/details.hpp
@@ -12,6 +12,7 @@
 #include <patchlevel.h> // For PY_MAJOR_VERSION
 #include <iostream>
 
+#include "eigenpy/scalar-conversion.hpp"
 #include "eigenpy/eigenpy.hpp"
 #include "eigenpy/numpy-type.hpp"
 #include "eigenpy/registration.hpp"
@@ -55,36 +56,7 @@ namespace boost { namespace python { namespace detail {
 namespace eigenpy
 {
 
-  template <typename SCALAR1, typename SCALAR2>
-  struct FromTypeToType : public boost::false_type {};
-  
-  template <typename SCALAR>
-  struct FromTypeToType<SCALAR,SCALAR> : public boost::true_type {};
-  
-  template <> struct FromTypeToType<int,long> : public boost::true_type {};
-  template <> struct FromTypeToType<int,float> : public boost::true_type {};
-  template <> struct FromTypeToType<int,std::complex<float> > : public boost::true_type {};
-  template <> struct FromTypeToType<int,double> : public boost::true_type {};
-  template <> struct FromTypeToType<int,std::complex<double> > : public boost::true_type {};
-  template <> struct FromTypeToType<int,long double> : public boost::true_type {};
-  template <> struct FromTypeToType<int,std::complex<long double> > : public boost::true_type {};
-  
-  template <> struct FromTypeToType<long,float> : public boost::true_type {};
-  template <> struct FromTypeToType<long,std::complex<float> > : public boost::true_type {};
-  template <> struct FromTypeToType<long,double> : public boost::true_type {};
-  template <> struct FromTypeToType<long,std::complex<double> > : public boost::true_type {};
-  template <> struct FromTypeToType<long,long double> : public boost::true_type {};
-  template <> struct FromTypeToType<long,std::complex<long double> > : public boost::true_type {};
-  
-  template <> struct FromTypeToType<float,std::complex<float> > : public boost::true_type {};
-  template <> struct FromTypeToType<float,double> : public boost::true_type {};
-  template <> struct FromTypeToType<float,std::complex<double> > : public boost::true_type {};
-  template <> struct FromTypeToType<float,long double> : public boost::true_type {};
-  template <> struct FromTypeToType<float,std::complex<long double> > : public boost::true_type {};
-
-  template <> struct FromTypeToType<double,std::complex<double> > : public boost::true_type {};
-  template <> struct FromTypeToType<double,long double> : public boost::true_type {};
-  template <> struct FromTypeToType<double,std::complex<long double> > : public boost::true_type {};
+
 
   namespace bp = boost::python;
 
diff --git a/include/eigenpy/scalar-conversion.hpp b/include/eigenpy/scalar-conversion.hpp
new file mode 100644
index 00000000..b960068a
--- /dev/null
+++ b/include/eigenpy/scalar-conversion.hpp
@@ -0,0 +1,44 @@
+//
+// Copyright (c) 2014-2020 CNRS INRIA
+//
+
+#ifndef __eigenpy_scalar_conversion_hpp__
+#define __eigenpy_scalar_conversion_hpp__
+
+#include "eigenpy/config.hpp"
+
+namespace eigenpy
+{
+  template <typename SCALAR1, typename SCALAR2>
+  struct FromTypeToType : public boost::false_type {};
+  
+  template <typename SCALAR>
+  struct FromTypeToType<SCALAR,SCALAR> : public boost::true_type {};
+  
+  template <> struct FromTypeToType<int,long> : public boost::true_type {};
+  template <> struct FromTypeToType<int,float> : public boost::true_type {};
+  template <> struct FromTypeToType<int,std::complex<float> > : public boost::true_type {};
+  template <> struct FromTypeToType<int,double> : public boost::true_type {};
+  template <> struct FromTypeToType<int,std::complex<double> > : public boost::true_type {};
+  template <> struct FromTypeToType<int,long double> : public boost::true_type {};
+  template <> struct FromTypeToType<int,std::complex<long double> > : public boost::true_type {};
+  
+  template <> struct FromTypeToType<long,float> : public boost::true_type {};
+  template <> struct FromTypeToType<long,std::complex<float> > : public boost::true_type {};
+  template <> struct FromTypeToType<long,double> : public boost::true_type {};
+  template <> struct FromTypeToType<long,std::complex<double> > : public boost::true_type {};
+  template <> struct FromTypeToType<long,long double> : public boost::true_type {};
+  template <> struct FromTypeToType<long,std::complex<long double> > : public boost::true_type {};
+  
+  template <> struct FromTypeToType<float,std::complex<float> > : public boost::true_type {};
+  template <> struct FromTypeToType<float,double> : public boost::true_type {};
+  template <> struct FromTypeToType<float,std::complex<double> > : public boost::true_type {};
+  template <> struct FromTypeToType<float,long double> : public boost::true_type {};
+  template <> struct FromTypeToType<float,std::complex<long double> > : public boost::true_type {};
+
+  template <> struct FromTypeToType<double,std::complex<double> > : public boost::true_type {};
+  template <> struct FromTypeToType<double,long double> : public boost::true_type {};
+  template <> struct FromTypeToType<double,std::complex<long double> > : public boost::true_type {};
+}
+
+#endif // __eigenpy_scalar_conversion_hpp__
-- 
GitLab