Skip to content
Snippets Groups Projects
Commit 481f935d authored by Joseph Mirabel's avatar Joseph Mirabel Committed by Joseph Mirabel
Browse files

Fix compilation issue. Add remove_fcl to avoid getting nested FclOp

parent 6d5f712f
No related branches found
No related tags found
No related merge requests found
...@@ -29,8 +29,8 @@ struct FclProduct ...@@ -29,8 +29,8 @@ struct FclProduct
#define FCL_EIGEN_MAKE_PRODUCT_OPERATOR() \ #define FCL_EIGEN_MAKE_PRODUCT_OPERATOR() \
template <typename OtherDerived> \ template <typename OtherDerived> \
EIGEN_STRONG_INLINE const typename FclProduct<const FCL_EIGEN_CURRENT_CLASS, const OtherDerived>::ProductType \ EIGEN_STRONG_INLINE const typename FclProduct<const typename FCL_EIGEN_CURRENT_CLASS::Base, const OtherDerived>::ProductType \
operator*(const MatrixBase<OtherDerived>& other) const \ operator*(const MatrixBase<OtherDerived>& other) const \
{ \ { \
return FclProduct<const FCL_EIGEN_CURRENT_CLASS, const OtherDerived>::run (*this, other.derived()); \ return FclProduct<const typename FCL_EIGEN_CURRENT_CLASS::Base, const OtherDerived>::run (*this, other.derived()); \
} }
...@@ -16,7 +16,7 @@ template<> struct TaylorReturnType<3> { typedef TMatrix3 type; typedef Matrix3f ...@@ -16,7 +16,7 @@ template<> struct TaylorReturnType<3> { typedef TMatrix3 type; typedef Matrix3f
template<typename Derived> template<typename Derived>
typename TaylorReturnType<Derived::ColsAtCompileTime>::type operator * (const FclType<Derived>& v, const TaylorModel& a) typename TaylorReturnType<Derived::ColsAtCompileTime>::type operator * (const FclType<Derived>& v, const TaylorModel& a)
{ {
const typename TaylorReturnType<Derived::ColsAtCompileTime>::eigen_type b = v.derived(); const typename TaylorReturnType<Derived::ColsAtCompileTime>::eigen_type b = v.fcl();
return b * a; return b * a;
} }
......
...@@ -168,6 +168,9 @@ namespace Eigen { ...@@ -168,6 +168,9 @@ namespace Eigen {
OuterStrideAtCompileTime = traits_base::OuterStrideAtCompileTime OuterStrideAtCompileTime = traits_base::OuterStrideAtCompileTime
}; };
}; };
template <typename Derived> struct remove_fcl { typedef Derived type; };
template <> template <typename Derived> struct remove_fcl <FclOp<Derived> > { typedef Derived type; };
} }
template <typename Derived> template <typename Derived>
...@@ -630,7 +633,7 @@ static inline typename Derived::Scalar triple( ...@@ -630,7 +633,7 @@ static inline typename Derived::Scalar triple(
const FclType<Derived>& y, const FclType<Derived>& y,
const FclType<Derived>& z) const FclType<Derived>& z)
{ {
return x.derived().dot(y.derived().cross(z.derived())); return x.fcl().dot(y.fcl().cross(z.fcl()));
} }
...@@ -806,9 +809,9 @@ void eigen(const FclType<Matrix>& m, typename Matrix::Scalar dout[3], Vector* vo ...@@ -806,9 +809,9 @@ void eigen(const FclType<Matrix>& m, typename Matrix::Scalar dout[3], Vector* vo
} }
template<typename Derived> template<typename Derived>
Eigen::FclOp<Eigen::Transpose<const Derived> > transpose(const FclType<Derived>& R) Eigen::FclOp<Eigen::Transpose<const typename Eigen::internal::remove_fcl<Derived>::type> > transpose(const FclType<Derived>& R)
{ {
return Eigen::FclOp<Eigen::Transpose<const Derived > > (R.fcl()); return Eigen::FclOp<Eigen::Transpose<const typename Eigen::internal::remove_fcl<Derived>::type > > (R.fcl());
} }
template<typename T, int _Options> template<typename T, int _Options>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment