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
......@@ -29,8 +29,8 @@ struct FclProduct
#define FCL_EIGEN_MAKE_PRODUCT_OPERATOR() \
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 \
{ \
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
template<typename Derived>
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;
}
......
......@@ -168,6 +168,9 @@ namespace Eigen {
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>
......@@ -630,7 +633,7 @@ static inline typename Derived::Scalar triple(
const FclType<Derived>& y,
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
}
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>
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment