Chris@16
|
1 /*==============================================================================
|
Chris@16
|
2 Copyright (c) 2005-2010 Joel de Guzman
|
Chris@16
|
3 Copyright (c) 2010 Thomas Heller
|
Chris@16
|
4
|
Chris@16
|
5 Distributed under the Boost Software License, Version 1.0. (See accompanying
|
Chris@16
|
6 file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
Chris@16
|
7 ==============================================================================*/
|
Chris@16
|
8
|
Chris@16
|
9
|
Chris@16
|
10
|
Chris@16
|
11
|
Chris@16
|
12
|
Chris@16
|
13
|
Chris@16
|
14
|
Chris@16
|
15 template <typename Context, typename Cond, typename Cases>
|
Chris@16
|
16 result_type
|
Chris@16
|
17 evaluate(
|
Chris@16
|
18 Context const & ctx
|
Chris@16
|
19 , Cond const & cond
|
Chris@16
|
20 , Cases const & cases
|
Chris@16
|
21 , mpl::int_<2>
|
Chris@16
|
22 , mpl::false_
|
Chris@16
|
23 ) const
|
Chris@16
|
24 {
|
Chris@16
|
25 typedef
|
Chris@16
|
26 typename proto::result_of::flatten<Cases const&>::type
|
Chris@16
|
27 flat_view_type;
|
Chris@16
|
28 typedef
|
Chris@16
|
29 typename fusion::result_of::begin<flat_view_type>::type
|
Chris@16
|
30 flat_view_begin;
|
Chris@16
|
31 flat_view_type flat_view(proto::flatten(cases));
|
Chris@16
|
32 typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1;
|
Chris@16
|
33 switch(boost::phoenix::eval(cond, ctx))
|
Chris@16
|
34 {
|
Chris@16
|
35 case case_label0::value : boost::phoenix::eval( proto::child_c<1>( fusion::deref( fusion::advance_c< 0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : boost::phoenix::eval( proto::child_c<1>( fusion::deref( fusion::advance_c< 1>(fusion::begin(flat_view)) ) ) , ctx ); break;
|
Chris@16
|
36 }
|
Chris@16
|
37 }
|
Chris@16
|
38 template <typename Context, typename Cond, typename Cases>
|
Chris@16
|
39 result_type
|
Chris@16
|
40 evaluate(
|
Chris@16
|
41 Context const & ctx
|
Chris@16
|
42 , Cond const & cond
|
Chris@16
|
43 , Cases const & cases
|
Chris@16
|
44 , mpl::int_<2>
|
Chris@16
|
45 , mpl::true_
|
Chris@16
|
46 ) const
|
Chris@16
|
47 {
|
Chris@16
|
48 typedef
|
Chris@16
|
49 typename proto::result_of::flatten<Cases const&>::type
|
Chris@16
|
50 flat_view_type;
|
Chris@16
|
51 typedef
|
Chris@16
|
52 typename fusion::result_of::begin<flat_view_type>::type
|
Chris@16
|
53 flat_view_begin;
|
Chris@16
|
54 flat_view_type flat_view(proto::flatten(cases));
|
Chris@16
|
55 typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0;
|
Chris@16
|
56 switch(boost::phoenix::eval(cond, ctx))
|
Chris@16
|
57 {
|
Chris@16
|
58 case case_label0::value : boost::phoenix::eval( proto::child_c<1>( fusion::deref( fusion::advance_c< 0>(fusion::begin(flat_view)) ) ) , ctx ); break;
|
Chris@16
|
59 default:
|
Chris@16
|
60 boost::phoenix::eval(
|
Chris@16
|
61 proto::child_c<0>(
|
Chris@16
|
62 fusion::deref(
|
Chris@16
|
63 fusion::advance_c<
|
Chris@16
|
64 1
|
Chris@16
|
65 >(fusion::begin(flat_view))
|
Chris@16
|
66 )
|
Chris@16
|
67 )
|
Chris@16
|
68 , ctx
|
Chris@16
|
69 );
|
Chris@16
|
70 }
|
Chris@16
|
71 }
|
Chris@16
|
72
|
Chris@16
|
73
|
Chris@16
|
74
|
Chris@16
|
75
|
Chris@16
|
76
|
Chris@16
|
77
|
Chris@16
|
78
|
Chris@16
|
79 template <typename Context, typename Cond, typename Cases>
|
Chris@16
|
80 result_type
|
Chris@16
|
81 evaluate(
|
Chris@16
|
82 Context const & ctx
|
Chris@16
|
83 , Cond const & cond
|
Chris@16
|
84 , Cases const & cases
|
Chris@16
|
85 , mpl::int_<3>
|
Chris@16
|
86 , mpl::false_
|
Chris@16
|
87 ) const
|
Chris@16
|
88 {
|
Chris@16
|
89 typedef
|
Chris@16
|
90 typename proto::result_of::flatten<Cases const&>::type
|
Chris@16
|
91 flat_view_type;
|
Chris@16
|
92 typedef
|
Chris@16
|
93 typename fusion::result_of::begin<flat_view_type>::type
|
Chris@16
|
94 flat_view_begin;
|
Chris@16
|
95 flat_view_type flat_view(proto::flatten(cases));
|
Chris@16
|
96 typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2;
|
Chris@16
|
97 switch(boost::phoenix::eval(cond, ctx))
|
Chris@16
|
98 {
|
Chris@16
|
99 case case_label0::value : boost::phoenix::eval( proto::child_c<1>( fusion::deref( fusion::advance_c< 0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : boost::phoenix::eval( proto::child_c<1>( fusion::deref( fusion::advance_c< 1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : boost::phoenix::eval( proto::child_c<1>( fusion::deref( fusion::advance_c< 2>(fusion::begin(flat_view)) ) ) , ctx ); break;
|
Chris@16
|
100 }
|
Chris@16
|
101 }
|
Chris@16
|
102 template <typename Context, typename Cond, typename Cases>
|
Chris@16
|
103 result_type
|
Chris@16
|
104 evaluate(
|
Chris@16
|
105 Context const & ctx
|
Chris@16
|
106 , Cond const & cond
|
Chris@16
|
107 , Cases const & cases
|
Chris@16
|
108 , mpl::int_<3>
|
Chris@16
|
109 , mpl::true_
|
Chris@16
|
110 ) const
|
Chris@16
|
111 {
|
Chris@16
|
112 typedef
|
Chris@16
|
113 typename proto::result_of::flatten<Cases const&>::type
|
Chris@16
|
114 flat_view_type;
|
Chris@16
|
115 typedef
|
Chris@16
|
116 typename fusion::result_of::begin<flat_view_type>::type
|
Chris@16
|
117 flat_view_begin;
|
Chris@16
|
118 flat_view_type flat_view(proto::flatten(cases));
|
Chris@16
|
119 typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1;
|
Chris@16
|
120 switch(boost::phoenix::eval(cond, ctx))
|
Chris@16
|
121 {
|
Chris@16
|
122 case case_label0::value : boost::phoenix::eval( proto::child_c<1>( fusion::deref( fusion::advance_c< 0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : boost::phoenix::eval( proto::child_c<1>( fusion::deref( fusion::advance_c< 1>(fusion::begin(flat_view)) ) ) , ctx ); break;
|
Chris@16
|
123 default:
|
Chris@16
|
124 boost::phoenix::eval(
|
Chris@16
|
125 proto::child_c<0>(
|
Chris@16
|
126 fusion::deref(
|
Chris@16
|
127 fusion::advance_c<
|
Chris@16
|
128 2
|
Chris@16
|
129 >(fusion::begin(flat_view))
|
Chris@16
|
130 )
|
Chris@16
|
131 )
|
Chris@16
|
132 , ctx
|
Chris@16
|
133 );
|
Chris@16
|
134 }
|
Chris@16
|
135 }
|
Chris@16
|
136
|
Chris@16
|
137
|
Chris@16
|
138
|
Chris@16
|
139
|
Chris@16
|
140
|
Chris@16
|
141
|
Chris@16
|
142
|
Chris@16
|
143 template <typename Context, typename Cond, typename Cases>
|
Chris@16
|
144 result_type
|
Chris@16
|
145 evaluate(
|
Chris@16
|
146 Context const & ctx
|
Chris@16
|
147 , Cond const & cond
|
Chris@16
|
148 , Cases const & cases
|
Chris@16
|
149 , mpl::int_<4>
|
Chris@16
|
150 , mpl::false_
|
Chris@16
|
151 ) const
|
Chris@16
|
152 {
|
Chris@16
|
153 typedef
|
Chris@16
|
154 typename proto::result_of::flatten<Cases const&>::type
|
Chris@16
|
155 flat_view_type;
|
Chris@16
|
156 typedef
|
Chris@16
|
157 typename fusion::result_of::begin<flat_view_type>::type
|
Chris@16
|
158 flat_view_begin;
|
Chris@16
|
159 flat_view_type flat_view(proto::flatten(cases));
|
Chris@16
|
160 typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3;
|
Chris@16
|
161 switch(boost::phoenix::eval(cond, ctx))
|
Chris@16
|
162 {
|
Chris@16
|
163 case case_label0::value : boost::phoenix::eval( proto::child_c<1>( fusion::deref( fusion::advance_c< 0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : boost::phoenix::eval( proto::child_c<1>( fusion::deref( fusion::advance_c< 1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : boost::phoenix::eval( proto::child_c<1>( fusion::deref( fusion::advance_c< 2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : boost::phoenix::eval( proto::child_c<1>( fusion::deref( fusion::advance_c< 3>(fusion::begin(flat_view)) ) ) , ctx ); break;
|
Chris@16
|
164 }
|
Chris@16
|
165 }
|
Chris@16
|
166 template <typename Context, typename Cond, typename Cases>
|
Chris@16
|
167 result_type
|
Chris@16
|
168 evaluate(
|
Chris@16
|
169 Context const & ctx
|
Chris@16
|
170 , Cond const & cond
|
Chris@16
|
171 , Cases const & cases
|
Chris@16
|
172 , mpl::int_<4>
|
Chris@16
|
173 , mpl::true_
|
Chris@16
|
174 ) const
|
Chris@16
|
175 {
|
Chris@16
|
176 typedef
|
Chris@16
|
177 typename proto::result_of::flatten<Cases const&>::type
|
Chris@16
|
178 flat_view_type;
|
Chris@16
|
179 typedef
|
Chris@16
|
180 typename fusion::result_of::begin<flat_view_type>::type
|
Chris@16
|
181 flat_view_begin;
|
Chris@16
|
182 flat_view_type flat_view(proto::flatten(cases));
|
Chris@16
|
183 typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2;
|
Chris@16
|
184 switch(boost::phoenix::eval(cond, ctx))
|
Chris@16
|
185 {
|
Chris@16
|
186 case case_label0::value : boost::phoenix::eval( proto::child_c<1>( fusion::deref( fusion::advance_c< 0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : boost::phoenix::eval( proto::child_c<1>( fusion::deref( fusion::advance_c< 1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : boost::phoenix::eval( proto::child_c<1>( fusion::deref( fusion::advance_c< 2>(fusion::begin(flat_view)) ) ) , ctx ); break;
|
Chris@16
|
187 default:
|
Chris@16
|
188 boost::phoenix::eval(
|
Chris@16
|
189 proto::child_c<0>(
|
Chris@16
|
190 fusion::deref(
|
Chris@16
|
191 fusion::advance_c<
|
Chris@16
|
192 3
|
Chris@16
|
193 >(fusion::begin(flat_view))
|
Chris@16
|
194 )
|
Chris@16
|
195 )
|
Chris@16
|
196 , ctx
|
Chris@16
|
197 );
|
Chris@16
|
198 }
|
Chris@16
|
199 }
|
Chris@16
|
200
|
Chris@16
|
201
|
Chris@16
|
202
|
Chris@16
|
203
|
Chris@16
|
204
|
Chris@16
|
205
|
Chris@16
|
206
|
Chris@16
|
207 template <typename Context, typename Cond, typename Cases>
|
Chris@16
|
208 result_type
|
Chris@16
|
209 evaluate(
|
Chris@16
|
210 Context const & ctx
|
Chris@16
|
211 , Cond const & cond
|
Chris@16
|
212 , Cases const & cases
|
Chris@16
|
213 , mpl::int_<5>
|
Chris@16
|
214 , mpl::false_
|
Chris@16
|
215 ) const
|
Chris@16
|
216 {
|
Chris@16
|
217 typedef
|
Chris@16
|
218 typename proto::result_of::flatten<Cases const&>::type
|
Chris@16
|
219 flat_view_type;
|
Chris@16
|
220 typedef
|
Chris@16
|
221 typename fusion::result_of::begin<flat_view_type>::type
|
Chris@16
|
222 flat_view_begin;
|
Chris@16
|
223 flat_view_type flat_view(proto::flatten(cases));
|
Chris@16
|
224 typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4;
|
Chris@16
|
225 switch(boost::phoenix::eval(cond, ctx))
|
Chris@16
|
226 {
|
Chris@16
|
227 case case_label0::value : boost::phoenix::eval( proto::child_c<1>( fusion::deref( fusion::advance_c< 0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : boost::phoenix::eval( proto::child_c<1>( fusion::deref( fusion::advance_c< 1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : boost::phoenix::eval( proto::child_c<1>( fusion::deref( fusion::advance_c< 2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : boost::phoenix::eval( proto::child_c<1>( fusion::deref( fusion::advance_c< 3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : boost::phoenix::eval( proto::child_c<1>( fusion::deref( fusion::advance_c< 4>(fusion::begin(flat_view)) ) ) , ctx ); break;
|
Chris@16
|
228 }
|
Chris@16
|
229 }
|
Chris@16
|
230 template <typename Context, typename Cond, typename Cases>
|
Chris@16
|
231 result_type
|
Chris@16
|
232 evaluate(
|
Chris@16
|
233 Context const & ctx
|
Chris@16
|
234 , Cond const & cond
|
Chris@16
|
235 , Cases const & cases
|
Chris@16
|
236 , mpl::int_<5>
|
Chris@16
|
237 , mpl::true_
|
Chris@16
|
238 ) const
|
Chris@16
|
239 {
|
Chris@16
|
240 typedef
|
Chris@16
|
241 typename proto::result_of::flatten<Cases const&>::type
|
Chris@16
|
242 flat_view_type;
|
Chris@16
|
243 typedef
|
Chris@16
|
244 typename fusion::result_of::begin<flat_view_type>::type
|
Chris@16
|
245 flat_view_begin;
|
Chris@16
|
246 flat_view_type flat_view(proto::flatten(cases));
|
Chris@16
|
247 typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3;
|
Chris@16
|
248 switch(boost::phoenix::eval(cond, ctx))
|
Chris@16
|
249 {
|
Chris@16
|
250 case case_label0::value : boost::phoenix::eval( proto::child_c<1>( fusion::deref( fusion::advance_c< 0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : boost::phoenix::eval( proto::child_c<1>( fusion::deref( fusion::advance_c< 1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : boost::phoenix::eval( proto::child_c<1>( fusion::deref( fusion::advance_c< 2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : boost::phoenix::eval( proto::child_c<1>( fusion::deref( fusion::advance_c< 3>(fusion::begin(flat_view)) ) ) , ctx ); break;
|
Chris@16
|
251 default:
|
Chris@16
|
252 boost::phoenix::eval(
|
Chris@16
|
253 proto::child_c<0>(
|
Chris@16
|
254 fusion::deref(
|
Chris@16
|
255 fusion::advance_c<
|
Chris@16
|
256 4
|
Chris@16
|
257 >(fusion::begin(flat_view))
|
Chris@16
|
258 )
|
Chris@16
|
259 )
|
Chris@16
|
260 , ctx
|
Chris@16
|
261 );
|
Chris@16
|
262 }
|
Chris@16
|
263 }
|
Chris@16
|
264
|
Chris@16
|
265
|
Chris@16
|
266
|
Chris@16
|
267
|
Chris@16
|
268
|
Chris@16
|
269
|
Chris@16
|
270
|
Chris@16
|
271 template <typename Context, typename Cond, typename Cases>
|
Chris@16
|
272 result_type
|
Chris@16
|
273 evaluate(
|
Chris@16
|
274 Context const & ctx
|
Chris@16
|
275 , Cond const & cond
|
Chris@16
|
276 , Cases const & cases
|
Chris@16
|
277 , mpl::int_<6>
|
Chris@16
|
278 , mpl::false_
|
Chris@16
|
279 ) const
|
Chris@16
|
280 {
|
Chris@16
|
281 typedef
|
Chris@16
|
282 typename proto::result_of::flatten<Cases const&>::type
|
Chris@16
|
283 flat_view_type;
|
Chris@16
|
284 typedef
|
Chris@16
|
285 typename fusion::result_of::begin<flat_view_type>::type
|
Chris@16
|
286 flat_view_begin;
|
Chris@16
|
287 flat_view_type flat_view(proto::flatten(cases));
|
Chris@16
|
288 typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5;
|
Chris@16
|
289 switch(boost::phoenix::eval(cond, ctx))
|
Chris@16
|
290 {
|
Chris@16
|
291 case case_label0::value : boost::phoenix::eval( proto::child_c<1>( fusion::deref( fusion::advance_c< 0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : boost::phoenix::eval( proto::child_c<1>( fusion::deref( fusion::advance_c< 1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : boost::phoenix::eval( proto::child_c<1>( fusion::deref( fusion::advance_c< 2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : boost::phoenix::eval( proto::child_c<1>( fusion::deref( fusion::advance_c< 3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : boost::phoenix::eval( proto::child_c<1>( fusion::deref( fusion::advance_c< 4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : boost::phoenix::eval( proto::child_c<1>( fusion::deref( fusion::advance_c< 5>(fusion::begin(flat_view)) ) ) , ctx ); break;
|
Chris@16
|
292 }
|
Chris@16
|
293 }
|
Chris@16
|
294 template <typename Context, typename Cond, typename Cases>
|
Chris@16
|
295 result_type
|
Chris@16
|
296 evaluate(
|
Chris@16
|
297 Context const & ctx
|
Chris@16
|
298 , Cond const & cond
|
Chris@16
|
299 , Cases const & cases
|
Chris@16
|
300 , mpl::int_<6>
|
Chris@16
|
301 , mpl::true_
|
Chris@16
|
302 ) const
|
Chris@16
|
303 {
|
Chris@16
|
304 typedef
|
Chris@16
|
305 typename proto::result_of::flatten<Cases const&>::type
|
Chris@16
|
306 flat_view_type;
|
Chris@16
|
307 typedef
|
Chris@16
|
308 typename fusion::result_of::begin<flat_view_type>::type
|
Chris@16
|
309 flat_view_begin;
|
Chris@16
|
310 flat_view_type flat_view(proto::flatten(cases));
|
Chris@16
|
311 typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4;
|
Chris@16
|
312 switch(boost::phoenix::eval(cond, ctx))
|
Chris@16
|
313 {
|
Chris@16
|
314 case case_label0::value : boost::phoenix::eval( proto::child_c<1>( fusion::deref( fusion::advance_c< 0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : boost::phoenix::eval( proto::child_c<1>( fusion::deref( fusion::advance_c< 1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : boost::phoenix::eval( proto::child_c<1>( fusion::deref( fusion::advance_c< 2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : boost::phoenix::eval( proto::child_c<1>( fusion::deref( fusion::advance_c< 3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : boost::phoenix::eval( proto::child_c<1>( fusion::deref( fusion::advance_c< 4>(fusion::begin(flat_view)) ) ) , ctx ); break;
|
Chris@16
|
315 default:
|
Chris@16
|
316 boost::phoenix::eval(
|
Chris@16
|
317 proto::child_c<0>(
|
Chris@16
|
318 fusion::deref(
|
Chris@16
|
319 fusion::advance_c<
|
Chris@16
|
320 5
|
Chris@16
|
321 >(fusion::begin(flat_view))
|
Chris@16
|
322 )
|
Chris@16
|
323 )
|
Chris@16
|
324 , ctx
|
Chris@16
|
325 );
|
Chris@16
|
326 }
|
Chris@16
|
327 }
|
Chris@16
|
328
|
Chris@16
|
329
|
Chris@16
|
330
|
Chris@16
|
331
|
Chris@16
|
332
|
Chris@16
|
333
|
Chris@16
|
334
|
Chris@16
|
335 template <typename Context, typename Cond, typename Cases>
|
Chris@16
|
336 result_type
|
Chris@16
|
337 evaluate(
|
Chris@16
|
338 Context const & ctx
|
Chris@16
|
339 , Cond const & cond
|
Chris@16
|
340 , Cases const & cases
|
Chris@16
|
341 , mpl::int_<7>
|
Chris@16
|
342 , mpl::false_
|
Chris@16
|
343 ) const
|
Chris@16
|
344 {
|
Chris@16
|
345 typedef
|
Chris@16
|
346 typename proto::result_of::flatten<Cases const&>::type
|
Chris@16
|
347 flat_view_type;
|
Chris@16
|
348 typedef
|
Chris@16
|
349 typename fusion::result_of::begin<flat_view_type>::type
|
Chris@16
|
350 flat_view_begin;
|
Chris@16
|
351 flat_view_type flat_view(proto::flatten(cases));
|
Chris@16
|
352 typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6;
|
Chris@16
|
353 switch(boost::phoenix::eval(cond, ctx))
|
Chris@16
|
354 {
|
Chris@16
|
355 case case_label0::value : boost::phoenix::eval( proto::child_c<1>( fusion::deref( fusion::advance_c< 0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : boost::phoenix::eval( proto::child_c<1>( fusion::deref( fusion::advance_c< 1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : boost::phoenix::eval( proto::child_c<1>( fusion::deref( fusion::advance_c< 2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : boost::phoenix::eval( proto::child_c<1>( fusion::deref( fusion::advance_c< 3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : boost::phoenix::eval( proto::child_c<1>( fusion::deref( fusion::advance_c< 4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : boost::phoenix::eval( proto::child_c<1>( fusion::deref( fusion::advance_c< 5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : boost::phoenix::eval( proto::child_c<1>( fusion::deref( fusion::advance_c< 6>(fusion::begin(flat_view)) ) ) , ctx ); break;
|
Chris@16
|
356 }
|
Chris@16
|
357 }
|
Chris@16
|
358 template <typename Context, typename Cond, typename Cases>
|
Chris@16
|
359 result_type
|
Chris@16
|
360 evaluate(
|
Chris@16
|
361 Context const & ctx
|
Chris@16
|
362 , Cond const & cond
|
Chris@16
|
363 , Cases const & cases
|
Chris@16
|
364 , mpl::int_<7>
|
Chris@16
|
365 , mpl::true_
|
Chris@16
|
366 ) const
|
Chris@16
|
367 {
|
Chris@16
|
368 typedef
|
Chris@16
|
369 typename proto::result_of::flatten<Cases const&>::type
|
Chris@16
|
370 flat_view_type;
|
Chris@16
|
371 typedef
|
Chris@16
|
372 typename fusion::result_of::begin<flat_view_type>::type
|
Chris@16
|
373 flat_view_begin;
|
Chris@16
|
374 flat_view_type flat_view(proto::flatten(cases));
|
Chris@16
|
375 typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5;
|
Chris@16
|
376 switch(boost::phoenix::eval(cond, ctx))
|
Chris@16
|
377 {
|
Chris@16
|
378 case case_label0::value : boost::phoenix::eval( proto::child_c<1>( fusion::deref( fusion::advance_c< 0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : boost::phoenix::eval( proto::child_c<1>( fusion::deref( fusion::advance_c< 1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : boost::phoenix::eval( proto::child_c<1>( fusion::deref( fusion::advance_c< 2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : boost::phoenix::eval( proto::child_c<1>( fusion::deref( fusion::advance_c< 3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : boost::phoenix::eval( proto::child_c<1>( fusion::deref( fusion::advance_c< 4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : boost::phoenix::eval( proto::child_c<1>( fusion::deref( fusion::advance_c< 5>(fusion::begin(flat_view)) ) ) , ctx ); break;
|
Chris@16
|
379 default:
|
Chris@16
|
380 boost::phoenix::eval(
|
Chris@16
|
381 proto::child_c<0>(
|
Chris@16
|
382 fusion::deref(
|
Chris@16
|
383 fusion::advance_c<
|
Chris@16
|
384 6
|
Chris@16
|
385 >(fusion::begin(flat_view))
|
Chris@16
|
386 )
|
Chris@16
|
387 )
|
Chris@16
|
388 , ctx
|
Chris@16
|
389 );
|
Chris@16
|
390 }
|
Chris@16
|
391 }
|
Chris@16
|
392
|
Chris@16
|
393
|
Chris@16
|
394
|
Chris@16
|
395
|
Chris@16
|
396
|
Chris@16
|
397
|
Chris@16
|
398
|
Chris@16
|
399 template <typename Context, typename Cond, typename Cases>
|
Chris@16
|
400 result_type
|
Chris@16
|
401 evaluate(
|
Chris@16
|
402 Context const & ctx
|
Chris@16
|
403 , Cond const & cond
|
Chris@16
|
404 , Cases const & cases
|
Chris@16
|
405 , mpl::int_<8>
|
Chris@16
|
406 , mpl::false_
|
Chris@16
|
407 ) const
|
Chris@16
|
408 {
|
Chris@16
|
409 typedef
|
Chris@16
|
410 typename proto::result_of::flatten<Cases const&>::type
|
Chris@16
|
411 flat_view_type;
|
Chris@16
|
412 typedef
|
Chris@16
|
413 typename fusion::result_of::begin<flat_view_type>::type
|
Chris@16
|
414 flat_view_begin;
|
Chris@16
|
415 flat_view_type flat_view(proto::flatten(cases));
|
Chris@16
|
416 typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7;
|
Chris@16
|
417 switch(boost::phoenix::eval(cond, ctx))
|
Chris@16
|
418 {
|
Chris@16
|
419 case case_label0::value : boost::phoenix::eval( proto::child_c<1>( fusion::deref( fusion::advance_c< 0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : boost::phoenix::eval( proto::child_c<1>( fusion::deref( fusion::advance_c< 1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : boost::phoenix::eval( proto::child_c<1>( fusion::deref( fusion::advance_c< 2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : boost::phoenix::eval( proto::child_c<1>( fusion::deref( fusion::advance_c< 3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : boost::phoenix::eval( proto::child_c<1>( fusion::deref( fusion::advance_c< 4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : boost::phoenix::eval( proto::child_c<1>( fusion::deref( fusion::advance_c< 5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : boost::phoenix::eval( proto::child_c<1>( fusion::deref( fusion::advance_c< 6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : boost::phoenix::eval( proto::child_c<1>( fusion::deref( fusion::advance_c< 7>(fusion::begin(flat_view)) ) ) , ctx ); break;
|
Chris@16
|
420 }
|
Chris@16
|
421 }
|
Chris@16
|
422 template <typename Context, typename Cond, typename Cases>
|
Chris@16
|
423 result_type
|
Chris@16
|
424 evaluate(
|
Chris@16
|
425 Context const & ctx
|
Chris@16
|
426 , Cond const & cond
|
Chris@16
|
427 , Cases const & cases
|
Chris@16
|
428 , mpl::int_<8>
|
Chris@16
|
429 , mpl::true_
|
Chris@16
|
430 ) const
|
Chris@16
|
431 {
|
Chris@16
|
432 typedef
|
Chris@16
|
433 typename proto::result_of::flatten<Cases const&>::type
|
Chris@16
|
434 flat_view_type;
|
Chris@16
|
435 typedef
|
Chris@16
|
436 typename fusion::result_of::begin<flat_view_type>::type
|
Chris@16
|
437 flat_view_begin;
|
Chris@16
|
438 flat_view_type flat_view(proto::flatten(cases));
|
Chris@16
|
439 typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6;
|
Chris@16
|
440 switch(boost::phoenix::eval(cond, ctx))
|
Chris@16
|
441 {
|
Chris@16
|
442 case case_label0::value : boost::phoenix::eval( proto::child_c<1>( fusion::deref( fusion::advance_c< 0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : boost::phoenix::eval( proto::child_c<1>( fusion::deref( fusion::advance_c< 1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : boost::phoenix::eval( proto::child_c<1>( fusion::deref( fusion::advance_c< 2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : boost::phoenix::eval( proto::child_c<1>( fusion::deref( fusion::advance_c< 3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : boost::phoenix::eval( proto::child_c<1>( fusion::deref( fusion::advance_c< 4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : boost::phoenix::eval( proto::child_c<1>( fusion::deref( fusion::advance_c< 5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : boost::phoenix::eval( proto::child_c<1>( fusion::deref( fusion::advance_c< 6>(fusion::begin(flat_view)) ) ) , ctx ); break;
|
Chris@16
|
443 default:
|
Chris@16
|
444 boost::phoenix::eval(
|
Chris@16
|
445 proto::child_c<0>(
|
Chris@16
|
446 fusion::deref(
|
Chris@16
|
447 fusion::advance_c<
|
Chris@16
|
448 7
|
Chris@16
|
449 >(fusion::begin(flat_view))
|
Chris@16
|
450 )
|
Chris@16
|
451 )
|
Chris@16
|
452 , ctx
|
Chris@16
|
453 );
|
Chris@16
|
454 }
|
Chris@16
|
455 }
|
Chris@16
|
456
|
Chris@16
|
457
|
Chris@16
|
458
|
Chris@16
|
459
|
Chris@16
|
460
|
Chris@16
|
461
|
Chris@16
|
462
|
Chris@16
|
463 template <typename Context, typename Cond, typename Cases>
|
Chris@16
|
464 result_type
|
Chris@16
|
465 evaluate(
|
Chris@16
|
466 Context const & ctx
|
Chris@16
|
467 , Cond const & cond
|
Chris@16
|
468 , Cases const & cases
|
Chris@16
|
469 , mpl::int_<9>
|
Chris@16
|
470 , mpl::false_
|
Chris@16
|
471 ) const
|
Chris@16
|
472 {
|
Chris@16
|
473 typedef
|
Chris@16
|
474 typename proto::result_of::flatten<Cases const&>::type
|
Chris@16
|
475 flat_view_type;
|
Chris@16
|
476 typedef
|
Chris@16
|
477 typename fusion::result_of::begin<flat_view_type>::type
|
Chris@16
|
478 flat_view_begin;
|
Chris@16
|
479 flat_view_type flat_view(proto::flatten(cases));
|
Chris@16
|
480 typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8;
|
Chris@16
|
481 switch(boost::phoenix::eval(cond, ctx))
|
Chris@16
|
482 {
|
Chris@16
|
483 case case_label0::value : boost::phoenix::eval( proto::child_c<1>( fusion::deref( fusion::advance_c< 0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : boost::phoenix::eval( proto::child_c<1>( fusion::deref( fusion::advance_c< 1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : boost::phoenix::eval( proto::child_c<1>( fusion::deref( fusion::advance_c< 2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : boost::phoenix::eval( proto::child_c<1>( fusion::deref( fusion::advance_c< 3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : boost::phoenix::eval( proto::child_c<1>( fusion::deref( fusion::advance_c< 4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : boost::phoenix::eval( proto::child_c<1>( fusion::deref( fusion::advance_c< 5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : boost::phoenix::eval( proto::child_c<1>( fusion::deref( fusion::advance_c< 6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : boost::phoenix::eval( proto::child_c<1>( fusion::deref( fusion::advance_c< 7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : boost::phoenix::eval( proto::child_c<1>( fusion::deref( fusion::advance_c< 8>(fusion::begin(flat_view)) ) ) , ctx ); break;
|
Chris@16
|
484 }
|
Chris@16
|
485 }
|
Chris@16
|
486 template <typename Context, typename Cond, typename Cases>
|
Chris@16
|
487 result_type
|
Chris@16
|
488 evaluate(
|
Chris@16
|
489 Context const & ctx
|
Chris@16
|
490 , Cond const & cond
|
Chris@16
|
491 , Cases const & cases
|
Chris@16
|
492 , mpl::int_<9>
|
Chris@16
|
493 , mpl::true_
|
Chris@16
|
494 ) const
|
Chris@16
|
495 {
|
Chris@16
|
496 typedef
|
Chris@16
|
497 typename proto::result_of::flatten<Cases const&>::type
|
Chris@16
|
498 flat_view_type;
|
Chris@16
|
499 typedef
|
Chris@16
|
500 typename fusion::result_of::begin<flat_view_type>::type
|
Chris@16
|
501 flat_view_begin;
|
Chris@16
|
502 flat_view_type flat_view(proto::flatten(cases));
|
Chris@16
|
503 typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7;
|
Chris@16
|
504 switch(boost::phoenix::eval(cond, ctx))
|
Chris@16
|
505 {
|
Chris@16
|
506 case case_label0::value : boost::phoenix::eval( proto::child_c<1>( fusion::deref( fusion::advance_c< 0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : boost::phoenix::eval( proto::child_c<1>( fusion::deref( fusion::advance_c< 1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : boost::phoenix::eval( proto::child_c<1>( fusion::deref( fusion::advance_c< 2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : boost::phoenix::eval( proto::child_c<1>( fusion::deref( fusion::advance_c< 3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : boost::phoenix::eval( proto::child_c<1>( fusion::deref( fusion::advance_c< 4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : boost::phoenix::eval( proto::child_c<1>( fusion::deref( fusion::advance_c< 5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : boost::phoenix::eval( proto::child_c<1>( fusion::deref( fusion::advance_c< 6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : boost::phoenix::eval( proto::child_c<1>( fusion::deref( fusion::advance_c< 7>(fusion::begin(flat_view)) ) ) , ctx ); break;
|
Chris@16
|
507 default:
|
Chris@16
|
508 boost::phoenix::eval(
|
Chris@16
|
509 proto::child_c<0>(
|
Chris@16
|
510 fusion::deref(
|
Chris@16
|
511 fusion::advance_c<
|
Chris@16
|
512 8
|
Chris@16
|
513 >(fusion::begin(flat_view))
|
Chris@16
|
514 )
|
Chris@16
|
515 )
|
Chris@16
|
516 , ctx
|
Chris@16
|
517 );
|
Chris@16
|
518 }
|
Chris@16
|
519 }
|
Chris@16
|
520
|
Chris@16
|
521
|
Chris@16
|
522
|
Chris@16
|
523
|
Chris@16
|
524
|
Chris@16
|
525
|
Chris@16
|
526
|
Chris@16
|
527 template <typename Context, typename Cond, typename Cases>
|
Chris@16
|
528 result_type
|
Chris@16
|
529 evaluate(
|
Chris@16
|
530 Context const & ctx
|
Chris@16
|
531 , Cond const & cond
|
Chris@16
|
532 , Cases const & cases
|
Chris@16
|
533 , mpl::int_<10>
|
Chris@16
|
534 , mpl::false_
|
Chris@16
|
535 ) const
|
Chris@16
|
536 {
|
Chris@16
|
537 typedef
|
Chris@16
|
538 typename proto::result_of::flatten<Cases const&>::type
|
Chris@16
|
539 flat_view_type;
|
Chris@16
|
540 typedef
|
Chris@16
|
541 typename fusion::result_of::begin<flat_view_type>::type
|
Chris@16
|
542 flat_view_begin;
|
Chris@16
|
543 flat_view_type flat_view(proto::flatten(cases));
|
Chris@16
|
544 typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9;
|
Chris@16
|
545 switch(boost::phoenix::eval(cond, ctx))
|
Chris@16
|
546 {
|
Chris@16
|
547 case case_label0::value : boost::phoenix::eval( proto::child_c<1>( fusion::deref( fusion::advance_c< 0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : boost::phoenix::eval( proto::child_c<1>( fusion::deref( fusion::advance_c< 1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : boost::phoenix::eval( proto::child_c<1>( fusion::deref( fusion::advance_c< 2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : boost::phoenix::eval( proto::child_c<1>( fusion::deref( fusion::advance_c< 3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : boost::phoenix::eval( proto::child_c<1>( fusion::deref( fusion::advance_c< 4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : boost::phoenix::eval( proto::child_c<1>( fusion::deref( fusion::advance_c< 5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : boost::phoenix::eval( proto::child_c<1>( fusion::deref( fusion::advance_c< 6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : boost::phoenix::eval( proto::child_c<1>( fusion::deref( fusion::advance_c< 7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : boost::phoenix::eval( proto::child_c<1>( fusion::deref( fusion::advance_c< 8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : boost::phoenix::eval( proto::child_c<1>( fusion::deref( fusion::advance_c< 9>(fusion::begin(flat_view)) ) ) , ctx ); break;
|
Chris@16
|
548 }
|
Chris@16
|
549 }
|
Chris@16
|
550 template <typename Context, typename Cond, typename Cases>
|
Chris@16
|
551 result_type
|
Chris@16
|
552 evaluate(
|
Chris@16
|
553 Context const & ctx
|
Chris@16
|
554 , Cond const & cond
|
Chris@16
|
555 , Cases const & cases
|
Chris@16
|
556 , mpl::int_<10>
|
Chris@16
|
557 , mpl::true_
|
Chris@16
|
558 ) const
|
Chris@16
|
559 {
|
Chris@16
|
560 typedef
|
Chris@16
|
561 typename proto::result_of::flatten<Cases const&>::type
|
Chris@16
|
562 flat_view_type;
|
Chris@16
|
563 typedef
|
Chris@16
|
564 typename fusion::result_of::begin<flat_view_type>::type
|
Chris@16
|
565 flat_view_begin;
|
Chris@16
|
566 flat_view_type flat_view(proto::flatten(cases));
|
Chris@16
|
567 typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8;
|
Chris@16
|
568 switch(boost::phoenix::eval(cond, ctx))
|
Chris@16
|
569 {
|
Chris@16
|
570 case case_label0::value : boost::phoenix::eval( proto::child_c<1>( fusion::deref( fusion::advance_c< 0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : boost::phoenix::eval( proto::child_c<1>( fusion::deref( fusion::advance_c< 1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : boost::phoenix::eval( proto::child_c<1>( fusion::deref( fusion::advance_c< 2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : boost::phoenix::eval( proto::child_c<1>( fusion::deref( fusion::advance_c< 3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : boost::phoenix::eval( proto::child_c<1>( fusion::deref( fusion::advance_c< 4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : boost::phoenix::eval( proto::child_c<1>( fusion::deref( fusion::advance_c< 5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : boost::phoenix::eval( proto::child_c<1>( fusion::deref( fusion::advance_c< 6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : boost::phoenix::eval( proto::child_c<1>( fusion::deref( fusion::advance_c< 7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : boost::phoenix::eval( proto::child_c<1>( fusion::deref( fusion::advance_c< 8>(fusion::begin(flat_view)) ) ) , ctx ); break;
|
Chris@16
|
571 default:
|
Chris@16
|
572 boost::phoenix::eval(
|
Chris@16
|
573 proto::child_c<0>(
|
Chris@16
|
574 fusion::deref(
|
Chris@16
|
575 fusion::advance_c<
|
Chris@16
|
576 9
|
Chris@16
|
577 >(fusion::begin(flat_view))
|
Chris@16
|
578 )
|
Chris@16
|
579 )
|
Chris@16
|
580 , ctx
|
Chris@16
|
581 );
|
Chris@16
|
582 }
|
Chris@16
|
583 }
|