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

« back to all changes in this revision

Viewing changes to boost/boost/mpl/aux_/preprocessed/gcc/iter_fold_backward_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_backward_impl.hpp' header
 
2
// see the original for copyright information
 
3
 
 
4
namespace boost {
 
5
namespace mpl {
 
6
namespace aux {
 
7
 
 
8
// forward declaration
 
9
template<
 
10
      long N
 
11
    , typename First
 
12
    , typename Last
 
13
    , typename State
 
14
    , typename BackwardOp
 
15
    , typename ForwardOp
 
16
    > 
 
17
struct iter_fold_backward_impl;
 
18
 
 
19
template<
 
20
      typename First
 
21
    , typename Last
 
22
    , typename State
 
23
    , typename BackwardOp
 
24
    , typename ForwardOp
 
25
    >
 
26
struct iter_fold_backward_impl< 0,First,Last,State,BackwardOp,ForwardOp >
 
27
{
 
28
    typedef First iter0;
 
29
    typedef State fwd_state0;
 
30
    typedef fwd_state0 bkwd_state0;
 
31
    typedef bkwd_state0 state;
 
32
    typedef iter0 iterator;
 
33
};
 
34
 
 
35
template<
 
36
      typename First
 
37
    , typename Last
 
38
    , typename State
 
39
    , typename BackwardOp
 
40
    , typename ForwardOp
 
41
    >
 
42
struct iter_fold_backward_impl< 1,First,Last,State,BackwardOp,ForwardOp >
 
43
{
 
44
    typedef First iter0;
 
45
    typedef State fwd_state0;
 
46
    typedef typename ForwardOp::template apply< fwd_state0,iter0 >::type fwd_state1;
 
47
    typedef typename iter0::next iter1;
 
48
    
 
49
 
 
50
    typedef fwd_state1 bkwd_state1;
 
51
    typedef typename BackwardOp::template apply< bkwd_state1,iter0 >::type bkwd_state0;
 
52
    typedef bkwd_state0 state;
 
53
    typedef iter1 iterator;
 
54
};
 
55
 
 
56
template<
 
57
      typename First
 
58
    , typename Last
 
59
    , typename State
 
60
    , typename BackwardOp
 
61
    , typename ForwardOp
 
62
    >
 
63
struct iter_fold_backward_impl< 2,First,Last,State,BackwardOp,ForwardOp >
 
64
{
 
65
    typedef First iter0;
 
66
    typedef State fwd_state0;
 
67
    typedef typename ForwardOp::template apply< fwd_state0,iter0 >::type fwd_state1;
 
68
    typedef typename iter0::next iter1;
 
69
    typedef typename ForwardOp::template apply< fwd_state1,iter1 >::type fwd_state2;
 
70
    typedef typename iter1::next iter2;
 
71
    
 
72
 
 
73
    typedef fwd_state2 bkwd_state2;
 
74
    typedef typename BackwardOp::template apply< bkwd_state2,iter1 >::type bkwd_state1;
 
75
    typedef typename BackwardOp::template apply< bkwd_state1,iter0 >::type bkwd_state0;
 
76
    
 
77
 
 
78
    typedef bkwd_state0 state;
 
79
    typedef iter2 iterator;
 
80
};
 
81
 
 
82
template<
 
83
      typename First
 
84
    , typename Last
 
85
    , typename State
 
86
    , typename BackwardOp
 
87
    , typename ForwardOp
 
88
    >
 
89
struct iter_fold_backward_impl< 3,First,Last,State,BackwardOp,ForwardOp >
 
90
{
 
91
    typedef First iter0;
 
92
    typedef State fwd_state0;
 
93
    typedef typename ForwardOp::template apply< fwd_state0,iter0 >::type fwd_state1;
 
94
    typedef typename iter0::next iter1;
 
95
    typedef typename ForwardOp::template apply< fwd_state1,iter1 >::type fwd_state2;
 
96
    typedef typename iter1::next iter2;
 
97
    typedef typename ForwardOp::template apply< fwd_state2,iter2 >::type fwd_state3;
 
98
    typedef typename iter2::next iter3;
 
99
    
 
100
 
 
101
    typedef fwd_state3 bkwd_state3;
 
102
    typedef typename BackwardOp::template apply< bkwd_state3,iter2 >::type bkwd_state2;
 
103
    typedef typename BackwardOp::template apply< bkwd_state2,iter1 >::type bkwd_state1;
 
104
    typedef typename BackwardOp::template apply< bkwd_state1,iter0 >::type bkwd_state0;
 
105
    
 
106
 
 
107
    typedef bkwd_state0 state;
 
108
    typedef iter3 iterator;
 
109
};
 
110
 
 
111
template<
 
112
      typename First
 
113
    , typename Last
 
114
    , typename State
 
115
    , typename BackwardOp
 
116
    , typename ForwardOp
 
117
    >
 
118
struct iter_fold_backward_impl< 4,First,Last,State,BackwardOp,ForwardOp >
 
119
{
 
120
    typedef First iter0;
 
121
    typedef State fwd_state0;
 
122
    typedef typename ForwardOp::template apply< fwd_state0,iter0 >::type fwd_state1;
 
123
    typedef typename iter0::next iter1;
 
124
    typedef typename ForwardOp::template apply< fwd_state1,iter1 >::type fwd_state2;
 
125
    typedef typename iter1::next iter2;
 
126
    typedef typename ForwardOp::template apply< fwd_state2,iter2 >::type fwd_state3;
 
127
    typedef typename iter2::next iter3;
 
128
    typedef typename ForwardOp::template apply< fwd_state3,iter3 >::type fwd_state4;
 
129
    typedef typename iter3::next iter4;
 
130
    
 
131
 
 
132
    typedef fwd_state4 bkwd_state4;
 
133
    typedef typename BackwardOp::template apply< bkwd_state4,iter3 >::type bkwd_state3;
 
134
    typedef typename BackwardOp::template apply< bkwd_state3,iter2 >::type bkwd_state2;
 
135
    typedef typename BackwardOp::template apply< bkwd_state2,iter1 >::type bkwd_state1;
 
136
    typedef typename BackwardOp::template apply< bkwd_state1,iter0 >::type bkwd_state0;
 
137
    
 
138
 
 
139
    typedef bkwd_state0 state;
 
140
    typedef iter4 iterator;
 
141
};
 
142
 
 
143
template<
 
144
      long N
 
145
    , typename First
 
146
    , typename Last
 
147
    , typename State
 
148
    , typename BackwardOp
 
149
    , typename ForwardOp
 
150
    > 
 
151
struct iter_fold_backward_impl
 
152
{
 
153
    typedef First iter0;
 
154
    typedef State fwd_state0;
 
155
    typedef typename ForwardOp::template apply< fwd_state0,iter0 >::type fwd_state1;
 
156
    typedef typename iter0::next iter1;
 
157
    typedef typename ForwardOp::template apply< fwd_state1,iter1 >::type fwd_state2;
 
158
    typedef typename iter1::next iter2;
 
159
    typedef typename ForwardOp::template apply< fwd_state2,iter2 >::type fwd_state3;
 
160
    typedef typename iter2::next iter3;
 
161
    typedef typename ForwardOp::template apply< fwd_state3,iter3 >::type fwd_state4;
 
162
    typedef typename iter3::next iter4;
 
163
    
 
164
 
 
165
    typedef iter_fold_backward_impl<
 
166
          ( (N - 4) < 0 ? 0 : N - 4 )
 
167
        , iter4
 
168
        , Last
 
169
        , fwd_state4
 
170
        , BackwardOp
 
171
        , ForwardOp
 
172
        > nested_chunk;
 
173
        
 
174
    typedef typename nested_chunk::state bkwd_state4;
 
175
    typedef typename BackwardOp::template apply< bkwd_state4,iter3 >::type bkwd_state3;
 
176
    typedef typename BackwardOp::template apply< bkwd_state3,iter2 >::type bkwd_state2;
 
177
    typedef typename BackwardOp::template apply< bkwd_state2,iter1 >::type bkwd_state1;
 
178
    typedef typename BackwardOp::template apply< bkwd_state1,iter0 >::type bkwd_state0;
 
179
    
 
180
 
 
181
    typedef bkwd_state0 state;
 
182
    typedef typename nested_chunk::iterator iterator;
 
183
};
 
184
 
 
185
template<
 
186
      typename First
 
187
    , typename Last
 
188
    , typename State
 
189
    , typename BackwardOp
 
190
    , typename ForwardOp
 
191
    > 
 
192
struct iter_fold_backward_impl< -1,First,Last,State,BackwardOp,ForwardOp >
 
193
{
 
194
    typedef iter_fold_backward_impl<
 
195
          -1
 
196
        , typename First::next
 
197
        , Last
 
198
        , typename ForwardOp::template apply< State,First >::type
 
199
        , BackwardOp
 
200
        , ForwardOp
 
201
        > nested_step;
 
202
 
 
203
    typedef typename BackwardOp::template apply<typename nested_step::state, First>::type state;
 
204
    typedef typename nested_step::iterator iterator;
 
205
};
 
206
 
 
207
template<
 
208
      typename Last
 
209
    , typename State
 
210
    , typename BackwardOp
 
211
    , typename ForwardOp
 
212
    > 
 
213
struct iter_fold_backward_impl< -1,Last,Last,State,BackwardOp,ForwardOp >
 
214
{
 
215
    typedef State state;
 
216
    typedef Last iterator;
 
217
};
 
218
 
 
219
} // namespace aux
 
220
} // namespace mpl
 
221
} // namespace boost
 
222