5 #ifndef __pinocchio_multibody_visitor_joint_unary_visitor_hpp__
6 #define __pinocchio_multibody_visitor_joint_unary_visitor_hpp__
8 #include <boost/variant/apply_visitor.hpp>
9 #include <boost/variant/get.hpp>
24 template<
typename Jo
intVisitorDerived,
typename ReturnType =
void>
31 template<
typename,
int>
32 class JointCollectionTpl,
34 static ReturnType
run(
39 InternalVisitorModelAndData<JointModelTpl<Scalar, Options, JointCollectionTpl>, ArgsTmp>
41 return boost::apply_visitor(visitor, jmodel);
44 template<
typename Scalar,
int Options,
template<
typename,
int>
class JointCollectionTpl>
45 static ReturnType
run(
49 InternalVisitorModelAndData<JointModelTpl<Scalar, Options, JointCollectionTpl>,
NoArg>
51 return boost::apply_visitor(visitor, jmodel);
54 template<
typename Jo
intModelDerived,
typename ArgsTmp>
55 static ReturnType
run(
60 InternalVisitorModelAndData<JointModelDerived, ArgsTmp> visitor(jdata,
args);
61 return visitor(jmodel.
derived());
64 template<
typename Jo
intModelDerived>
65 static ReturnType
run(
69 InternalVisitorModelAndData<JointModelDerived, NoArg> visitor(jdata);
70 return visitor(jmodel.
derived());
76 template<
typename,
int>
77 class JointCollectionTpl,
82 InternalVisitorModel<ArgsTmp> visitor(
args);
83 return boost::apply_visitor(visitor, jmodel);
89 template<
typename,
int>
90 class JointCollectionTpl,
95 InternalVisitorModel<ArgsTmp> visitor(
args);
96 return boost::apply_visitor(visitor, jdata);
99 template<
typename Scalar,
int Options,
template<
typename,
int>
class JointCollectionTpl>
102 InternalVisitorModel<NoArg> visitor;
103 return boost::apply_visitor(visitor, jmodel);
106 template<
typename Scalar,
int Options,
template<
typename,
int>
class JointCollectionTpl>
109 InternalVisitorModel<NoArg> visitor;
110 return boost::apply_visitor(visitor, jdata);
113 template<
typename Jo
intModelDerived,
typename ArgsTmp>
116 InternalVisitorModel<ArgsTmp> visitor(
args);
117 return visitor(jmodel.
derived());
120 template<
typename Jo
intDataDerived,
typename ArgsTmp>
123 InternalVisitorModel<ArgsTmp> visitor(
args);
124 return visitor(jdata.
derived());
127 template<
typename Jo
intModelDerived>
130 InternalVisitorModel<NoArg> visitor;
131 return visitor(jmodel.
derived());
134 template<
typename Jo
intDataDerived>
137 InternalVisitorModel<NoArg> visitor;
138 return visitor(jdata.
derived());
142 template<
typename Jo
intModel,
typename ArgType>
145 typedef typename JointModel::JointDataDerived
JointData;
153 template<
typename Jo
intModelDerived>
157 &JointVisitorDerived::template algo<JointModelDerived>,
174 template<
typename Jo
intModel>
176 :
public boost::static_visitor<ReturnType>
178 typedef typename JointModel::JointDataDerived
JointData;
185 template<
typename Jo
intModelDerived>
189 &JointVisitorDerived::template algo<JointModelDerived>,
199 template<
typename ArgType,
typename Dummy =
void>
207 template<
typename Jo
intModelDerived>
211 &JointVisitorDerived::template algo<JointModelDerived>,
215 template<
typename Jo
intDataDerived>
219 &JointVisitorDerived::template algo<JointDataDerived>,
231 template<
typename Dummy>
238 template<
typename Jo
intModelDerived>
241 return JointVisitorDerived::template algo<JointModelDerived>(jmodel.
derived());
244 template<
typename Jo
intDataDerived>
247 return JointVisitorDerived::template algo<JointDataDerived>(jdata.
derived());
255 #endif // ifndef __pinocchio_multibody_visitor_joint_unary_visitor_hpp__