GCC Code Coverage Report
Directory: ./ Exec Total Coverage
File: include/pinocchio/multibody/visitor/fusion.hpp Lines: 6 6 100.0 %
Date: 2024-01-23 21:41:47 Branches: 1 2 50.0 %

Line Branch Exec Source
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__