/*============================================================================== Copyright (c) 2005-2010 Joel de Guzman Copyright (c) 2010 Thomas Heller 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) ==============================================================================*/ namespace detail { template struct call_impl : proto::transform_impl { typedef typename boost::phoenix::result_of::context::type context_type; typedef typename proto::result_of::child_c::type A0; typedef typename boost::result_of< Fun(A0, context_type) >::type result_type; result_type operator()( typename call_impl::expr_param e , typename call_impl::state_param s , typename call_impl::data_param d ) const { return Fun()( proto::child_c< 0>(e) , boost::phoenix::context(s, d) ); } }; template struct call_impl : proto::transform_impl { typedef typename boost::phoenix::result_of::context::type context_type; typedef typename proto::result_of::child_c::type A0; typedef typename proto::result_of::child_c::type A1; typedef typename boost::result_of< Fun(A0 , A1, context_type) >::type result_type; result_type operator()( typename call_impl::expr_param e , typename call_impl::state_param s , typename call_impl::data_param d ) const { return Fun()( proto::child_c< 0>(e) , proto::child_c< 1>(e) , boost::phoenix::context(s, d) ); } }; template struct call_impl : proto::transform_impl { typedef typename boost::phoenix::result_of::context::type context_type; typedef typename proto::result_of::child_c::type A0; typedef typename proto::result_of::child_c::type A1; typedef typename proto::result_of::child_c::type A2; typedef typename boost::result_of< Fun(A0 , A1 , A2, context_type) >::type result_type; result_type operator()( typename call_impl::expr_param e , typename call_impl::state_param s , typename call_impl::data_param d ) const { return Fun()( proto::child_c< 0>(e) , proto::child_c< 1>(e) , proto::child_c< 2>(e) , boost::phoenix::context(s, d) ); } }; template struct call_impl : proto::transform_impl { typedef typename boost::phoenix::result_of::context::type context_type; typedef typename proto::result_of::child_c::type A0; typedef typename proto::result_of::child_c::type A1; typedef typename proto::result_of::child_c::type A2; typedef typename proto::result_of::child_c::type A3; typedef typename boost::result_of< Fun(A0 , A1 , A2 , A3, context_type) >::type result_type; result_type operator()( typename call_impl::expr_param e , typename call_impl::state_param s , typename call_impl::data_param d ) const { return Fun()( proto::child_c< 0>(e) , proto::child_c< 1>(e) , proto::child_c< 2>(e) , proto::child_c< 3>(e) , boost::phoenix::context(s, d) ); } }; template struct call_impl : proto::transform_impl { typedef typename boost::phoenix::result_of::context::type context_type; typedef typename proto::result_of::child_c::type A0; typedef typename proto::result_of::child_c::type A1; typedef typename proto::result_of::child_c::type A2; typedef typename proto::result_of::child_c::type A3; typedef typename proto::result_of::child_c::type A4; typedef typename boost::result_of< Fun(A0 , A1 , A2 , A3 , A4, context_type) >::type result_type; result_type operator()( typename call_impl::expr_param e , typename call_impl::state_param s , typename call_impl::data_param d ) const { return Fun()( proto::child_c< 0>(e) , proto::child_c< 1>(e) , proto::child_c< 2>(e) , proto::child_c< 3>(e) , proto::child_c< 4>(e) , boost::phoenix::context(s, d) ); } }; template struct call_impl : proto::transform_impl { typedef typename boost::phoenix::result_of::context::type context_type; typedef typename proto::result_of::child_c::type A0; typedef typename proto::result_of::child_c::type A1; typedef typename proto::result_of::child_c::type A2; typedef typename proto::result_of::child_c::type A3; typedef typename proto::result_of::child_c::type A4; typedef typename proto::result_of::child_c::type A5; typedef typename boost::result_of< Fun(A0 , A1 , A2 , A3 , A4 , A5, context_type) >::type result_type; result_type operator()( typename call_impl::expr_param e , typename call_impl::state_param s , typename call_impl::data_param d ) const { return Fun()( proto::child_c< 0>(e) , proto::child_c< 1>(e) , proto::child_c< 2>(e) , proto::child_c< 3>(e) , proto::child_c< 4>(e) , proto::child_c< 5>(e) , boost::phoenix::context(s, d) ); } }; template struct call_impl : proto::transform_impl { typedef typename boost::phoenix::result_of::context::type context_type; typedef typename proto::result_of::child_c::type A0; typedef typename proto::result_of::child_c::type A1; typedef typename proto::result_of::child_c::type A2; typedef typename proto::result_of::child_c::type A3; typedef typename proto::result_of::child_c::type A4; typedef typename proto::result_of::child_c::type A5; typedef typename proto::result_of::child_c::type A6; typedef typename boost::result_of< Fun(A0 , A1 , A2 , A3 , A4 , A5 , A6, context_type) >::type result_type; result_type operator()( typename call_impl::expr_param e , typename call_impl::state_param s , typename call_impl::data_param d ) const { return Fun()( proto::child_c< 0>(e) , proto::child_c< 1>(e) , proto::child_c< 2>(e) , proto::child_c< 3>(e) , proto::child_c< 4>(e) , proto::child_c< 5>(e) , proto::child_c< 6>(e) , boost::phoenix::context(s, d) ); } }; template struct call_impl : proto::transform_impl { typedef typename boost::phoenix::result_of::context::type context_type; typedef typename proto::result_of::child_c::type A0; typedef typename proto::result_of::child_c::type A1; typedef typename proto::result_of::child_c::type A2; typedef typename proto::result_of::child_c::type A3; typedef typename proto::result_of::child_c::type A4; typedef typename proto::result_of::child_c::type A5; typedef typename proto::result_of::child_c::type A6; typedef typename proto::result_of::child_c::type A7; typedef typename boost::result_of< Fun(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7, context_type) >::type result_type; result_type operator()( typename call_impl::expr_param e , typename call_impl::state_param s , typename call_impl::data_param d ) const { return Fun()( proto::child_c< 0>(e) , proto::child_c< 1>(e) , proto::child_c< 2>(e) , proto::child_c< 3>(e) , proto::child_c< 4>(e) , proto::child_c< 5>(e) , proto::child_c< 6>(e) , proto::child_c< 7>(e) , boost::phoenix::context(s, d) ); } }; template struct call_impl : proto::transform_impl { typedef typename boost::phoenix::result_of::context::type context_type; typedef typename proto::result_of::child_c::type A0; typedef typename proto::result_of::child_c::type A1; typedef typename proto::result_of::child_c::type A2; typedef typename proto::result_of::child_c::type A3; typedef typename proto::result_of::child_c::type A4; typedef typename proto::result_of::child_c::type A5; typedef typename proto::result_of::child_c::type A6; typedef typename proto::result_of::child_c::type A7; typedef typename proto::result_of::child_c::type A8; typedef typename boost::result_of< Fun(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8, context_type) >::type result_type; result_type operator()( typename call_impl::expr_param e , typename call_impl::state_param s , typename call_impl::data_param d ) const { return Fun()( proto::child_c< 0>(e) , proto::child_c< 1>(e) , proto::child_c< 2>(e) , proto::child_c< 3>(e) , proto::child_c< 4>(e) , proto::child_c< 5>(e) , proto::child_c< 6>(e) , proto::child_c< 7>(e) , proto::child_c< 8>(e) , boost::phoenix::context(s, d) ); } }; template struct call_impl : proto::transform_impl { typedef typename boost::phoenix::result_of::context::type context_type; typedef typename proto::result_of::child_c::type A0; typedef typename proto::result_of::child_c::type A1; typedef typename proto::result_of::child_c::type A2; typedef typename proto::result_of::child_c::type A3; typedef typename proto::result_of::child_c::type A4; typedef typename proto::result_of::child_c::type A5; typedef typename proto::result_of::child_c::type A6; typedef typename proto::result_of::child_c::type A7; typedef typename proto::result_of::child_c::type A8; typedef typename proto::result_of::child_c::type A9; typedef typename boost::result_of< Fun(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9, context_type) >::type result_type; result_type operator()( typename call_impl::expr_param e , typename call_impl::state_param s , typename call_impl::data_param d ) const { return Fun()( proto::child_c< 0>(e) , proto::child_c< 1>(e) , proto::child_c< 2>(e) , proto::child_c< 3>(e) , proto::child_c< 4>(e) , proto::child_c< 5>(e) , proto::child_c< 6>(e) , proto::child_c< 7>(e) , proto::child_c< 8>(e) , proto::child_c< 9>(e) , boost::phoenix::context(s, d) ); } }; }