]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/proto/include/boost/proto/transform/detail/preprocessed/default_function_impl.hpp
add subtree-ish sources for 12.0.3
[ceph.git] / ceph / src / boost / libs / proto / include / boost / proto / transform / detail / preprocessed / default_function_impl.hpp
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.
5 //
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>
12 {
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;
14 typedef
15 typename proto::detail::result_of_fixup<r0>::type
16 function_type;
17 typedef
18 typename BOOST_PROTO_RESULT_OF<
19 function_type(r1 , r2)
20 >::type
21 result_type;
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
26 ) const
27 {
28 return this->invoke(e, s, d, is_member_function_pointer<function_type>());
29 }
30 private:
31 result_type invoke(
32 typename default_function_impl::expr_param e
33 , typename default_function_impl::state_param s
34 , typename default_function_impl::data_param d
35 , mpl::false_
36 ) const
37 {
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 )
40 );
41 }
42 result_type invoke(
43 typename default_function_impl::expr_param e
44 , typename default_function_impl::state_param s
45 , typename default_function_impl::data_param d
46 , mpl::true_
47 ) const
48 {
49 BOOST_PROTO_USE_GET_POINTER();
50 typedef typename detail::class_member_traits<function_type>::class_type class_type;
51 return (
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 ));
55 }
56 };
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>
60 {
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;
62 typedef
63 typename proto::detail::result_of_fixup<r0>::type
64 function_type;
65 typedef
66 typename BOOST_PROTO_RESULT_OF<
67 function_type(r1 , r2 , r3)
68 >::type
69 result_type;
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
74 ) const
75 {
76 return this->invoke(e, s, d, is_member_function_pointer<function_type>());
77 }
78 private:
79 result_type invoke(
80 typename default_function_impl::expr_param e
81 , typename default_function_impl::state_param s
82 , typename default_function_impl::data_param d
83 , mpl::false_
84 ) const
85 {
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 )
88 );
89 }
90 result_type invoke(
91 typename default_function_impl::expr_param e
92 , typename default_function_impl::state_param s
93 , typename default_function_impl::data_param d
94 , mpl::true_
95 ) const
96 {
97 BOOST_PROTO_USE_GET_POINTER();
98 typedef typename detail::class_member_traits<function_type>::class_type class_type;
99 return (
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 ));
103 }
104 };
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>
108 {
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;
110 typedef
111 typename proto::detail::result_of_fixup<r0>::type
112 function_type;
113 typedef
114 typename BOOST_PROTO_RESULT_OF<
115 function_type(r1 , r2 , r3 , r4)
116 >::type
117 result_type;
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
122 ) const
123 {
124 return this->invoke(e, s, d, is_member_function_pointer<function_type>());
125 }
126 private:
127 result_type invoke(
128 typename default_function_impl::expr_param e
129 , typename default_function_impl::state_param s
130 , typename default_function_impl::data_param d
131 , mpl::false_
132 ) const
133 {
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 )
136 );
137 }
138 result_type invoke(
139 typename default_function_impl::expr_param e
140 , typename default_function_impl::state_param s
141 , typename default_function_impl::data_param d
142 , mpl::true_
143 ) const
144 {
145 BOOST_PROTO_USE_GET_POINTER();
146 typedef typename detail::class_member_traits<function_type>::class_type class_type;
147 return (
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 ));
151 }
152 };
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>
156 {
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;
158 typedef
159 typename proto::detail::result_of_fixup<r0>::type
160 function_type;
161 typedef
162 typename BOOST_PROTO_RESULT_OF<
163 function_type(r1 , r2 , r3 , r4 , r5)
164 >::type
165 result_type;
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
170 ) const
171 {
172 return this->invoke(e, s, d, is_member_function_pointer<function_type>());
173 }
174 private:
175 result_type invoke(
176 typename default_function_impl::expr_param e
177 , typename default_function_impl::state_param s
178 , typename default_function_impl::data_param d
179 , mpl::false_
180 ) const
181 {
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 )
184 );
185 }
186 result_type invoke(
187 typename default_function_impl::expr_param e
188 , typename default_function_impl::state_param s
189 , typename default_function_impl::data_param d
190 , mpl::true_
191 ) const
192 {
193 BOOST_PROTO_USE_GET_POINTER();
194 typedef typename detail::class_member_traits<function_type>::class_type class_type;
195 return (
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 ));
199 }
200 };
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>
204 {
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;
206 typedef
207 typename proto::detail::result_of_fixup<r0>::type
208 function_type;
209 typedef
210 typename BOOST_PROTO_RESULT_OF<
211 function_type(r1 , r2 , r3 , r4 , r5 , r6)
212 >::type
213 result_type;
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
218 ) const
219 {
220 return this->invoke(e, s, d, is_member_function_pointer<function_type>());
221 }
222 private:
223 result_type invoke(
224 typename default_function_impl::expr_param e
225 , typename default_function_impl::state_param s
226 , typename default_function_impl::data_param d
227 , mpl::false_
228 ) const
229 {
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 )
232 );
233 }
234 result_type invoke(
235 typename default_function_impl::expr_param e
236 , typename default_function_impl::state_param s
237 , typename default_function_impl::data_param d
238 , mpl::true_
239 ) const
240 {
241 BOOST_PROTO_USE_GET_POINTER();
242 typedef typename detail::class_member_traits<function_type>::class_type class_type;
243 return (
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 ));
247 }
248 };
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>
252 {
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;
254 typedef
255 typename proto::detail::result_of_fixup<r0>::type
256 function_type;
257 typedef
258 typename BOOST_PROTO_RESULT_OF<
259 function_type(r1 , r2 , r3 , r4 , r5 , r6 , r7)
260 >::type
261 result_type;
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
266 ) const
267 {
268 return this->invoke(e, s, d, is_member_function_pointer<function_type>());
269 }
270 private:
271 result_type invoke(
272 typename default_function_impl::expr_param e
273 , typename default_function_impl::state_param s
274 , typename default_function_impl::data_param d
275 , mpl::false_
276 ) const
277 {
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 )
280 );
281 }
282 result_type invoke(
283 typename default_function_impl::expr_param e
284 , typename default_function_impl::state_param s
285 , typename default_function_impl::data_param d
286 , mpl::true_
287 ) const
288 {
289 BOOST_PROTO_USE_GET_POINTER();
290 typedef typename detail::class_member_traits<function_type>::class_type class_type;
291 return (
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 ));
295 }
296 };
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>
300 {
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;
302 typedef
303 typename proto::detail::result_of_fixup<r0>::type
304 function_type;
305 typedef
306 typename BOOST_PROTO_RESULT_OF<
307 function_type(r1 , r2 , r3 , r4 , r5 , r6 , r7 , r8)
308 >::type
309 result_type;
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
314 ) const
315 {
316 return this->invoke(e, s, d, is_member_function_pointer<function_type>());
317 }
318 private:
319 result_type invoke(
320 typename default_function_impl::expr_param e
321 , typename default_function_impl::state_param s
322 , typename default_function_impl::data_param d
323 , mpl::false_
324 ) const
325 {
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 )
328 );
329 }
330 result_type invoke(
331 typename default_function_impl::expr_param e
332 , typename default_function_impl::state_param s
333 , typename default_function_impl::data_param d
334 , mpl::true_
335 ) const
336 {
337 BOOST_PROTO_USE_GET_POINTER();
338 typedef typename detail::class_member_traits<function_type>::class_type class_type;
339 return (
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 ));
343 }
344 };
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>
348 {
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;
350 typedef
351 typename proto::detail::result_of_fixup<r0>::type
352 function_type;
353 typedef
354 typename BOOST_PROTO_RESULT_OF<
355 function_type(r1 , r2 , r3 , r4 , r5 , r6 , r7 , r8 , r9)
356 >::type
357 result_type;
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
362 ) const
363 {
364 return this->invoke(e, s, d, is_member_function_pointer<function_type>());
365 }
366 private:
367 result_type invoke(
368 typename default_function_impl::expr_param e
369 , typename default_function_impl::state_param s
370 , typename default_function_impl::data_param d
371 , mpl::false_
372 ) const
373 {
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 )
376 );
377 }
378 result_type invoke(
379 typename default_function_impl::expr_param e
380 , typename default_function_impl::state_param s
381 , typename default_function_impl::data_param d
382 , mpl::true_
383 ) const
384 {
385 BOOST_PROTO_USE_GET_POINTER();
386 typedef typename detail::class_member_traits<function_type>::class_type class_type;
387 return (
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 ));
391 }
392 };