~ubuntu-branches/ubuntu/precise/deal.ii/precise

« back to all changes in this revision

Viewing changes to contrib/boost/include/boost/mpl/aux_/preprocessed/no_ttp/reverse_fold_impl.hpp

  • Committer: Bazaar Package Importer
  • Author(s): Adam C. Powell, IV
  • Date: 2009-05-08 23:13:50 UTC
  • Revision ID: james.westby@ubuntu.com-20090508231350-rrh1ltgi0tifabwc
Tags: upstream-6.2.0
ImportĀ upstreamĀ versionĀ 6.2.0

Show diffs side-by-side

added added

removed removed

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