pinocchio  2.4.4
A fast and flexible implementation of Rigid Body Dynamics algorithms and their analytical derivatives
fusion.hpp
1 //
2 // Copyright (c) 2015-2019 CNRS INRIA
3 //
4 
5 #ifndef __pinocchio_multibody_visitior_fusion_hpp__
6 #define __pinocchio_multibody_visitior_fusion_hpp__
7 
8 #define BOOST_FUSION_INVOKE_MAX_ARITY 10
9 
10 #include "pinocchio/deprecated.hpp"
11 
12 #include <boost/variant/static_visitor.hpp>
13 #include <boost/fusion/include/invoke.hpp>
14 #include <boost/fusion/container/generation/make_vector.hpp>
15 
16 namespace boost
17 {
18  namespace fusion
19  {
20 
22  template<typename T,typename V>
23  typename result_of::push_front<V const, T>::type
24  append(T const& t,V const& v)
25  {
26  return push_front(v,t);
27  }
28 
30  template<typename T1,typename T2,typename V>
31  typename result_of::push_front<typename result_of::push_front<V const, T2>::type const, T1>::type
32  append(T1 const& t1,T2 const& t2,V const& v)
33  {
34  return push_front(push_front(v,t2),t1);
35  }
36 
39  template<typename T1,typename T2,typename V>
40  PINOCCHIO_DEPRECATED
41  typename result_of::push_front<typename result_of::push_front<V const, T2>::type const, T1>::type
42  append2(T1 const& t1,T2 const& t2,V const& v)
43  {
44  return append2(t1,t2,v);
45  }
46 
48  template<typename T1,typename T2, typename T3, typename V>
49  typename result_of::push_front<
50  typename result_of::push_front<
51  typename result_of::push_front<V const,T3>::type const,T2>::type const,T1>::type
52  append(T1 const& t1, T2 const& t2, T3 const& t3, V const& v)
53  {
54  return push_front(push_front(push_front(v,t3),t2),t1);
55  }
56 
58  template<typename T1,typename T2, typename T3, typename T4, typename V>
59  typename result_of::push_front<
60  typename result_of::push_front<
61  typename result_of::push_front<
62  typename result_of::push_front<V const,T4>::type const,T3>::type const,T2>::type const,T1>::type
63  append(T1 const& t1, T2 const& t2, T3 const& t3, T4 const& t4, V const& v)
64  {
65  return push_front(push_front(push_front(push_front(v,t4),t3),t2),t1);
66  }
67 
69  template<typename T1,typename T2, typename T3, typename T4, typename T5, typename V>
70  typename result_of::push_front<
71  typename result_of::push_front<
72  typename result_of::push_front<
73  typename result_of::push_front<
74  typename result_of::push_front<V const,T5>::type const,T4>::type const,T3>::type const,T2>::type const,T1>::type
75  append(T1 const& t1, T2 const& t2, T3 const& t3, T4 const& t4, T5 const& t5, V const& v)
76  {
77  return push_front(push_front(push_front(push_front(push_front(v,t5),t4),t3),t2),t1);
78  }
79 
80  }
81 }
82 
83 #endif // ifndef __pinocchio_multibody_visitior_fusion_hpp__
Definition: casadi.hpp:13