~ubuntu-branches/ubuntu/warty/aqsis/warty

« back to all changes in this revision

Viewing changes to boost/boost/mpl/aux_/preprocessed/bcc551/iter_fold_if_impl.hpp

  • Committer: Bazaar Package Importer
  • Author(s): LaMont Jones
  • Date: 2004-08-24 07:25:04 UTC
  • Revision ID: james.westby@ubuntu.com-20040824072504-zf993vnevvisdsvb
Tags: upstream-0.9.1
ImportĀ upstreamĀ versionĀ 0.9.1

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
// preprocessed version of 'boost/mpl/aux_/iter_fold_if_impl.hpp' header
 
2
// see the original for copyright information
 
3
 
 
4
namespace boost {
 
5
namespace mpl {
 
6
namespace aux {
 
7
 
 
8
template< typename Iterator, typename State >
 
9
struct iter_fold_if_null_step
 
10
{
 
11
    typedef State state;
 
12
    typedef Iterator iterator;
 
13
};
 
14
 
 
15
template< bool >
 
16
struct iter_fold_if_step_impl
 
17
{
 
18
    template<
 
19
          typename Iterator
 
20
        , typename State
 
21
        , typename StateOp
 
22
        , typename IteratorOp
 
23
        >
 
24
    struct result_
 
25
    {
 
26
        typedef typename apply2< StateOp,State,Iterator >::type state;
 
27
        typedef typename IteratorOp::type iterator;
 
28
    };
 
29
};
 
30
 
 
31
template<>
 
32
struct iter_fold_if_step_impl<false>
 
33
{
 
34
    template<
 
35
          typename Iterator
 
36
        , typename State
 
37
        , typename StateOp
 
38
        , typename IteratorOp
 
39
        >
 
40
    struct result_
 
41
    {
 
42
        typedef State state;
 
43
        typedef Iterator iterator;
 
44
    };
 
45
};
 
46
 
 
47
template<
 
48
      typename Iterator
 
49
    , typename State
 
50
    , typename ForwardOp
 
51
    , typename Predicate
 
52
    >
 
53
struct iter_fold_if_forward_step
 
54
{
 
55
    typedef typename apply2< Predicate,State,Iterator >::type not_last;
 
56
    typedef typename iter_fold_if_step_impl<
 
57
          BOOST_MPL_AUX_MSVC_VALUE_WKND(not_last)::value
 
58
        >::template result_< Iterator, State, ForwardOp, mpl::next< Iterator> > impl_;
 
59
 
 
60
    typedef typename impl_::state state;
 
61
    typedef typename impl_::iterator iterator;
 
62
};
 
63
 
 
64
template<
 
65
      typename Iterator
 
66
    , typename State
 
67
    , typename BackwardOp
 
68
    , typename Predicate
 
69
    >
 
70
struct iter_fold_if_backward_step
 
71
{
 
72
    typedef typename apply2< Predicate,State,Iterator >::type not_last;
 
73
    typedef typename iter_fold_if_step_impl<
 
74
          BOOST_MPL_AUX_MSVC_VALUE_WKND(not_last)::value
 
75
        >::template result_< Iterator,State,BackwardOp,identity<Iterator> > impl_;
 
76
 
 
77
    typedef typename impl_::state state;
 
78
    typedef typename impl_::iterator iterator;
 
79
};
 
80
 
 
81
template<
 
82
      typename Iterator
 
83
    , typename State
 
84
    , typename ForwardOp
 
85
    , typename ForwardPredicate
 
86
    , typename BackwardOp
 
87
    , typename BackwardPredicate
 
88
    >
 
89
struct iter_fold_if_impl
 
90
{
 
91
 private:
 
92
    typedef iter_fold_if_null_step< Iterator,State > forward_step0;
 
93
    typedef iter_fold_if_forward_step< typename forward_step0::iterator, typename forward_step0::state, ForwardOp, ForwardPredicate > forward_step1;
 
94
    typedef iter_fold_if_forward_step< typename forward_step1::iterator, typename forward_step1::state, ForwardOp, ForwardPredicate > forward_step2;
 
95
    typedef iter_fold_if_forward_step< typename forward_step2::iterator, typename forward_step2::state, ForwardOp, ForwardPredicate > forward_step3;
 
96
    typedef iter_fold_if_forward_step< typename forward_step3::iterator, typename forward_step3::state, ForwardOp, ForwardPredicate > forward_step4;
 
97
    
 
98
    
 
99
    typedef typename if_<
 
100
          typename forward_step4::not_last
 
101
        , iter_fold_if_impl<
 
102
              typename forward_step4::iterator
 
103
            , typename forward_step4::state
 
104
            , ForwardOp
 
105
            , ForwardPredicate
 
106
            , BackwardOp
 
107
            , BackwardPredicate
 
108
            >
 
109
        , iter_fold_if_null_step<
 
110
              typename forward_step4::iterator
 
111
            , typename forward_step4::state
 
112
            >
 
113
        >::type backward_step4;
 
114
 
 
115
    typedef iter_fold_if_backward_step< typename forward_step3::iterator, typename backward_step4::state, BackwardOp, BackwardPredicate > backward_step3;
 
116
    typedef iter_fold_if_backward_step< typename forward_step2::iterator, typename backward_step3::state, BackwardOp, BackwardPredicate > backward_step2;
 
117
    typedef iter_fold_if_backward_step< typename forward_step1::iterator, typename backward_step2::state, BackwardOp, BackwardPredicate > backward_step1;
 
118
    typedef iter_fold_if_backward_step< typename forward_step0::iterator, typename backward_step1::state, BackwardOp, BackwardPredicate > backward_step0;
 
119
    
 
120
 
 
121
 public:
 
122
    typedef typename backward_step0::state state;
 
123
    typedef typename backward_step4::iterator iterator;
 
124
};
 
125
 
 
126
} // namespace aux
 
127
} // namespace mpl
 
128
} // namespace boost
 
129