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 |
|
|
|
21 |
|
|
/// \brief Append the element T at the front of boost fusion vector V. |
22 |
|
|
template<typename T,typename V> |
23 |
|
|
typename result_of::push_front<V const, T>::type |
24 |
|
119042 |
append(T const& t,V const& v) |
25 |
|
|
{ |
26 |
|
119042 |
return push_front(v,t); |
27 |
|
|
} |
28 |
|
|
|
29 |
|
|
/// \brief Append the elements T1 and T2 at the front of boost fusion vector V. |
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 |
|
479952 |
append(T1 const& t1,T2 const& t2,V const& v) |
33 |
|
|
{ |
34 |
✓✗ |
479952 |
return push_front(push_front(v,t2),t1); |
35 |
|
|
} |
36 |
|
|
|
37 |
|
|
/// \brief Append the elements T1 and T2 at the front of boost fusion vector V. |
38 |
|
|
/// \note This function is now deprecated. Please use the new name append. |
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 |
|
|
|
47 |
|
|
/// \brief Append the elements T1, T2 and T3 at the front of boost fusion vector V. |
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 |
|
|
|
57 |
|
|
/// \brief Append the elements T1, T2, T3 and T4 at the front of boost fusion vector V. |
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 |
|
21 |
append(T1 const& t1, T2 const& t2, T3 const& t3, T4 const& t4, V const& v) |
64 |
|
|
{ |
65 |
|
21 |
return push_front(push_front(push_front(push_front(v,t4),t3),t2),t1); |
66 |
|
|
} |
67 |
|
|
|
68 |
|
|
/// \brief Append the elements T1, T2, T3, T4 and T5 at the front of boost fusion vector V. |
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__ |