Mercurial > hg > vamp-build-and-test
comparison DEPENDENCIES/generic/include/boost/proto/detail/preprocessed/unpack_expr_.hpp @ 16:2665513ce2d3
Add boost headers
author | Chris Cannam |
---|---|
date | Tue, 05 Aug 2014 11:11:38 +0100 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
15:663ca0da4350 | 16:2665513ce2d3 |
---|---|
1 /////////////////////////////////////////////////////////////////////////////// | |
2 /// \file make_expr_.hpp | |
3 /// Contains definition of make_expr_\<\> class template. | |
4 // | |
5 // Copyright 2008 Eric Niebler. Distributed under the Boost | |
6 // Software License, Version 1.0. (See accompanying file | |
7 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) | |
8 template<typename Tag, typename Domain, typename Sequence, std::size_t Size> | |
9 struct unpack_expr_ | |
10 {}; | |
11 template<typename Domain, typename Sequence> | |
12 struct unpack_expr_<tag::terminal, Domain, Sequence, 1u> | |
13 { | |
14 typedef | |
15 typename add_const< | |
16 typename fusion::result_of::value_of< | |
17 typename fusion::result_of::begin<Sequence>::type | |
18 >::type | |
19 >::type | |
20 terminal_type; | |
21 typedef | |
22 typename proto::detail::protoify< | |
23 terminal_type | |
24 , Domain | |
25 >::result_type | |
26 type; | |
27 BOOST_FORCEINLINE | |
28 static type const call(Sequence const &sequence) | |
29 { | |
30 return proto::detail::protoify<terminal_type, Domain>()(fusion::at_c<0>(sequence)); | |
31 } | |
32 }; | |
33 template<typename Sequence> | |
34 struct unpack_expr_<tag::terminal, deduce_domain, Sequence, 1u> | |
35 : unpack_expr_<tag::terminal, default_domain, Sequence, 1u> | |
36 {}; | |
37 template<typename Tag, typename Domain, typename Sequence> | |
38 struct unpack_expr_<Tag, Domain, Sequence, 1> | |
39 { | |
40 typedef typename fusion::result_of::begin<Sequence const>::type fusion_iterator0; | |
41 typedef | |
42 list1< | |
43 typename detail::protoify< typename add_const< typename fusion::result_of::value_of< fusion_iterator0 >::type >::type , Domain >::result_type | |
44 > | |
45 proto_args; | |
46 typedef typename base_expr<Domain, Tag, proto_args>::type expr_type; | |
47 typedef typename Domain::proto_generator proto_generator; | |
48 typedef typename proto_generator::template result<proto_generator(expr_type)>::type type; | |
49 BOOST_FORCEINLINE | |
50 static type const call(Sequence const &sequence) | |
51 { | |
52 fusion_iterator0 it0 = fusion::begin(sequence); | |
53 expr_type const that = { | |
54 detail::protoify< typename add_const< typename fusion::result_of::value_of< fusion_iterator0 >::type >::type , Domain >()(*it0) | |
55 }; | |
56 return proto_generator()(that); | |
57 } | |
58 }; | |
59 template<typename Tag, typename Sequence> | |
60 struct unpack_expr_<Tag, deduce_domain, Sequence, 1> | |
61 { | |
62 typedef typename fusion::result_of::begin<Sequence const>::type fusion_iterator0; | |
63 typedef | |
64 unpack_expr_< | |
65 Tag | |
66 , typename deduce_domain1< | |
67 typename add_const< typename fusion::result_of::value_of< fusion_iterator0 >::type >::type | |
68 >::type | |
69 , Sequence | |
70 , 1 | |
71 > | |
72 other; | |
73 typedef typename other::type type; | |
74 BOOST_FORCEINLINE | |
75 static type const call(Sequence const &sequence) | |
76 { | |
77 return other::call(sequence); | |
78 } | |
79 }; | |
80 template<typename Tag, typename Domain, typename Sequence> | |
81 struct unpack_expr_<Tag, Domain, Sequence, 2> | |
82 { | |
83 typedef typename fusion::result_of::begin<Sequence const>::type fusion_iterator0; typedef typename fusion::result_of::next< fusion_iterator0>::type fusion_iterator1; | |
84 typedef | |
85 list2< | |
86 typename detail::protoify< typename add_const< typename fusion::result_of::value_of< fusion_iterator0 >::type >::type , Domain >::result_type , typename detail::protoify< typename add_const< typename fusion::result_of::value_of< fusion_iterator1 >::type >::type , Domain >::result_type | |
87 > | |
88 proto_args; | |
89 typedef typename base_expr<Domain, Tag, proto_args>::type expr_type; | |
90 typedef typename Domain::proto_generator proto_generator; | |
91 typedef typename proto_generator::template result<proto_generator(expr_type)>::type type; | |
92 BOOST_FORCEINLINE | |
93 static type const call(Sequence const &sequence) | |
94 { | |
95 fusion_iterator0 it0 = fusion::begin(sequence); fusion_iterator1 it1 = fusion::next(it0); | |
96 expr_type const that = { | |
97 detail::protoify< typename add_const< typename fusion::result_of::value_of< fusion_iterator0 >::type >::type , Domain >()(*it0) , detail::protoify< typename add_const< typename fusion::result_of::value_of< fusion_iterator1 >::type >::type , Domain >()(*it1) | |
98 }; | |
99 return proto_generator()(that); | |
100 } | |
101 }; | |
102 template<typename Tag, typename Sequence> | |
103 struct unpack_expr_<Tag, deduce_domain, Sequence, 2> | |
104 { | |
105 typedef typename fusion::result_of::begin<Sequence const>::type fusion_iterator0; typedef typename fusion::result_of::next< fusion_iterator0>::type fusion_iterator1; | |
106 typedef | |
107 unpack_expr_< | |
108 Tag | |
109 , typename deduce_domain2< | |
110 typename add_const< typename fusion::result_of::value_of< fusion_iterator0 >::type >::type , typename add_const< typename fusion::result_of::value_of< fusion_iterator1 >::type >::type | |
111 >::type | |
112 , Sequence | |
113 , 2 | |
114 > | |
115 other; | |
116 typedef typename other::type type; | |
117 BOOST_FORCEINLINE | |
118 static type const call(Sequence const &sequence) | |
119 { | |
120 return other::call(sequence); | |
121 } | |
122 }; | |
123 template<typename Tag, typename Domain, typename Sequence> | |
124 struct unpack_expr_<Tag, Domain, Sequence, 3> | |
125 { | |
126 typedef typename fusion::result_of::begin<Sequence const>::type fusion_iterator0; typedef typename fusion::result_of::next< fusion_iterator0>::type fusion_iterator1; typedef typename fusion::result_of::next< fusion_iterator1>::type fusion_iterator2; | |
127 typedef | |
128 list3< | |
129 typename detail::protoify< typename add_const< typename fusion::result_of::value_of< fusion_iterator0 >::type >::type , Domain >::result_type , typename detail::protoify< typename add_const< typename fusion::result_of::value_of< fusion_iterator1 >::type >::type , Domain >::result_type , typename detail::protoify< typename add_const< typename fusion::result_of::value_of< fusion_iterator2 >::type >::type , Domain >::result_type | |
130 > | |
131 proto_args; | |
132 typedef typename base_expr<Domain, Tag, proto_args>::type expr_type; | |
133 typedef typename Domain::proto_generator proto_generator; | |
134 typedef typename proto_generator::template result<proto_generator(expr_type)>::type type; | |
135 BOOST_FORCEINLINE | |
136 static type const call(Sequence const &sequence) | |
137 { | |
138 fusion_iterator0 it0 = fusion::begin(sequence); fusion_iterator1 it1 = fusion::next(it0); fusion_iterator2 it2 = fusion::next(it1); | |
139 expr_type const that = { | |
140 detail::protoify< typename add_const< typename fusion::result_of::value_of< fusion_iterator0 >::type >::type , Domain >()(*it0) , detail::protoify< typename add_const< typename fusion::result_of::value_of< fusion_iterator1 >::type >::type , Domain >()(*it1) , detail::protoify< typename add_const< typename fusion::result_of::value_of< fusion_iterator2 >::type >::type , Domain >()(*it2) | |
141 }; | |
142 return proto_generator()(that); | |
143 } | |
144 }; | |
145 template<typename Tag, typename Sequence> | |
146 struct unpack_expr_<Tag, deduce_domain, Sequence, 3> | |
147 { | |
148 typedef typename fusion::result_of::begin<Sequence const>::type fusion_iterator0; typedef typename fusion::result_of::next< fusion_iterator0>::type fusion_iterator1; typedef typename fusion::result_of::next< fusion_iterator1>::type fusion_iterator2; | |
149 typedef | |
150 unpack_expr_< | |
151 Tag | |
152 , typename deduce_domain3< | |
153 typename add_const< typename fusion::result_of::value_of< fusion_iterator0 >::type >::type , typename add_const< typename fusion::result_of::value_of< fusion_iterator1 >::type >::type , typename add_const< typename fusion::result_of::value_of< fusion_iterator2 >::type >::type | |
154 >::type | |
155 , Sequence | |
156 , 3 | |
157 > | |
158 other; | |
159 typedef typename other::type type; | |
160 BOOST_FORCEINLINE | |
161 static type const call(Sequence const &sequence) | |
162 { | |
163 return other::call(sequence); | |
164 } | |
165 }; | |
166 template<typename Tag, typename Domain, typename Sequence> | |
167 struct unpack_expr_<Tag, Domain, Sequence, 4> | |
168 { | |
169 typedef typename fusion::result_of::begin<Sequence const>::type fusion_iterator0; typedef typename fusion::result_of::next< fusion_iterator0>::type fusion_iterator1; typedef typename fusion::result_of::next< fusion_iterator1>::type fusion_iterator2; typedef typename fusion::result_of::next< fusion_iterator2>::type fusion_iterator3; | |
170 typedef | |
171 list4< | |
172 typename detail::protoify< typename add_const< typename fusion::result_of::value_of< fusion_iterator0 >::type >::type , Domain >::result_type , typename detail::protoify< typename add_const< typename fusion::result_of::value_of< fusion_iterator1 >::type >::type , Domain >::result_type , typename detail::protoify< typename add_const< typename fusion::result_of::value_of< fusion_iterator2 >::type >::type , Domain >::result_type , typename detail::protoify< typename add_const< typename fusion::result_of::value_of< fusion_iterator3 >::type >::type , Domain >::result_type | |
173 > | |
174 proto_args; | |
175 typedef typename base_expr<Domain, Tag, proto_args>::type expr_type; | |
176 typedef typename Domain::proto_generator proto_generator; | |
177 typedef typename proto_generator::template result<proto_generator(expr_type)>::type type; | |
178 BOOST_FORCEINLINE | |
179 static type const call(Sequence const &sequence) | |
180 { | |
181 fusion_iterator0 it0 = fusion::begin(sequence); fusion_iterator1 it1 = fusion::next(it0); fusion_iterator2 it2 = fusion::next(it1); fusion_iterator3 it3 = fusion::next(it2); | |
182 expr_type const that = { | |
183 detail::protoify< typename add_const< typename fusion::result_of::value_of< fusion_iterator0 >::type >::type , Domain >()(*it0) , detail::protoify< typename add_const< typename fusion::result_of::value_of< fusion_iterator1 >::type >::type , Domain >()(*it1) , detail::protoify< typename add_const< typename fusion::result_of::value_of< fusion_iterator2 >::type >::type , Domain >()(*it2) , detail::protoify< typename add_const< typename fusion::result_of::value_of< fusion_iterator3 >::type >::type , Domain >()(*it3) | |
184 }; | |
185 return proto_generator()(that); | |
186 } | |
187 }; | |
188 template<typename Tag, typename Sequence> | |
189 struct unpack_expr_<Tag, deduce_domain, Sequence, 4> | |
190 { | |
191 typedef typename fusion::result_of::begin<Sequence const>::type fusion_iterator0; typedef typename fusion::result_of::next< fusion_iterator0>::type fusion_iterator1; typedef typename fusion::result_of::next< fusion_iterator1>::type fusion_iterator2; typedef typename fusion::result_of::next< fusion_iterator2>::type fusion_iterator3; | |
192 typedef | |
193 unpack_expr_< | |
194 Tag | |
195 , typename deduce_domain4< | |
196 typename add_const< typename fusion::result_of::value_of< fusion_iterator0 >::type >::type , typename add_const< typename fusion::result_of::value_of< fusion_iterator1 >::type >::type , typename add_const< typename fusion::result_of::value_of< fusion_iterator2 >::type >::type , typename add_const< typename fusion::result_of::value_of< fusion_iterator3 >::type >::type | |
197 >::type | |
198 , Sequence | |
199 , 4 | |
200 > | |
201 other; | |
202 typedef typename other::type type; | |
203 BOOST_FORCEINLINE | |
204 static type const call(Sequence const &sequence) | |
205 { | |
206 return other::call(sequence); | |
207 } | |
208 }; | |
209 template<typename Tag, typename Domain, typename Sequence> | |
210 struct unpack_expr_<Tag, Domain, Sequence, 5> | |
211 { | |
212 typedef typename fusion::result_of::begin<Sequence const>::type fusion_iterator0; typedef typename fusion::result_of::next< fusion_iterator0>::type fusion_iterator1; typedef typename fusion::result_of::next< fusion_iterator1>::type fusion_iterator2; typedef typename fusion::result_of::next< fusion_iterator2>::type fusion_iterator3; typedef typename fusion::result_of::next< fusion_iterator3>::type fusion_iterator4; | |
213 typedef | |
214 list5< | |
215 typename detail::protoify< typename add_const< typename fusion::result_of::value_of< fusion_iterator0 >::type >::type , Domain >::result_type , typename detail::protoify< typename add_const< typename fusion::result_of::value_of< fusion_iterator1 >::type >::type , Domain >::result_type , typename detail::protoify< typename add_const< typename fusion::result_of::value_of< fusion_iterator2 >::type >::type , Domain >::result_type , typename detail::protoify< typename add_const< typename fusion::result_of::value_of< fusion_iterator3 >::type >::type , Domain >::result_type , typename detail::protoify< typename add_const< typename fusion::result_of::value_of< fusion_iterator4 >::type >::type , Domain >::result_type | |
216 > | |
217 proto_args; | |
218 typedef typename base_expr<Domain, Tag, proto_args>::type expr_type; | |
219 typedef typename Domain::proto_generator proto_generator; | |
220 typedef typename proto_generator::template result<proto_generator(expr_type)>::type type; | |
221 BOOST_FORCEINLINE | |
222 static type const call(Sequence const &sequence) | |
223 { | |
224 fusion_iterator0 it0 = fusion::begin(sequence); fusion_iterator1 it1 = fusion::next(it0); fusion_iterator2 it2 = fusion::next(it1); fusion_iterator3 it3 = fusion::next(it2); fusion_iterator4 it4 = fusion::next(it3); | |
225 expr_type const that = { | |
226 detail::protoify< typename add_const< typename fusion::result_of::value_of< fusion_iterator0 >::type >::type , Domain >()(*it0) , detail::protoify< typename add_const< typename fusion::result_of::value_of< fusion_iterator1 >::type >::type , Domain >()(*it1) , detail::protoify< typename add_const< typename fusion::result_of::value_of< fusion_iterator2 >::type >::type , Domain >()(*it2) , detail::protoify< typename add_const< typename fusion::result_of::value_of< fusion_iterator3 >::type >::type , Domain >()(*it3) , detail::protoify< typename add_const< typename fusion::result_of::value_of< fusion_iterator4 >::type >::type , Domain >()(*it4) | |
227 }; | |
228 return proto_generator()(that); | |
229 } | |
230 }; | |
231 template<typename Tag, typename Sequence> | |
232 struct unpack_expr_<Tag, deduce_domain, Sequence, 5> | |
233 { | |
234 typedef typename fusion::result_of::begin<Sequence const>::type fusion_iterator0; typedef typename fusion::result_of::next< fusion_iterator0>::type fusion_iterator1; typedef typename fusion::result_of::next< fusion_iterator1>::type fusion_iterator2; typedef typename fusion::result_of::next< fusion_iterator2>::type fusion_iterator3; typedef typename fusion::result_of::next< fusion_iterator3>::type fusion_iterator4; | |
235 typedef | |
236 unpack_expr_< | |
237 Tag | |
238 , typename deduce_domain5< | |
239 typename add_const< typename fusion::result_of::value_of< fusion_iterator0 >::type >::type , typename add_const< typename fusion::result_of::value_of< fusion_iterator1 >::type >::type , typename add_const< typename fusion::result_of::value_of< fusion_iterator2 >::type >::type , typename add_const< typename fusion::result_of::value_of< fusion_iterator3 >::type >::type , typename add_const< typename fusion::result_of::value_of< fusion_iterator4 >::type >::type | |
240 >::type | |
241 , Sequence | |
242 , 5 | |
243 > | |
244 other; | |
245 typedef typename other::type type; | |
246 BOOST_FORCEINLINE | |
247 static type const call(Sequence const &sequence) | |
248 { | |
249 return other::call(sequence); | |
250 } | |
251 }; | |
252 template<typename Tag, typename Domain, typename Sequence> | |
253 struct unpack_expr_<Tag, Domain, Sequence, 6> | |
254 { | |
255 typedef typename fusion::result_of::begin<Sequence const>::type fusion_iterator0; typedef typename fusion::result_of::next< fusion_iterator0>::type fusion_iterator1; typedef typename fusion::result_of::next< fusion_iterator1>::type fusion_iterator2; typedef typename fusion::result_of::next< fusion_iterator2>::type fusion_iterator3; typedef typename fusion::result_of::next< fusion_iterator3>::type fusion_iterator4; typedef typename fusion::result_of::next< fusion_iterator4>::type fusion_iterator5; | |
256 typedef | |
257 list6< | |
258 typename detail::protoify< typename add_const< typename fusion::result_of::value_of< fusion_iterator0 >::type >::type , Domain >::result_type , typename detail::protoify< typename add_const< typename fusion::result_of::value_of< fusion_iterator1 >::type >::type , Domain >::result_type , typename detail::protoify< typename add_const< typename fusion::result_of::value_of< fusion_iterator2 >::type >::type , Domain >::result_type , typename detail::protoify< typename add_const< typename fusion::result_of::value_of< fusion_iterator3 >::type >::type , Domain >::result_type , typename detail::protoify< typename add_const< typename fusion::result_of::value_of< fusion_iterator4 >::type >::type , Domain >::result_type , typename detail::protoify< typename add_const< typename fusion::result_of::value_of< fusion_iterator5 >::type >::type , Domain >::result_type | |
259 > | |
260 proto_args; | |
261 typedef typename base_expr<Domain, Tag, proto_args>::type expr_type; | |
262 typedef typename Domain::proto_generator proto_generator; | |
263 typedef typename proto_generator::template result<proto_generator(expr_type)>::type type; | |
264 BOOST_FORCEINLINE | |
265 static type const call(Sequence const &sequence) | |
266 { | |
267 fusion_iterator0 it0 = fusion::begin(sequence); fusion_iterator1 it1 = fusion::next(it0); fusion_iterator2 it2 = fusion::next(it1); fusion_iterator3 it3 = fusion::next(it2); fusion_iterator4 it4 = fusion::next(it3); fusion_iterator5 it5 = fusion::next(it4); | |
268 expr_type const that = { | |
269 detail::protoify< typename add_const< typename fusion::result_of::value_of< fusion_iterator0 >::type >::type , Domain >()(*it0) , detail::protoify< typename add_const< typename fusion::result_of::value_of< fusion_iterator1 >::type >::type , Domain >()(*it1) , detail::protoify< typename add_const< typename fusion::result_of::value_of< fusion_iterator2 >::type >::type , Domain >()(*it2) , detail::protoify< typename add_const< typename fusion::result_of::value_of< fusion_iterator3 >::type >::type , Domain >()(*it3) , detail::protoify< typename add_const< typename fusion::result_of::value_of< fusion_iterator4 >::type >::type , Domain >()(*it4) , detail::protoify< typename add_const< typename fusion::result_of::value_of< fusion_iterator5 >::type >::type , Domain >()(*it5) | |
270 }; | |
271 return proto_generator()(that); | |
272 } | |
273 }; | |
274 template<typename Tag, typename Sequence> | |
275 struct unpack_expr_<Tag, deduce_domain, Sequence, 6> | |
276 { | |
277 typedef typename fusion::result_of::begin<Sequence const>::type fusion_iterator0; typedef typename fusion::result_of::next< fusion_iterator0>::type fusion_iterator1; typedef typename fusion::result_of::next< fusion_iterator1>::type fusion_iterator2; typedef typename fusion::result_of::next< fusion_iterator2>::type fusion_iterator3; typedef typename fusion::result_of::next< fusion_iterator3>::type fusion_iterator4; typedef typename fusion::result_of::next< fusion_iterator4>::type fusion_iterator5; | |
278 typedef | |
279 unpack_expr_< | |
280 Tag | |
281 , typename deduce_domain6< | |
282 typename add_const< typename fusion::result_of::value_of< fusion_iterator0 >::type >::type , typename add_const< typename fusion::result_of::value_of< fusion_iterator1 >::type >::type , typename add_const< typename fusion::result_of::value_of< fusion_iterator2 >::type >::type , typename add_const< typename fusion::result_of::value_of< fusion_iterator3 >::type >::type , typename add_const< typename fusion::result_of::value_of< fusion_iterator4 >::type >::type , typename add_const< typename fusion::result_of::value_of< fusion_iterator5 >::type >::type | |
283 >::type | |
284 , Sequence | |
285 , 6 | |
286 > | |
287 other; | |
288 typedef typename other::type type; | |
289 BOOST_FORCEINLINE | |
290 static type const call(Sequence const &sequence) | |
291 { | |
292 return other::call(sequence); | |
293 } | |
294 }; | |
295 template<typename Tag, typename Domain, typename Sequence> | |
296 struct unpack_expr_<Tag, Domain, Sequence, 7> | |
297 { | |
298 typedef typename fusion::result_of::begin<Sequence const>::type fusion_iterator0; typedef typename fusion::result_of::next< fusion_iterator0>::type fusion_iterator1; typedef typename fusion::result_of::next< fusion_iterator1>::type fusion_iterator2; typedef typename fusion::result_of::next< fusion_iterator2>::type fusion_iterator3; typedef typename fusion::result_of::next< fusion_iterator3>::type fusion_iterator4; typedef typename fusion::result_of::next< fusion_iterator4>::type fusion_iterator5; typedef typename fusion::result_of::next< fusion_iterator5>::type fusion_iterator6; | |
299 typedef | |
300 list7< | |
301 typename detail::protoify< typename add_const< typename fusion::result_of::value_of< fusion_iterator0 >::type >::type , Domain >::result_type , typename detail::protoify< typename add_const< typename fusion::result_of::value_of< fusion_iterator1 >::type >::type , Domain >::result_type , typename detail::protoify< typename add_const< typename fusion::result_of::value_of< fusion_iterator2 >::type >::type , Domain >::result_type , typename detail::protoify< typename add_const< typename fusion::result_of::value_of< fusion_iterator3 >::type >::type , Domain >::result_type , typename detail::protoify< typename add_const< typename fusion::result_of::value_of< fusion_iterator4 >::type >::type , Domain >::result_type , typename detail::protoify< typename add_const< typename fusion::result_of::value_of< fusion_iterator5 >::type >::type , Domain >::result_type , typename detail::protoify< typename add_const< typename fusion::result_of::value_of< fusion_iterator6 >::type >::type , Domain >::result_type | |
302 > | |
303 proto_args; | |
304 typedef typename base_expr<Domain, Tag, proto_args>::type expr_type; | |
305 typedef typename Domain::proto_generator proto_generator; | |
306 typedef typename proto_generator::template result<proto_generator(expr_type)>::type type; | |
307 BOOST_FORCEINLINE | |
308 static type const call(Sequence const &sequence) | |
309 { | |
310 fusion_iterator0 it0 = fusion::begin(sequence); fusion_iterator1 it1 = fusion::next(it0); fusion_iterator2 it2 = fusion::next(it1); fusion_iterator3 it3 = fusion::next(it2); fusion_iterator4 it4 = fusion::next(it3); fusion_iterator5 it5 = fusion::next(it4); fusion_iterator6 it6 = fusion::next(it5); | |
311 expr_type const that = { | |
312 detail::protoify< typename add_const< typename fusion::result_of::value_of< fusion_iterator0 >::type >::type , Domain >()(*it0) , detail::protoify< typename add_const< typename fusion::result_of::value_of< fusion_iterator1 >::type >::type , Domain >()(*it1) , detail::protoify< typename add_const< typename fusion::result_of::value_of< fusion_iterator2 >::type >::type , Domain >()(*it2) , detail::protoify< typename add_const< typename fusion::result_of::value_of< fusion_iterator3 >::type >::type , Domain >()(*it3) , detail::protoify< typename add_const< typename fusion::result_of::value_of< fusion_iterator4 >::type >::type , Domain >()(*it4) , detail::protoify< typename add_const< typename fusion::result_of::value_of< fusion_iterator5 >::type >::type , Domain >()(*it5) , detail::protoify< typename add_const< typename fusion::result_of::value_of< fusion_iterator6 >::type >::type , Domain >()(*it6) | |
313 }; | |
314 return proto_generator()(that); | |
315 } | |
316 }; | |
317 template<typename Tag, typename Sequence> | |
318 struct unpack_expr_<Tag, deduce_domain, Sequence, 7> | |
319 { | |
320 typedef typename fusion::result_of::begin<Sequence const>::type fusion_iterator0; typedef typename fusion::result_of::next< fusion_iterator0>::type fusion_iterator1; typedef typename fusion::result_of::next< fusion_iterator1>::type fusion_iterator2; typedef typename fusion::result_of::next< fusion_iterator2>::type fusion_iterator3; typedef typename fusion::result_of::next< fusion_iterator3>::type fusion_iterator4; typedef typename fusion::result_of::next< fusion_iterator4>::type fusion_iterator5; typedef typename fusion::result_of::next< fusion_iterator5>::type fusion_iterator6; | |
321 typedef | |
322 unpack_expr_< | |
323 Tag | |
324 , typename deduce_domain7< | |
325 typename add_const< typename fusion::result_of::value_of< fusion_iterator0 >::type >::type , typename add_const< typename fusion::result_of::value_of< fusion_iterator1 >::type >::type , typename add_const< typename fusion::result_of::value_of< fusion_iterator2 >::type >::type , typename add_const< typename fusion::result_of::value_of< fusion_iterator3 >::type >::type , typename add_const< typename fusion::result_of::value_of< fusion_iterator4 >::type >::type , typename add_const< typename fusion::result_of::value_of< fusion_iterator5 >::type >::type , typename add_const< typename fusion::result_of::value_of< fusion_iterator6 >::type >::type | |
326 >::type | |
327 , Sequence | |
328 , 7 | |
329 > | |
330 other; | |
331 typedef typename other::type type; | |
332 BOOST_FORCEINLINE | |
333 static type const call(Sequence const &sequence) | |
334 { | |
335 return other::call(sequence); | |
336 } | |
337 }; | |
338 template<typename Tag, typename Domain, typename Sequence> | |
339 struct unpack_expr_<Tag, Domain, Sequence, 8> | |
340 { | |
341 typedef typename fusion::result_of::begin<Sequence const>::type fusion_iterator0; typedef typename fusion::result_of::next< fusion_iterator0>::type fusion_iterator1; typedef typename fusion::result_of::next< fusion_iterator1>::type fusion_iterator2; typedef typename fusion::result_of::next< fusion_iterator2>::type fusion_iterator3; typedef typename fusion::result_of::next< fusion_iterator3>::type fusion_iterator4; typedef typename fusion::result_of::next< fusion_iterator4>::type fusion_iterator5; typedef typename fusion::result_of::next< fusion_iterator5>::type fusion_iterator6; typedef typename fusion::result_of::next< fusion_iterator6>::type fusion_iterator7; | |
342 typedef | |
343 list8< | |
344 typename detail::protoify< typename add_const< typename fusion::result_of::value_of< fusion_iterator0 >::type >::type , Domain >::result_type , typename detail::protoify< typename add_const< typename fusion::result_of::value_of< fusion_iterator1 >::type >::type , Domain >::result_type , typename detail::protoify< typename add_const< typename fusion::result_of::value_of< fusion_iterator2 >::type >::type , Domain >::result_type , typename detail::protoify< typename add_const< typename fusion::result_of::value_of< fusion_iterator3 >::type >::type , Domain >::result_type , typename detail::protoify< typename add_const< typename fusion::result_of::value_of< fusion_iterator4 >::type >::type , Domain >::result_type , typename detail::protoify< typename add_const< typename fusion::result_of::value_of< fusion_iterator5 >::type >::type , Domain >::result_type , typename detail::protoify< typename add_const< typename fusion::result_of::value_of< fusion_iterator6 >::type >::type , Domain >::result_type , typename detail::protoify< typename add_const< typename fusion::result_of::value_of< fusion_iterator7 >::type >::type , Domain >::result_type | |
345 > | |
346 proto_args; | |
347 typedef typename base_expr<Domain, Tag, proto_args>::type expr_type; | |
348 typedef typename Domain::proto_generator proto_generator; | |
349 typedef typename proto_generator::template result<proto_generator(expr_type)>::type type; | |
350 BOOST_FORCEINLINE | |
351 static type const call(Sequence const &sequence) | |
352 { | |
353 fusion_iterator0 it0 = fusion::begin(sequence); fusion_iterator1 it1 = fusion::next(it0); fusion_iterator2 it2 = fusion::next(it1); fusion_iterator3 it3 = fusion::next(it2); fusion_iterator4 it4 = fusion::next(it3); fusion_iterator5 it5 = fusion::next(it4); fusion_iterator6 it6 = fusion::next(it5); fusion_iterator7 it7 = fusion::next(it6); | |
354 expr_type const that = { | |
355 detail::protoify< typename add_const< typename fusion::result_of::value_of< fusion_iterator0 >::type >::type , Domain >()(*it0) , detail::protoify< typename add_const< typename fusion::result_of::value_of< fusion_iterator1 >::type >::type , Domain >()(*it1) , detail::protoify< typename add_const< typename fusion::result_of::value_of< fusion_iterator2 >::type >::type , Domain >()(*it2) , detail::protoify< typename add_const< typename fusion::result_of::value_of< fusion_iterator3 >::type >::type , Domain >()(*it3) , detail::protoify< typename add_const< typename fusion::result_of::value_of< fusion_iterator4 >::type >::type , Domain >()(*it4) , detail::protoify< typename add_const< typename fusion::result_of::value_of< fusion_iterator5 >::type >::type , Domain >()(*it5) , detail::protoify< typename add_const< typename fusion::result_of::value_of< fusion_iterator6 >::type >::type , Domain >()(*it6) , detail::protoify< typename add_const< typename fusion::result_of::value_of< fusion_iterator7 >::type >::type , Domain >()(*it7) | |
356 }; | |
357 return proto_generator()(that); | |
358 } | |
359 }; | |
360 template<typename Tag, typename Sequence> | |
361 struct unpack_expr_<Tag, deduce_domain, Sequence, 8> | |
362 { | |
363 typedef typename fusion::result_of::begin<Sequence const>::type fusion_iterator0; typedef typename fusion::result_of::next< fusion_iterator0>::type fusion_iterator1; typedef typename fusion::result_of::next< fusion_iterator1>::type fusion_iterator2; typedef typename fusion::result_of::next< fusion_iterator2>::type fusion_iterator3; typedef typename fusion::result_of::next< fusion_iterator3>::type fusion_iterator4; typedef typename fusion::result_of::next< fusion_iterator4>::type fusion_iterator5; typedef typename fusion::result_of::next< fusion_iterator5>::type fusion_iterator6; typedef typename fusion::result_of::next< fusion_iterator6>::type fusion_iterator7; | |
364 typedef | |
365 unpack_expr_< | |
366 Tag | |
367 , typename deduce_domain8< | |
368 typename add_const< typename fusion::result_of::value_of< fusion_iterator0 >::type >::type , typename add_const< typename fusion::result_of::value_of< fusion_iterator1 >::type >::type , typename add_const< typename fusion::result_of::value_of< fusion_iterator2 >::type >::type , typename add_const< typename fusion::result_of::value_of< fusion_iterator3 >::type >::type , typename add_const< typename fusion::result_of::value_of< fusion_iterator4 >::type >::type , typename add_const< typename fusion::result_of::value_of< fusion_iterator5 >::type >::type , typename add_const< typename fusion::result_of::value_of< fusion_iterator6 >::type >::type , typename add_const< typename fusion::result_of::value_of< fusion_iterator7 >::type >::type | |
369 >::type | |
370 , Sequence | |
371 , 8 | |
372 > | |
373 other; | |
374 typedef typename other::type type; | |
375 BOOST_FORCEINLINE | |
376 static type const call(Sequence const &sequence) | |
377 { | |
378 return other::call(sequence); | |
379 } | |
380 }; | |
381 template<typename Tag, typename Domain, typename Sequence> | |
382 struct unpack_expr_<Tag, Domain, Sequence, 9> | |
383 { | |
384 typedef typename fusion::result_of::begin<Sequence const>::type fusion_iterator0; typedef typename fusion::result_of::next< fusion_iterator0>::type fusion_iterator1; typedef typename fusion::result_of::next< fusion_iterator1>::type fusion_iterator2; typedef typename fusion::result_of::next< fusion_iterator2>::type fusion_iterator3; typedef typename fusion::result_of::next< fusion_iterator3>::type fusion_iterator4; typedef typename fusion::result_of::next< fusion_iterator4>::type fusion_iterator5; typedef typename fusion::result_of::next< fusion_iterator5>::type fusion_iterator6; typedef typename fusion::result_of::next< fusion_iterator6>::type fusion_iterator7; typedef typename fusion::result_of::next< fusion_iterator7>::type fusion_iterator8; | |
385 typedef | |
386 list9< | |
387 typename detail::protoify< typename add_const< typename fusion::result_of::value_of< fusion_iterator0 >::type >::type , Domain >::result_type , typename detail::protoify< typename add_const< typename fusion::result_of::value_of< fusion_iterator1 >::type >::type , Domain >::result_type , typename detail::protoify< typename add_const< typename fusion::result_of::value_of< fusion_iterator2 >::type >::type , Domain >::result_type , typename detail::protoify< typename add_const< typename fusion::result_of::value_of< fusion_iterator3 >::type >::type , Domain >::result_type , typename detail::protoify< typename add_const< typename fusion::result_of::value_of< fusion_iterator4 >::type >::type , Domain >::result_type , typename detail::protoify< typename add_const< typename fusion::result_of::value_of< fusion_iterator5 >::type >::type , Domain >::result_type , typename detail::protoify< typename add_const< typename fusion::result_of::value_of< fusion_iterator6 >::type >::type , Domain >::result_type , typename detail::protoify< typename add_const< typename fusion::result_of::value_of< fusion_iterator7 >::type >::type , Domain >::result_type , typename detail::protoify< typename add_const< typename fusion::result_of::value_of< fusion_iterator8 >::type >::type , Domain >::result_type | |
388 > | |
389 proto_args; | |
390 typedef typename base_expr<Domain, Tag, proto_args>::type expr_type; | |
391 typedef typename Domain::proto_generator proto_generator; | |
392 typedef typename proto_generator::template result<proto_generator(expr_type)>::type type; | |
393 BOOST_FORCEINLINE | |
394 static type const call(Sequence const &sequence) | |
395 { | |
396 fusion_iterator0 it0 = fusion::begin(sequence); fusion_iterator1 it1 = fusion::next(it0); fusion_iterator2 it2 = fusion::next(it1); fusion_iterator3 it3 = fusion::next(it2); fusion_iterator4 it4 = fusion::next(it3); fusion_iterator5 it5 = fusion::next(it4); fusion_iterator6 it6 = fusion::next(it5); fusion_iterator7 it7 = fusion::next(it6); fusion_iterator8 it8 = fusion::next(it7); | |
397 expr_type const that = { | |
398 detail::protoify< typename add_const< typename fusion::result_of::value_of< fusion_iterator0 >::type >::type , Domain >()(*it0) , detail::protoify< typename add_const< typename fusion::result_of::value_of< fusion_iterator1 >::type >::type , Domain >()(*it1) , detail::protoify< typename add_const< typename fusion::result_of::value_of< fusion_iterator2 >::type >::type , Domain >()(*it2) , detail::protoify< typename add_const< typename fusion::result_of::value_of< fusion_iterator3 >::type >::type , Domain >()(*it3) , detail::protoify< typename add_const< typename fusion::result_of::value_of< fusion_iterator4 >::type >::type , Domain >()(*it4) , detail::protoify< typename add_const< typename fusion::result_of::value_of< fusion_iterator5 >::type >::type , Domain >()(*it5) , detail::protoify< typename add_const< typename fusion::result_of::value_of< fusion_iterator6 >::type >::type , Domain >()(*it6) , detail::protoify< typename add_const< typename fusion::result_of::value_of< fusion_iterator7 >::type >::type , Domain >()(*it7) , detail::protoify< typename add_const< typename fusion::result_of::value_of< fusion_iterator8 >::type >::type , Domain >()(*it8) | |
399 }; | |
400 return proto_generator()(that); | |
401 } | |
402 }; | |
403 template<typename Tag, typename Sequence> | |
404 struct unpack_expr_<Tag, deduce_domain, Sequence, 9> | |
405 { | |
406 typedef typename fusion::result_of::begin<Sequence const>::type fusion_iterator0; typedef typename fusion::result_of::next< fusion_iterator0>::type fusion_iterator1; typedef typename fusion::result_of::next< fusion_iterator1>::type fusion_iterator2; typedef typename fusion::result_of::next< fusion_iterator2>::type fusion_iterator3; typedef typename fusion::result_of::next< fusion_iterator3>::type fusion_iterator4; typedef typename fusion::result_of::next< fusion_iterator4>::type fusion_iterator5; typedef typename fusion::result_of::next< fusion_iterator5>::type fusion_iterator6; typedef typename fusion::result_of::next< fusion_iterator6>::type fusion_iterator7; typedef typename fusion::result_of::next< fusion_iterator7>::type fusion_iterator8; | |
407 typedef | |
408 unpack_expr_< | |
409 Tag | |
410 , typename deduce_domain9< | |
411 typename add_const< typename fusion::result_of::value_of< fusion_iterator0 >::type >::type , typename add_const< typename fusion::result_of::value_of< fusion_iterator1 >::type >::type , typename add_const< typename fusion::result_of::value_of< fusion_iterator2 >::type >::type , typename add_const< typename fusion::result_of::value_of< fusion_iterator3 >::type >::type , typename add_const< typename fusion::result_of::value_of< fusion_iterator4 >::type >::type , typename add_const< typename fusion::result_of::value_of< fusion_iterator5 >::type >::type , typename add_const< typename fusion::result_of::value_of< fusion_iterator6 >::type >::type , typename add_const< typename fusion::result_of::value_of< fusion_iterator7 >::type >::type , typename add_const< typename fusion::result_of::value_of< fusion_iterator8 >::type >::type | |
412 >::type | |
413 , Sequence | |
414 , 9 | |
415 > | |
416 other; | |
417 typedef typename other::type type; | |
418 BOOST_FORCEINLINE | |
419 static type const call(Sequence const &sequence) | |
420 { | |
421 return other::call(sequence); | |
422 } | |
423 }; | |
424 template<typename Tag, typename Domain, typename Sequence> | |
425 struct unpack_expr_<Tag, Domain, Sequence, 10> | |
426 { | |
427 typedef typename fusion::result_of::begin<Sequence const>::type fusion_iterator0; typedef typename fusion::result_of::next< fusion_iterator0>::type fusion_iterator1; typedef typename fusion::result_of::next< fusion_iterator1>::type fusion_iterator2; typedef typename fusion::result_of::next< fusion_iterator2>::type fusion_iterator3; typedef typename fusion::result_of::next< fusion_iterator3>::type fusion_iterator4; typedef typename fusion::result_of::next< fusion_iterator4>::type fusion_iterator5; typedef typename fusion::result_of::next< fusion_iterator5>::type fusion_iterator6; typedef typename fusion::result_of::next< fusion_iterator6>::type fusion_iterator7; typedef typename fusion::result_of::next< fusion_iterator7>::type fusion_iterator8; typedef typename fusion::result_of::next< fusion_iterator8>::type fusion_iterator9; | |
428 typedef | |
429 list10< | |
430 typename detail::protoify< typename add_const< typename fusion::result_of::value_of< fusion_iterator0 >::type >::type , Domain >::result_type , typename detail::protoify< typename add_const< typename fusion::result_of::value_of< fusion_iterator1 >::type >::type , Domain >::result_type , typename detail::protoify< typename add_const< typename fusion::result_of::value_of< fusion_iterator2 >::type >::type , Domain >::result_type , typename detail::protoify< typename add_const< typename fusion::result_of::value_of< fusion_iterator3 >::type >::type , Domain >::result_type , typename detail::protoify< typename add_const< typename fusion::result_of::value_of< fusion_iterator4 >::type >::type , Domain >::result_type , typename detail::protoify< typename add_const< typename fusion::result_of::value_of< fusion_iterator5 >::type >::type , Domain >::result_type , typename detail::protoify< typename add_const< typename fusion::result_of::value_of< fusion_iterator6 >::type >::type , Domain >::result_type , typename detail::protoify< typename add_const< typename fusion::result_of::value_of< fusion_iterator7 >::type >::type , Domain >::result_type , typename detail::protoify< typename add_const< typename fusion::result_of::value_of< fusion_iterator8 >::type >::type , Domain >::result_type , typename detail::protoify< typename add_const< typename fusion::result_of::value_of< fusion_iterator9 >::type >::type , Domain >::result_type | |
431 > | |
432 proto_args; | |
433 typedef typename base_expr<Domain, Tag, proto_args>::type expr_type; | |
434 typedef typename Domain::proto_generator proto_generator; | |
435 typedef typename proto_generator::template result<proto_generator(expr_type)>::type type; | |
436 BOOST_FORCEINLINE | |
437 static type const call(Sequence const &sequence) | |
438 { | |
439 fusion_iterator0 it0 = fusion::begin(sequence); fusion_iterator1 it1 = fusion::next(it0); fusion_iterator2 it2 = fusion::next(it1); fusion_iterator3 it3 = fusion::next(it2); fusion_iterator4 it4 = fusion::next(it3); fusion_iterator5 it5 = fusion::next(it4); fusion_iterator6 it6 = fusion::next(it5); fusion_iterator7 it7 = fusion::next(it6); fusion_iterator8 it8 = fusion::next(it7); fusion_iterator9 it9 = fusion::next(it8); | |
440 expr_type const that = { | |
441 detail::protoify< typename add_const< typename fusion::result_of::value_of< fusion_iterator0 >::type >::type , Domain >()(*it0) , detail::protoify< typename add_const< typename fusion::result_of::value_of< fusion_iterator1 >::type >::type , Domain >()(*it1) , detail::protoify< typename add_const< typename fusion::result_of::value_of< fusion_iterator2 >::type >::type , Domain >()(*it2) , detail::protoify< typename add_const< typename fusion::result_of::value_of< fusion_iterator3 >::type >::type , Domain >()(*it3) , detail::protoify< typename add_const< typename fusion::result_of::value_of< fusion_iterator4 >::type >::type , Domain >()(*it4) , detail::protoify< typename add_const< typename fusion::result_of::value_of< fusion_iterator5 >::type >::type , Domain >()(*it5) , detail::protoify< typename add_const< typename fusion::result_of::value_of< fusion_iterator6 >::type >::type , Domain >()(*it6) , detail::protoify< typename add_const< typename fusion::result_of::value_of< fusion_iterator7 >::type >::type , Domain >()(*it7) , detail::protoify< typename add_const< typename fusion::result_of::value_of< fusion_iterator8 >::type >::type , Domain >()(*it8) , detail::protoify< typename add_const< typename fusion::result_of::value_of< fusion_iterator9 >::type >::type , Domain >()(*it9) | |
442 }; | |
443 return proto_generator()(that); | |
444 } | |
445 }; | |
446 template<typename Tag, typename Sequence> | |
447 struct unpack_expr_<Tag, deduce_domain, Sequence, 10> | |
448 { | |
449 typedef typename fusion::result_of::begin<Sequence const>::type fusion_iterator0; typedef typename fusion::result_of::next< fusion_iterator0>::type fusion_iterator1; typedef typename fusion::result_of::next< fusion_iterator1>::type fusion_iterator2; typedef typename fusion::result_of::next< fusion_iterator2>::type fusion_iterator3; typedef typename fusion::result_of::next< fusion_iterator3>::type fusion_iterator4; typedef typename fusion::result_of::next< fusion_iterator4>::type fusion_iterator5; typedef typename fusion::result_of::next< fusion_iterator5>::type fusion_iterator6; typedef typename fusion::result_of::next< fusion_iterator6>::type fusion_iterator7; typedef typename fusion::result_of::next< fusion_iterator7>::type fusion_iterator8; typedef typename fusion::result_of::next< fusion_iterator8>::type fusion_iterator9; | |
450 typedef | |
451 unpack_expr_< | |
452 Tag | |
453 , typename deduce_domain10< | |
454 typename add_const< typename fusion::result_of::value_of< fusion_iterator0 >::type >::type , typename add_const< typename fusion::result_of::value_of< fusion_iterator1 >::type >::type , typename add_const< typename fusion::result_of::value_of< fusion_iterator2 >::type >::type , typename add_const< typename fusion::result_of::value_of< fusion_iterator3 >::type >::type , typename add_const< typename fusion::result_of::value_of< fusion_iterator4 >::type >::type , typename add_const< typename fusion::result_of::value_of< fusion_iterator5 >::type >::type , typename add_const< typename fusion::result_of::value_of< fusion_iterator6 >::type >::type , typename add_const< typename fusion::result_of::value_of< fusion_iterator7 >::type >::type , typename add_const< typename fusion::result_of::value_of< fusion_iterator8 >::type >::type , typename add_const< typename fusion::result_of::value_of< fusion_iterator9 >::type >::type | |
455 >::type | |
456 , Sequence | |
457 , 10 | |
458 > | |
459 other; | |
460 typedef typename other::type type; | |
461 BOOST_FORCEINLINE | |
462 static type const call(Sequence const &sequence) | |
463 { | |
464 return other::call(sequence); | |
465 } | |
466 }; |