diff --git a/src/multibody/joint/joint-base.hpp b/src/multibody/joint/joint-base.hpp index d8aeafda059e5317807ae73d029ecad66913d652..f1aaab9dd3fd2a35217f4a779aac9478289a60ff 100644 --- a/src/multibody/joint/joint-base.hpp +++ b/src/multibody/joint/joint-base.hpp @@ -45,6 +45,7 @@ namespace se3 * internal::ActionReturn<Constraint>::Type * Constraint::se3Action */ +#ifdef __clang__ #define SE3_JOINT_TYPEDEF_ARG(prefix) \ typedef int Index; \ @@ -63,6 +64,27 @@ namespace se3 #define SE3_JOINT_TYPEDEF SE3_JOINT_TYPEDEF_ARG() #define SE3_JOINT_TYPEDEF_TEMPLATE SE3_JOINT_TYPEDEF_ARG(typename) +#else + +#define SE3_JOINT_TYPEDEF_ARG() \ + typedef int Index; \ + typedef typename traits<Joint>::JointData JointData; \ + typedef typename traits<Joint>::JointModel JointModel; \ + typedef typename traits<Joint>::Constraint_t Constraint_t; \ + typedef typename traits<Joint>::Transformation_t Transformation_t; \ + typedef typename traits<Joint>::Motion_t Motion_t; \ + typedef typename traits<Joint>::Bias_t Bias_t; \ + typedef typename traits<Joint>::F_t F_t; \ + enum { \ + NQ = traits<Joint>::NQ, \ + NV = traits<Joint>::NV \ + } + +#define SE3_JOINT_TYPEDEF SE3_JOINT_TYPEDEF_ARG() +#define SE3_JOINT_TYPEDEF_TEMPLATE SE3_JOINT_TYPEDEF_ARG() + +#endif + #define SE3_JOINT_USE_INDEXES \ typedef JointModelBase<JointModel> Base; \ using Base::idx_q; \