Mercurial > hg > vamp-build-and-test
comparison DEPENDENCIES/generic/include/boost/proto/detail/preprocessed/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 expr.hpp | |
3 /// Contains definition of 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 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
25 | |
26 | |
27 | |
28 | |
29 | |
30 | |
31 | |
32 | |
33 | |
34 | |
35 | |
36 template<typename Tag, typename Arg0> | |
37 struct expr<Tag, term<Arg0>, 0> | |
38 { | |
39 typedef Tag proto_tag; | |
40 static const long proto_arity_c = 0; | |
41 typedef mpl::long_<0 > proto_arity; | |
42 typedef expr proto_base_expr; | |
43 typedef term<Arg0> proto_args; | |
44 typedef basic_expr<Tag, proto_args, 0 > proto_grammar; | |
45 typedef default_domain proto_domain; | |
46 typedef default_generator proto_generator; | |
47 typedef proto::tag::proto_expr<Tag, proto_domain> fusion_tag; | |
48 typedef expr proto_derived_expr; | |
49 typedef void proto_is_expr_; | |
50 typedef Arg0 proto_child0; proto_child0 child0; | |
51 typedef void proto_child1; typedef void proto_child2; typedef void proto_child3; typedef void proto_child4; typedef void proto_child5; typedef void proto_child6; typedef void proto_child7; typedef void proto_child8; typedef void proto_child9; | |
52 | |
53 | |
54 BOOST_FORCEINLINE | |
55 expr const &proto_base() const | |
56 { | |
57 return *this; | |
58 } | |
59 | |
60 | |
61 BOOST_FORCEINLINE | |
62 expr &proto_base() | |
63 { | |
64 return *this; | |
65 } | |
66 | |
67 | |
68 | |
69 template<typename A0> | |
70 BOOST_FORCEINLINE | |
71 static expr const make(A0 &a0) | |
72 { | |
73 return detail::make_terminal(a0, static_cast<expr *>(0), static_cast<proto_args *>(0)); | |
74 } | |
75 | |
76 | |
77 template<typename A0> | |
78 BOOST_FORCEINLINE | |
79 static expr const make(A0 const &a0) | |
80 { | |
81 return detail::make_terminal(a0, static_cast<expr *>(0), static_cast<proto_args *>(0)); | |
82 } | |
83 | |
84 | |
85 typedef detail::not_a_valid_type address_of_hack_type_; | |
86 | |
87 | |
88 | |
89 | |
90 BOOST_FORCEINLINE | |
91 proto::expr< | |
92 proto::tag::assign | |
93 , list2<expr &, expr const &> | |
94 , 2 | |
95 > const | |
96 operator =(expr const &a) | |
97 { | |
98 proto::expr< | |
99 proto::tag::assign | |
100 , list2<expr &, expr const &> | |
101 , 2 | |
102 > that = {*this, a}; | |
103 return that; | |
104 } | |
105 | |
106 | |
107 | |
108 | |
109 template<typename A> | |
110 BOOST_FORCEINLINE | |
111 proto::expr< | |
112 proto::tag::assign | |
113 , list2<expr const &, typename result_of::as_child<A>::type> | |
114 , 2 | |
115 > const | |
116 operator =(A &a) const | |
117 { | |
118 proto::expr< | |
119 proto::tag::assign | |
120 , list2<expr const &, typename result_of::as_child<A>::type> | |
121 , 2 | |
122 > that = {*this, proto::as_child(a)}; | |
123 return that; | |
124 } | |
125 | |
126 | |
127 template<typename A> | |
128 BOOST_FORCEINLINE | |
129 proto::expr< | |
130 proto::tag::assign | |
131 , list2<expr const &, typename result_of::as_child<A const>::type> | |
132 , 2 | |
133 > const | |
134 operator =(A const &a) const | |
135 { | |
136 proto::expr< | |
137 proto::tag::assign | |
138 , list2<expr const &, typename result_of::as_child<A const>::type> | |
139 , 2 | |
140 > that = {*this, proto::as_child(a)}; | |
141 return that; | |
142 } | |
143 | |
144 | |
145 template<typename A> | |
146 BOOST_FORCEINLINE | |
147 proto::expr< | |
148 proto::tag::assign | |
149 , list2<expr &, typename result_of::as_child<A>::type> | |
150 , 2 | |
151 > const | |
152 operator =(A &a) | |
153 { | |
154 proto::expr< | |
155 proto::tag::assign | |
156 , list2<expr &, typename result_of::as_child<A>::type> | |
157 , 2 | |
158 > that = {*this, proto::as_child(a)}; | |
159 return that; | |
160 } | |
161 | |
162 | |
163 template<typename A> | |
164 BOOST_FORCEINLINE | |
165 proto::expr< | |
166 proto::tag::assign | |
167 , list2<expr &, typename result_of::as_child<A const>::type> | |
168 , 2 | |
169 > const | |
170 operator =(A const &a) | |
171 { | |
172 proto::expr< | |
173 proto::tag::assign | |
174 , list2<expr &, typename result_of::as_child<A const>::type> | |
175 , 2 | |
176 > that = {*this, proto::as_child(a)}; | |
177 return that; | |
178 } | |
179 | |
180 | |
181 | |
182 | |
183 template<typename A> | |
184 BOOST_FORCEINLINE | |
185 proto::expr< | |
186 proto::tag::subscript | |
187 , list2<expr const &, typename result_of::as_child<A>::type> | |
188 , 2 | |
189 > const | |
190 operator [](A &a) const | |
191 { | |
192 proto::expr< | |
193 proto::tag::subscript | |
194 , list2<expr const &, typename result_of::as_child<A>::type> | |
195 , 2 | |
196 > that = {*this, proto::as_child(a)}; | |
197 return that; | |
198 } | |
199 | |
200 | |
201 template<typename A> | |
202 BOOST_FORCEINLINE | |
203 proto::expr< | |
204 proto::tag::subscript | |
205 , list2<expr const &, typename result_of::as_child<A const>::type> | |
206 , 2 | |
207 > const | |
208 operator [](A const &a) const | |
209 { | |
210 proto::expr< | |
211 proto::tag::subscript | |
212 , list2<expr const &, typename result_of::as_child<A const>::type> | |
213 , 2 | |
214 > that = {*this, proto::as_child(a)}; | |
215 return that; | |
216 } | |
217 | |
218 | |
219 template<typename A> | |
220 BOOST_FORCEINLINE | |
221 proto::expr< | |
222 proto::tag::subscript | |
223 , list2<expr &, typename result_of::as_child<A>::type> | |
224 , 2 | |
225 > const | |
226 operator [](A &a) | |
227 { | |
228 proto::expr< | |
229 proto::tag::subscript | |
230 , list2<expr &, typename result_of::as_child<A>::type> | |
231 , 2 | |
232 > that = {*this, proto::as_child(a)}; | |
233 return that; | |
234 } | |
235 | |
236 | |
237 template<typename A> | |
238 BOOST_FORCEINLINE | |
239 proto::expr< | |
240 proto::tag::subscript | |
241 , list2<expr &, typename result_of::as_child<A const>::type> | |
242 , 2 | |
243 > const | |
244 operator [](A const &a) | |
245 { | |
246 proto::expr< | |
247 proto::tag::subscript | |
248 , list2<expr &, typename result_of::as_child<A const>::type> | |
249 , 2 | |
250 > that = {*this, proto::as_child(a)}; | |
251 return that; | |
252 } | |
253 | |
254 | |
255 template<typename Sig> | |
256 struct result | |
257 { | |
258 typedef typename result_of::funop<Sig, expr, default_domain>::type const type; | |
259 }; | |
260 | |
261 | |
262 | |
263 BOOST_FORCEINLINE | |
264 proto::expr<proto::tag::function, list1<expr const &>, 1> const | |
265 operator ()() const | |
266 { | |
267 proto::expr<proto::tag::function, list1<expr const &>, 1> that = {*this}; | |
268 return that; | |
269 } | |
270 | |
271 | |
272 BOOST_FORCEINLINE | |
273 proto::expr<proto::tag::function, list1<expr &>, 1> const | |
274 operator ()() | |
275 { | |
276 proto::expr<proto::tag::function, list1<expr &>, 1> that = {*this}; | |
277 return that; | |
278 } | |
279 | |
280 | |
281 template<typename A0> | |
282 BOOST_FORCEINLINE | |
283 typename result_of::funop1< | |
284 expr const | |
285 , default_domain , const A0 | |
286 >::type const | |
287 operator ()(A0 const &a0) const | |
288 { | |
289 return result_of::funop1< | |
290 expr const | |
291 , default_domain , const A0 | |
292 >::call(*this , a0); | |
293 } | |
294 | |
295 | |
296 template<typename A0> | |
297 BOOST_FORCEINLINE | |
298 typename result_of::funop1< | |
299 expr | |
300 , default_domain , const A0 | |
301 >::type const | |
302 operator ()(A0 const &a0) | |
303 { | |
304 return result_of::funop1< | |
305 expr | |
306 , default_domain , const A0 | |
307 >::call(*this , a0); | |
308 } | |
309 | |
310 | |
311 template<typename A0 , typename A1> | |
312 BOOST_FORCEINLINE | |
313 typename result_of::funop2< | |
314 expr const | |
315 , default_domain , const A0 , const A1 | |
316 >::type const | |
317 operator ()(A0 const &a0 , A1 const &a1) const | |
318 { | |
319 return result_of::funop2< | |
320 expr const | |
321 , default_domain , const A0 , const A1 | |
322 >::call(*this , a0 , a1); | |
323 } | |
324 | |
325 | |
326 template<typename A0 , typename A1> | |
327 BOOST_FORCEINLINE | |
328 typename result_of::funop2< | |
329 expr | |
330 , default_domain , const A0 , const A1 | |
331 >::type const | |
332 operator ()(A0 const &a0 , A1 const &a1) | |
333 { | |
334 return result_of::funop2< | |
335 expr | |
336 , default_domain , const A0 , const A1 | |
337 >::call(*this , a0 , a1); | |
338 } | |
339 | |
340 | |
341 template<typename A0 , typename A1 , typename A2> | |
342 BOOST_FORCEINLINE | |
343 typename result_of::funop3< | |
344 expr const | |
345 , default_domain , const A0 , const A1 , const A2 | |
346 >::type const | |
347 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2) const | |
348 { | |
349 return result_of::funop3< | |
350 expr const | |
351 , default_domain , const A0 , const A1 , const A2 | |
352 >::call(*this , a0 , a1 , a2); | |
353 } | |
354 | |
355 | |
356 template<typename A0 , typename A1 , typename A2> | |
357 BOOST_FORCEINLINE | |
358 typename result_of::funop3< | |
359 expr | |
360 , default_domain , const A0 , const A1 , const A2 | |
361 >::type const | |
362 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2) | |
363 { | |
364 return result_of::funop3< | |
365 expr | |
366 , default_domain , const A0 , const A1 , const A2 | |
367 >::call(*this , a0 , a1 , a2); | |
368 } | |
369 | |
370 | |
371 template<typename A0 , typename A1 , typename A2 , typename A3> | |
372 BOOST_FORCEINLINE | |
373 typename result_of::funop4< | |
374 expr const | |
375 , default_domain , const A0 , const A1 , const A2 , const A3 | |
376 >::type const | |
377 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3) const | |
378 { | |
379 return result_of::funop4< | |
380 expr const | |
381 , default_domain , const A0 , const A1 , const A2 , const A3 | |
382 >::call(*this , a0 , a1 , a2 , a3); | |
383 } | |
384 | |
385 | |
386 template<typename A0 , typename A1 , typename A2 , typename A3> | |
387 BOOST_FORCEINLINE | |
388 typename result_of::funop4< | |
389 expr | |
390 , default_domain , const A0 , const A1 , const A2 , const A3 | |
391 >::type const | |
392 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3) | |
393 { | |
394 return result_of::funop4< | |
395 expr | |
396 , default_domain , const A0 , const A1 , const A2 , const A3 | |
397 >::call(*this , a0 , a1 , a2 , a3); | |
398 } | |
399 | |
400 | |
401 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4> | |
402 BOOST_FORCEINLINE | |
403 typename result_of::funop5< | |
404 expr const | |
405 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 | |
406 >::type const | |
407 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4) const | |
408 { | |
409 return result_of::funop5< | |
410 expr const | |
411 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 | |
412 >::call(*this , a0 , a1 , a2 , a3 , a4); | |
413 } | |
414 | |
415 | |
416 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4> | |
417 BOOST_FORCEINLINE | |
418 typename result_of::funop5< | |
419 expr | |
420 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 | |
421 >::type const | |
422 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4) | |
423 { | |
424 return result_of::funop5< | |
425 expr | |
426 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 | |
427 >::call(*this , a0 , a1 , a2 , a3 , a4); | |
428 } | |
429 | |
430 | |
431 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5> | |
432 BOOST_FORCEINLINE | |
433 typename result_of::funop6< | |
434 expr const | |
435 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 | |
436 >::type const | |
437 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5) const | |
438 { | |
439 return result_of::funop6< | |
440 expr const | |
441 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 | |
442 >::call(*this , a0 , a1 , a2 , a3 , a4 , a5); | |
443 } | |
444 | |
445 | |
446 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5> | |
447 BOOST_FORCEINLINE | |
448 typename result_of::funop6< | |
449 expr | |
450 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 | |
451 >::type const | |
452 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5) | |
453 { | |
454 return result_of::funop6< | |
455 expr | |
456 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 | |
457 >::call(*this , a0 , a1 , a2 , a3 , a4 , a5); | |
458 } | |
459 | |
460 | |
461 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6> | |
462 BOOST_FORCEINLINE | |
463 typename result_of::funop7< | |
464 expr const | |
465 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 | |
466 >::type const | |
467 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5 , A6 const &a6) const | |
468 { | |
469 return result_of::funop7< | |
470 expr const | |
471 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 | |
472 >::call(*this , a0 , a1 , a2 , a3 , a4 , a5 , a6); | |
473 } | |
474 | |
475 | |
476 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6> | |
477 BOOST_FORCEINLINE | |
478 typename result_of::funop7< | |
479 expr | |
480 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 | |
481 >::type const | |
482 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5 , A6 const &a6) | |
483 { | |
484 return result_of::funop7< | |
485 expr | |
486 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 | |
487 >::call(*this , a0 , a1 , a2 , a3 , a4 , a5 , a6); | |
488 } | |
489 | |
490 | |
491 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7> | |
492 BOOST_FORCEINLINE | |
493 typename result_of::funop8< | |
494 expr const | |
495 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7 | |
496 >::type const | |
497 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5 , A6 const &a6 , A7 const &a7) const | |
498 { | |
499 return result_of::funop8< | |
500 expr const | |
501 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7 | |
502 >::call(*this , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7); | |
503 } | |
504 | |
505 | |
506 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7> | |
507 BOOST_FORCEINLINE | |
508 typename result_of::funop8< | |
509 expr | |
510 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7 | |
511 >::type const | |
512 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5 , A6 const &a6 , A7 const &a7) | |
513 { | |
514 return result_of::funop8< | |
515 expr | |
516 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7 | |
517 >::call(*this , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7); | |
518 } | |
519 | |
520 | |
521 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8> | |
522 BOOST_FORCEINLINE | |
523 typename result_of::funop9< | |
524 expr const | |
525 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7 , const A8 | |
526 >::type const | |
527 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5 , A6 const &a6 , A7 const &a7 , A8 const &a8) const | |
528 { | |
529 return result_of::funop9< | |
530 expr const | |
531 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7 , const A8 | |
532 >::call(*this , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8); | |
533 } | |
534 | |
535 | |
536 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8> | |
537 BOOST_FORCEINLINE | |
538 typename result_of::funop9< | |
539 expr | |
540 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7 , const A8 | |
541 >::type const | |
542 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5 , A6 const &a6 , A7 const &a7 , A8 const &a8) | |
543 { | |
544 return result_of::funop9< | |
545 expr | |
546 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7 , const A8 | |
547 >::call(*this , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8); | |
548 } | |
549 }; | |
550 | |
551 | |
552 | |
553 | |
554 | |
555 | |
556 | |
557 | |
558 | |
559 | |
560 | |
561 | |
562 | |
563 | |
564 | |
565 | |
566 | |
567 | |
568 | |
569 | |
570 | |
571 | |
572 | |
573 | |
574 | |
575 | |
576 | |
577 template<typename Tag , typename Arg0> | |
578 struct expr<Tag, list1<Arg0>, 1 > | |
579 { | |
580 typedef Tag proto_tag; | |
581 static const long proto_arity_c = 1; | |
582 typedef mpl::long_<1 > proto_arity; | |
583 typedef expr proto_base_expr; | |
584 typedef list1<Arg0> proto_args; | |
585 typedef basic_expr<Tag, proto_args, 1 > proto_grammar; | |
586 typedef default_domain proto_domain; | |
587 typedef default_generator proto_generator; | |
588 typedef proto::tag::proto_expr<Tag, proto_domain> fusion_tag; | |
589 typedef expr proto_derived_expr; | |
590 typedef void proto_is_expr_; | |
591 typedef Arg0 proto_child0; proto_child0 child0; | |
592 typedef void proto_child1; typedef void proto_child2; typedef void proto_child3; typedef void proto_child4; typedef void proto_child5; typedef void proto_child6; typedef void proto_child7; typedef void proto_child8; typedef void proto_child9; | |
593 | |
594 | |
595 BOOST_FORCEINLINE | |
596 expr const &proto_base() const | |
597 { | |
598 return *this; | |
599 } | |
600 | |
601 | |
602 BOOST_FORCEINLINE | |
603 expr &proto_base() | |
604 { | |
605 return *this; | |
606 } | |
607 | |
608 | |
609 | |
610 template<typename A0> | |
611 BOOST_FORCEINLINE | |
612 static expr const make(A0 const &a0) | |
613 { | |
614 expr that = {a0}; | |
615 return that; | |
616 } | |
617 | |
618 | |
619 | |
620 typedef typename detail::address_of_hack<Tag, proto_child0>::type address_of_hack_type_; | |
621 | |
622 | |
623 | |
624 | |
625 | |
626 | |
627 | |
628 BOOST_FORCEINLINE | |
629 operator address_of_hack_type_() const | |
630 { | |
631 return boost::addressof(this->child0); | |
632 } | |
633 | |
634 | |
635 | |
636 | |
637 BOOST_FORCEINLINE | |
638 proto::expr< | |
639 proto::tag::assign | |
640 , list2<expr &, expr const &> | |
641 , 2 | |
642 > const | |
643 operator =(expr const &a) | |
644 { | |
645 proto::expr< | |
646 proto::tag::assign | |
647 , list2<expr &, expr const &> | |
648 , 2 | |
649 > that = {*this, a}; | |
650 return that; | |
651 } | |
652 | |
653 | |
654 | |
655 | |
656 template<typename A> | |
657 BOOST_FORCEINLINE | |
658 proto::expr< | |
659 proto::tag::assign | |
660 , list2<expr const &, typename result_of::as_child<A>::type> | |
661 , 2 | |
662 > const | |
663 operator =(A &a) const | |
664 { | |
665 proto::expr< | |
666 proto::tag::assign | |
667 , list2<expr const &, typename result_of::as_child<A>::type> | |
668 , 2 | |
669 > that = {*this, proto::as_child(a)}; | |
670 return that; | |
671 } | |
672 | |
673 | |
674 template<typename A> | |
675 BOOST_FORCEINLINE | |
676 proto::expr< | |
677 proto::tag::assign | |
678 , list2<expr const &, typename result_of::as_child<A const>::type> | |
679 , 2 | |
680 > const | |
681 operator =(A const &a) const | |
682 { | |
683 proto::expr< | |
684 proto::tag::assign | |
685 , list2<expr const &, typename result_of::as_child<A const>::type> | |
686 , 2 | |
687 > that = {*this, proto::as_child(a)}; | |
688 return that; | |
689 } | |
690 | |
691 | |
692 | |
693 | |
694 template<typename A> | |
695 BOOST_FORCEINLINE | |
696 proto::expr< | |
697 proto::tag::subscript | |
698 , list2<expr const &, typename result_of::as_child<A>::type> | |
699 , 2 | |
700 > const | |
701 operator [](A &a) const | |
702 { | |
703 proto::expr< | |
704 proto::tag::subscript | |
705 , list2<expr const &, typename result_of::as_child<A>::type> | |
706 , 2 | |
707 > that = {*this, proto::as_child(a)}; | |
708 return that; | |
709 } | |
710 | |
711 | |
712 template<typename A> | |
713 BOOST_FORCEINLINE | |
714 proto::expr< | |
715 proto::tag::subscript | |
716 , list2<expr const &, typename result_of::as_child<A const>::type> | |
717 , 2 | |
718 > const | |
719 operator [](A const &a) const | |
720 { | |
721 proto::expr< | |
722 proto::tag::subscript | |
723 , list2<expr const &, typename result_of::as_child<A const>::type> | |
724 , 2 | |
725 > that = {*this, proto::as_child(a)}; | |
726 return that; | |
727 } | |
728 | |
729 | |
730 template<typename Sig> | |
731 struct result | |
732 { | |
733 typedef typename result_of::funop<Sig, expr, default_domain>::type const type; | |
734 }; | |
735 | |
736 | |
737 | |
738 BOOST_FORCEINLINE | |
739 proto::expr<proto::tag::function, list1<expr const &>, 1> const | |
740 operator ()() const | |
741 { | |
742 proto::expr<proto::tag::function, list1<expr const &>, 1> that = {*this}; | |
743 return that; | |
744 } | |
745 | |
746 | |
747 template<typename A0> | |
748 BOOST_FORCEINLINE | |
749 typename result_of::funop1< | |
750 expr const | |
751 , default_domain , const A0 | |
752 >::type const | |
753 operator ()(A0 const &a0) const | |
754 { | |
755 return result_of::funop1< | |
756 expr const | |
757 , default_domain , const A0 | |
758 >::call(*this , a0); | |
759 } | |
760 | |
761 | |
762 template<typename A0 , typename A1> | |
763 BOOST_FORCEINLINE | |
764 typename result_of::funop2< | |
765 expr const | |
766 , default_domain , const A0 , const A1 | |
767 >::type const | |
768 operator ()(A0 const &a0 , A1 const &a1) const | |
769 { | |
770 return result_of::funop2< | |
771 expr const | |
772 , default_domain , const A0 , const A1 | |
773 >::call(*this , a0 , a1); | |
774 } | |
775 | |
776 | |
777 template<typename A0 , typename A1 , typename A2> | |
778 BOOST_FORCEINLINE | |
779 typename result_of::funop3< | |
780 expr const | |
781 , default_domain , const A0 , const A1 , const A2 | |
782 >::type const | |
783 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2) const | |
784 { | |
785 return result_of::funop3< | |
786 expr const | |
787 , default_domain , const A0 , const A1 , const A2 | |
788 >::call(*this , a0 , a1 , a2); | |
789 } | |
790 | |
791 | |
792 template<typename A0 , typename A1 , typename A2 , typename A3> | |
793 BOOST_FORCEINLINE | |
794 typename result_of::funop4< | |
795 expr const | |
796 , default_domain , const A0 , const A1 , const A2 , const A3 | |
797 >::type const | |
798 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3) const | |
799 { | |
800 return result_of::funop4< | |
801 expr const | |
802 , default_domain , const A0 , const A1 , const A2 , const A3 | |
803 >::call(*this , a0 , a1 , a2 , a3); | |
804 } | |
805 | |
806 | |
807 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4> | |
808 BOOST_FORCEINLINE | |
809 typename result_of::funop5< | |
810 expr const | |
811 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 | |
812 >::type const | |
813 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4) const | |
814 { | |
815 return result_of::funop5< | |
816 expr const | |
817 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 | |
818 >::call(*this , a0 , a1 , a2 , a3 , a4); | |
819 } | |
820 | |
821 | |
822 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5> | |
823 BOOST_FORCEINLINE | |
824 typename result_of::funop6< | |
825 expr const | |
826 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 | |
827 >::type const | |
828 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5) const | |
829 { | |
830 return result_of::funop6< | |
831 expr const | |
832 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 | |
833 >::call(*this , a0 , a1 , a2 , a3 , a4 , a5); | |
834 } | |
835 | |
836 | |
837 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6> | |
838 BOOST_FORCEINLINE | |
839 typename result_of::funop7< | |
840 expr const | |
841 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 | |
842 >::type const | |
843 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5 , A6 const &a6) const | |
844 { | |
845 return result_of::funop7< | |
846 expr const | |
847 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 | |
848 >::call(*this , a0 , a1 , a2 , a3 , a4 , a5 , a6); | |
849 } | |
850 | |
851 | |
852 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7> | |
853 BOOST_FORCEINLINE | |
854 typename result_of::funop8< | |
855 expr const | |
856 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7 | |
857 >::type const | |
858 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5 , A6 const &a6 , A7 const &a7) const | |
859 { | |
860 return result_of::funop8< | |
861 expr const | |
862 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7 | |
863 >::call(*this , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7); | |
864 } | |
865 | |
866 | |
867 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8> | |
868 BOOST_FORCEINLINE | |
869 typename result_of::funop9< | |
870 expr const | |
871 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7 , const A8 | |
872 >::type const | |
873 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5 , A6 const &a6 , A7 const &a7 , A8 const &a8) const | |
874 { | |
875 return result_of::funop9< | |
876 expr const | |
877 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7 , const A8 | |
878 >::call(*this , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8); | |
879 } | |
880 }; | |
881 | |
882 | |
883 | |
884 | |
885 | |
886 | |
887 | |
888 | |
889 | |
890 | |
891 | |
892 | |
893 | |
894 | |
895 | |
896 | |
897 | |
898 | |
899 | |
900 | |
901 | |
902 | |
903 | |
904 | |
905 | |
906 | |
907 | |
908 template<typename Tag , typename Arg0 , typename Arg1> | |
909 struct expr<Tag, list2<Arg0 , Arg1>, 2 > | |
910 { | |
911 typedef Tag proto_tag; | |
912 static const long proto_arity_c = 2; | |
913 typedef mpl::long_<2 > proto_arity; | |
914 typedef expr proto_base_expr; | |
915 typedef list2<Arg0 , Arg1> proto_args; | |
916 typedef basic_expr<Tag, proto_args, 2 > proto_grammar; | |
917 typedef default_domain proto_domain; | |
918 typedef default_generator proto_generator; | |
919 typedef proto::tag::proto_expr<Tag, proto_domain> fusion_tag; | |
920 typedef expr proto_derived_expr; | |
921 typedef void proto_is_expr_; | |
922 typedef Arg0 proto_child0; proto_child0 child0; typedef Arg1 proto_child1; proto_child1 child1; | |
923 typedef void proto_child2; typedef void proto_child3; typedef void proto_child4; typedef void proto_child5; typedef void proto_child6; typedef void proto_child7; typedef void proto_child8; typedef void proto_child9; | |
924 | |
925 | |
926 BOOST_FORCEINLINE | |
927 expr const &proto_base() const | |
928 { | |
929 return *this; | |
930 } | |
931 | |
932 | |
933 BOOST_FORCEINLINE | |
934 expr &proto_base() | |
935 { | |
936 return *this; | |
937 } | |
938 | |
939 | |
940 | |
941 template<typename A0 , typename A1> | |
942 BOOST_FORCEINLINE | |
943 static expr const make(A0 const &a0 , A1 const &a1) | |
944 { | |
945 expr that = {a0 , a1}; | |
946 return that; | |
947 } | |
948 | |
949 | |
950 typedef detail::not_a_valid_type address_of_hack_type_; | |
951 | |
952 | |
953 | |
954 | |
955 BOOST_FORCEINLINE | |
956 proto::expr< | |
957 proto::tag::assign | |
958 , list2<expr &, expr const &> | |
959 , 2 | |
960 > const | |
961 operator =(expr const &a) | |
962 { | |
963 proto::expr< | |
964 proto::tag::assign | |
965 , list2<expr &, expr const &> | |
966 , 2 | |
967 > that = {*this, a}; | |
968 return that; | |
969 } | |
970 | |
971 | |
972 | |
973 | |
974 template<typename A> | |
975 BOOST_FORCEINLINE | |
976 proto::expr< | |
977 proto::tag::assign | |
978 , list2<expr const &, typename result_of::as_child<A>::type> | |
979 , 2 | |
980 > const | |
981 operator =(A &a) const | |
982 { | |
983 proto::expr< | |
984 proto::tag::assign | |
985 , list2<expr const &, typename result_of::as_child<A>::type> | |
986 , 2 | |
987 > that = {*this, proto::as_child(a)}; | |
988 return that; | |
989 } | |
990 | |
991 | |
992 template<typename A> | |
993 BOOST_FORCEINLINE | |
994 proto::expr< | |
995 proto::tag::assign | |
996 , list2<expr const &, typename result_of::as_child<A const>::type> | |
997 , 2 | |
998 > const | |
999 operator =(A const &a) const | |
1000 { | |
1001 proto::expr< | |
1002 proto::tag::assign | |
1003 , list2<expr const &, typename result_of::as_child<A const>::type> | |
1004 , 2 | |
1005 > that = {*this, proto::as_child(a)}; | |
1006 return that; | |
1007 } | |
1008 | |
1009 | |
1010 | |
1011 | |
1012 template<typename A> | |
1013 BOOST_FORCEINLINE | |
1014 proto::expr< | |
1015 proto::tag::subscript | |
1016 , list2<expr const &, typename result_of::as_child<A>::type> | |
1017 , 2 | |
1018 > const | |
1019 operator [](A &a) const | |
1020 { | |
1021 proto::expr< | |
1022 proto::tag::subscript | |
1023 , list2<expr const &, typename result_of::as_child<A>::type> | |
1024 , 2 | |
1025 > that = {*this, proto::as_child(a)}; | |
1026 return that; | |
1027 } | |
1028 | |
1029 | |
1030 template<typename A> | |
1031 BOOST_FORCEINLINE | |
1032 proto::expr< | |
1033 proto::tag::subscript | |
1034 , list2<expr const &, typename result_of::as_child<A const>::type> | |
1035 , 2 | |
1036 > const | |
1037 operator [](A const &a) const | |
1038 { | |
1039 proto::expr< | |
1040 proto::tag::subscript | |
1041 , list2<expr const &, typename result_of::as_child<A const>::type> | |
1042 , 2 | |
1043 > that = {*this, proto::as_child(a)}; | |
1044 return that; | |
1045 } | |
1046 | |
1047 | |
1048 template<typename Sig> | |
1049 struct result | |
1050 { | |
1051 typedef typename result_of::funop<Sig, expr, default_domain>::type const type; | |
1052 }; | |
1053 | |
1054 | |
1055 | |
1056 BOOST_FORCEINLINE | |
1057 proto::expr<proto::tag::function, list1<expr const &>, 1> const | |
1058 operator ()() const | |
1059 { | |
1060 proto::expr<proto::tag::function, list1<expr const &>, 1> that = {*this}; | |
1061 return that; | |
1062 } | |
1063 | |
1064 | |
1065 template<typename A0> | |
1066 BOOST_FORCEINLINE | |
1067 typename result_of::funop1< | |
1068 expr const | |
1069 , default_domain , const A0 | |
1070 >::type const | |
1071 operator ()(A0 const &a0) const | |
1072 { | |
1073 return result_of::funop1< | |
1074 expr const | |
1075 , default_domain , const A0 | |
1076 >::call(*this , a0); | |
1077 } | |
1078 | |
1079 | |
1080 template<typename A0 , typename A1> | |
1081 BOOST_FORCEINLINE | |
1082 typename result_of::funop2< | |
1083 expr const | |
1084 , default_domain , const A0 , const A1 | |
1085 >::type const | |
1086 operator ()(A0 const &a0 , A1 const &a1) const | |
1087 { | |
1088 return result_of::funop2< | |
1089 expr const | |
1090 , default_domain , const A0 , const A1 | |
1091 >::call(*this , a0 , a1); | |
1092 } | |
1093 | |
1094 | |
1095 template<typename A0 , typename A1 , typename A2> | |
1096 BOOST_FORCEINLINE | |
1097 typename result_of::funop3< | |
1098 expr const | |
1099 , default_domain , const A0 , const A1 , const A2 | |
1100 >::type const | |
1101 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2) const | |
1102 { | |
1103 return result_of::funop3< | |
1104 expr const | |
1105 , default_domain , const A0 , const A1 , const A2 | |
1106 >::call(*this , a0 , a1 , a2); | |
1107 } | |
1108 | |
1109 | |
1110 template<typename A0 , typename A1 , typename A2 , typename A3> | |
1111 BOOST_FORCEINLINE | |
1112 typename result_of::funop4< | |
1113 expr const | |
1114 , default_domain , const A0 , const A1 , const A2 , const A3 | |
1115 >::type const | |
1116 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3) const | |
1117 { | |
1118 return result_of::funop4< | |
1119 expr const | |
1120 , default_domain , const A0 , const A1 , const A2 , const A3 | |
1121 >::call(*this , a0 , a1 , a2 , a3); | |
1122 } | |
1123 | |
1124 | |
1125 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4> | |
1126 BOOST_FORCEINLINE | |
1127 typename result_of::funop5< | |
1128 expr const | |
1129 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 | |
1130 >::type const | |
1131 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4) const | |
1132 { | |
1133 return result_of::funop5< | |
1134 expr const | |
1135 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 | |
1136 >::call(*this , a0 , a1 , a2 , a3 , a4); | |
1137 } | |
1138 | |
1139 | |
1140 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5> | |
1141 BOOST_FORCEINLINE | |
1142 typename result_of::funop6< | |
1143 expr const | |
1144 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 | |
1145 >::type const | |
1146 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5) const | |
1147 { | |
1148 return result_of::funop6< | |
1149 expr const | |
1150 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 | |
1151 >::call(*this , a0 , a1 , a2 , a3 , a4 , a5); | |
1152 } | |
1153 | |
1154 | |
1155 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6> | |
1156 BOOST_FORCEINLINE | |
1157 typename result_of::funop7< | |
1158 expr const | |
1159 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 | |
1160 >::type const | |
1161 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5 , A6 const &a6) const | |
1162 { | |
1163 return result_of::funop7< | |
1164 expr const | |
1165 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 | |
1166 >::call(*this , a0 , a1 , a2 , a3 , a4 , a5 , a6); | |
1167 } | |
1168 | |
1169 | |
1170 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7> | |
1171 BOOST_FORCEINLINE | |
1172 typename result_of::funop8< | |
1173 expr const | |
1174 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7 | |
1175 >::type const | |
1176 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5 , A6 const &a6 , A7 const &a7) const | |
1177 { | |
1178 return result_of::funop8< | |
1179 expr const | |
1180 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7 | |
1181 >::call(*this , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7); | |
1182 } | |
1183 | |
1184 | |
1185 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8> | |
1186 BOOST_FORCEINLINE | |
1187 typename result_of::funop9< | |
1188 expr const | |
1189 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7 , const A8 | |
1190 >::type const | |
1191 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5 , A6 const &a6 , A7 const &a7 , A8 const &a8) const | |
1192 { | |
1193 return result_of::funop9< | |
1194 expr const | |
1195 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7 , const A8 | |
1196 >::call(*this , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8); | |
1197 } | |
1198 }; | |
1199 | |
1200 | |
1201 | |
1202 | |
1203 | |
1204 | |
1205 | |
1206 | |
1207 | |
1208 | |
1209 | |
1210 | |
1211 | |
1212 | |
1213 | |
1214 | |
1215 | |
1216 | |
1217 | |
1218 | |
1219 | |
1220 | |
1221 | |
1222 | |
1223 | |
1224 | |
1225 | |
1226 template<typename Tag , typename Arg0 , typename Arg1 , typename Arg2> | |
1227 struct expr<Tag, list3<Arg0 , Arg1 , Arg2>, 3 > | |
1228 { | |
1229 typedef Tag proto_tag; | |
1230 static const long proto_arity_c = 3; | |
1231 typedef mpl::long_<3 > proto_arity; | |
1232 typedef expr proto_base_expr; | |
1233 typedef list3<Arg0 , Arg1 , Arg2> proto_args; | |
1234 typedef basic_expr<Tag, proto_args, 3 > proto_grammar; | |
1235 typedef default_domain proto_domain; | |
1236 typedef default_generator proto_generator; | |
1237 typedef proto::tag::proto_expr<Tag, proto_domain> fusion_tag; | |
1238 typedef expr proto_derived_expr; | |
1239 typedef void proto_is_expr_; | |
1240 typedef Arg0 proto_child0; proto_child0 child0; typedef Arg1 proto_child1; proto_child1 child1; typedef Arg2 proto_child2; proto_child2 child2; | |
1241 typedef void proto_child3; typedef void proto_child4; typedef void proto_child5; typedef void proto_child6; typedef void proto_child7; typedef void proto_child8; typedef void proto_child9; | |
1242 | |
1243 | |
1244 BOOST_FORCEINLINE | |
1245 expr const &proto_base() const | |
1246 { | |
1247 return *this; | |
1248 } | |
1249 | |
1250 | |
1251 BOOST_FORCEINLINE | |
1252 expr &proto_base() | |
1253 { | |
1254 return *this; | |
1255 } | |
1256 | |
1257 | |
1258 | |
1259 template<typename A0 , typename A1 , typename A2> | |
1260 BOOST_FORCEINLINE | |
1261 static expr const make(A0 const &a0 , A1 const &a1 , A2 const &a2) | |
1262 { | |
1263 expr that = {a0 , a1 , a2}; | |
1264 return that; | |
1265 } | |
1266 | |
1267 | |
1268 typedef detail::not_a_valid_type address_of_hack_type_; | |
1269 | |
1270 | |
1271 | |
1272 | |
1273 BOOST_FORCEINLINE | |
1274 proto::expr< | |
1275 proto::tag::assign | |
1276 , list2<expr &, expr const &> | |
1277 , 2 | |
1278 > const | |
1279 operator =(expr const &a) | |
1280 { | |
1281 proto::expr< | |
1282 proto::tag::assign | |
1283 , list2<expr &, expr const &> | |
1284 , 2 | |
1285 > that = {*this, a}; | |
1286 return that; | |
1287 } | |
1288 | |
1289 | |
1290 | |
1291 | |
1292 template<typename A> | |
1293 BOOST_FORCEINLINE | |
1294 proto::expr< | |
1295 proto::tag::assign | |
1296 , list2<expr const &, typename result_of::as_child<A>::type> | |
1297 , 2 | |
1298 > const | |
1299 operator =(A &a) const | |
1300 { | |
1301 proto::expr< | |
1302 proto::tag::assign | |
1303 , list2<expr const &, typename result_of::as_child<A>::type> | |
1304 , 2 | |
1305 > that = {*this, proto::as_child(a)}; | |
1306 return that; | |
1307 } | |
1308 | |
1309 | |
1310 template<typename A> | |
1311 BOOST_FORCEINLINE | |
1312 proto::expr< | |
1313 proto::tag::assign | |
1314 , list2<expr const &, typename result_of::as_child<A const>::type> | |
1315 , 2 | |
1316 > const | |
1317 operator =(A const &a) const | |
1318 { | |
1319 proto::expr< | |
1320 proto::tag::assign | |
1321 , list2<expr const &, typename result_of::as_child<A const>::type> | |
1322 , 2 | |
1323 > that = {*this, proto::as_child(a)}; | |
1324 return that; | |
1325 } | |
1326 | |
1327 | |
1328 | |
1329 | |
1330 template<typename A> | |
1331 BOOST_FORCEINLINE | |
1332 proto::expr< | |
1333 proto::tag::subscript | |
1334 , list2<expr const &, typename result_of::as_child<A>::type> | |
1335 , 2 | |
1336 > const | |
1337 operator [](A &a) const | |
1338 { | |
1339 proto::expr< | |
1340 proto::tag::subscript | |
1341 , list2<expr const &, typename result_of::as_child<A>::type> | |
1342 , 2 | |
1343 > that = {*this, proto::as_child(a)}; | |
1344 return that; | |
1345 } | |
1346 | |
1347 | |
1348 template<typename A> | |
1349 BOOST_FORCEINLINE | |
1350 proto::expr< | |
1351 proto::tag::subscript | |
1352 , list2<expr const &, typename result_of::as_child<A const>::type> | |
1353 , 2 | |
1354 > const | |
1355 operator [](A const &a) const | |
1356 { | |
1357 proto::expr< | |
1358 proto::tag::subscript | |
1359 , list2<expr const &, typename result_of::as_child<A const>::type> | |
1360 , 2 | |
1361 > that = {*this, proto::as_child(a)}; | |
1362 return that; | |
1363 } | |
1364 | |
1365 | |
1366 template<typename Sig> | |
1367 struct result | |
1368 { | |
1369 typedef typename result_of::funop<Sig, expr, default_domain>::type const type; | |
1370 }; | |
1371 | |
1372 | |
1373 | |
1374 BOOST_FORCEINLINE | |
1375 proto::expr<proto::tag::function, list1<expr const &>, 1> const | |
1376 operator ()() const | |
1377 { | |
1378 proto::expr<proto::tag::function, list1<expr const &>, 1> that = {*this}; | |
1379 return that; | |
1380 } | |
1381 | |
1382 | |
1383 template<typename A0> | |
1384 BOOST_FORCEINLINE | |
1385 typename result_of::funop1< | |
1386 expr const | |
1387 , default_domain , const A0 | |
1388 >::type const | |
1389 operator ()(A0 const &a0) const | |
1390 { | |
1391 return result_of::funop1< | |
1392 expr const | |
1393 , default_domain , const A0 | |
1394 >::call(*this , a0); | |
1395 } | |
1396 | |
1397 | |
1398 template<typename A0 , typename A1> | |
1399 BOOST_FORCEINLINE | |
1400 typename result_of::funop2< | |
1401 expr const | |
1402 , default_domain , const A0 , const A1 | |
1403 >::type const | |
1404 operator ()(A0 const &a0 , A1 const &a1) const | |
1405 { | |
1406 return result_of::funop2< | |
1407 expr const | |
1408 , default_domain , const A0 , const A1 | |
1409 >::call(*this , a0 , a1); | |
1410 } | |
1411 | |
1412 | |
1413 template<typename A0 , typename A1 , typename A2> | |
1414 BOOST_FORCEINLINE | |
1415 typename result_of::funop3< | |
1416 expr const | |
1417 , default_domain , const A0 , const A1 , const A2 | |
1418 >::type const | |
1419 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2) const | |
1420 { | |
1421 return result_of::funop3< | |
1422 expr const | |
1423 , default_domain , const A0 , const A1 , const A2 | |
1424 >::call(*this , a0 , a1 , a2); | |
1425 } | |
1426 | |
1427 | |
1428 template<typename A0 , typename A1 , typename A2 , typename A3> | |
1429 BOOST_FORCEINLINE | |
1430 typename result_of::funop4< | |
1431 expr const | |
1432 , default_domain , const A0 , const A1 , const A2 , const A3 | |
1433 >::type const | |
1434 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3) const | |
1435 { | |
1436 return result_of::funop4< | |
1437 expr const | |
1438 , default_domain , const A0 , const A1 , const A2 , const A3 | |
1439 >::call(*this , a0 , a1 , a2 , a3); | |
1440 } | |
1441 | |
1442 | |
1443 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4> | |
1444 BOOST_FORCEINLINE | |
1445 typename result_of::funop5< | |
1446 expr const | |
1447 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 | |
1448 >::type const | |
1449 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4) const | |
1450 { | |
1451 return result_of::funop5< | |
1452 expr const | |
1453 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 | |
1454 >::call(*this , a0 , a1 , a2 , a3 , a4); | |
1455 } | |
1456 | |
1457 | |
1458 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5> | |
1459 BOOST_FORCEINLINE | |
1460 typename result_of::funop6< | |
1461 expr const | |
1462 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 | |
1463 >::type const | |
1464 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5) const | |
1465 { | |
1466 return result_of::funop6< | |
1467 expr const | |
1468 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 | |
1469 >::call(*this , a0 , a1 , a2 , a3 , a4 , a5); | |
1470 } | |
1471 | |
1472 | |
1473 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6> | |
1474 BOOST_FORCEINLINE | |
1475 typename result_of::funop7< | |
1476 expr const | |
1477 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 | |
1478 >::type const | |
1479 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5 , A6 const &a6) const | |
1480 { | |
1481 return result_of::funop7< | |
1482 expr const | |
1483 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 | |
1484 >::call(*this , a0 , a1 , a2 , a3 , a4 , a5 , a6); | |
1485 } | |
1486 | |
1487 | |
1488 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7> | |
1489 BOOST_FORCEINLINE | |
1490 typename result_of::funop8< | |
1491 expr const | |
1492 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7 | |
1493 >::type const | |
1494 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5 , A6 const &a6 , A7 const &a7) const | |
1495 { | |
1496 return result_of::funop8< | |
1497 expr const | |
1498 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7 | |
1499 >::call(*this , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7); | |
1500 } | |
1501 | |
1502 | |
1503 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8> | |
1504 BOOST_FORCEINLINE | |
1505 typename result_of::funop9< | |
1506 expr const | |
1507 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7 , const A8 | |
1508 >::type const | |
1509 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5 , A6 const &a6 , A7 const &a7 , A8 const &a8) const | |
1510 { | |
1511 return result_of::funop9< | |
1512 expr const | |
1513 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7 , const A8 | |
1514 >::call(*this , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8); | |
1515 } | |
1516 }; | |
1517 | |
1518 | |
1519 | |
1520 | |
1521 | |
1522 | |
1523 | |
1524 | |
1525 | |
1526 | |
1527 | |
1528 | |
1529 | |
1530 | |
1531 | |
1532 | |
1533 | |
1534 | |
1535 | |
1536 | |
1537 | |
1538 | |
1539 | |
1540 | |
1541 | |
1542 | |
1543 | |
1544 template<typename Tag , typename Arg0 , typename Arg1 , typename Arg2 , typename Arg3> | |
1545 struct expr<Tag, list4<Arg0 , Arg1 , Arg2 , Arg3>, 4 > | |
1546 { | |
1547 typedef Tag proto_tag; | |
1548 static const long proto_arity_c = 4; | |
1549 typedef mpl::long_<4 > proto_arity; | |
1550 typedef expr proto_base_expr; | |
1551 typedef list4<Arg0 , Arg1 , Arg2 , Arg3> proto_args; | |
1552 typedef basic_expr<Tag, proto_args, 4 > proto_grammar; | |
1553 typedef default_domain proto_domain; | |
1554 typedef default_generator proto_generator; | |
1555 typedef proto::tag::proto_expr<Tag, proto_domain> fusion_tag; | |
1556 typedef expr proto_derived_expr; | |
1557 typedef void proto_is_expr_; | |
1558 typedef Arg0 proto_child0; proto_child0 child0; typedef Arg1 proto_child1; proto_child1 child1; typedef Arg2 proto_child2; proto_child2 child2; typedef Arg3 proto_child3; proto_child3 child3; | |
1559 typedef void proto_child4; typedef void proto_child5; typedef void proto_child6; typedef void proto_child7; typedef void proto_child8; typedef void proto_child9; | |
1560 | |
1561 | |
1562 BOOST_FORCEINLINE | |
1563 expr const &proto_base() const | |
1564 { | |
1565 return *this; | |
1566 } | |
1567 | |
1568 | |
1569 BOOST_FORCEINLINE | |
1570 expr &proto_base() | |
1571 { | |
1572 return *this; | |
1573 } | |
1574 | |
1575 | |
1576 | |
1577 template<typename A0 , typename A1 , typename A2 , typename A3> | |
1578 BOOST_FORCEINLINE | |
1579 static expr const make(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3) | |
1580 { | |
1581 expr that = {a0 , a1 , a2 , a3}; | |
1582 return that; | |
1583 } | |
1584 | |
1585 | |
1586 typedef detail::not_a_valid_type address_of_hack_type_; | |
1587 | |
1588 | |
1589 | |
1590 | |
1591 BOOST_FORCEINLINE | |
1592 proto::expr< | |
1593 proto::tag::assign | |
1594 , list2<expr &, expr const &> | |
1595 , 2 | |
1596 > const | |
1597 operator =(expr const &a) | |
1598 { | |
1599 proto::expr< | |
1600 proto::tag::assign | |
1601 , list2<expr &, expr const &> | |
1602 , 2 | |
1603 > that = {*this, a}; | |
1604 return that; | |
1605 } | |
1606 | |
1607 | |
1608 | |
1609 | |
1610 template<typename A> | |
1611 BOOST_FORCEINLINE | |
1612 proto::expr< | |
1613 proto::tag::assign | |
1614 , list2<expr const &, typename result_of::as_child<A>::type> | |
1615 , 2 | |
1616 > const | |
1617 operator =(A &a) const | |
1618 { | |
1619 proto::expr< | |
1620 proto::tag::assign | |
1621 , list2<expr const &, typename result_of::as_child<A>::type> | |
1622 , 2 | |
1623 > that = {*this, proto::as_child(a)}; | |
1624 return that; | |
1625 } | |
1626 | |
1627 | |
1628 template<typename A> | |
1629 BOOST_FORCEINLINE | |
1630 proto::expr< | |
1631 proto::tag::assign | |
1632 , list2<expr const &, typename result_of::as_child<A const>::type> | |
1633 , 2 | |
1634 > const | |
1635 operator =(A const &a) const | |
1636 { | |
1637 proto::expr< | |
1638 proto::tag::assign | |
1639 , list2<expr const &, typename result_of::as_child<A const>::type> | |
1640 , 2 | |
1641 > that = {*this, proto::as_child(a)}; | |
1642 return that; | |
1643 } | |
1644 | |
1645 | |
1646 | |
1647 | |
1648 template<typename A> | |
1649 BOOST_FORCEINLINE | |
1650 proto::expr< | |
1651 proto::tag::subscript | |
1652 , list2<expr const &, typename result_of::as_child<A>::type> | |
1653 , 2 | |
1654 > const | |
1655 operator [](A &a) const | |
1656 { | |
1657 proto::expr< | |
1658 proto::tag::subscript | |
1659 , list2<expr const &, typename result_of::as_child<A>::type> | |
1660 , 2 | |
1661 > that = {*this, proto::as_child(a)}; | |
1662 return that; | |
1663 } | |
1664 | |
1665 | |
1666 template<typename A> | |
1667 BOOST_FORCEINLINE | |
1668 proto::expr< | |
1669 proto::tag::subscript | |
1670 , list2<expr const &, typename result_of::as_child<A const>::type> | |
1671 , 2 | |
1672 > const | |
1673 operator [](A const &a) const | |
1674 { | |
1675 proto::expr< | |
1676 proto::tag::subscript | |
1677 , list2<expr const &, typename result_of::as_child<A const>::type> | |
1678 , 2 | |
1679 > that = {*this, proto::as_child(a)}; | |
1680 return that; | |
1681 } | |
1682 | |
1683 | |
1684 template<typename Sig> | |
1685 struct result | |
1686 { | |
1687 typedef typename result_of::funop<Sig, expr, default_domain>::type const type; | |
1688 }; | |
1689 | |
1690 | |
1691 | |
1692 BOOST_FORCEINLINE | |
1693 proto::expr<proto::tag::function, list1<expr const &>, 1> const | |
1694 operator ()() const | |
1695 { | |
1696 proto::expr<proto::tag::function, list1<expr const &>, 1> that = {*this}; | |
1697 return that; | |
1698 } | |
1699 | |
1700 | |
1701 template<typename A0> | |
1702 BOOST_FORCEINLINE | |
1703 typename result_of::funop1< | |
1704 expr const | |
1705 , default_domain , const A0 | |
1706 >::type const | |
1707 operator ()(A0 const &a0) const | |
1708 { | |
1709 return result_of::funop1< | |
1710 expr const | |
1711 , default_domain , const A0 | |
1712 >::call(*this , a0); | |
1713 } | |
1714 | |
1715 | |
1716 template<typename A0 , typename A1> | |
1717 BOOST_FORCEINLINE | |
1718 typename result_of::funop2< | |
1719 expr const | |
1720 , default_domain , const A0 , const A1 | |
1721 >::type const | |
1722 operator ()(A0 const &a0 , A1 const &a1) const | |
1723 { | |
1724 return result_of::funop2< | |
1725 expr const | |
1726 , default_domain , const A0 , const A1 | |
1727 >::call(*this , a0 , a1); | |
1728 } | |
1729 | |
1730 | |
1731 template<typename A0 , typename A1 , typename A2> | |
1732 BOOST_FORCEINLINE | |
1733 typename result_of::funop3< | |
1734 expr const | |
1735 , default_domain , const A0 , const A1 , const A2 | |
1736 >::type const | |
1737 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2) const | |
1738 { | |
1739 return result_of::funop3< | |
1740 expr const | |
1741 , default_domain , const A0 , const A1 , const A2 | |
1742 >::call(*this , a0 , a1 , a2); | |
1743 } | |
1744 | |
1745 | |
1746 template<typename A0 , typename A1 , typename A2 , typename A3> | |
1747 BOOST_FORCEINLINE | |
1748 typename result_of::funop4< | |
1749 expr const | |
1750 , default_domain , const A0 , const A1 , const A2 , const A3 | |
1751 >::type const | |
1752 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3) const | |
1753 { | |
1754 return result_of::funop4< | |
1755 expr const | |
1756 , default_domain , const A0 , const A1 , const A2 , const A3 | |
1757 >::call(*this , a0 , a1 , a2 , a3); | |
1758 } | |
1759 | |
1760 | |
1761 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4> | |
1762 BOOST_FORCEINLINE | |
1763 typename result_of::funop5< | |
1764 expr const | |
1765 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 | |
1766 >::type const | |
1767 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4) const | |
1768 { | |
1769 return result_of::funop5< | |
1770 expr const | |
1771 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 | |
1772 >::call(*this , a0 , a1 , a2 , a3 , a4); | |
1773 } | |
1774 | |
1775 | |
1776 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5> | |
1777 BOOST_FORCEINLINE | |
1778 typename result_of::funop6< | |
1779 expr const | |
1780 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 | |
1781 >::type const | |
1782 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5) const | |
1783 { | |
1784 return result_of::funop6< | |
1785 expr const | |
1786 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 | |
1787 >::call(*this , a0 , a1 , a2 , a3 , a4 , a5); | |
1788 } | |
1789 | |
1790 | |
1791 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6> | |
1792 BOOST_FORCEINLINE | |
1793 typename result_of::funop7< | |
1794 expr const | |
1795 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 | |
1796 >::type const | |
1797 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5 , A6 const &a6) const | |
1798 { | |
1799 return result_of::funop7< | |
1800 expr const | |
1801 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 | |
1802 >::call(*this , a0 , a1 , a2 , a3 , a4 , a5 , a6); | |
1803 } | |
1804 | |
1805 | |
1806 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7> | |
1807 BOOST_FORCEINLINE | |
1808 typename result_of::funop8< | |
1809 expr const | |
1810 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7 | |
1811 >::type const | |
1812 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5 , A6 const &a6 , A7 const &a7) const | |
1813 { | |
1814 return result_of::funop8< | |
1815 expr const | |
1816 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7 | |
1817 >::call(*this , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7); | |
1818 } | |
1819 | |
1820 | |
1821 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8> | |
1822 BOOST_FORCEINLINE | |
1823 typename result_of::funop9< | |
1824 expr const | |
1825 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7 , const A8 | |
1826 >::type const | |
1827 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5 , A6 const &a6 , A7 const &a7 , A8 const &a8) const | |
1828 { | |
1829 return result_of::funop9< | |
1830 expr const | |
1831 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7 , const A8 | |
1832 >::call(*this , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8); | |
1833 } | |
1834 }; | |
1835 | |
1836 | |
1837 | |
1838 | |
1839 | |
1840 | |
1841 | |
1842 | |
1843 | |
1844 | |
1845 | |
1846 | |
1847 | |
1848 | |
1849 | |
1850 | |
1851 | |
1852 | |
1853 | |
1854 | |
1855 | |
1856 | |
1857 | |
1858 | |
1859 | |
1860 | |
1861 | |
1862 template<typename Tag , typename Arg0 , typename Arg1 , typename Arg2 , typename Arg3 , typename Arg4> | |
1863 struct expr<Tag, list5<Arg0 , Arg1 , Arg2 , Arg3 , Arg4>, 5 > | |
1864 { | |
1865 typedef Tag proto_tag; | |
1866 static const long proto_arity_c = 5; | |
1867 typedef mpl::long_<5 > proto_arity; | |
1868 typedef expr proto_base_expr; | |
1869 typedef list5<Arg0 , Arg1 , Arg2 , Arg3 , Arg4> proto_args; | |
1870 typedef basic_expr<Tag, proto_args, 5 > proto_grammar; | |
1871 typedef default_domain proto_domain; | |
1872 typedef default_generator proto_generator; | |
1873 typedef proto::tag::proto_expr<Tag, proto_domain> fusion_tag; | |
1874 typedef expr proto_derived_expr; | |
1875 typedef void proto_is_expr_; | |
1876 typedef Arg0 proto_child0; proto_child0 child0; typedef Arg1 proto_child1; proto_child1 child1; typedef Arg2 proto_child2; proto_child2 child2; typedef Arg3 proto_child3; proto_child3 child3; typedef Arg4 proto_child4; proto_child4 child4; | |
1877 typedef void proto_child5; typedef void proto_child6; typedef void proto_child7; typedef void proto_child8; typedef void proto_child9; | |
1878 | |
1879 | |
1880 BOOST_FORCEINLINE | |
1881 expr const &proto_base() const | |
1882 { | |
1883 return *this; | |
1884 } | |
1885 | |
1886 | |
1887 BOOST_FORCEINLINE | |
1888 expr &proto_base() | |
1889 { | |
1890 return *this; | |
1891 } | |
1892 | |
1893 | |
1894 | |
1895 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4> | |
1896 BOOST_FORCEINLINE | |
1897 static expr const make(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4) | |
1898 { | |
1899 expr that = {a0 , a1 , a2 , a3 , a4}; | |
1900 return that; | |
1901 } | |
1902 | |
1903 | |
1904 typedef detail::not_a_valid_type address_of_hack_type_; | |
1905 | |
1906 | |
1907 | |
1908 | |
1909 BOOST_FORCEINLINE | |
1910 proto::expr< | |
1911 proto::tag::assign | |
1912 , list2<expr &, expr const &> | |
1913 , 2 | |
1914 > const | |
1915 operator =(expr const &a) | |
1916 { | |
1917 proto::expr< | |
1918 proto::tag::assign | |
1919 , list2<expr &, expr const &> | |
1920 , 2 | |
1921 > that = {*this, a}; | |
1922 return that; | |
1923 } | |
1924 | |
1925 | |
1926 | |
1927 | |
1928 template<typename A> | |
1929 BOOST_FORCEINLINE | |
1930 proto::expr< | |
1931 proto::tag::assign | |
1932 , list2<expr const &, typename result_of::as_child<A>::type> | |
1933 , 2 | |
1934 > const | |
1935 operator =(A &a) const | |
1936 { | |
1937 proto::expr< | |
1938 proto::tag::assign | |
1939 , list2<expr const &, typename result_of::as_child<A>::type> | |
1940 , 2 | |
1941 > that = {*this, proto::as_child(a)}; | |
1942 return that; | |
1943 } | |
1944 | |
1945 | |
1946 template<typename A> | |
1947 BOOST_FORCEINLINE | |
1948 proto::expr< | |
1949 proto::tag::assign | |
1950 , list2<expr const &, typename result_of::as_child<A const>::type> | |
1951 , 2 | |
1952 > const | |
1953 operator =(A const &a) const | |
1954 { | |
1955 proto::expr< | |
1956 proto::tag::assign | |
1957 , list2<expr const &, typename result_of::as_child<A const>::type> | |
1958 , 2 | |
1959 > that = {*this, proto::as_child(a)}; | |
1960 return that; | |
1961 } | |
1962 | |
1963 | |
1964 | |
1965 | |
1966 template<typename A> | |
1967 BOOST_FORCEINLINE | |
1968 proto::expr< | |
1969 proto::tag::subscript | |
1970 , list2<expr const &, typename result_of::as_child<A>::type> | |
1971 , 2 | |
1972 > const | |
1973 operator [](A &a) const | |
1974 { | |
1975 proto::expr< | |
1976 proto::tag::subscript | |
1977 , list2<expr const &, typename result_of::as_child<A>::type> | |
1978 , 2 | |
1979 > that = {*this, proto::as_child(a)}; | |
1980 return that; | |
1981 } | |
1982 | |
1983 | |
1984 template<typename A> | |
1985 BOOST_FORCEINLINE | |
1986 proto::expr< | |
1987 proto::tag::subscript | |
1988 , list2<expr const &, typename result_of::as_child<A const>::type> | |
1989 , 2 | |
1990 > const | |
1991 operator [](A const &a) const | |
1992 { | |
1993 proto::expr< | |
1994 proto::tag::subscript | |
1995 , list2<expr const &, typename result_of::as_child<A const>::type> | |
1996 , 2 | |
1997 > that = {*this, proto::as_child(a)}; | |
1998 return that; | |
1999 } | |
2000 | |
2001 | |
2002 template<typename Sig> | |
2003 struct result | |
2004 { | |
2005 typedef typename result_of::funop<Sig, expr, default_domain>::type const type; | |
2006 }; | |
2007 | |
2008 | |
2009 | |
2010 BOOST_FORCEINLINE | |
2011 proto::expr<proto::tag::function, list1<expr const &>, 1> const | |
2012 operator ()() const | |
2013 { | |
2014 proto::expr<proto::tag::function, list1<expr const &>, 1> that = {*this}; | |
2015 return that; | |
2016 } | |
2017 | |
2018 | |
2019 template<typename A0> | |
2020 BOOST_FORCEINLINE | |
2021 typename result_of::funop1< | |
2022 expr const | |
2023 , default_domain , const A0 | |
2024 >::type const | |
2025 operator ()(A0 const &a0) const | |
2026 { | |
2027 return result_of::funop1< | |
2028 expr const | |
2029 , default_domain , const A0 | |
2030 >::call(*this , a0); | |
2031 } | |
2032 | |
2033 | |
2034 template<typename A0 , typename A1> | |
2035 BOOST_FORCEINLINE | |
2036 typename result_of::funop2< | |
2037 expr const | |
2038 , default_domain , const A0 , const A1 | |
2039 >::type const | |
2040 operator ()(A0 const &a0 , A1 const &a1) const | |
2041 { | |
2042 return result_of::funop2< | |
2043 expr const | |
2044 , default_domain , const A0 , const A1 | |
2045 >::call(*this , a0 , a1); | |
2046 } | |
2047 | |
2048 | |
2049 template<typename A0 , typename A1 , typename A2> | |
2050 BOOST_FORCEINLINE | |
2051 typename result_of::funop3< | |
2052 expr const | |
2053 , default_domain , const A0 , const A1 , const A2 | |
2054 >::type const | |
2055 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2) const | |
2056 { | |
2057 return result_of::funop3< | |
2058 expr const | |
2059 , default_domain , const A0 , const A1 , const A2 | |
2060 >::call(*this , a0 , a1 , a2); | |
2061 } | |
2062 | |
2063 | |
2064 template<typename A0 , typename A1 , typename A2 , typename A3> | |
2065 BOOST_FORCEINLINE | |
2066 typename result_of::funop4< | |
2067 expr const | |
2068 , default_domain , const A0 , const A1 , const A2 , const A3 | |
2069 >::type const | |
2070 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3) const | |
2071 { | |
2072 return result_of::funop4< | |
2073 expr const | |
2074 , default_domain , const A0 , const A1 , const A2 , const A3 | |
2075 >::call(*this , a0 , a1 , a2 , a3); | |
2076 } | |
2077 | |
2078 | |
2079 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4> | |
2080 BOOST_FORCEINLINE | |
2081 typename result_of::funop5< | |
2082 expr const | |
2083 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 | |
2084 >::type const | |
2085 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4) const | |
2086 { | |
2087 return result_of::funop5< | |
2088 expr const | |
2089 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 | |
2090 >::call(*this , a0 , a1 , a2 , a3 , a4); | |
2091 } | |
2092 | |
2093 | |
2094 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5> | |
2095 BOOST_FORCEINLINE | |
2096 typename result_of::funop6< | |
2097 expr const | |
2098 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 | |
2099 >::type const | |
2100 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5) const | |
2101 { | |
2102 return result_of::funop6< | |
2103 expr const | |
2104 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 | |
2105 >::call(*this , a0 , a1 , a2 , a3 , a4 , a5); | |
2106 } | |
2107 | |
2108 | |
2109 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6> | |
2110 BOOST_FORCEINLINE | |
2111 typename result_of::funop7< | |
2112 expr const | |
2113 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 | |
2114 >::type const | |
2115 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5 , A6 const &a6) const | |
2116 { | |
2117 return result_of::funop7< | |
2118 expr const | |
2119 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 | |
2120 >::call(*this , a0 , a1 , a2 , a3 , a4 , a5 , a6); | |
2121 } | |
2122 | |
2123 | |
2124 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7> | |
2125 BOOST_FORCEINLINE | |
2126 typename result_of::funop8< | |
2127 expr const | |
2128 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7 | |
2129 >::type const | |
2130 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5 , A6 const &a6 , A7 const &a7) const | |
2131 { | |
2132 return result_of::funop8< | |
2133 expr const | |
2134 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7 | |
2135 >::call(*this , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7); | |
2136 } | |
2137 | |
2138 | |
2139 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8> | |
2140 BOOST_FORCEINLINE | |
2141 typename result_of::funop9< | |
2142 expr const | |
2143 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7 , const A8 | |
2144 >::type const | |
2145 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5 , A6 const &a6 , A7 const &a7 , A8 const &a8) const | |
2146 { | |
2147 return result_of::funop9< | |
2148 expr const | |
2149 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7 , const A8 | |
2150 >::call(*this , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8); | |
2151 } | |
2152 }; | |
2153 | |
2154 | |
2155 | |
2156 | |
2157 | |
2158 | |
2159 | |
2160 | |
2161 | |
2162 | |
2163 | |
2164 | |
2165 | |
2166 | |
2167 | |
2168 | |
2169 | |
2170 | |
2171 | |
2172 | |
2173 | |
2174 | |
2175 | |
2176 | |
2177 | |
2178 | |
2179 | |
2180 template<typename Tag , typename Arg0 , typename Arg1 , typename Arg2 , typename Arg3 , typename Arg4 , typename Arg5> | |
2181 struct expr<Tag, list6<Arg0 , Arg1 , Arg2 , Arg3 , Arg4 , Arg5>, 6 > | |
2182 { | |
2183 typedef Tag proto_tag; | |
2184 static const long proto_arity_c = 6; | |
2185 typedef mpl::long_<6 > proto_arity; | |
2186 typedef expr proto_base_expr; | |
2187 typedef list6<Arg0 , Arg1 , Arg2 , Arg3 , Arg4 , Arg5> proto_args; | |
2188 typedef basic_expr<Tag, proto_args, 6 > proto_grammar; | |
2189 typedef default_domain proto_domain; | |
2190 typedef default_generator proto_generator; | |
2191 typedef proto::tag::proto_expr<Tag, proto_domain> fusion_tag; | |
2192 typedef expr proto_derived_expr; | |
2193 typedef void proto_is_expr_; | |
2194 typedef Arg0 proto_child0; proto_child0 child0; typedef Arg1 proto_child1; proto_child1 child1; typedef Arg2 proto_child2; proto_child2 child2; typedef Arg3 proto_child3; proto_child3 child3; typedef Arg4 proto_child4; proto_child4 child4; typedef Arg5 proto_child5; proto_child5 child5; | |
2195 typedef void proto_child6; typedef void proto_child7; typedef void proto_child8; typedef void proto_child9; | |
2196 | |
2197 | |
2198 BOOST_FORCEINLINE | |
2199 expr const &proto_base() const | |
2200 { | |
2201 return *this; | |
2202 } | |
2203 | |
2204 | |
2205 BOOST_FORCEINLINE | |
2206 expr &proto_base() | |
2207 { | |
2208 return *this; | |
2209 } | |
2210 | |
2211 | |
2212 | |
2213 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5> | |
2214 BOOST_FORCEINLINE | |
2215 static expr const make(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5) | |
2216 { | |
2217 expr that = {a0 , a1 , a2 , a3 , a4 , a5}; | |
2218 return that; | |
2219 } | |
2220 | |
2221 | |
2222 typedef detail::not_a_valid_type address_of_hack_type_; | |
2223 | |
2224 | |
2225 | |
2226 | |
2227 BOOST_FORCEINLINE | |
2228 proto::expr< | |
2229 proto::tag::assign | |
2230 , list2<expr &, expr const &> | |
2231 , 2 | |
2232 > const | |
2233 operator =(expr const &a) | |
2234 { | |
2235 proto::expr< | |
2236 proto::tag::assign | |
2237 , list2<expr &, expr const &> | |
2238 , 2 | |
2239 > that = {*this, a}; | |
2240 return that; | |
2241 } | |
2242 | |
2243 | |
2244 | |
2245 | |
2246 template<typename A> | |
2247 BOOST_FORCEINLINE | |
2248 proto::expr< | |
2249 proto::tag::assign | |
2250 , list2<expr const &, typename result_of::as_child<A>::type> | |
2251 , 2 | |
2252 > const | |
2253 operator =(A &a) const | |
2254 { | |
2255 proto::expr< | |
2256 proto::tag::assign | |
2257 , list2<expr const &, typename result_of::as_child<A>::type> | |
2258 , 2 | |
2259 > that = {*this, proto::as_child(a)}; | |
2260 return that; | |
2261 } | |
2262 | |
2263 | |
2264 template<typename A> | |
2265 BOOST_FORCEINLINE | |
2266 proto::expr< | |
2267 proto::tag::assign | |
2268 , list2<expr const &, typename result_of::as_child<A const>::type> | |
2269 , 2 | |
2270 > const | |
2271 operator =(A const &a) const | |
2272 { | |
2273 proto::expr< | |
2274 proto::tag::assign | |
2275 , list2<expr const &, typename result_of::as_child<A const>::type> | |
2276 , 2 | |
2277 > that = {*this, proto::as_child(a)}; | |
2278 return that; | |
2279 } | |
2280 | |
2281 | |
2282 | |
2283 | |
2284 template<typename A> | |
2285 BOOST_FORCEINLINE | |
2286 proto::expr< | |
2287 proto::tag::subscript | |
2288 , list2<expr const &, typename result_of::as_child<A>::type> | |
2289 , 2 | |
2290 > const | |
2291 operator [](A &a) const | |
2292 { | |
2293 proto::expr< | |
2294 proto::tag::subscript | |
2295 , list2<expr const &, typename result_of::as_child<A>::type> | |
2296 , 2 | |
2297 > that = {*this, proto::as_child(a)}; | |
2298 return that; | |
2299 } | |
2300 | |
2301 | |
2302 template<typename A> | |
2303 BOOST_FORCEINLINE | |
2304 proto::expr< | |
2305 proto::tag::subscript | |
2306 , list2<expr const &, typename result_of::as_child<A const>::type> | |
2307 , 2 | |
2308 > const | |
2309 operator [](A const &a) const | |
2310 { | |
2311 proto::expr< | |
2312 proto::tag::subscript | |
2313 , list2<expr const &, typename result_of::as_child<A const>::type> | |
2314 , 2 | |
2315 > that = {*this, proto::as_child(a)}; | |
2316 return that; | |
2317 } | |
2318 | |
2319 | |
2320 template<typename Sig> | |
2321 struct result | |
2322 { | |
2323 typedef typename result_of::funop<Sig, expr, default_domain>::type const type; | |
2324 }; | |
2325 | |
2326 | |
2327 | |
2328 BOOST_FORCEINLINE | |
2329 proto::expr<proto::tag::function, list1<expr const &>, 1> const | |
2330 operator ()() const | |
2331 { | |
2332 proto::expr<proto::tag::function, list1<expr const &>, 1> that = {*this}; | |
2333 return that; | |
2334 } | |
2335 | |
2336 | |
2337 template<typename A0> | |
2338 BOOST_FORCEINLINE | |
2339 typename result_of::funop1< | |
2340 expr const | |
2341 , default_domain , const A0 | |
2342 >::type const | |
2343 operator ()(A0 const &a0) const | |
2344 { | |
2345 return result_of::funop1< | |
2346 expr const | |
2347 , default_domain , const A0 | |
2348 >::call(*this , a0); | |
2349 } | |
2350 | |
2351 | |
2352 template<typename A0 , typename A1> | |
2353 BOOST_FORCEINLINE | |
2354 typename result_of::funop2< | |
2355 expr const | |
2356 , default_domain , const A0 , const A1 | |
2357 >::type const | |
2358 operator ()(A0 const &a0 , A1 const &a1) const | |
2359 { | |
2360 return result_of::funop2< | |
2361 expr const | |
2362 , default_domain , const A0 , const A1 | |
2363 >::call(*this , a0 , a1); | |
2364 } | |
2365 | |
2366 | |
2367 template<typename A0 , typename A1 , typename A2> | |
2368 BOOST_FORCEINLINE | |
2369 typename result_of::funop3< | |
2370 expr const | |
2371 , default_domain , const A0 , const A1 , const A2 | |
2372 >::type const | |
2373 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2) const | |
2374 { | |
2375 return result_of::funop3< | |
2376 expr const | |
2377 , default_domain , const A0 , const A1 , const A2 | |
2378 >::call(*this , a0 , a1 , a2); | |
2379 } | |
2380 | |
2381 | |
2382 template<typename A0 , typename A1 , typename A2 , typename A3> | |
2383 BOOST_FORCEINLINE | |
2384 typename result_of::funop4< | |
2385 expr const | |
2386 , default_domain , const A0 , const A1 , const A2 , const A3 | |
2387 >::type const | |
2388 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3) const | |
2389 { | |
2390 return result_of::funop4< | |
2391 expr const | |
2392 , default_domain , const A0 , const A1 , const A2 , const A3 | |
2393 >::call(*this , a0 , a1 , a2 , a3); | |
2394 } | |
2395 | |
2396 | |
2397 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4> | |
2398 BOOST_FORCEINLINE | |
2399 typename result_of::funop5< | |
2400 expr const | |
2401 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 | |
2402 >::type const | |
2403 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4) const | |
2404 { | |
2405 return result_of::funop5< | |
2406 expr const | |
2407 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 | |
2408 >::call(*this , a0 , a1 , a2 , a3 , a4); | |
2409 } | |
2410 | |
2411 | |
2412 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5> | |
2413 BOOST_FORCEINLINE | |
2414 typename result_of::funop6< | |
2415 expr const | |
2416 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 | |
2417 >::type const | |
2418 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5) const | |
2419 { | |
2420 return result_of::funop6< | |
2421 expr const | |
2422 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 | |
2423 >::call(*this , a0 , a1 , a2 , a3 , a4 , a5); | |
2424 } | |
2425 | |
2426 | |
2427 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6> | |
2428 BOOST_FORCEINLINE | |
2429 typename result_of::funop7< | |
2430 expr const | |
2431 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 | |
2432 >::type const | |
2433 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5 , A6 const &a6) const | |
2434 { | |
2435 return result_of::funop7< | |
2436 expr const | |
2437 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 | |
2438 >::call(*this , a0 , a1 , a2 , a3 , a4 , a5 , a6); | |
2439 } | |
2440 | |
2441 | |
2442 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7> | |
2443 BOOST_FORCEINLINE | |
2444 typename result_of::funop8< | |
2445 expr const | |
2446 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7 | |
2447 >::type const | |
2448 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5 , A6 const &a6 , A7 const &a7) const | |
2449 { | |
2450 return result_of::funop8< | |
2451 expr const | |
2452 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7 | |
2453 >::call(*this , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7); | |
2454 } | |
2455 | |
2456 | |
2457 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8> | |
2458 BOOST_FORCEINLINE | |
2459 typename result_of::funop9< | |
2460 expr const | |
2461 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7 , const A8 | |
2462 >::type const | |
2463 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5 , A6 const &a6 , A7 const &a7 , A8 const &a8) const | |
2464 { | |
2465 return result_of::funop9< | |
2466 expr const | |
2467 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7 , const A8 | |
2468 >::call(*this , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8); | |
2469 } | |
2470 }; | |
2471 | |
2472 | |
2473 | |
2474 | |
2475 | |
2476 | |
2477 | |
2478 | |
2479 | |
2480 | |
2481 | |
2482 | |
2483 | |
2484 | |
2485 | |
2486 | |
2487 | |
2488 | |
2489 | |
2490 | |
2491 | |
2492 | |
2493 | |
2494 | |
2495 | |
2496 | |
2497 | |
2498 template<typename Tag , typename Arg0 , typename Arg1 , typename Arg2 , typename Arg3 , typename Arg4 , typename Arg5 , typename Arg6> | |
2499 struct expr<Tag, list7<Arg0 , Arg1 , Arg2 , Arg3 , Arg4 , Arg5 , Arg6>, 7 > | |
2500 { | |
2501 typedef Tag proto_tag; | |
2502 static const long proto_arity_c = 7; | |
2503 typedef mpl::long_<7 > proto_arity; | |
2504 typedef expr proto_base_expr; | |
2505 typedef list7<Arg0 , Arg1 , Arg2 , Arg3 , Arg4 , Arg5 , Arg6> proto_args; | |
2506 typedef basic_expr<Tag, proto_args, 7 > proto_grammar; | |
2507 typedef default_domain proto_domain; | |
2508 typedef default_generator proto_generator; | |
2509 typedef proto::tag::proto_expr<Tag, proto_domain> fusion_tag; | |
2510 typedef expr proto_derived_expr; | |
2511 typedef void proto_is_expr_; | |
2512 typedef Arg0 proto_child0; proto_child0 child0; typedef Arg1 proto_child1; proto_child1 child1; typedef Arg2 proto_child2; proto_child2 child2; typedef Arg3 proto_child3; proto_child3 child3; typedef Arg4 proto_child4; proto_child4 child4; typedef Arg5 proto_child5; proto_child5 child5; typedef Arg6 proto_child6; proto_child6 child6; | |
2513 typedef void proto_child7; typedef void proto_child8; typedef void proto_child9; | |
2514 | |
2515 | |
2516 BOOST_FORCEINLINE | |
2517 expr const &proto_base() const | |
2518 { | |
2519 return *this; | |
2520 } | |
2521 | |
2522 | |
2523 BOOST_FORCEINLINE | |
2524 expr &proto_base() | |
2525 { | |
2526 return *this; | |
2527 } | |
2528 | |
2529 | |
2530 | |
2531 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6> | |
2532 BOOST_FORCEINLINE | |
2533 static expr const make(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5 , A6 const &a6) | |
2534 { | |
2535 expr that = {a0 , a1 , a2 , a3 , a4 , a5 , a6}; | |
2536 return that; | |
2537 } | |
2538 | |
2539 | |
2540 typedef detail::not_a_valid_type address_of_hack_type_; | |
2541 | |
2542 | |
2543 | |
2544 | |
2545 BOOST_FORCEINLINE | |
2546 proto::expr< | |
2547 proto::tag::assign | |
2548 , list2<expr &, expr const &> | |
2549 , 2 | |
2550 > const | |
2551 operator =(expr const &a) | |
2552 { | |
2553 proto::expr< | |
2554 proto::tag::assign | |
2555 , list2<expr &, expr const &> | |
2556 , 2 | |
2557 > that = {*this, a}; | |
2558 return that; | |
2559 } | |
2560 | |
2561 | |
2562 | |
2563 | |
2564 template<typename A> | |
2565 BOOST_FORCEINLINE | |
2566 proto::expr< | |
2567 proto::tag::assign | |
2568 , list2<expr const &, typename result_of::as_child<A>::type> | |
2569 , 2 | |
2570 > const | |
2571 operator =(A &a) const | |
2572 { | |
2573 proto::expr< | |
2574 proto::tag::assign | |
2575 , list2<expr const &, typename result_of::as_child<A>::type> | |
2576 , 2 | |
2577 > that = {*this, proto::as_child(a)}; | |
2578 return that; | |
2579 } | |
2580 | |
2581 | |
2582 template<typename A> | |
2583 BOOST_FORCEINLINE | |
2584 proto::expr< | |
2585 proto::tag::assign | |
2586 , list2<expr const &, typename result_of::as_child<A const>::type> | |
2587 , 2 | |
2588 > const | |
2589 operator =(A const &a) const | |
2590 { | |
2591 proto::expr< | |
2592 proto::tag::assign | |
2593 , list2<expr const &, typename result_of::as_child<A const>::type> | |
2594 , 2 | |
2595 > that = {*this, proto::as_child(a)}; | |
2596 return that; | |
2597 } | |
2598 | |
2599 | |
2600 | |
2601 | |
2602 template<typename A> | |
2603 BOOST_FORCEINLINE | |
2604 proto::expr< | |
2605 proto::tag::subscript | |
2606 , list2<expr const &, typename result_of::as_child<A>::type> | |
2607 , 2 | |
2608 > const | |
2609 operator [](A &a) const | |
2610 { | |
2611 proto::expr< | |
2612 proto::tag::subscript | |
2613 , list2<expr const &, typename result_of::as_child<A>::type> | |
2614 , 2 | |
2615 > that = {*this, proto::as_child(a)}; | |
2616 return that; | |
2617 } | |
2618 | |
2619 | |
2620 template<typename A> | |
2621 BOOST_FORCEINLINE | |
2622 proto::expr< | |
2623 proto::tag::subscript | |
2624 , list2<expr const &, typename result_of::as_child<A const>::type> | |
2625 , 2 | |
2626 > const | |
2627 operator [](A const &a) const | |
2628 { | |
2629 proto::expr< | |
2630 proto::tag::subscript | |
2631 , list2<expr const &, typename result_of::as_child<A const>::type> | |
2632 , 2 | |
2633 > that = {*this, proto::as_child(a)}; | |
2634 return that; | |
2635 } | |
2636 | |
2637 | |
2638 template<typename Sig> | |
2639 struct result | |
2640 { | |
2641 typedef typename result_of::funop<Sig, expr, default_domain>::type const type; | |
2642 }; | |
2643 | |
2644 | |
2645 | |
2646 BOOST_FORCEINLINE | |
2647 proto::expr<proto::tag::function, list1<expr const &>, 1> const | |
2648 operator ()() const | |
2649 { | |
2650 proto::expr<proto::tag::function, list1<expr const &>, 1> that = {*this}; | |
2651 return that; | |
2652 } | |
2653 | |
2654 | |
2655 template<typename A0> | |
2656 BOOST_FORCEINLINE | |
2657 typename result_of::funop1< | |
2658 expr const | |
2659 , default_domain , const A0 | |
2660 >::type const | |
2661 operator ()(A0 const &a0) const | |
2662 { | |
2663 return result_of::funop1< | |
2664 expr const | |
2665 , default_domain , const A0 | |
2666 >::call(*this , a0); | |
2667 } | |
2668 | |
2669 | |
2670 template<typename A0 , typename A1> | |
2671 BOOST_FORCEINLINE | |
2672 typename result_of::funop2< | |
2673 expr const | |
2674 , default_domain , const A0 , const A1 | |
2675 >::type const | |
2676 operator ()(A0 const &a0 , A1 const &a1) const | |
2677 { | |
2678 return result_of::funop2< | |
2679 expr const | |
2680 , default_domain , const A0 , const A1 | |
2681 >::call(*this , a0 , a1); | |
2682 } | |
2683 | |
2684 | |
2685 template<typename A0 , typename A1 , typename A2> | |
2686 BOOST_FORCEINLINE | |
2687 typename result_of::funop3< | |
2688 expr const | |
2689 , default_domain , const A0 , const A1 , const A2 | |
2690 >::type const | |
2691 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2) const | |
2692 { | |
2693 return result_of::funop3< | |
2694 expr const | |
2695 , default_domain , const A0 , const A1 , const A2 | |
2696 >::call(*this , a0 , a1 , a2); | |
2697 } | |
2698 | |
2699 | |
2700 template<typename A0 , typename A1 , typename A2 , typename A3> | |
2701 BOOST_FORCEINLINE | |
2702 typename result_of::funop4< | |
2703 expr const | |
2704 , default_domain , const A0 , const A1 , const A2 , const A3 | |
2705 >::type const | |
2706 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3) const | |
2707 { | |
2708 return result_of::funop4< | |
2709 expr const | |
2710 , default_domain , const A0 , const A1 , const A2 , const A3 | |
2711 >::call(*this , a0 , a1 , a2 , a3); | |
2712 } | |
2713 | |
2714 | |
2715 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4> | |
2716 BOOST_FORCEINLINE | |
2717 typename result_of::funop5< | |
2718 expr const | |
2719 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 | |
2720 >::type const | |
2721 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4) const | |
2722 { | |
2723 return result_of::funop5< | |
2724 expr const | |
2725 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 | |
2726 >::call(*this , a0 , a1 , a2 , a3 , a4); | |
2727 } | |
2728 | |
2729 | |
2730 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5> | |
2731 BOOST_FORCEINLINE | |
2732 typename result_of::funop6< | |
2733 expr const | |
2734 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 | |
2735 >::type const | |
2736 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5) const | |
2737 { | |
2738 return result_of::funop6< | |
2739 expr const | |
2740 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 | |
2741 >::call(*this , a0 , a1 , a2 , a3 , a4 , a5); | |
2742 } | |
2743 | |
2744 | |
2745 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6> | |
2746 BOOST_FORCEINLINE | |
2747 typename result_of::funop7< | |
2748 expr const | |
2749 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 | |
2750 >::type const | |
2751 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5 , A6 const &a6) const | |
2752 { | |
2753 return result_of::funop7< | |
2754 expr const | |
2755 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 | |
2756 >::call(*this , a0 , a1 , a2 , a3 , a4 , a5 , a6); | |
2757 } | |
2758 | |
2759 | |
2760 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7> | |
2761 BOOST_FORCEINLINE | |
2762 typename result_of::funop8< | |
2763 expr const | |
2764 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7 | |
2765 >::type const | |
2766 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5 , A6 const &a6 , A7 const &a7) const | |
2767 { | |
2768 return result_of::funop8< | |
2769 expr const | |
2770 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7 | |
2771 >::call(*this , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7); | |
2772 } | |
2773 | |
2774 | |
2775 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8> | |
2776 BOOST_FORCEINLINE | |
2777 typename result_of::funop9< | |
2778 expr const | |
2779 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7 , const A8 | |
2780 >::type const | |
2781 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5 , A6 const &a6 , A7 const &a7 , A8 const &a8) const | |
2782 { | |
2783 return result_of::funop9< | |
2784 expr const | |
2785 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7 , const A8 | |
2786 >::call(*this , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8); | |
2787 } | |
2788 }; | |
2789 | |
2790 | |
2791 | |
2792 | |
2793 | |
2794 | |
2795 | |
2796 | |
2797 | |
2798 | |
2799 | |
2800 | |
2801 | |
2802 | |
2803 | |
2804 | |
2805 | |
2806 | |
2807 | |
2808 | |
2809 | |
2810 | |
2811 | |
2812 | |
2813 | |
2814 | |
2815 | |
2816 template<typename Tag , typename Arg0 , typename Arg1 , typename Arg2 , typename Arg3 , typename Arg4 , typename Arg5 , typename Arg6 , typename Arg7> | |
2817 struct expr<Tag, list8<Arg0 , Arg1 , Arg2 , Arg3 , Arg4 , Arg5 , Arg6 , Arg7>, 8 > | |
2818 { | |
2819 typedef Tag proto_tag; | |
2820 static const long proto_arity_c = 8; | |
2821 typedef mpl::long_<8 > proto_arity; | |
2822 typedef expr proto_base_expr; | |
2823 typedef list8<Arg0 , Arg1 , Arg2 , Arg3 , Arg4 , Arg5 , Arg6 , Arg7> proto_args; | |
2824 typedef basic_expr<Tag, proto_args, 8 > proto_grammar; | |
2825 typedef default_domain proto_domain; | |
2826 typedef default_generator proto_generator; | |
2827 typedef proto::tag::proto_expr<Tag, proto_domain> fusion_tag; | |
2828 typedef expr proto_derived_expr; | |
2829 typedef void proto_is_expr_; | |
2830 typedef Arg0 proto_child0; proto_child0 child0; typedef Arg1 proto_child1; proto_child1 child1; typedef Arg2 proto_child2; proto_child2 child2; typedef Arg3 proto_child3; proto_child3 child3; typedef Arg4 proto_child4; proto_child4 child4; typedef Arg5 proto_child5; proto_child5 child5; typedef Arg6 proto_child6; proto_child6 child6; typedef Arg7 proto_child7; proto_child7 child7; | |
2831 typedef void proto_child8; typedef void proto_child9; | |
2832 | |
2833 | |
2834 BOOST_FORCEINLINE | |
2835 expr const &proto_base() const | |
2836 { | |
2837 return *this; | |
2838 } | |
2839 | |
2840 | |
2841 BOOST_FORCEINLINE | |
2842 expr &proto_base() | |
2843 { | |
2844 return *this; | |
2845 } | |
2846 | |
2847 | |
2848 | |
2849 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7> | |
2850 BOOST_FORCEINLINE | |
2851 static expr const make(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5 , A6 const &a6 , A7 const &a7) | |
2852 { | |
2853 expr that = {a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7}; | |
2854 return that; | |
2855 } | |
2856 | |
2857 | |
2858 typedef detail::not_a_valid_type address_of_hack_type_; | |
2859 | |
2860 | |
2861 | |
2862 | |
2863 BOOST_FORCEINLINE | |
2864 proto::expr< | |
2865 proto::tag::assign | |
2866 , list2<expr &, expr const &> | |
2867 , 2 | |
2868 > const | |
2869 operator =(expr const &a) | |
2870 { | |
2871 proto::expr< | |
2872 proto::tag::assign | |
2873 , list2<expr &, expr const &> | |
2874 , 2 | |
2875 > that = {*this, a}; | |
2876 return that; | |
2877 } | |
2878 | |
2879 | |
2880 | |
2881 | |
2882 template<typename A> | |
2883 BOOST_FORCEINLINE | |
2884 proto::expr< | |
2885 proto::tag::assign | |
2886 , list2<expr const &, typename result_of::as_child<A>::type> | |
2887 , 2 | |
2888 > const | |
2889 operator =(A &a) const | |
2890 { | |
2891 proto::expr< | |
2892 proto::tag::assign | |
2893 , list2<expr const &, typename result_of::as_child<A>::type> | |
2894 , 2 | |
2895 > that = {*this, proto::as_child(a)}; | |
2896 return that; | |
2897 } | |
2898 | |
2899 | |
2900 template<typename A> | |
2901 BOOST_FORCEINLINE | |
2902 proto::expr< | |
2903 proto::tag::assign | |
2904 , list2<expr const &, typename result_of::as_child<A const>::type> | |
2905 , 2 | |
2906 > const | |
2907 operator =(A const &a) const | |
2908 { | |
2909 proto::expr< | |
2910 proto::tag::assign | |
2911 , list2<expr const &, typename result_of::as_child<A const>::type> | |
2912 , 2 | |
2913 > that = {*this, proto::as_child(a)}; | |
2914 return that; | |
2915 } | |
2916 | |
2917 | |
2918 | |
2919 | |
2920 template<typename A> | |
2921 BOOST_FORCEINLINE | |
2922 proto::expr< | |
2923 proto::tag::subscript | |
2924 , list2<expr const &, typename result_of::as_child<A>::type> | |
2925 , 2 | |
2926 > const | |
2927 operator [](A &a) const | |
2928 { | |
2929 proto::expr< | |
2930 proto::tag::subscript | |
2931 , list2<expr const &, typename result_of::as_child<A>::type> | |
2932 , 2 | |
2933 > that = {*this, proto::as_child(a)}; | |
2934 return that; | |
2935 } | |
2936 | |
2937 | |
2938 template<typename A> | |
2939 BOOST_FORCEINLINE | |
2940 proto::expr< | |
2941 proto::tag::subscript | |
2942 , list2<expr const &, typename result_of::as_child<A const>::type> | |
2943 , 2 | |
2944 > const | |
2945 operator [](A const &a) const | |
2946 { | |
2947 proto::expr< | |
2948 proto::tag::subscript | |
2949 , list2<expr const &, typename result_of::as_child<A const>::type> | |
2950 , 2 | |
2951 > that = {*this, proto::as_child(a)}; | |
2952 return that; | |
2953 } | |
2954 | |
2955 | |
2956 template<typename Sig> | |
2957 struct result | |
2958 { | |
2959 typedef typename result_of::funop<Sig, expr, default_domain>::type const type; | |
2960 }; | |
2961 | |
2962 | |
2963 | |
2964 BOOST_FORCEINLINE | |
2965 proto::expr<proto::tag::function, list1<expr const &>, 1> const | |
2966 operator ()() const | |
2967 { | |
2968 proto::expr<proto::tag::function, list1<expr const &>, 1> that = {*this}; | |
2969 return that; | |
2970 } | |
2971 | |
2972 | |
2973 template<typename A0> | |
2974 BOOST_FORCEINLINE | |
2975 typename result_of::funop1< | |
2976 expr const | |
2977 , default_domain , const A0 | |
2978 >::type const | |
2979 operator ()(A0 const &a0) const | |
2980 { | |
2981 return result_of::funop1< | |
2982 expr const | |
2983 , default_domain , const A0 | |
2984 >::call(*this , a0); | |
2985 } | |
2986 | |
2987 | |
2988 template<typename A0 , typename A1> | |
2989 BOOST_FORCEINLINE | |
2990 typename result_of::funop2< | |
2991 expr const | |
2992 , default_domain , const A0 , const A1 | |
2993 >::type const | |
2994 operator ()(A0 const &a0 , A1 const &a1) const | |
2995 { | |
2996 return result_of::funop2< | |
2997 expr const | |
2998 , default_domain , const A0 , const A1 | |
2999 >::call(*this , a0 , a1); | |
3000 } | |
3001 | |
3002 | |
3003 template<typename A0 , typename A1 , typename A2> | |
3004 BOOST_FORCEINLINE | |
3005 typename result_of::funop3< | |
3006 expr const | |
3007 , default_domain , const A0 , const A1 , const A2 | |
3008 >::type const | |
3009 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2) const | |
3010 { | |
3011 return result_of::funop3< | |
3012 expr const | |
3013 , default_domain , const A0 , const A1 , const A2 | |
3014 >::call(*this , a0 , a1 , a2); | |
3015 } | |
3016 | |
3017 | |
3018 template<typename A0 , typename A1 , typename A2 , typename A3> | |
3019 BOOST_FORCEINLINE | |
3020 typename result_of::funop4< | |
3021 expr const | |
3022 , default_domain , const A0 , const A1 , const A2 , const A3 | |
3023 >::type const | |
3024 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3) const | |
3025 { | |
3026 return result_of::funop4< | |
3027 expr const | |
3028 , default_domain , const A0 , const A1 , const A2 , const A3 | |
3029 >::call(*this , a0 , a1 , a2 , a3); | |
3030 } | |
3031 | |
3032 | |
3033 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4> | |
3034 BOOST_FORCEINLINE | |
3035 typename result_of::funop5< | |
3036 expr const | |
3037 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 | |
3038 >::type const | |
3039 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4) const | |
3040 { | |
3041 return result_of::funop5< | |
3042 expr const | |
3043 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 | |
3044 >::call(*this , a0 , a1 , a2 , a3 , a4); | |
3045 } | |
3046 | |
3047 | |
3048 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5> | |
3049 BOOST_FORCEINLINE | |
3050 typename result_of::funop6< | |
3051 expr const | |
3052 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 | |
3053 >::type const | |
3054 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5) const | |
3055 { | |
3056 return result_of::funop6< | |
3057 expr const | |
3058 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 | |
3059 >::call(*this , a0 , a1 , a2 , a3 , a4 , a5); | |
3060 } | |
3061 | |
3062 | |
3063 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6> | |
3064 BOOST_FORCEINLINE | |
3065 typename result_of::funop7< | |
3066 expr const | |
3067 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 | |
3068 >::type const | |
3069 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5 , A6 const &a6) const | |
3070 { | |
3071 return result_of::funop7< | |
3072 expr const | |
3073 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 | |
3074 >::call(*this , a0 , a1 , a2 , a3 , a4 , a5 , a6); | |
3075 } | |
3076 | |
3077 | |
3078 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7> | |
3079 BOOST_FORCEINLINE | |
3080 typename result_of::funop8< | |
3081 expr const | |
3082 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7 | |
3083 >::type const | |
3084 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5 , A6 const &a6 , A7 const &a7) const | |
3085 { | |
3086 return result_of::funop8< | |
3087 expr const | |
3088 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7 | |
3089 >::call(*this , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7); | |
3090 } | |
3091 | |
3092 | |
3093 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8> | |
3094 BOOST_FORCEINLINE | |
3095 typename result_of::funop9< | |
3096 expr const | |
3097 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7 , const A8 | |
3098 >::type const | |
3099 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5 , A6 const &a6 , A7 const &a7 , A8 const &a8) const | |
3100 { | |
3101 return result_of::funop9< | |
3102 expr const | |
3103 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7 , const A8 | |
3104 >::call(*this , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8); | |
3105 } | |
3106 }; | |
3107 | |
3108 | |
3109 | |
3110 | |
3111 | |
3112 | |
3113 | |
3114 | |
3115 | |
3116 | |
3117 | |
3118 | |
3119 | |
3120 | |
3121 | |
3122 | |
3123 | |
3124 | |
3125 | |
3126 | |
3127 | |
3128 | |
3129 | |
3130 | |
3131 | |
3132 | |
3133 | |
3134 template<typename Tag , typename Arg0 , typename Arg1 , typename Arg2 , typename Arg3 , typename Arg4 , typename Arg5 , typename Arg6 , typename Arg7 , typename Arg8> | |
3135 struct expr<Tag, list9<Arg0 , Arg1 , Arg2 , Arg3 , Arg4 , Arg5 , Arg6 , Arg7 , Arg8>, 9 > | |
3136 { | |
3137 typedef Tag proto_tag; | |
3138 static const long proto_arity_c = 9; | |
3139 typedef mpl::long_<9 > proto_arity; | |
3140 typedef expr proto_base_expr; | |
3141 typedef list9<Arg0 , Arg1 , Arg2 , Arg3 , Arg4 , Arg5 , Arg6 , Arg7 , Arg8> proto_args; | |
3142 typedef basic_expr<Tag, proto_args, 9 > proto_grammar; | |
3143 typedef default_domain proto_domain; | |
3144 typedef default_generator proto_generator; | |
3145 typedef proto::tag::proto_expr<Tag, proto_domain> fusion_tag; | |
3146 typedef expr proto_derived_expr; | |
3147 typedef void proto_is_expr_; | |
3148 typedef Arg0 proto_child0; proto_child0 child0; typedef Arg1 proto_child1; proto_child1 child1; typedef Arg2 proto_child2; proto_child2 child2; typedef Arg3 proto_child3; proto_child3 child3; typedef Arg4 proto_child4; proto_child4 child4; typedef Arg5 proto_child5; proto_child5 child5; typedef Arg6 proto_child6; proto_child6 child6; typedef Arg7 proto_child7; proto_child7 child7; typedef Arg8 proto_child8; proto_child8 child8; | |
3149 typedef void proto_child9; | |
3150 | |
3151 | |
3152 BOOST_FORCEINLINE | |
3153 expr const &proto_base() const | |
3154 { | |
3155 return *this; | |
3156 } | |
3157 | |
3158 | |
3159 BOOST_FORCEINLINE | |
3160 expr &proto_base() | |
3161 { | |
3162 return *this; | |
3163 } | |
3164 | |
3165 | |
3166 | |
3167 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8> | |
3168 BOOST_FORCEINLINE | |
3169 static expr const make(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5 , A6 const &a6 , A7 const &a7 , A8 const &a8) | |
3170 { | |
3171 expr that = {a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8}; | |
3172 return that; | |
3173 } | |
3174 | |
3175 | |
3176 typedef detail::not_a_valid_type address_of_hack_type_; | |
3177 | |
3178 | |
3179 | |
3180 | |
3181 BOOST_FORCEINLINE | |
3182 proto::expr< | |
3183 proto::tag::assign | |
3184 , list2<expr &, expr const &> | |
3185 , 2 | |
3186 > const | |
3187 operator =(expr const &a) | |
3188 { | |
3189 proto::expr< | |
3190 proto::tag::assign | |
3191 , list2<expr &, expr const &> | |
3192 , 2 | |
3193 > that = {*this, a}; | |
3194 return that; | |
3195 } | |
3196 | |
3197 | |
3198 | |
3199 | |
3200 template<typename A> | |
3201 BOOST_FORCEINLINE | |
3202 proto::expr< | |
3203 proto::tag::assign | |
3204 , list2<expr const &, typename result_of::as_child<A>::type> | |
3205 , 2 | |
3206 > const | |
3207 operator =(A &a) const | |
3208 { | |
3209 proto::expr< | |
3210 proto::tag::assign | |
3211 , list2<expr const &, typename result_of::as_child<A>::type> | |
3212 , 2 | |
3213 > that = {*this, proto::as_child(a)}; | |
3214 return that; | |
3215 } | |
3216 | |
3217 | |
3218 template<typename A> | |
3219 BOOST_FORCEINLINE | |
3220 proto::expr< | |
3221 proto::tag::assign | |
3222 , list2<expr const &, typename result_of::as_child<A const>::type> | |
3223 , 2 | |
3224 > const | |
3225 operator =(A const &a) const | |
3226 { | |
3227 proto::expr< | |
3228 proto::tag::assign | |
3229 , list2<expr const &, typename result_of::as_child<A const>::type> | |
3230 , 2 | |
3231 > that = {*this, proto::as_child(a)}; | |
3232 return that; | |
3233 } | |
3234 | |
3235 | |
3236 | |
3237 | |
3238 template<typename A> | |
3239 BOOST_FORCEINLINE | |
3240 proto::expr< | |
3241 proto::tag::subscript | |
3242 , list2<expr const &, typename result_of::as_child<A>::type> | |
3243 , 2 | |
3244 > const | |
3245 operator [](A &a) const | |
3246 { | |
3247 proto::expr< | |
3248 proto::tag::subscript | |
3249 , list2<expr const &, typename result_of::as_child<A>::type> | |
3250 , 2 | |
3251 > that = {*this, proto::as_child(a)}; | |
3252 return that; | |
3253 } | |
3254 | |
3255 | |
3256 template<typename A> | |
3257 BOOST_FORCEINLINE | |
3258 proto::expr< | |
3259 proto::tag::subscript | |
3260 , list2<expr const &, typename result_of::as_child<A const>::type> | |
3261 , 2 | |
3262 > const | |
3263 operator [](A const &a) const | |
3264 { | |
3265 proto::expr< | |
3266 proto::tag::subscript | |
3267 , list2<expr const &, typename result_of::as_child<A const>::type> | |
3268 , 2 | |
3269 > that = {*this, proto::as_child(a)}; | |
3270 return that; | |
3271 } | |
3272 | |
3273 | |
3274 template<typename Sig> | |
3275 struct result | |
3276 { | |
3277 typedef typename result_of::funop<Sig, expr, default_domain>::type const type; | |
3278 }; | |
3279 | |
3280 | |
3281 | |
3282 BOOST_FORCEINLINE | |
3283 proto::expr<proto::tag::function, list1<expr const &>, 1> const | |
3284 operator ()() const | |
3285 { | |
3286 proto::expr<proto::tag::function, list1<expr const &>, 1> that = {*this}; | |
3287 return that; | |
3288 } | |
3289 | |
3290 | |
3291 template<typename A0> | |
3292 BOOST_FORCEINLINE | |
3293 typename result_of::funop1< | |
3294 expr const | |
3295 , default_domain , const A0 | |
3296 >::type const | |
3297 operator ()(A0 const &a0) const | |
3298 { | |
3299 return result_of::funop1< | |
3300 expr const | |
3301 , default_domain , const A0 | |
3302 >::call(*this , a0); | |
3303 } | |
3304 | |
3305 | |
3306 template<typename A0 , typename A1> | |
3307 BOOST_FORCEINLINE | |
3308 typename result_of::funop2< | |
3309 expr const | |
3310 , default_domain , const A0 , const A1 | |
3311 >::type const | |
3312 operator ()(A0 const &a0 , A1 const &a1) const | |
3313 { | |
3314 return result_of::funop2< | |
3315 expr const | |
3316 , default_domain , const A0 , const A1 | |
3317 >::call(*this , a0 , a1); | |
3318 } | |
3319 | |
3320 | |
3321 template<typename A0 , typename A1 , typename A2> | |
3322 BOOST_FORCEINLINE | |
3323 typename result_of::funop3< | |
3324 expr const | |
3325 , default_domain , const A0 , const A1 , const A2 | |
3326 >::type const | |
3327 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2) const | |
3328 { | |
3329 return result_of::funop3< | |
3330 expr const | |
3331 , default_domain , const A0 , const A1 , const A2 | |
3332 >::call(*this , a0 , a1 , a2); | |
3333 } | |
3334 | |
3335 | |
3336 template<typename A0 , typename A1 , typename A2 , typename A3> | |
3337 BOOST_FORCEINLINE | |
3338 typename result_of::funop4< | |
3339 expr const | |
3340 , default_domain , const A0 , const A1 , const A2 , const A3 | |
3341 >::type const | |
3342 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3) const | |
3343 { | |
3344 return result_of::funop4< | |
3345 expr const | |
3346 , default_domain , const A0 , const A1 , const A2 , const A3 | |
3347 >::call(*this , a0 , a1 , a2 , a3); | |
3348 } | |
3349 | |
3350 | |
3351 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4> | |
3352 BOOST_FORCEINLINE | |
3353 typename result_of::funop5< | |
3354 expr const | |
3355 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 | |
3356 >::type const | |
3357 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4) const | |
3358 { | |
3359 return result_of::funop5< | |
3360 expr const | |
3361 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 | |
3362 >::call(*this , a0 , a1 , a2 , a3 , a4); | |
3363 } | |
3364 | |
3365 | |
3366 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5> | |
3367 BOOST_FORCEINLINE | |
3368 typename result_of::funop6< | |
3369 expr const | |
3370 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 | |
3371 >::type const | |
3372 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5) const | |
3373 { | |
3374 return result_of::funop6< | |
3375 expr const | |
3376 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 | |
3377 >::call(*this , a0 , a1 , a2 , a3 , a4 , a5); | |
3378 } | |
3379 | |
3380 | |
3381 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6> | |
3382 BOOST_FORCEINLINE | |
3383 typename result_of::funop7< | |
3384 expr const | |
3385 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 | |
3386 >::type const | |
3387 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5 , A6 const &a6) const | |
3388 { | |
3389 return result_of::funop7< | |
3390 expr const | |
3391 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 | |
3392 >::call(*this , a0 , a1 , a2 , a3 , a4 , a5 , a6); | |
3393 } | |
3394 | |
3395 | |
3396 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7> | |
3397 BOOST_FORCEINLINE | |
3398 typename result_of::funop8< | |
3399 expr const | |
3400 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7 | |
3401 >::type const | |
3402 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5 , A6 const &a6 , A7 const &a7) const | |
3403 { | |
3404 return result_of::funop8< | |
3405 expr const | |
3406 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7 | |
3407 >::call(*this , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7); | |
3408 } | |
3409 | |
3410 | |
3411 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8> | |
3412 BOOST_FORCEINLINE | |
3413 typename result_of::funop9< | |
3414 expr const | |
3415 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7 , const A8 | |
3416 >::type const | |
3417 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5 , A6 const &a6 , A7 const &a7 , A8 const &a8) const | |
3418 { | |
3419 return result_of::funop9< | |
3420 expr const | |
3421 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7 , const A8 | |
3422 >::call(*this , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8); | |
3423 } | |
3424 }; | |
3425 | |
3426 | |
3427 | |
3428 | |
3429 | |
3430 | |
3431 | |
3432 | |
3433 | |
3434 | |
3435 | |
3436 | |
3437 | |
3438 | |
3439 | |
3440 | |
3441 | |
3442 | |
3443 | |
3444 | |
3445 | |
3446 | |
3447 | |
3448 | |
3449 | |
3450 | |
3451 | |
3452 template<typename Tag , typename Arg0 , typename Arg1 , typename Arg2 , typename Arg3 , typename Arg4 , typename Arg5 , typename Arg6 , typename Arg7 , typename Arg8 , typename Arg9> | |
3453 struct expr<Tag, list10<Arg0 , Arg1 , Arg2 , Arg3 , Arg4 , Arg5 , Arg6 , Arg7 , Arg8 , Arg9>, 10 > | |
3454 { | |
3455 typedef Tag proto_tag; | |
3456 static const long proto_arity_c = 10; | |
3457 typedef mpl::long_<10 > proto_arity; | |
3458 typedef expr proto_base_expr; | |
3459 typedef list10<Arg0 , Arg1 , Arg2 , Arg3 , Arg4 , Arg5 , Arg6 , Arg7 , Arg8 , Arg9> proto_args; | |
3460 typedef basic_expr<Tag, proto_args, 10 > proto_grammar; | |
3461 typedef default_domain proto_domain; | |
3462 typedef default_generator proto_generator; | |
3463 typedef proto::tag::proto_expr<Tag, proto_domain> fusion_tag; | |
3464 typedef expr proto_derived_expr; | |
3465 typedef void proto_is_expr_; | |
3466 typedef Arg0 proto_child0; proto_child0 child0; typedef Arg1 proto_child1; proto_child1 child1; typedef Arg2 proto_child2; proto_child2 child2; typedef Arg3 proto_child3; proto_child3 child3; typedef Arg4 proto_child4; proto_child4 child4; typedef Arg5 proto_child5; proto_child5 child5; typedef Arg6 proto_child6; proto_child6 child6; typedef Arg7 proto_child7; proto_child7 child7; typedef Arg8 proto_child8; proto_child8 child8; typedef Arg9 proto_child9; proto_child9 child9; | |
3467 | |
3468 | |
3469 | |
3470 BOOST_FORCEINLINE | |
3471 expr const &proto_base() const | |
3472 { | |
3473 return *this; | |
3474 } | |
3475 | |
3476 | |
3477 BOOST_FORCEINLINE | |
3478 expr &proto_base() | |
3479 { | |
3480 return *this; | |
3481 } | |
3482 | |
3483 | |
3484 | |
3485 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9> | |
3486 BOOST_FORCEINLINE | |
3487 static expr const make(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5 , A6 const &a6 , A7 const &a7 , A8 const &a8 , A9 const &a9) | |
3488 { | |
3489 expr that = {a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9}; | |
3490 return that; | |
3491 } | |
3492 | |
3493 | |
3494 typedef detail::not_a_valid_type address_of_hack_type_; | |
3495 | |
3496 | |
3497 | |
3498 | |
3499 BOOST_FORCEINLINE | |
3500 proto::expr< | |
3501 proto::tag::assign | |
3502 , list2<expr &, expr const &> | |
3503 , 2 | |
3504 > const | |
3505 operator =(expr const &a) | |
3506 { | |
3507 proto::expr< | |
3508 proto::tag::assign | |
3509 , list2<expr &, expr const &> | |
3510 , 2 | |
3511 > that = {*this, a}; | |
3512 return that; | |
3513 } | |
3514 | |
3515 | |
3516 | |
3517 | |
3518 template<typename A> | |
3519 BOOST_FORCEINLINE | |
3520 proto::expr< | |
3521 proto::tag::assign | |
3522 , list2<expr const &, typename result_of::as_child<A>::type> | |
3523 , 2 | |
3524 > const | |
3525 operator =(A &a) const | |
3526 { | |
3527 proto::expr< | |
3528 proto::tag::assign | |
3529 , list2<expr const &, typename result_of::as_child<A>::type> | |
3530 , 2 | |
3531 > that = {*this, proto::as_child(a)}; | |
3532 return that; | |
3533 } | |
3534 | |
3535 | |
3536 template<typename A> | |
3537 BOOST_FORCEINLINE | |
3538 proto::expr< | |
3539 proto::tag::assign | |
3540 , list2<expr const &, typename result_of::as_child<A const>::type> | |
3541 , 2 | |
3542 > const | |
3543 operator =(A const &a) const | |
3544 { | |
3545 proto::expr< | |
3546 proto::tag::assign | |
3547 , list2<expr const &, typename result_of::as_child<A const>::type> | |
3548 , 2 | |
3549 > that = {*this, proto::as_child(a)}; | |
3550 return that; | |
3551 } | |
3552 | |
3553 | |
3554 | |
3555 | |
3556 template<typename A> | |
3557 BOOST_FORCEINLINE | |
3558 proto::expr< | |
3559 proto::tag::subscript | |
3560 , list2<expr const &, typename result_of::as_child<A>::type> | |
3561 , 2 | |
3562 > const | |
3563 operator [](A &a) const | |
3564 { | |
3565 proto::expr< | |
3566 proto::tag::subscript | |
3567 , list2<expr const &, typename result_of::as_child<A>::type> | |
3568 , 2 | |
3569 > that = {*this, proto::as_child(a)}; | |
3570 return that; | |
3571 } | |
3572 | |
3573 | |
3574 template<typename A> | |
3575 BOOST_FORCEINLINE | |
3576 proto::expr< | |
3577 proto::tag::subscript | |
3578 , list2<expr const &, typename result_of::as_child<A const>::type> | |
3579 , 2 | |
3580 > const | |
3581 operator [](A const &a) const | |
3582 { | |
3583 proto::expr< | |
3584 proto::tag::subscript | |
3585 , list2<expr const &, typename result_of::as_child<A const>::type> | |
3586 , 2 | |
3587 > that = {*this, proto::as_child(a)}; | |
3588 return that; | |
3589 } | |
3590 | |
3591 | |
3592 template<typename Sig> | |
3593 struct result | |
3594 { | |
3595 typedef typename result_of::funop<Sig, expr, default_domain>::type const type; | |
3596 }; | |
3597 | |
3598 | |
3599 | |
3600 BOOST_FORCEINLINE | |
3601 proto::expr<proto::tag::function, list1<expr const &>, 1> const | |
3602 operator ()() const | |
3603 { | |
3604 proto::expr<proto::tag::function, list1<expr const &>, 1> that = {*this}; | |
3605 return that; | |
3606 } | |
3607 | |
3608 | |
3609 template<typename A0> | |
3610 BOOST_FORCEINLINE | |
3611 typename result_of::funop1< | |
3612 expr const | |
3613 , default_domain , const A0 | |
3614 >::type const | |
3615 operator ()(A0 const &a0) const | |
3616 { | |
3617 return result_of::funop1< | |
3618 expr const | |
3619 , default_domain , const A0 | |
3620 >::call(*this , a0); | |
3621 } | |
3622 | |
3623 | |
3624 template<typename A0 , typename A1> | |
3625 BOOST_FORCEINLINE | |
3626 typename result_of::funop2< | |
3627 expr const | |
3628 , default_domain , const A0 , const A1 | |
3629 >::type const | |
3630 operator ()(A0 const &a0 , A1 const &a1) const | |
3631 { | |
3632 return result_of::funop2< | |
3633 expr const | |
3634 , default_domain , const A0 , const A1 | |
3635 >::call(*this , a0 , a1); | |
3636 } | |
3637 | |
3638 | |
3639 template<typename A0 , typename A1 , typename A2> | |
3640 BOOST_FORCEINLINE | |
3641 typename result_of::funop3< | |
3642 expr const | |
3643 , default_domain , const A0 , const A1 , const A2 | |
3644 >::type const | |
3645 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2) const | |
3646 { | |
3647 return result_of::funop3< | |
3648 expr const | |
3649 , default_domain , const A0 , const A1 , const A2 | |
3650 >::call(*this , a0 , a1 , a2); | |
3651 } | |
3652 | |
3653 | |
3654 template<typename A0 , typename A1 , typename A2 , typename A3> | |
3655 BOOST_FORCEINLINE | |
3656 typename result_of::funop4< | |
3657 expr const | |
3658 , default_domain , const A0 , const A1 , const A2 , const A3 | |
3659 >::type const | |
3660 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3) const | |
3661 { | |
3662 return result_of::funop4< | |
3663 expr const | |
3664 , default_domain , const A0 , const A1 , const A2 , const A3 | |
3665 >::call(*this , a0 , a1 , a2 , a3); | |
3666 } | |
3667 | |
3668 | |
3669 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4> | |
3670 BOOST_FORCEINLINE | |
3671 typename result_of::funop5< | |
3672 expr const | |
3673 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 | |
3674 >::type const | |
3675 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4) const | |
3676 { | |
3677 return result_of::funop5< | |
3678 expr const | |
3679 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 | |
3680 >::call(*this , a0 , a1 , a2 , a3 , a4); | |
3681 } | |
3682 | |
3683 | |
3684 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5> | |
3685 BOOST_FORCEINLINE | |
3686 typename result_of::funop6< | |
3687 expr const | |
3688 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 | |
3689 >::type const | |
3690 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5) const | |
3691 { | |
3692 return result_of::funop6< | |
3693 expr const | |
3694 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 | |
3695 >::call(*this , a0 , a1 , a2 , a3 , a4 , a5); | |
3696 } | |
3697 | |
3698 | |
3699 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6> | |
3700 BOOST_FORCEINLINE | |
3701 typename result_of::funop7< | |
3702 expr const | |
3703 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 | |
3704 >::type const | |
3705 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5 , A6 const &a6) const | |
3706 { | |
3707 return result_of::funop7< | |
3708 expr const | |
3709 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 | |
3710 >::call(*this , a0 , a1 , a2 , a3 , a4 , a5 , a6); | |
3711 } | |
3712 | |
3713 | |
3714 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7> | |
3715 BOOST_FORCEINLINE | |
3716 typename result_of::funop8< | |
3717 expr const | |
3718 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7 | |
3719 >::type const | |
3720 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5 , A6 const &a6 , A7 const &a7) const | |
3721 { | |
3722 return result_of::funop8< | |
3723 expr const | |
3724 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7 | |
3725 >::call(*this , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7); | |
3726 } | |
3727 | |
3728 | |
3729 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8> | |
3730 BOOST_FORCEINLINE | |
3731 typename result_of::funop9< | |
3732 expr const | |
3733 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7 , const A8 | |
3734 >::type const | |
3735 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5 , A6 const &a6 , A7 const &a7 , A8 const &a8) const | |
3736 { | |
3737 return result_of::funop9< | |
3738 expr const | |
3739 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7 , const A8 | |
3740 >::call(*this , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8); | |
3741 } | |
3742 }; |