1 ///////////////////////////////////////////////////////////////////////////////
2 /// \file default_function_impl.hpp
3 /// Contains definition of the default_function_impl, the implementation of the
4 /// _default transform for function-like nodes.
6 // Copyright 2008 Eric Niebler. Distributed under the Boost
7 // Software License, Version 1.0. (See accompanying file
8 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
9 template<typename Grammar, typename Expr, typename State, typename Data>
10 struct default_function_impl<Grammar, Expr, State, Data, 3>
11 : transform_impl<Expr, State, Data>
13 typedef typename result_of::child_c< Expr, 0>::type e0; typedef typename Grammar::template impl<e0, State, Data>::result_type r0; typedef typename result_of::child_c< Expr, 1>::type e1; typedef typename Grammar::template impl<e1, State, Data>::result_type r1; typedef typename result_of::child_c< Expr, 2>::type e2; typedef typename Grammar::template impl<e2, State, Data>::result_type r2;
15 typename proto::detail::result_of_fixup<r0>::type
18 typename BOOST_PROTO_RESULT_OF<
19 function_type(r1 , r2)
22 result_type operator ()(
23 typename default_function_impl::expr_param e
24 , typename default_function_impl::state_param s
25 , typename default_function_impl::data_param d
28 return this->invoke(e, s, d, is_member_function_pointer<function_type>());
32 typename default_function_impl::expr_param e
33 , typename default_function_impl::state_param s
34 , typename default_function_impl::data_param d
38 return typename Grammar::template impl<e0, State, Data>()( proto::child_c< 0>( e), s, d )(
39 typename Grammar::template impl<e1, State, Data>()( proto::child_c< 1>( e), s, d ) , typename Grammar::template impl<e2, State, Data>()( proto::child_c< 2>( e), s, d )
43 typename default_function_impl::expr_param e
44 , typename default_function_impl::state_param s
45 , typename default_function_impl::data_param d
49 BOOST_PROTO_USE_GET_POINTER();
50 typedef typename detail::class_member_traits<function_type>::class_type class_type;
52 BOOST_PROTO_GET_POINTER(class_type, (typename Grammar::template impl<e1, State, Data>()( proto::child_c< 1>( e), s, d ))) ->*
53 typename Grammar::template impl<e0, State, Data>()( proto::child_c< 0>( e), s, d )
54 )(typename Grammar::template impl<e2, State, Data>()( proto::child_c< 2>( e), s, d ));
57 template<typename Grammar, typename Expr, typename State, typename Data>
58 struct default_function_impl<Grammar, Expr, State, Data, 4>
59 : transform_impl<Expr, State, Data>
61 typedef typename result_of::child_c< Expr, 0>::type e0; typedef typename Grammar::template impl<e0, State, Data>::result_type r0; typedef typename result_of::child_c< Expr, 1>::type e1; typedef typename Grammar::template impl<e1, State, Data>::result_type r1; typedef typename result_of::child_c< Expr, 2>::type e2; typedef typename Grammar::template impl<e2, State, Data>::result_type r2; typedef typename result_of::child_c< Expr, 3>::type e3; typedef typename Grammar::template impl<e3, State, Data>::result_type r3;
63 typename proto::detail::result_of_fixup<r0>::type
66 typename BOOST_PROTO_RESULT_OF<
67 function_type(r1 , r2 , r3)
70 result_type operator ()(
71 typename default_function_impl::expr_param e
72 , typename default_function_impl::state_param s
73 , typename default_function_impl::data_param d
76 return this->invoke(e, s, d, is_member_function_pointer<function_type>());
80 typename default_function_impl::expr_param e
81 , typename default_function_impl::state_param s
82 , typename default_function_impl::data_param d
86 return typename Grammar::template impl<e0, State, Data>()( proto::child_c< 0>( e), s, d )(
87 typename Grammar::template impl<e1, State, Data>()( proto::child_c< 1>( e), s, d ) , typename Grammar::template impl<e2, State, Data>()( proto::child_c< 2>( e), s, d ) , typename Grammar::template impl<e3, State, Data>()( proto::child_c< 3>( e), s, d )
91 typename default_function_impl::expr_param e
92 , typename default_function_impl::state_param s
93 , typename default_function_impl::data_param d
97 BOOST_PROTO_USE_GET_POINTER();
98 typedef typename detail::class_member_traits<function_type>::class_type class_type;
100 BOOST_PROTO_GET_POINTER(class_type, (typename Grammar::template impl<e1, State, Data>()( proto::child_c< 1>( e), s, d ))) ->*
101 typename Grammar::template impl<e0, State, Data>()( proto::child_c< 0>( e), s, d )
102 )(typename Grammar::template impl<e2, State, Data>()( proto::child_c< 2>( e), s, d ) , typename Grammar::template impl<e3, State, Data>()( proto::child_c< 3>( e), s, d ));
105 template<typename Grammar, typename Expr, typename State, typename Data>
106 struct default_function_impl<Grammar, Expr, State, Data, 5>
107 : transform_impl<Expr, State, Data>
109 typedef typename result_of::child_c< Expr, 0>::type e0; typedef typename Grammar::template impl<e0, State, Data>::result_type r0; typedef typename result_of::child_c< Expr, 1>::type e1; typedef typename Grammar::template impl<e1, State, Data>::result_type r1; typedef typename result_of::child_c< Expr, 2>::type e2; typedef typename Grammar::template impl<e2, State, Data>::result_type r2; typedef typename result_of::child_c< Expr, 3>::type e3; typedef typename Grammar::template impl<e3, State, Data>::result_type r3; typedef typename result_of::child_c< Expr, 4>::type e4; typedef typename Grammar::template impl<e4, State, Data>::result_type r4;
111 typename proto::detail::result_of_fixup<r0>::type
114 typename BOOST_PROTO_RESULT_OF<
115 function_type(r1 , r2 , r3 , r4)
118 result_type operator ()(
119 typename default_function_impl::expr_param e
120 , typename default_function_impl::state_param s
121 , typename default_function_impl::data_param d
124 return this->invoke(e, s, d, is_member_function_pointer<function_type>());
128 typename default_function_impl::expr_param e
129 , typename default_function_impl::state_param s
130 , typename default_function_impl::data_param d
134 return typename Grammar::template impl<e0, State, Data>()( proto::child_c< 0>( e), s, d )(
135 typename Grammar::template impl<e1, State, Data>()( proto::child_c< 1>( e), s, d ) , typename Grammar::template impl<e2, State, Data>()( proto::child_c< 2>( e), s, d ) , typename Grammar::template impl<e3, State, Data>()( proto::child_c< 3>( e), s, d ) , typename Grammar::template impl<e4, State, Data>()( proto::child_c< 4>( e), s, d )
139 typename default_function_impl::expr_param e
140 , typename default_function_impl::state_param s
141 , typename default_function_impl::data_param d
145 BOOST_PROTO_USE_GET_POINTER();
146 typedef typename detail::class_member_traits<function_type>::class_type class_type;
148 BOOST_PROTO_GET_POINTER(class_type, (typename Grammar::template impl<e1, State, Data>()( proto::child_c< 1>( e), s, d ))) ->*
149 typename Grammar::template impl<e0, State, Data>()( proto::child_c< 0>( e), s, d )
150 )(typename Grammar::template impl<e2, State, Data>()( proto::child_c< 2>( e), s, d ) , typename Grammar::template impl<e3, State, Data>()( proto::child_c< 3>( e), s, d ) , typename Grammar::template impl<e4, State, Data>()( proto::child_c< 4>( e), s, d ));
153 template<typename Grammar, typename Expr, typename State, typename Data>
154 struct default_function_impl<Grammar, Expr, State, Data, 6>
155 : transform_impl<Expr, State, Data>
157 typedef typename result_of::child_c< Expr, 0>::type e0; typedef typename Grammar::template impl<e0, State, Data>::result_type r0; typedef typename result_of::child_c< Expr, 1>::type e1; typedef typename Grammar::template impl<e1, State, Data>::result_type r1; typedef typename result_of::child_c< Expr, 2>::type e2; typedef typename Grammar::template impl<e2, State, Data>::result_type r2; typedef typename result_of::child_c< Expr, 3>::type e3; typedef typename Grammar::template impl<e3, State, Data>::result_type r3; typedef typename result_of::child_c< Expr, 4>::type e4; typedef typename Grammar::template impl<e4, State, Data>::result_type r4; typedef typename result_of::child_c< Expr, 5>::type e5; typedef typename Grammar::template impl<e5, State, Data>::result_type r5;
159 typename proto::detail::result_of_fixup<r0>::type
162 typename BOOST_PROTO_RESULT_OF<
163 function_type(r1 , r2 , r3 , r4 , r5)
166 result_type operator ()(
167 typename default_function_impl::expr_param e
168 , typename default_function_impl::state_param s
169 , typename default_function_impl::data_param d
172 return this->invoke(e, s, d, is_member_function_pointer<function_type>());
176 typename default_function_impl::expr_param e
177 , typename default_function_impl::state_param s
178 , typename default_function_impl::data_param d
182 return typename Grammar::template impl<e0, State, Data>()( proto::child_c< 0>( e), s, d )(
183 typename Grammar::template impl<e1, State, Data>()( proto::child_c< 1>( e), s, d ) , typename Grammar::template impl<e2, State, Data>()( proto::child_c< 2>( e), s, d ) , typename Grammar::template impl<e3, State, Data>()( proto::child_c< 3>( e), s, d ) , typename Grammar::template impl<e4, State, Data>()( proto::child_c< 4>( e), s, d ) , typename Grammar::template impl<e5, State, Data>()( proto::child_c< 5>( e), s, d )
187 typename default_function_impl::expr_param e
188 , typename default_function_impl::state_param s
189 , typename default_function_impl::data_param d
193 BOOST_PROTO_USE_GET_POINTER();
194 typedef typename detail::class_member_traits<function_type>::class_type class_type;
196 BOOST_PROTO_GET_POINTER(class_type, (typename Grammar::template impl<e1, State, Data>()( proto::child_c< 1>( e), s, d ))) ->*
197 typename Grammar::template impl<e0, State, Data>()( proto::child_c< 0>( e), s, d )
198 )(typename Grammar::template impl<e2, State, Data>()( proto::child_c< 2>( e), s, d ) , typename Grammar::template impl<e3, State, Data>()( proto::child_c< 3>( e), s, d ) , typename Grammar::template impl<e4, State, Data>()( proto::child_c< 4>( e), s, d ) , typename Grammar::template impl<e5, State, Data>()( proto::child_c< 5>( e), s, d ));
201 template<typename Grammar, typename Expr, typename State, typename Data>
202 struct default_function_impl<Grammar, Expr, State, Data, 7>
203 : transform_impl<Expr, State, Data>
205 typedef typename result_of::child_c< Expr, 0>::type e0; typedef typename Grammar::template impl<e0, State, Data>::result_type r0; typedef typename result_of::child_c< Expr, 1>::type e1; typedef typename Grammar::template impl<e1, State, Data>::result_type r1; typedef typename result_of::child_c< Expr, 2>::type e2; typedef typename Grammar::template impl<e2, State, Data>::result_type r2; typedef typename result_of::child_c< Expr, 3>::type e3; typedef typename Grammar::template impl<e3, State, Data>::result_type r3; typedef typename result_of::child_c< Expr, 4>::type e4; typedef typename Grammar::template impl<e4, State, Data>::result_type r4; typedef typename result_of::child_c< Expr, 5>::type e5; typedef typename Grammar::template impl<e5, State, Data>::result_type r5; typedef typename result_of::child_c< Expr, 6>::type e6; typedef typename Grammar::template impl<e6, State, Data>::result_type r6;
207 typename proto::detail::result_of_fixup<r0>::type
210 typename BOOST_PROTO_RESULT_OF<
211 function_type(r1 , r2 , r3 , r4 , r5 , r6)
214 result_type operator ()(
215 typename default_function_impl::expr_param e
216 , typename default_function_impl::state_param s
217 , typename default_function_impl::data_param d
220 return this->invoke(e, s, d, is_member_function_pointer<function_type>());
224 typename default_function_impl::expr_param e
225 , typename default_function_impl::state_param s
226 , typename default_function_impl::data_param d
230 return typename Grammar::template impl<e0, State, Data>()( proto::child_c< 0>( e), s, d )(
231 typename Grammar::template impl<e1, State, Data>()( proto::child_c< 1>( e), s, d ) , typename Grammar::template impl<e2, State, Data>()( proto::child_c< 2>( e), s, d ) , typename Grammar::template impl<e3, State, Data>()( proto::child_c< 3>( e), s, d ) , typename Grammar::template impl<e4, State, Data>()( proto::child_c< 4>( e), s, d ) , typename Grammar::template impl<e5, State, Data>()( proto::child_c< 5>( e), s, d ) , typename Grammar::template impl<e6, State, Data>()( proto::child_c< 6>( e), s, d )
235 typename default_function_impl::expr_param e
236 , typename default_function_impl::state_param s
237 , typename default_function_impl::data_param d
241 BOOST_PROTO_USE_GET_POINTER();
242 typedef typename detail::class_member_traits<function_type>::class_type class_type;
244 BOOST_PROTO_GET_POINTER(class_type, (typename Grammar::template impl<e1, State, Data>()( proto::child_c< 1>( e), s, d ))) ->*
245 typename Grammar::template impl<e0, State, Data>()( proto::child_c< 0>( e), s, d )
246 )(typename Grammar::template impl<e2, State, Data>()( proto::child_c< 2>( e), s, d ) , typename Grammar::template impl<e3, State, Data>()( proto::child_c< 3>( e), s, d ) , typename Grammar::template impl<e4, State, Data>()( proto::child_c< 4>( e), s, d ) , typename Grammar::template impl<e5, State, Data>()( proto::child_c< 5>( e), s, d ) , typename Grammar::template impl<e6, State, Data>()( proto::child_c< 6>( e), s, d ));
249 template<typename Grammar, typename Expr, typename State, typename Data>
250 struct default_function_impl<Grammar, Expr, State, Data, 8>
251 : transform_impl<Expr, State, Data>
253 typedef typename result_of::child_c< Expr, 0>::type e0; typedef typename Grammar::template impl<e0, State, Data>::result_type r0; typedef typename result_of::child_c< Expr, 1>::type e1; typedef typename Grammar::template impl<e1, State, Data>::result_type r1; typedef typename result_of::child_c< Expr, 2>::type e2; typedef typename Grammar::template impl<e2, State, Data>::result_type r2; typedef typename result_of::child_c< Expr, 3>::type e3; typedef typename Grammar::template impl<e3, State, Data>::result_type r3; typedef typename result_of::child_c< Expr, 4>::type e4; typedef typename Grammar::template impl<e4, State, Data>::result_type r4; typedef typename result_of::child_c< Expr, 5>::type e5; typedef typename Grammar::template impl<e5, State, Data>::result_type r5; typedef typename result_of::child_c< Expr, 6>::type e6; typedef typename Grammar::template impl<e6, State, Data>::result_type r6; typedef typename result_of::child_c< Expr, 7>::type e7; typedef typename Grammar::template impl<e7, State, Data>::result_type r7;
255 typename proto::detail::result_of_fixup<r0>::type
258 typename BOOST_PROTO_RESULT_OF<
259 function_type(r1 , r2 , r3 , r4 , r5 , r6 , r7)
262 result_type operator ()(
263 typename default_function_impl::expr_param e
264 , typename default_function_impl::state_param s
265 , typename default_function_impl::data_param d
268 return this->invoke(e, s, d, is_member_function_pointer<function_type>());
272 typename default_function_impl::expr_param e
273 , typename default_function_impl::state_param s
274 , typename default_function_impl::data_param d
278 return typename Grammar::template impl<e0, State, Data>()( proto::child_c< 0>( e), s, d )(
279 typename Grammar::template impl<e1, State, Data>()( proto::child_c< 1>( e), s, d ) , typename Grammar::template impl<e2, State, Data>()( proto::child_c< 2>( e), s, d ) , typename Grammar::template impl<e3, State, Data>()( proto::child_c< 3>( e), s, d ) , typename Grammar::template impl<e4, State, Data>()( proto::child_c< 4>( e), s, d ) , typename Grammar::template impl<e5, State, Data>()( proto::child_c< 5>( e), s, d ) , typename Grammar::template impl<e6, State, Data>()( proto::child_c< 6>( e), s, d ) , typename Grammar::template impl<e7, State, Data>()( proto::child_c< 7>( e), s, d )
283 typename default_function_impl::expr_param e
284 , typename default_function_impl::state_param s
285 , typename default_function_impl::data_param d
289 BOOST_PROTO_USE_GET_POINTER();
290 typedef typename detail::class_member_traits<function_type>::class_type class_type;
292 BOOST_PROTO_GET_POINTER(class_type, (typename Grammar::template impl<e1, State, Data>()( proto::child_c< 1>( e), s, d ))) ->*
293 typename Grammar::template impl<e0, State, Data>()( proto::child_c< 0>( e), s, d )
294 )(typename Grammar::template impl<e2, State, Data>()( proto::child_c< 2>( e), s, d ) , typename Grammar::template impl<e3, State, Data>()( proto::child_c< 3>( e), s, d ) , typename Grammar::template impl<e4, State, Data>()( proto::child_c< 4>( e), s, d ) , typename Grammar::template impl<e5, State, Data>()( proto::child_c< 5>( e), s, d ) , typename Grammar::template impl<e6, State, Data>()( proto::child_c< 6>( e), s, d ) , typename Grammar::template impl<e7, State, Data>()( proto::child_c< 7>( e), s, d ));
297 template<typename Grammar, typename Expr, typename State, typename Data>
298 struct default_function_impl<Grammar, Expr, State, Data, 9>
299 : transform_impl<Expr, State, Data>
301 typedef typename result_of::child_c< Expr, 0>::type e0; typedef typename Grammar::template impl<e0, State, Data>::result_type r0; typedef typename result_of::child_c< Expr, 1>::type e1; typedef typename Grammar::template impl<e1, State, Data>::result_type r1; typedef typename result_of::child_c< Expr, 2>::type e2; typedef typename Grammar::template impl<e2, State, Data>::result_type r2; typedef typename result_of::child_c< Expr, 3>::type e3; typedef typename Grammar::template impl<e3, State, Data>::result_type r3; typedef typename result_of::child_c< Expr, 4>::type e4; typedef typename Grammar::template impl<e4, State, Data>::result_type r4; typedef typename result_of::child_c< Expr, 5>::type e5; typedef typename Grammar::template impl<e5, State, Data>::result_type r5; typedef typename result_of::child_c< Expr, 6>::type e6; typedef typename Grammar::template impl<e6, State, Data>::result_type r6; typedef typename result_of::child_c< Expr, 7>::type e7; typedef typename Grammar::template impl<e7, State, Data>::result_type r7; typedef typename result_of::child_c< Expr, 8>::type e8; typedef typename Grammar::template impl<e8, State, Data>::result_type r8;
303 typename proto::detail::result_of_fixup<r0>::type
306 typename BOOST_PROTO_RESULT_OF<
307 function_type(r1 , r2 , r3 , r4 , r5 , r6 , r7 , r8)
310 result_type operator ()(
311 typename default_function_impl::expr_param e
312 , typename default_function_impl::state_param s
313 , typename default_function_impl::data_param d
316 return this->invoke(e, s, d, is_member_function_pointer<function_type>());
320 typename default_function_impl::expr_param e
321 , typename default_function_impl::state_param s
322 , typename default_function_impl::data_param d
326 return typename Grammar::template impl<e0, State, Data>()( proto::child_c< 0>( e), s, d )(
327 typename Grammar::template impl<e1, State, Data>()( proto::child_c< 1>( e), s, d ) , typename Grammar::template impl<e2, State, Data>()( proto::child_c< 2>( e), s, d ) , typename Grammar::template impl<e3, State, Data>()( proto::child_c< 3>( e), s, d ) , typename Grammar::template impl<e4, State, Data>()( proto::child_c< 4>( e), s, d ) , typename Grammar::template impl<e5, State, Data>()( proto::child_c< 5>( e), s, d ) , typename Grammar::template impl<e6, State, Data>()( proto::child_c< 6>( e), s, d ) , typename Grammar::template impl<e7, State, Data>()( proto::child_c< 7>( e), s, d ) , typename Grammar::template impl<e8, State, Data>()( proto::child_c< 8>( e), s, d )
331 typename default_function_impl::expr_param e
332 , typename default_function_impl::state_param s
333 , typename default_function_impl::data_param d
337 BOOST_PROTO_USE_GET_POINTER();
338 typedef typename detail::class_member_traits<function_type>::class_type class_type;
340 BOOST_PROTO_GET_POINTER(class_type, (typename Grammar::template impl<e1, State, Data>()( proto::child_c< 1>( e), s, d ))) ->*
341 typename Grammar::template impl<e0, State, Data>()( proto::child_c< 0>( e), s, d )
342 )(typename Grammar::template impl<e2, State, Data>()( proto::child_c< 2>( e), s, d ) , typename Grammar::template impl<e3, State, Data>()( proto::child_c< 3>( e), s, d ) , typename Grammar::template impl<e4, State, Data>()( proto::child_c< 4>( e), s, d ) , typename Grammar::template impl<e5, State, Data>()( proto::child_c< 5>( e), s, d ) , typename Grammar::template impl<e6, State, Data>()( proto::child_c< 6>( e), s, d ) , typename Grammar::template impl<e7, State, Data>()( proto::child_c< 7>( e), s, d ) , typename Grammar::template impl<e8, State, Data>()( proto::child_c< 8>( e), s, d ));
345 template<typename Grammar, typename Expr, typename State, typename Data>
346 struct default_function_impl<Grammar, Expr, State, Data, 10>
347 : transform_impl<Expr, State, Data>
349 typedef typename result_of::child_c< Expr, 0>::type e0; typedef typename Grammar::template impl<e0, State, Data>::result_type r0; typedef typename result_of::child_c< Expr, 1>::type e1; typedef typename Grammar::template impl<e1, State, Data>::result_type r1; typedef typename result_of::child_c< Expr, 2>::type e2; typedef typename Grammar::template impl<e2, State, Data>::result_type r2; typedef typename result_of::child_c< Expr, 3>::type e3; typedef typename Grammar::template impl<e3, State, Data>::result_type r3; typedef typename result_of::child_c< Expr, 4>::type e4; typedef typename Grammar::template impl<e4, State, Data>::result_type r4; typedef typename result_of::child_c< Expr, 5>::type e5; typedef typename Grammar::template impl<e5, State, Data>::result_type r5; typedef typename result_of::child_c< Expr, 6>::type e6; typedef typename Grammar::template impl<e6, State, Data>::result_type r6; typedef typename result_of::child_c< Expr, 7>::type e7; typedef typename Grammar::template impl<e7, State, Data>::result_type r7; typedef typename result_of::child_c< Expr, 8>::type e8; typedef typename Grammar::template impl<e8, State, Data>::result_type r8; typedef typename result_of::child_c< Expr, 9>::type e9; typedef typename Grammar::template impl<e9, State, Data>::result_type r9;
351 typename proto::detail::result_of_fixup<r0>::type
354 typename BOOST_PROTO_RESULT_OF<
355 function_type(r1 , r2 , r3 , r4 , r5 , r6 , r7 , r8 , r9)
358 result_type operator ()(
359 typename default_function_impl::expr_param e
360 , typename default_function_impl::state_param s
361 , typename default_function_impl::data_param d
364 return this->invoke(e, s, d, is_member_function_pointer<function_type>());
368 typename default_function_impl::expr_param e
369 , typename default_function_impl::state_param s
370 , typename default_function_impl::data_param d
374 return typename Grammar::template impl<e0, State, Data>()( proto::child_c< 0>( e), s, d )(
375 typename Grammar::template impl<e1, State, Data>()( proto::child_c< 1>( e), s, d ) , typename Grammar::template impl<e2, State, Data>()( proto::child_c< 2>( e), s, d ) , typename Grammar::template impl<e3, State, Data>()( proto::child_c< 3>( e), s, d ) , typename Grammar::template impl<e4, State, Data>()( proto::child_c< 4>( e), s, d ) , typename Grammar::template impl<e5, State, Data>()( proto::child_c< 5>( e), s, d ) , typename Grammar::template impl<e6, State, Data>()( proto::child_c< 6>( e), s, d ) , typename Grammar::template impl<e7, State, Data>()( proto::child_c< 7>( e), s, d ) , typename Grammar::template impl<e8, State, Data>()( proto::child_c< 8>( e), s, d ) , typename Grammar::template impl<e9, State, Data>()( proto::child_c< 9>( e), s, d )
379 typename default_function_impl::expr_param e
380 , typename default_function_impl::state_param s
381 , typename default_function_impl::data_param d
385 BOOST_PROTO_USE_GET_POINTER();
386 typedef typename detail::class_member_traits<function_type>::class_type class_type;
388 BOOST_PROTO_GET_POINTER(class_type, (typename Grammar::template impl<e1, State, Data>()( proto::child_c< 1>( e), s, d ))) ->*
389 typename Grammar::template impl<e0, State, Data>()( proto::child_c< 0>( e), s, d )
390 )(typename Grammar::template impl<e2, State, Data>()( proto::child_c< 2>( e), s, d ) , typename Grammar::template impl<e3, State, Data>()( proto::child_c< 3>( e), s, d ) , typename Grammar::template impl<e4, State, Data>()( proto::child_c< 4>( e), s, d ) , typename Grammar::template impl<e5, State, Data>()( proto::child_c< 5>( e), s, d ) , typename Grammar::template impl<e6, State, Data>()( proto::child_c< 6>( e), s, d ) , typename Grammar::template impl<e7, State, Data>()( proto::child_c< 7>( e), s, d ) , typename Grammar::template impl<e8, State, Data>()( proto::child_c< 8>( e), s, d ) , typename Grammar::template impl<e9, State, Data>()( proto::child_c< 9>( e), s, d ));