166 PINOCCHIO_JOINT_DATA_TYPEDEF_TEMPLATE(JointDerived);
170 return *
static_cast<Derived *
>(
this);
172 const Derived & derived()
const
174 return *
static_cast<const Derived *
>(
this);
177 ConfigVectorTypeConstRef joint_q()
const
179 return derived().joint_q_accessor();
181 ConfigVectorTypeRef joint_q()
183 return derived().joint_q_accessor();
186 TangentVectorTypeConstRef joint_v()
const
188 return derived().joint_v_accessor();
190 TangentVectorTypeRef joint_v()
192 return derived().joint_v_accessor();
195 ConstraintTypeConstRef S()
const
197 return derived().S_accessor();
199 ConstraintTypeRef S()
201 return derived().S_accessor();
203 TansformTypeConstRef M()
const
205 return derived().M_accessor();
209 return derived().M_accessor();
211 MotionTypeConstRef v()
const
213 return derived().v_accessor();
217 return derived().v_accessor();
219 BiasTypeConstRef c()
const
221 return derived().c_accessor();
225 return derived().c_accessor();
228 UTypeConstRef U()
const
230 return derived().U_accessor();
234 return derived().U_accessor();
236 DTypeConstRef Dinv()
const
238 return derived().Dinv_accessor();
242 return derived().Dinv_accessor();
244 UDTypeConstRef UDinv()
const
246 return derived().UDinv_accessor();
250 return derived().UDinv_accessor();
252 DTypeConstRef StU()
const
254 return derived().StU_accessor();
258 return derived().StU_accessor();
261 std::string shortname()
const
263 return derived().shortname();
265 static std::string classname()
267 return Derived::classname();
270 void disp(std::ostream &
os)
const
273 os << shortname() << endl;
278 jdata.derived().disp(
os);
282 template<
typename OtherDerived>
285 return derived().isEqual(
other.derived());
291 return internal::comparison_eq(joint_q(),
other.joint_q())
292 && internal::comparison_eq(joint_v(),
other.joint_v())
293 && internal::comparison_eq(S(),
other.S()) && internal::comparison_eq(M(),
other.M())
294 && internal::comparison_eq(v(),
other.v()) && internal::comparison_eq(c(),
other.c())
295 && internal::comparison_eq(U(),
other.U())
296 && internal::comparison_eq(Dinv(),
other.Dinv())
297 && internal::comparison_eq(UDinv(),
other.UDinv());
301 template<
typename OtherDerived>
310 return derived().isNotEqual(
other.derived());
316 return !(internal::comparison_eq(derived(),
other.derived()));