pinocchio  3.7.0
A fast and flexible implementation of Rigid Body Dynamics algorithms and their analytical derivatives
 
Loading...
Searching...
No Matches
fusion.hpp
1//
2// Copyright (c) 2015-2023 CNRS INRIA
3//
4
5#ifndef __pinocchio_multibody_visitor_fusion_hpp__
6#define __pinocchio_multibody_visitor_fusion_hpp__
7
8#define BOOST_FUSION_INVOKE_MAX_ARITY 12
9
10#include <boost/variant/static_visitor.hpp>
11#include <boost/fusion/include/invoke.hpp>
12#include <boost/fusion/container/generation/make_vector.hpp>
13
14namespace pinocchio
15{
16 namespace fusion
17 {
18
19 namespace bf = boost::fusion;
20 typedef boost::blank NoArg;
21
22 } // namespace fusion
23} // namespace pinocchio
24
25namespace boost
26{
27 namespace fusion
28 {
29
31 template<typename T, typename V>
32 typename result_of::push_front<V const, T>::type append(T const & t, V const & v)
33 {
34 return push_front(v, t);
35 }
36
38 template<typename T1, typename T2, typename V>
39 typename result_of::push_front<typename result_of::push_front<V const, T2>::type const, T1>::
40 type
41 append(T1 const & t1, T2 const & t2, V const & v)
42 {
43 return push_front(push_front(v, t2), t1);
44 }
45
47 template<typename T1, typename T2, typename T3, typename V>
48 typename result_of::push_front<
49 typename result_of::push_front<typename result_of::push_front<V const, T3>::type const, T2>::
50 type const,
51 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::
62 push_front<typename result_of::push_front<V const, T4>::type const, T3>::type const,
63 T2>::type const,
64 T1>::type
65 append(T1 const & t1, T2 const & t2, T3 const & t3, T4 const & t4, V const & v)
66 {
67 return push_front(push_front(push_front(push_front(v, t4), t3), t2), t1);
68 }
69
71 template<typename T1, typename T2, typename T3, typename T4, typename T5, typename V>
72 typename result_of::push_front<
73 typename result_of::push_front<
74 typename result_of::push_front<
75 typename result_of::
76 push_front<typename result_of::push_front<V const, T5>::type const, T4>::type const,
77 T3>::type const,
78 T2>::type const,
79 T1>::type
80 append(T1 const & t1, T2 const & t2, T3 const & t3, T4 const & t4, T5 const & t5, V const & v)
81 {
82 return push_front(push_front(push_front(push_front(push_front(v, t5), t4), t3), t2), t1);
83 }
84
85 } // namespace fusion
86} // namespace boost
87
88#endif // ifndef __pinocchio_multibody_visitor_fusion_hpp__
Main pinocchio namespace.
Definition treeview.dox:11