2
// Copyright Aleksey Gurtovoy 2001-2004
3
// Copyright David Abrahams 2001-2002
5
// Distributed under the Boost Software License, Version 1.0.
6
// (See accompanying file LICENSE_1_0.txt or copy at
7
// http://www.boost.org/LICENSE_1_0.txt)
10
// Preprocessed version of "boost/mpl/aux_/iter_fold_if_impl.hpp" header
11
// -- DO NOT modify by hand!
13
namespace boost { namespace mpl { namespace aux {
15
template< typename Iterator, typename State >
16
struct iter_fold_if_null_step
19
typedef Iterator iterator;
23
struct iter_fold_if_step_impl
33
typedef typename apply2< StateOp,State,Iterator >::type state;
34
typedef typename IteratorOp::type iterator;
39
struct iter_fold_if_step_impl<false>
50
typedef Iterator iterator;
60
struct iter_fold_if_forward_step
62
typedef typename apply2< Predicate,State,Iterator >::type not_last;
63
typedef typename iter_fold_if_step_impl<
64
BOOST_MPL_AUX_MSVC_VALUE_WKND(not_last)::value
65
>::template result_< Iterator,State,ForwardOp, mpl::next<Iterator> > impl_;
67
typedef typename impl_::state state;
68
typedef typename impl_::iterator iterator;
77
struct iter_fold_if_backward_step
79
typedef typename apply2< Predicate,State,Iterator >::type not_last;
80
typedef typename iter_fold_if_step_impl<
81
BOOST_MPL_AUX_MSVC_VALUE_WKND(not_last)::value
82
>::template result_< Iterator,State,BackwardOp, identity<Iterator> > impl_;
84
typedef typename impl_::state state;
85
typedef typename impl_::iterator iterator;
92
, typename ForwardPredicate
94
, typename BackwardPredicate
96
struct iter_fold_if_impl
99
typedef iter_fold_if_null_step< Iterator,State > forward_step0;
100
typedef iter_fold_if_forward_step< typename forward_step0::iterator, typename forward_step0::state, ForwardOp, ForwardPredicate > forward_step1;
101
typedef iter_fold_if_forward_step< typename forward_step1::iterator, typename forward_step1::state, ForwardOp, ForwardPredicate > forward_step2;
102
typedef iter_fold_if_forward_step< typename forward_step2::iterator, typename forward_step2::state, ForwardOp, ForwardPredicate > forward_step3;
103
typedef iter_fold_if_forward_step< typename forward_step3::iterator, typename forward_step3::state, ForwardOp, ForwardPredicate > forward_step4;
106
typedef typename if_<
107
typename forward_step4::not_last
109
typename forward_step4::iterator
110
, typename forward_step4::state
116
, iter_fold_if_null_step<
117
typename forward_step4::iterator
118
, typename forward_step4::state
120
>::type backward_step4;
122
typedef iter_fold_if_backward_step< typename forward_step3::iterator, typename backward_step4::state, BackwardOp, BackwardPredicate > backward_step3;
123
typedef iter_fold_if_backward_step< typename forward_step2::iterator, typename backward_step3::state, BackwardOp, BackwardPredicate > backward_step2;
124
typedef iter_fold_if_backward_step< typename forward_step1::iterator, typename backward_step2::state, BackwardOp, BackwardPredicate > backward_step1;
125
typedef iter_fold_if_backward_step< typename forward_step0::iterator, typename backward_step1::state, BackwardOp, BackwardPredicate > backward_step0;
129
typedef typename backward_step0::state state;
130
typedef typename backward_step4::iterator iterator;