diff options
Diffstat (limited to 'boost/proto/transform/detail/preprocessed/pass_through_impl.hpp')
-rw-r--r-- | boost/proto/transform/detail/preprocessed/pass_through_impl.hpp | 200 |
1 files changed, 140 insertions, 60 deletions
diff --git a/boost/proto/transform/detail/preprocessed/pass_through_impl.hpp b/boost/proto/transform/detail/preprocessed/pass_through_impl.hpp index 3a1620f18d..401b200cd4 100644 --- a/boost/proto/transform/detail/preprocessed/pass_through_impl.hpp +++ b/boost/proto/transform/detail/preprocessed/pass_through_impl.hpp @@ -7,24 +7,32 @@ // Copyright 2008 Eric Niebler. Distributed under the Boost // Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - template<typename Grammar, typename Expr, typename State, typename Data> - struct pass_through_impl<Grammar, Expr, State, Data, 1> + template<typename Grammar, typename Domain, typename Expr, typename State, typename Data> + struct pass_through_impl<Grammar, Domain, Expr, State, Data, 1> : transform_impl<Expr, State, Data> { typedef typename pass_through_impl::expr unref_expr; typedef + typename mpl::if_c< + is_same<Domain, deduce_domain>::value + , typename unref_expr::proto_domain + , Domain + >::type + result_domain; + typedef typename base_expr< - typename unref_expr::proto_domain + result_domain , typename unref_expr::proto_tag , list1< typename Grammar::proto_child0::template impl< typename result_of::child_c<Expr, 0>::type , State , Data >::result_type > >::type expr_type; - typedef typename unref_expr::proto_generator proto_generator; - typedef typename BOOST_PROTO_RESULT_OF<proto_generator(expr_type)>::type const result_type; + typedef typename result_domain::proto_generator proto_generator; + typedef typename BOOST_PROTO_RESULT_OF<proto_generator(expr_type)>::type result_type; BOOST_FORCEINLINE - result_type const operator ()( + BOOST_PROTO_RETURN_TYPE_STRICT_LOOSE(result_type, result_type const) + operator ()( typename pass_through_impl::expr_param e , typename pass_through_impl::state_param s , typename pass_through_impl::data_param d @@ -40,24 +48,32 @@ return proto_generator()(that); } }; - template<typename Grammar, typename Expr, typename State, typename Data> - struct pass_through_impl<Grammar, Expr, State, Data, 2> + template<typename Grammar, typename Domain, typename Expr, typename State, typename Data> + struct pass_through_impl<Grammar, Domain, Expr, State, Data, 2> : transform_impl<Expr, State, Data> { typedef typename pass_through_impl::expr unref_expr; typedef + typename mpl::if_c< + is_same<Domain, deduce_domain>::value + , typename unref_expr::proto_domain + , Domain + >::type + result_domain; + typedef typename base_expr< - typename unref_expr::proto_domain + result_domain , typename unref_expr::proto_tag , list2< typename Grammar::proto_child0::template impl< typename result_of::child_c<Expr, 0>::type , State , Data >::result_type , typename Grammar::proto_child1::template impl< typename result_of::child_c<Expr, 1>::type , State , Data >::result_type > >::type expr_type; - typedef typename unref_expr::proto_generator proto_generator; - typedef typename BOOST_PROTO_RESULT_OF<proto_generator(expr_type)>::type const result_type; + typedef typename result_domain::proto_generator proto_generator; + typedef typename BOOST_PROTO_RESULT_OF<proto_generator(expr_type)>::type result_type; BOOST_FORCEINLINE - result_type const operator ()( + BOOST_PROTO_RETURN_TYPE_STRICT_LOOSE(result_type, result_type const) + operator ()( typename pass_through_impl::expr_param e , typename pass_through_impl::state_param s , typename pass_through_impl::data_param d @@ -73,24 +89,32 @@ return proto_generator()(that); } }; - template<typename Grammar, typename Expr, typename State, typename Data> - struct pass_through_impl<Grammar, Expr, State, Data, 3> + template<typename Grammar, typename Domain, typename Expr, typename State, typename Data> + struct pass_through_impl<Grammar, Domain, Expr, State, Data, 3> : transform_impl<Expr, State, Data> { typedef typename pass_through_impl::expr unref_expr; typedef + typename mpl::if_c< + is_same<Domain, deduce_domain>::value + , typename unref_expr::proto_domain + , Domain + >::type + result_domain; + typedef typename base_expr< - typename unref_expr::proto_domain + result_domain , typename unref_expr::proto_tag , list3< typename Grammar::proto_child0::template impl< typename result_of::child_c<Expr, 0>::type , State , Data >::result_type , typename Grammar::proto_child1::template impl< typename result_of::child_c<Expr, 1>::type , State , Data >::result_type , typename Grammar::proto_child2::template impl< typename result_of::child_c<Expr, 2>::type , State , Data >::result_type > >::type expr_type; - typedef typename unref_expr::proto_generator proto_generator; - typedef typename BOOST_PROTO_RESULT_OF<proto_generator(expr_type)>::type const result_type; + typedef typename result_domain::proto_generator proto_generator; + typedef typename BOOST_PROTO_RESULT_OF<proto_generator(expr_type)>::type result_type; BOOST_FORCEINLINE - result_type const operator ()( + BOOST_PROTO_RETURN_TYPE_STRICT_LOOSE(result_type, result_type const) + operator ()( typename pass_through_impl::expr_param e , typename pass_through_impl::state_param s , typename pass_through_impl::data_param d @@ -106,24 +130,32 @@ return proto_generator()(that); } }; - template<typename Grammar, typename Expr, typename State, typename Data> - struct pass_through_impl<Grammar, Expr, State, Data, 4> + template<typename Grammar, typename Domain, typename Expr, typename State, typename Data> + struct pass_through_impl<Grammar, Domain, Expr, State, Data, 4> : transform_impl<Expr, State, Data> { typedef typename pass_through_impl::expr unref_expr; typedef + typename mpl::if_c< + is_same<Domain, deduce_domain>::value + , typename unref_expr::proto_domain + , Domain + >::type + result_domain; + typedef typename base_expr< - typename unref_expr::proto_domain + result_domain , typename unref_expr::proto_tag , list4< typename Grammar::proto_child0::template impl< typename result_of::child_c<Expr, 0>::type , State , Data >::result_type , typename Grammar::proto_child1::template impl< typename result_of::child_c<Expr, 1>::type , State , Data >::result_type , typename Grammar::proto_child2::template impl< typename result_of::child_c<Expr, 2>::type , State , Data >::result_type , typename Grammar::proto_child3::template impl< typename result_of::child_c<Expr, 3>::type , State , Data >::result_type > >::type expr_type; - typedef typename unref_expr::proto_generator proto_generator; - typedef typename BOOST_PROTO_RESULT_OF<proto_generator(expr_type)>::type const result_type; + typedef typename result_domain::proto_generator proto_generator; + typedef typename BOOST_PROTO_RESULT_OF<proto_generator(expr_type)>::type result_type; BOOST_FORCEINLINE - result_type const operator ()( + BOOST_PROTO_RETURN_TYPE_STRICT_LOOSE(result_type, result_type const) + operator ()( typename pass_through_impl::expr_param e , typename pass_through_impl::state_param s , typename pass_through_impl::data_param d @@ -139,24 +171,32 @@ return proto_generator()(that); } }; - template<typename Grammar, typename Expr, typename State, typename Data> - struct pass_through_impl<Grammar, Expr, State, Data, 5> + template<typename Grammar, typename Domain, typename Expr, typename State, typename Data> + struct pass_through_impl<Grammar, Domain, Expr, State, Data, 5> : transform_impl<Expr, State, Data> { typedef typename pass_through_impl::expr unref_expr; typedef + typename mpl::if_c< + is_same<Domain, deduce_domain>::value + , typename unref_expr::proto_domain + , Domain + >::type + result_domain; + typedef typename base_expr< - typename unref_expr::proto_domain + result_domain , typename unref_expr::proto_tag , list5< typename Grammar::proto_child0::template impl< typename result_of::child_c<Expr, 0>::type , State , Data >::result_type , typename Grammar::proto_child1::template impl< typename result_of::child_c<Expr, 1>::type , State , Data >::result_type , typename Grammar::proto_child2::template impl< typename result_of::child_c<Expr, 2>::type , State , Data >::result_type , typename Grammar::proto_child3::template impl< typename result_of::child_c<Expr, 3>::type , State , Data >::result_type , typename Grammar::proto_child4::template impl< typename result_of::child_c<Expr, 4>::type , State , Data >::result_type > >::type expr_type; - typedef typename unref_expr::proto_generator proto_generator; - typedef typename BOOST_PROTO_RESULT_OF<proto_generator(expr_type)>::type const result_type; + typedef typename result_domain::proto_generator proto_generator; + typedef typename BOOST_PROTO_RESULT_OF<proto_generator(expr_type)>::type result_type; BOOST_FORCEINLINE - result_type const operator ()( + BOOST_PROTO_RETURN_TYPE_STRICT_LOOSE(result_type, result_type const) + operator ()( typename pass_through_impl::expr_param e , typename pass_through_impl::state_param s , typename pass_through_impl::data_param d @@ -172,24 +212,32 @@ return proto_generator()(that); } }; - template<typename Grammar, typename Expr, typename State, typename Data> - struct pass_through_impl<Grammar, Expr, State, Data, 6> + template<typename Grammar, typename Domain, typename Expr, typename State, typename Data> + struct pass_through_impl<Grammar, Domain, Expr, State, Data, 6> : transform_impl<Expr, State, Data> { typedef typename pass_through_impl::expr unref_expr; typedef + typename mpl::if_c< + is_same<Domain, deduce_domain>::value + , typename unref_expr::proto_domain + , Domain + >::type + result_domain; + typedef typename base_expr< - typename unref_expr::proto_domain + result_domain , typename unref_expr::proto_tag , list6< typename Grammar::proto_child0::template impl< typename result_of::child_c<Expr, 0>::type , State , Data >::result_type , typename Grammar::proto_child1::template impl< typename result_of::child_c<Expr, 1>::type , State , Data >::result_type , typename Grammar::proto_child2::template impl< typename result_of::child_c<Expr, 2>::type , State , Data >::result_type , typename Grammar::proto_child3::template impl< typename result_of::child_c<Expr, 3>::type , State , Data >::result_type , typename Grammar::proto_child4::template impl< typename result_of::child_c<Expr, 4>::type , State , Data >::result_type , typename Grammar::proto_child5::template impl< typename result_of::child_c<Expr, 5>::type , State , Data >::result_type > >::type expr_type; - typedef typename unref_expr::proto_generator proto_generator; - typedef typename BOOST_PROTO_RESULT_OF<proto_generator(expr_type)>::type const result_type; + typedef typename result_domain::proto_generator proto_generator; + typedef typename BOOST_PROTO_RESULT_OF<proto_generator(expr_type)>::type result_type; BOOST_FORCEINLINE - result_type const operator ()( + BOOST_PROTO_RETURN_TYPE_STRICT_LOOSE(result_type, result_type const) + operator ()( typename pass_through_impl::expr_param e , typename pass_through_impl::state_param s , typename pass_through_impl::data_param d @@ -205,24 +253,32 @@ return proto_generator()(that); } }; - template<typename Grammar, typename Expr, typename State, typename Data> - struct pass_through_impl<Grammar, Expr, State, Data, 7> + template<typename Grammar, typename Domain, typename Expr, typename State, typename Data> + struct pass_through_impl<Grammar, Domain, Expr, State, Data, 7> : transform_impl<Expr, State, Data> { typedef typename pass_through_impl::expr unref_expr; typedef + typename mpl::if_c< + is_same<Domain, deduce_domain>::value + , typename unref_expr::proto_domain + , Domain + >::type + result_domain; + typedef typename base_expr< - typename unref_expr::proto_domain + result_domain , typename unref_expr::proto_tag , list7< typename Grammar::proto_child0::template impl< typename result_of::child_c<Expr, 0>::type , State , Data >::result_type , typename Grammar::proto_child1::template impl< typename result_of::child_c<Expr, 1>::type , State , Data >::result_type , typename Grammar::proto_child2::template impl< typename result_of::child_c<Expr, 2>::type , State , Data >::result_type , typename Grammar::proto_child3::template impl< typename result_of::child_c<Expr, 3>::type , State , Data >::result_type , typename Grammar::proto_child4::template impl< typename result_of::child_c<Expr, 4>::type , State , Data >::result_type , typename Grammar::proto_child5::template impl< typename result_of::child_c<Expr, 5>::type , State , Data >::result_type , typename Grammar::proto_child6::template impl< typename result_of::child_c<Expr, 6>::type , State , Data >::result_type > >::type expr_type; - typedef typename unref_expr::proto_generator proto_generator; - typedef typename BOOST_PROTO_RESULT_OF<proto_generator(expr_type)>::type const result_type; + typedef typename result_domain::proto_generator proto_generator; + typedef typename BOOST_PROTO_RESULT_OF<proto_generator(expr_type)>::type result_type; BOOST_FORCEINLINE - result_type const operator ()( + BOOST_PROTO_RETURN_TYPE_STRICT_LOOSE(result_type, result_type const) + operator ()( typename pass_through_impl::expr_param e , typename pass_through_impl::state_param s , typename pass_through_impl::data_param d @@ -238,24 +294,32 @@ return proto_generator()(that); } }; - template<typename Grammar, typename Expr, typename State, typename Data> - struct pass_through_impl<Grammar, Expr, State, Data, 8> + template<typename Grammar, typename Domain, typename Expr, typename State, typename Data> + struct pass_through_impl<Grammar, Domain, Expr, State, Data, 8> : transform_impl<Expr, State, Data> { typedef typename pass_through_impl::expr unref_expr; typedef + typename mpl::if_c< + is_same<Domain, deduce_domain>::value + , typename unref_expr::proto_domain + , Domain + >::type + result_domain; + typedef typename base_expr< - typename unref_expr::proto_domain + result_domain , typename unref_expr::proto_tag , list8< typename Grammar::proto_child0::template impl< typename result_of::child_c<Expr, 0>::type , State , Data >::result_type , typename Grammar::proto_child1::template impl< typename result_of::child_c<Expr, 1>::type , State , Data >::result_type , typename Grammar::proto_child2::template impl< typename result_of::child_c<Expr, 2>::type , State , Data >::result_type , typename Grammar::proto_child3::template impl< typename result_of::child_c<Expr, 3>::type , State , Data >::result_type , typename Grammar::proto_child4::template impl< typename result_of::child_c<Expr, 4>::type , State , Data >::result_type , typename Grammar::proto_child5::template impl< typename result_of::child_c<Expr, 5>::type , State , Data >::result_type , typename Grammar::proto_child6::template impl< typename result_of::child_c<Expr, 6>::type , State , Data >::result_type , typename Grammar::proto_child7::template impl< typename result_of::child_c<Expr, 7>::type , State , Data >::result_type > >::type expr_type; - typedef typename unref_expr::proto_generator proto_generator; - typedef typename BOOST_PROTO_RESULT_OF<proto_generator(expr_type)>::type const result_type; + typedef typename result_domain::proto_generator proto_generator; + typedef typename BOOST_PROTO_RESULT_OF<proto_generator(expr_type)>::type result_type; BOOST_FORCEINLINE - result_type const operator ()( + BOOST_PROTO_RETURN_TYPE_STRICT_LOOSE(result_type, result_type const) + operator ()( typename pass_through_impl::expr_param e , typename pass_through_impl::state_param s , typename pass_through_impl::data_param d @@ -271,24 +335,32 @@ return proto_generator()(that); } }; - template<typename Grammar, typename Expr, typename State, typename Data> - struct pass_through_impl<Grammar, Expr, State, Data, 9> + template<typename Grammar, typename Domain, typename Expr, typename State, typename Data> + struct pass_through_impl<Grammar, Domain, Expr, State, Data, 9> : transform_impl<Expr, State, Data> { typedef typename pass_through_impl::expr unref_expr; typedef + typename mpl::if_c< + is_same<Domain, deduce_domain>::value + , typename unref_expr::proto_domain + , Domain + >::type + result_domain; + typedef typename base_expr< - typename unref_expr::proto_domain + result_domain , typename unref_expr::proto_tag , list9< typename Grammar::proto_child0::template impl< typename result_of::child_c<Expr, 0>::type , State , Data >::result_type , typename Grammar::proto_child1::template impl< typename result_of::child_c<Expr, 1>::type , State , Data >::result_type , typename Grammar::proto_child2::template impl< typename result_of::child_c<Expr, 2>::type , State , Data >::result_type , typename Grammar::proto_child3::template impl< typename result_of::child_c<Expr, 3>::type , State , Data >::result_type , typename Grammar::proto_child4::template impl< typename result_of::child_c<Expr, 4>::type , State , Data >::result_type , typename Grammar::proto_child5::template impl< typename result_of::child_c<Expr, 5>::type , State , Data >::result_type , typename Grammar::proto_child6::template impl< typename result_of::child_c<Expr, 6>::type , State , Data >::result_type , typename Grammar::proto_child7::template impl< typename result_of::child_c<Expr, 7>::type , State , Data >::result_type , typename Grammar::proto_child8::template impl< typename result_of::child_c<Expr, 8>::type , State , Data >::result_type > >::type expr_type; - typedef typename unref_expr::proto_generator proto_generator; - typedef typename BOOST_PROTO_RESULT_OF<proto_generator(expr_type)>::type const result_type; + typedef typename result_domain::proto_generator proto_generator; + typedef typename BOOST_PROTO_RESULT_OF<proto_generator(expr_type)>::type result_type; BOOST_FORCEINLINE - result_type const operator ()( + BOOST_PROTO_RETURN_TYPE_STRICT_LOOSE(result_type, result_type const) + operator ()( typename pass_through_impl::expr_param e , typename pass_through_impl::state_param s , typename pass_through_impl::data_param d @@ -304,24 +376,32 @@ return proto_generator()(that); } }; - template<typename Grammar, typename Expr, typename State, typename Data> - struct pass_through_impl<Grammar, Expr, State, Data, 10> + template<typename Grammar, typename Domain, typename Expr, typename State, typename Data> + struct pass_through_impl<Grammar, Domain, Expr, State, Data, 10> : transform_impl<Expr, State, Data> { typedef typename pass_through_impl::expr unref_expr; typedef + typename mpl::if_c< + is_same<Domain, deduce_domain>::value + , typename unref_expr::proto_domain + , Domain + >::type + result_domain; + typedef typename base_expr< - typename unref_expr::proto_domain + result_domain , typename unref_expr::proto_tag , list10< typename Grammar::proto_child0::template impl< typename result_of::child_c<Expr, 0>::type , State , Data >::result_type , typename Grammar::proto_child1::template impl< typename result_of::child_c<Expr, 1>::type , State , Data >::result_type , typename Grammar::proto_child2::template impl< typename result_of::child_c<Expr, 2>::type , State , Data >::result_type , typename Grammar::proto_child3::template impl< typename result_of::child_c<Expr, 3>::type , State , Data >::result_type , typename Grammar::proto_child4::template impl< typename result_of::child_c<Expr, 4>::type , State , Data >::result_type , typename Grammar::proto_child5::template impl< typename result_of::child_c<Expr, 5>::type , State , Data >::result_type , typename Grammar::proto_child6::template impl< typename result_of::child_c<Expr, 6>::type , State , Data >::result_type , typename Grammar::proto_child7::template impl< typename result_of::child_c<Expr, 7>::type , State , Data >::result_type , typename Grammar::proto_child8::template impl< typename result_of::child_c<Expr, 8>::type , State , Data >::result_type , typename Grammar::proto_child9::template impl< typename result_of::child_c<Expr, 9>::type , State , Data >::result_type > >::type expr_type; - typedef typename unref_expr::proto_generator proto_generator; - typedef typename BOOST_PROTO_RESULT_OF<proto_generator(expr_type)>::type const result_type; + typedef typename result_domain::proto_generator proto_generator; + typedef typename BOOST_PROTO_RESULT_OF<proto_generator(expr_type)>::type result_type; BOOST_FORCEINLINE - result_type const operator ()( + BOOST_PROTO_RETURN_TYPE_STRICT_LOOSE(result_type, result_type const) + operator ()( typename pass_through_impl::expr_param e , typename pass_through_impl::state_param s , typename pass_through_impl::data_param d |