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