From 412720a57e44116a337f5189e1430b362d448d1d Mon Sep 17 00:00:00 2001 From: Justin Carpentier <jcarpent@laas.fr> Date: Thu, 11 Jan 2018 13:57:11 +0100 Subject: [PATCH] Fix compatibility with Eigen 3.0.5 --- src/details.hpp | 2 ++ src/eigenpy.hpp | 8 ++++++++ src/solvers/preconditioners.cpp | 10 +++++++++- src/solvers/solvers.cpp | 9 ++++++++- unittest/CMakeLists.txt | 4 +++- 5 files changed, 30 insertions(+), 3 deletions(-) diff --git a/src/details.hpp b/src/details.hpp index 6fe8295d..f99467fc 100644 --- a/src/details.hpp +++ b/src/details.hpp @@ -85,6 +85,7 @@ namespace eigenpy } }; +#if EIGEN_VERSION_AT_LEAST(3,2,0) template<typename MatType> struct EigenObjectAllocator< eigenpy::Ref<MatType> > { @@ -101,6 +102,7 @@ namespace eigenpy MapNumpy<MatType>::map(pyArray) = mat; } }; +#endif /* --- TO PYTHON -------------------------------------------------------------- */ template<typename MatType> diff --git a/src/eigenpy.hpp b/src/eigenpy.hpp index 9fcecc7c..8ecf798f 100644 --- a/src/eigenpy.hpp +++ b/src/eigenpy.hpp @@ -19,12 +19,20 @@ #include "eigenpy/fwd.hpp" #include "eigenpy/deprecated.hh" +#if EIGEN_VERSION_AT_LEAST(3,2,0) #include "eigenpy/ref.hpp" #define ENABLE_SPECIFIC_MATRIX_TYPE(TYPE) \ enableEigenPySpecific<TYPE>(); \ enableEigenPySpecific< eigenpy::Ref<TYPE> >(); +#else + +#define ENABLE_SPECIFIC_MATRIX_TYPE(TYPE) \ + enableEigenPySpecific<TYPE>(); + +#endif + namespace eigenpy { /* Enable Eigen-Numpy serialization for a set of standard MatrixBase instance. */ diff --git a/src/solvers/preconditioners.cpp b/src/solvers/preconditioners.cpp index fb2f2e35..1854170f 100644 --- a/src/solvers/preconditioners.cpp +++ b/src/solvers/preconditioners.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2017, Justin Carpentier, LAAS-CNRS + * Copyright 2017-2018, Justin Carpentier, LAAS-CNRS * * This file is part of eigenpy. * eigenpy is free software: you can redistribute it and/or @@ -14,12 +14,16 @@ * with eigenpy. If not, see <http://www.gnu.org/licenses/>. */ +#include <Eigen/Core> + +#if EIGEN_VERSION_AT_LEAST(3,2,0) #include "eigenpy/solvers/preconditioners.hpp" #include "eigenpy/solvers/BasicPreconditioners.hpp" //#include "eigenpy/solvers/BFGSPreconditioners.hpp" namespace eigenpy { + void exposePreconditioners() { using namespace Eigen; @@ -32,4 +36,8 @@ namespace eigenpy // LimitedBFGSPreconditionerBaseVisitor< LimitedBFGSPreconditioner<double,Eigen::Dynamic,Eigen::Upper|Eigen::Lower> >::expose("LimitedBFGSPreconditioner"); } + } // namespace eigenpy + +#endif + diff --git a/src/solvers/solvers.cpp b/src/solvers/solvers.cpp index d0d7103f..8a30217d 100644 --- a/src/solvers/solvers.cpp +++ b/src/solvers/solvers.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2017, Justin Carpentier, LAAS-CNRS + * Copyright 2017-2018, Justin Carpentier, LAAS-CNRS * * This file is part of eigenpy. * eigenpy is free software: you can redistribute it and/or @@ -14,6 +14,10 @@ * with eigenpy. If not, see <http://www.gnu.org/licenses/>. */ +#include <Eigen/Core> + +#if EIGEN_VERSION_AT_LEAST(3,2,0) + #include "eigenpy/solvers/solvers.hpp" #include "eigenpy/solvers/ConjugateGradient.hpp" @@ -43,3 +47,6 @@ namespace eigenpy ; } } // namespace eigenpy + +#endif + diff --git a/unittest/CMakeLists.txt b/unittest/CMakeLists.txt index 8b0a15c8..76a817fd 100644 --- a/unittest/CMakeLists.txt +++ b/unittest/CMakeLists.txt @@ -40,5 +40,7 @@ ADD_CUSTOM_TARGET(check COMMAND ${CMAKE_CTEST_COMMAND}) ADD_LIB_UNIT_TEST(matrix "eigen3") ADD_LIB_UNIT_TEST(geometry "eigen3") -ADD_LIB_UNIT_TEST(ref "eigen3") +IF(NOT ${EIGEN3_VERSION} VERSION_LESS "3.2.0") + ADD_LIB_UNIT_TEST(ref "eigen3") +ENDIF() -- GitLab