iter_fold_if.hpp
Go to the documentation of this file.
1 
2 #ifndef BOOST_MPL_ITER_FOLD_IF_HPP_INCLUDED
3 #define BOOST_MPL_ITER_FOLD_IF_HPP_INCLUDED
4 
5 // Copyright Aleksey Gurtovoy 2003-2004
6 // Copyright Eric Friedman 2003
7 //
8 // Distributed under the Boost Software License, Version 1.0.
9 // (See accompanying file LICENSE_1_0.txt or copy at
10 // http://www.boost.org/LICENSE_1_0.txt)
11 //
12 // See http://www.boost.org/libs/mpl for documentation.
13 
14 // $Id: iter_fold_if.hpp 13472 2017-08-22 07:53:44Z richean $
15 // $Date: 2017-08-22 09:53:44 +0200 (Di, 22 Aug 2017) $
16 // $Revision: 13472 $
17 
18 #include <boost/mpl/begin_end.hpp>
19 #include <boost/mpl/logical.hpp>
20 #include <boost/mpl/always.hpp>
21 #include <boost/mpl/eval_if.hpp>
22 #include <boost/mpl/if.hpp>
23 #include <boost/mpl/pair.hpp>
24 #include <boost/mpl/apply.hpp>
30 
32 
33 namespace boost { namespace mpl {
34 
35 namespace aux {
36 
37 template< typename Predicate, typename LastIterator >
39 {
40  template< typename State, typename Iterator > struct apply
41 #if !defined(BOOST_MPL_CFG_NO_NESTED_FORWARDING)
42  : and_<
43  not_< is_same<Iterator,LastIterator> >
44  , apply1<Predicate,Iterator>
45  >
46  {
47 #else
48  {
49  typedef and_<
52  > type;
53 #endif
54  };
55 };
56 
57 } // namespace aux
58 
59 template<
60  typename BOOST_MPL_AUX_NA_PARAM(Sequence)
61  , typename BOOST_MPL_AUX_NA_PARAM(State)
62  , typename BOOST_MPL_AUX_NA_PARAM(ForwardOp)
63  , typename BOOST_MPL_AUX_NA_PARAM(ForwardPredicate)
64  , typename BOOST_MPL_AUX_NA_PARAM(BackwardOp)
65  , typename BOOST_MPL_AUX_NA_PARAM(BackwardPredicate)
66  >
68 {
69 
70  typedef typename begin<Sequence>::type first_;
71  typedef typename end<Sequence>::type last_;
72 
73  typedef typename eval_if<
78 
79 // cwpro8 doesn't like 'cut-off' type here (use typedef instead)
80 #if !BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3003)) && !BOOST_WORKAROUND(__IBMCPP__, BOOST_TESTED_AT(600))
81  struct result_ :
82 #else
83  typedef
84 #endif
86  first_
87  , State
88  , ForwardOp
89  , protect< aux::iter_fold_if_pred< ForwardPredicate,last_ > >
90  , BackwardOp
91  , backward_pred_
92  >
93 #if !BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3003)) && !BOOST_WORKAROUND(__IBMCPP__, BOOST_TESTED_AT(600))
94  { };
95 #else
96  result_;
97 #endif
98 
99 public:
100 
101  typedef pair<
102  typename result_::state
103  , typename result_::iterator
104  > type;
105 
107  6
108  , iter_fold_if
109  , (Sequence,State,ForwardOp,ForwardPredicate,BackwardOp,BackwardPredicate)
110  )
111 };
112 
114 
115 }}
116 
117 #endif // BOOST_MPL_ITER_FOLD_IF_HPP_INCLUDED
always.hpp
boost::mpl::aux::iter_fold_if_pred::apply
Definition: iter_fold_if.hpp:40
boost::mpl::is_na
Definition: na.hpp:25
boost::mpl::aux::iter_fold_if_impl< first_, State, ForwardOp, protect< aux::iter_fold_if_pred< ForwardPredicate, last_ > >, BackwardOp, backward_pred_ >::iterator
backward_step4::iterator iterator
Definition: preprocessed/bcc/iter_fold_if_impl.hpp:130
boost::mpl::iter_fold_if::first_
begin< Sequence >::type first_
Definition: iter_fold_if.hpp:70
BOOST_MPL_AUX_NA_PARAM
#define BOOST_MPL_AUX_NA_PARAM(param)
Definition: na_spec.hpp:152
boost::mpl::iter_fold_if::backward_pred_
eval_if< is_na< BackwardPredicate >, if_< is_na< BackwardOp >, always< false_ >, always< true_ > >, identity< BackwardPredicate > >::type backward_pred_
Definition: iter_fold_if.hpp:77
boost::mpl::begin::type
begin_impl< tag_ >::template apply< Sequence >::type type
Definition: begin_end.hpp:35
na_spec.hpp
BOOST_MPL_AUX_NA_SPEC
#define BOOST_MPL_AUX_NA_SPEC(i, name)
Definition: na_spec.hpp:161
boost::mpl::iter_fold_if::result_
Definition: iter_fold_if.hpp:81
boost
BOOST_MOVE_USE_STANDARD_LIBRARY_MOVE.
boost::mpl::end::type
end_impl< tag_ >::template apply< Sequence >::type type
Definition: begin_end.hpp:47
boost::mpl::aux::iter_fold_if_impl< first_, State, ForwardOp, protect< aux::iter_fold_if_pred< ForwardPredicate, last_ > >, BackwardOp, backward_pred_ >::state
backward_step0::state state
Definition: preprocessed/bcc/iter_fold_if_impl.hpp:129
BOOST_MPL_AUX_LAMBDA_SUPPORT
#define BOOST_MPL_AUX_LAMBDA_SUPPORT(i, name, params)
Definition: lambda_support.hpp:22
workaround.hpp
logical.hpp
boost::mpl::iter_fold_if::type
pair< typename result_::state, typename result_::iterator > type
Definition: iter_fold_if.hpp:104
boost::mpl::identity
Definition: mpl/identity.hpp:25
boost::mpl::aux::iter_fold_if_impl
Definition: preprocessed/bcc/iter_fold_if_impl.hpp:96
boost::mpl::pair
Definition: pair.hpp:28
apply.hpp
boost::mpl::iter_fold_if::last_
end< Sequence >::type last_
Definition: iter_fold_if.hpp:71
is_same.hpp
forwarding.hpp
boost::mpl::always
Definition: always.hpp:23
begin_end.hpp
iter_fold_if_impl.hpp
eval_if.hpp
boost::mpl::eval_if
Definition: gcc/basic_bind.hpp:408
boost::mpl::apply1
Definition: aux_/preprocessed/bcc/apply.hpp:42
boost::mpl::if_
Definition: dmc/basic_bind.hpp:374
bool_< false >::type
bool_ type
Definition: mpl/bool.hpp:27
boost::mpl::aux::iter_fold_if_pred
Definition: iter_fold_if.hpp:38
boost::mpl::not_
Definition: not.hpp:39
pair.hpp
lambda_support.hpp
boost::mpl::and_
Definition: mpl/aux_/preprocessed/bcc/and.hpp:48
if.hpp
boost::mpl::iter_fold_if
Definition: iter_fold_if.hpp:67


sick_visionary_ros
Author(s): SICK AG TechSupport 3D Snapshot
autogenerated on Thu Feb 8 2024 03:40:21