File indexing completed on 2025-01-18 09:50:28
0001
0002
0003
0004
0005
0006
0007
0008
0009 template<typename Grammar, typename Expr, typename State, typename Data>
0010 struct default_function_impl<Grammar, Expr, State, Data, 3>
0011 : transform_impl<Expr, State, Data>
0012 {
0013 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;
0014 typedef
0015 typename proto::detail::result_of_fixup<r0>::type
0016 function_type;
0017 typedef
0018 typename BOOST_PROTO_RESULT_OF<
0019 function_type(r1 , r2)
0020 >::type
0021 result_type;
0022 result_type operator ()(
0023 typename default_function_impl::expr_param e
0024 , typename default_function_impl::state_param s
0025 , typename default_function_impl::data_param d
0026 ) const
0027 {
0028 return this->invoke(e, s, d, is_member_function_pointer<function_type>());
0029 }
0030 private:
0031 result_type invoke(
0032 typename default_function_impl::expr_param e
0033 , typename default_function_impl::state_param s
0034 , typename default_function_impl::data_param d
0035 , mpl::false_
0036 ) const
0037 {
0038 return typename Grammar::template impl<e0, State, Data>()( proto::child_c< 0>( e), s, d )(
0039 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 )
0040 );
0041 }
0042 result_type invoke(
0043 typename default_function_impl::expr_param e
0044 , typename default_function_impl::state_param s
0045 , typename default_function_impl::data_param d
0046 , mpl::true_
0047 ) const
0048 {
0049 BOOST_PROTO_USE_GET_POINTER();
0050 typedef typename detail::class_member_traits<function_type>::class_type class_type;
0051 return (
0052 BOOST_PROTO_GET_POINTER(class_type, (typename Grammar::template impl<e1, State, Data>()( proto::child_c< 1>( e), s, d ))) ->*
0053 typename Grammar::template impl<e0, State, Data>()( proto::child_c< 0>( e), s, d )
0054 )(typename Grammar::template impl<e2, State, Data>()( proto::child_c< 2>( e), s, d ));
0055 }
0056 };
0057 template<typename Grammar, typename Expr, typename State, typename Data>
0058 struct default_function_impl<Grammar, Expr, State, Data, 4>
0059 : transform_impl<Expr, State, Data>
0060 {
0061 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;
0062 typedef
0063 typename proto::detail::result_of_fixup<r0>::type
0064 function_type;
0065 typedef
0066 typename BOOST_PROTO_RESULT_OF<
0067 function_type(r1 , r2 , r3)
0068 >::type
0069 result_type;
0070 result_type operator ()(
0071 typename default_function_impl::expr_param e
0072 , typename default_function_impl::state_param s
0073 , typename default_function_impl::data_param d
0074 ) const
0075 {
0076 return this->invoke(e, s, d, is_member_function_pointer<function_type>());
0077 }
0078 private:
0079 result_type invoke(
0080 typename default_function_impl::expr_param e
0081 , typename default_function_impl::state_param s
0082 , typename default_function_impl::data_param d
0083 , mpl::false_
0084 ) const
0085 {
0086 return typename Grammar::template impl<e0, State, Data>()( proto::child_c< 0>( e), s, d )(
0087 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 )
0088 );
0089 }
0090 result_type invoke(
0091 typename default_function_impl::expr_param e
0092 , typename default_function_impl::state_param s
0093 , typename default_function_impl::data_param d
0094 , mpl::true_
0095 ) const
0096 {
0097 BOOST_PROTO_USE_GET_POINTER();
0098 typedef typename detail::class_member_traits<function_type>::class_type class_type;
0099 return (
0100 BOOST_PROTO_GET_POINTER(class_type, (typename Grammar::template impl<e1, State, Data>()( proto::child_c< 1>( e), s, d ))) ->*
0101 typename Grammar::template impl<e0, State, Data>()( proto::child_c< 0>( e), s, d )
0102 )(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 ));
0103 }
0104 };
0105 template<typename Grammar, typename Expr, typename State, typename Data>
0106 struct default_function_impl<Grammar, Expr, State, Data, 5>
0107 : transform_impl<Expr, State, Data>
0108 {
0109 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;
0110 typedef
0111 typename proto::detail::result_of_fixup<r0>::type
0112 function_type;
0113 typedef
0114 typename BOOST_PROTO_RESULT_OF<
0115 function_type(r1 , r2 , r3 , r4)
0116 >::type
0117 result_type;
0118 result_type operator ()(
0119 typename default_function_impl::expr_param e
0120 , typename default_function_impl::state_param s
0121 , typename default_function_impl::data_param d
0122 ) const
0123 {
0124 return this->invoke(e, s, d, is_member_function_pointer<function_type>());
0125 }
0126 private:
0127 result_type invoke(
0128 typename default_function_impl::expr_param e
0129 , typename default_function_impl::state_param s
0130 , typename default_function_impl::data_param d
0131 , mpl::false_
0132 ) const
0133 {
0134 return typename Grammar::template impl<e0, State, Data>()( proto::child_c< 0>( e), s, d )(
0135 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 )
0136 );
0137 }
0138 result_type invoke(
0139 typename default_function_impl::expr_param e
0140 , typename default_function_impl::state_param s
0141 , typename default_function_impl::data_param d
0142 , mpl::true_
0143 ) const
0144 {
0145 BOOST_PROTO_USE_GET_POINTER();
0146 typedef typename detail::class_member_traits<function_type>::class_type class_type;
0147 return (
0148 BOOST_PROTO_GET_POINTER(class_type, (typename Grammar::template impl<e1, State, Data>()( proto::child_c< 1>( e), s, d ))) ->*
0149 typename Grammar::template impl<e0, State, Data>()( proto::child_c< 0>( e), s, d )
0150 )(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 ));
0151 }
0152 };
0153 template<typename Grammar, typename Expr, typename State, typename Data>
0154 struct default_function_impl<Grammar, Expr, State, Data, 6>
0155 : transform_impl<Expr, State, Data>
0156 {
0157 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;
0158 typedef
0159 typename proto::detail::result_of_fixup<r0>::type
0160 function_type;
0161 typedef
0162 typename BOOST_PROTO_RESULT_OF<
0163 function_type(r1 , r2 , r3 , r4 , r5)
0164 >::type
0165 result_type;
0166 result_type operator ()(
0167 typename default_function_impl::expr_param e
0168 , typename default_function_impl::state_param s
0169 , typename default_function_impl::data_param d
0170 ) const
0171 {
0172 return this->invoke(e, s, d, is_member_function_pointer<function_type>());
0173 }
0174 private:
0175 result_type invoke(
0176 typename default_function_impl::expr_param e
0177 , typename default_function_impl::state_param s
0178 , typename default_function_impl::data_param d
0179 , mpl::false_
0180 ) const
0181 {
0182 return typename Grammar::template impl<e0, State, Data>()( proto::child_c< 0>( e), s, d )(
0183 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 )
0184 );
0185 }
0186 result_type invoke(
0187 typename default_function_impl::expr_param e
0188 , typename default_function_impl::state_param s
0189 , typename default_function_impl::data_param d
0190 , mpl::true_
0191 ) const
0192 {
0193 BOOST_PROTO_USE_GET_POINTER();
0194 typedef typename detail::class_member_traits<function_type>::class_type class_type;
0195 return (
0196 BOOST_PROTO_GET_POINTER(class_type, (typename Grammar::template impl<e1, State, Data>()( proto::child_c< 1>( e), s, d ))) ->*
0197 typename Grammar::template impl<e0, State, Data>()( proto::child_c< 0>( e), s, d )
0198 )(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 ));
0199 }
0200 };
0201 template<typename Grammar, typename Expr, typename State, typename Data>
0202 struct default_function_impl<Grammar, Expr, State, Data, 7>
0203 : transform_impl<Expr, State, Data>
0204 {
0205 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;
0206 typedef
0207 typename proto::detail::result_of_fixup<r0>::type
0208 function_type;
0209 typedef
0210 typename BOOST_PROTO_RESULT_OF<
0211 function_type(r1 , r2 , r3 , r4 , r5 , r6)
0212 >::type
0213 result_type;
0214 result_type operator ()(
0215 typename default_function_impl::expr_param e
0216 , typename default_function_impl::state_param s
0217 , typename default_function_impl::data_param d
0218 ) const
0219 {
0220 return this->invoke(e, s, d, is_member_function_pointer<function_type>());
0221 }
0222 private:
0223 result_type invoke(
0224 typename default_function_impl::expr_param e
0225 , typename default_function_impl::state_param s
0226 , typename default_function_impl::data_param d
0227 , mpl::false_
0228 ) const
0229 {
0230 return typename Grammar::template impl<e0, State, Data>()( proto::child_c< 0>( e), s, d )(
0231 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 )
0232 );
0233 }
0234 result_type invoke(
0235 typename default_function_impl::expr_param e
0236 , typename default_function_impl::state_param s
0237 , typename default_function_impl::data_param d
0238 , mpl::true_
0239 ) const
0240 {
0241 BOOST_PROTO_USE_GET_POINTER();
0242 typedef typename detail::class_member_traits<function_type>::class_type class_type;
0243 return (
0244 BOOST_PROTO_GET_POINTER(class_type, (typename Grammar::template impl<e1, State, Data>()( proto::child_c< 1>( e), s, d ))) ->*
0245 typename Grammar::template impl<e0, State, Data>()( proto::child_c< 0>( e), s, d )
0246 )(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 ));
0247 }
0248 };
0249 template<typename Grammar, typename Expr, typename State, typename Data>
0250 struct default_function_impl<Grammar, Expr, State, Data, 8>
0251 : transform_impl<Expr, State, Data>
0252 {
0253 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;
0254 typedef
0255 typename proto::detail::result_of_fixup<r0>::type
0256 function_type;
0257 typedef
0258 typename BOOST_PROTO_RESULT_OF<
0259 function_type(r1 , r2 , r3 , r4 , r5 , r6 , r7)
0260 >::type
0261 result_type;
0262 result_type operator ()(
0263 typename default_function_impl::expr_param e
0264 , typename default_function_impl::state_param s
0265 , typename default_function_impl::data_param d
0266 ) const
0267 {
0268 return this->invoke(e, s, d, is_member_function_pointer<function_type>());
0269 }
0270 private:
0271 result_type invoke(
0272 typename default_function_impl::expr_param e
0273 , typename default_function_impl::state_param s
0274 , typename default_function_impl::data_param d
0275 , mpl::false_
0276 ) const
0277 {
0278 return typename Grammar::template impl<e0, State, Data>()( proto::child_c< 0>( e), s, d )(
0279 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 )
0280 );
0281 }
0282 result_type invoke(
0283 typename default_function_impl::expr_param e
0284 , typename default_function_impl::state_param s
0285 , typename default_function_impl::data_param d
0286 , mpl::true_
0287 ) const
0288 {
0289 BOOST_PROTO_USE_GET_POINTER();
0290 typedef typename detail::class_member_traits<function_type>::class_type class_type;
0291 return (
0292 BOOST_PROTO_GET_POINTER(class_type, (typename Grammar::template impl<e1, State, Data>()( proto::child_c< 1>( e), s, d ))) ->*
0293 typename Grammar::template impl<e0, State, Data>()( proto::child_c< 0>( e), s, d )
0294 )(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 ));
0295 }
0296 };
0297 template<typename Grammar, typename Expr, typename State, typename Data>
0298 struct default_function_impl<Grammar, Expr, State, Data, 9>
0299 : transform_impl<Expr, State, Data>
0300 {
0301 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;
0302 typedef
0303 typename proto::detail::result_of_fixup<r0>::type
0304 function_type;
0305 typedef
0306 typename BOOST_PROTO_RESULT_OF<
0307 function_type(r1 , r2 , r3 , r4 , r5 , r6 , r7 , r8)
0308 >::type
0309 result_type;
0310 result_type operator ()(
0311 typename default_function_impl::expr_param e
0312 , typename default_function_impl::state_param s
0313 , typename default_function_impl::data_param d
0314 ) const
0315 {
0316 return this->invoke(e, s, d, is_member_function_pointer<function_type>());
0317 }
0318 private:
0319 result_type invoke(
0320 typename default_function_impl::expr_param e
0321 , typename default_function_impl::state_param s
0322 , typename default_function_impl::data_param d
0323 , mpl::false_
0324 ) const
0325 {
0326 return typename Grammar::template impl<e0, State, Data>()( proto::child_c< 0>( e), s, d )(
0327 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 )
0328 );
0329 }
0330 result_type invoke(
0331 typename default_function_impl::expr_param e
0332 , typename default_function_impl::state_param s
0333 , typename default_function_impl::data_param d
0334 , mpl::true_
0335 ) const
0336 {
0337 BOOST_PROTO_USE_GET_POINTER();
0338 typedef typename detail::class_member_traits<function_type>::class_type class_type;
0339 return (
0340 BOOST_PROTO_GET_POINTER(class_type, (typename Grammar::template impl<e1, State, Data>()( proto::child_c< 1>( e), s, d ))) ->*
0341 typename Grammar::template impl<e0, State, Data>()( proto::child_c< 0>( e), s, d )
0342 )(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 ));
0343 }
0344 };
0345 template<typename Grammar, typename Expr, typename State, typename Data>
0346 struct default_function_impl<Grammar, Expr, State, Data, 10>
0347 : transform_impl<Expr, State, Data>
0348 {
0349 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;
0350 typedef
0351 typename proto::detail::result_of_fixup<r0>::type
0352 function_type;
0353 typedef
0354 typename BOOST_PROTO_RESULT_OF<
0355 function_type(r1 , r2 , r3 , r4 , r5 , r6 , r7 , r8 , r9)
0356 >::type
0357 result_type;
0358 result_type operator ()(
0359 typename default_function_impl::expr_param e
0360 , typename default_function_impl::state_param s
0361 , typename default_function_impl::data_param d
0362 ) const
0363 {
0364 return this->invoke(e, s, d, is_member_function_pointer<function_type>());
0365 }
0366 private:
0367 result_type invoke(
0368 typename default_function_impl::expr_param e
0369 , typename default_function_impl::state_param s
0370 , typename default_function_impl::data_param d
0371 , mpl::false_
0372 ) const
0373 {
0374 return typename Grammar::template impl<e0, State, Data>()( proto::child_c< 0>( e), s, d )(
0375 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 )
0376 );
0377 }
0378 result_type invoke(
0379 typename default_function_impl::expr_param e
0380 , typename default_function_impl::state_param s
0381 , typename default_function_impl::data_param d
0382 , mpl::true_
0383 ) const
0384 {
0385 BOOST_PROTO_USE_GET_POINTER();
0386 typedef typename detail::class_member_traits<function_type>::class_type class_type;
0387 return (
0388 BOOST_PROTO_GET_POINTER(class_type, (typename Grammar::template impl<e1, State, Data>()( proto::child_c< 1>( e), s, d ))) ->*
0389 typename Grammar::template impl<e0, State, Data>()( proto::child_c< 0>( e), s, d )
0390 )(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 ));
0391 }
0392 };