5 #ifndef __pinocchio_multibody_visitior_joint_binary_visitor_hpp__ 6 #define __pinocchio_multibody_visitior_joint_binary_visitor_hpp__ 8 #include <boost/variant.hpp> 10 #include "pinocchio/multibody/joint/joint-base.hpp" 11 #include "pinocchio/multibody/visitor/fusion.hpp" 26 template<
typename Jo
intVisitorDerived,
typename ReturnType =
void>
30 template<
typename Jo
intModelDerived1,
typename Jo
intModelDerived2,
typename ArgsTmp>
37 InternalVisitorModelAndData<JointModelDerived1,JointModelDerived2,ArgsTmp> visitor(jdata1,jdata2,args);
41 template<
typename Scalar,
int Options,
template<
typename,
int>
class JointCollectionTpl,
typename ArgsTmp>
49 InternalVisitorModelAndData<JointModel,JointModel,ArgsTmp> visitor(jdata1,jdata2,args);
50 return boost::apply_visitor(visitor,jmodel1,jmodel2);
53 template<
typename Jo
intModelDerived1,
typename Jo
intModelDerived2>
59 InternalVisitorModelAndData<JointModelDerived1,JointModelDerived2,NoArg> visitor(jdata1,jdata2);
63 template<
typename Scalar,
int Options,
template<
typename,
int>
class JointCollectionTpl>
70 InternalVisitorModelAndData<JointModel,JointModel,NoArg> visitor(jdata1,jdata2);
71 return boost::apply_visitor(visitor,jmodel1,jmodel2);
74 template<
typename Jo
intModelDerived1,
typename Jo
intModelDerived2,
typename ArgsTmp>
79 InternalVisitorModel<ArgsTmp> visitor(args);
83 template<
typename Scalar,
int Options,
template<
typename,
int>
class JointCollectionTpl,
typename ArgsTmp>
88 InternalVisitorModel<ArgsTmp> visitor(args);
89 return boost::apply_visitor(visitor,jmodel1,jmodel2);
92 template<
typename Jo
intModelDerived1,
typename Jo
intModelDerived2>
96 InternalVisitorModel<NoArg> visitor;
100 template<
typename Scalar,
int Options,
template<
typename,
int>
class JointCollectionTpl>
104 InternalVisitorModel<NoArg> visitor;
105 return boost::apply_visitor(visitor,jmodel1,jmodel2);
110 template<
typename Jo
intModel1,
typename Jo
intModel2,
typename ArgType>
112 :
public boost::static_visitor<ReturnType>
125 template<
typename Jo
intModelDerived1,
typename Jo
intModelDerived2>
129 return bf::invoke(&JointVisitorDerived::template algo<JointModelDerived1,JointModelDerived2>,
143 template<
typename Jo
intModel1,
typename Jo
intModel2>
145 :
public boost::static_visitor<ReturnType>
155 template<
typename Jo
intModelDerived1,
typename Jo
intModelDerived2>
159 return bf::invoke(&JointVisitorDerived::template algo<JointModelDerived1,JointModelDerived2>,
160 bf::make_vector(boost::ref(jmodel1.
derived()),
170 template<
typename ArgType,
typename Dummy =
void>
172 :
public boost::static_visitor<ReturnType>
178 template<
typename Jo
intModel1,
typename Jo
intModel2>
182 return bf::invoke(&JointVisitorDerived::template algo<JointModel1,JointModel2>,
191 template<
typename Dummy>
193 :
public boost::static_visitor<ReturnType>
197 template<
typename Jo
intModel1,
typename Jo
intModel2>
201 return JointVisitorDerived::
202 template algo<JointModel1,JointModel2>(jmodel1.
derived(),
212 #endif // ifndef __pinocchio_multibody_visitior_joint_binary_visitor_hpp__ result_of::push_front< V const, T >::type append(T const &t, V const &v)
Append the element T at the front of boost fusion vector V.
static ReturnType run(const JointModelBase< JointModelDerived1 > &jmodel1, const JointModelBase< JointModelDerived2 > &jmodel2, ArgsTmp args)
JointModel1::JointDataDerived JointData1
InternalVisitorModelAndData(JointData1 &jdata1, JointData2 &jdata2)
Base structure for Binary visitation of two JointModels. This structure provides runners to call the ...
JointModel1::JointDataDerived JointData1
JointModel2::JointDataDerived JointData2
static ReturnType run(const JointModelTpl< Scalar, Options, JointCollectionTpl > &jmodel1, const JointModelTpl< Scalar, Options, JointCollectionTpl > &jmodel2, JointDataTpl< Scalar, Options, JointCollectionTpl > &jdata1, JointDataTpl< Scalar, Options, JointCollectionTpl > &jdata2)
static ReturnType run(const JointModelBase< JointModelDerived1 > &jmodel1, const JointModelBase< JointModelDerived2 > &jmodel2, typename JointModelBase< JointModelDerived1 >::JointDataDerived &jdata1, typename JointModelBase< JointModelDerived2 >::JointDataDerived &jdata2)
ReturnType operator()(const JointModelBase< JointModel1 > &jmodel1, const JointModelBase< JointModel2 > &jmodel2) const
static ReturnType run(const JointModelTpl< Scalar, Options, JointCollectionTpl > &jmodel1, const JointModelTpl< Scalar, Options, JointCollectionTpl > &jmodel2, JointDataTpl< Scalar, Options, JointCollectionTpl > &jdata1, JointDataTpl< Scalar, Options, JointCollectionTpl > &jdata2, ArgsTmp args)
static ReturnType run(const JointModelBase< JointModelDerived1 > &jmodel1, const JointModelBase< JointModelDerived2 > &jmodel2)
static ReturnType run(const JointModelBase< JointModelDerived1 > &jmodel1, const JointModelBase< JointModelDerived2 > &jmodel2, typename JointModelBase< JointModelDerived1 >::JointDataDerived &jdata1, typename JointModelBase< JointModelDerived2 >::JointDataDerived &jdata2, ArgsTmp args)
static ReturnType run(const JointModelTpl< Scalar, Options, JointCollectionTpl > &jmodel1, const JointModelTpl< Scalar, Options, JointCollectionTpl > &jmodel2)
JointModelDerived & derived()
InternalVisitorModelAndData(JointData1 &jdata1, JointData2 &jdata2, ArgType args)
ReturnType operator()(const JointModelBase< JointModelDerived1 > &jmodel1, const JointModelBase< JointModelDerived2 > &jmodel2) const
Main pinocchio namespace.
ReturnType operator()(const JointModelBase< JointModelDerived1 > &jmodel1, const JointModelBase< JointModelDerived2 > &jmodel2) const
JointModelTpl< double > JointModel
JointModel2::JointDataDerived JointData2
ReturnType operator()(const JointModelBase< JointModel1 > &jmodel1, const JointModelBase< JointModel2 > &jmodel2) const
InternalVisitorModel(ArgType args)
static ReturnType run(const JointModelTpl< Scalar, Options, JointCollectionTpl > &jmodel1, const JointModelTpl< Scalar, Options, JointCollectionTpl > &jmodel2, ArgsTmp args)