689 lines
		
	
	
		
			38 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			689 lines
		
	
	
		
			38 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| /*==============================================================================
 | |
|     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)
 | |
| ==============================================================================*/
 | |
|     
 | |
|     
 | |
|     
 | |
|     
 | |
|     
 | |
|     
 | |
|     
 | |
|     
 | |
|         
 | |
|         template <typename Fun, typename Expr, typename State, typename Data>
 | |
|         struct call_impl<Fun, Expr, State, Data, 1>
 | |
|             : proto::transform_impl<Expr, State, Data>
 | |
|         {
 | |
|             typedef
 | |
|                 typename boost::phoenix::result_of::context<State, Data>::type
 | |
|                 context_type;
 | |
|             typedef typename proto::result_of::child_c<Expr, 0>::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 <typename Fun, typename Expr, typename State, typename Data>
 | |
|         struct call_impl<Fun, Expr, State, Data, 2>
 | |
|             : proto::transform_impl<Expr, State, Data>
 | |
|         {
 | |
|             typedef
 | |
|                 typename boost::phoenix::result_of::context<State, Data>::type
 | |
|                 context_type;
 | |
|             typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::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 <typename Fun, typename Expr, typename State, typename Data>
 | |
|         struct call_impl<Fun, Expr, State, Data, 3>
 | |
|             : proto::transform_impl<Expr, State, Data>
 | |
|         {
 | |
|             typedef
 | |
|                 typename boost::phoenix::result_of::context<State, Data>::type
 | |
|                 context_type;
 | |
|             typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::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 <typename Fun, typename Expr, typename State, typename Data>
 | |
|         struct call_impl<Fun, Expr, State, Data, 4>
 | |
|             : proto::transform_impl<Expr, State, Data>
 | |
|         {
 | |
|             typedef
 | |
|                 typename boost::phoenix::result_of::context<State, Data>::type
 | |
|                 context_type;
 | |
|             typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::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 <typename Fun, typename Expr, typename State, typename Data>
 | |
|         struct call_impl<Fun, Expr, State, Data, 5>
 | |
|             : proto::transform_impl<Expr, State, Data>
 | |
|         {
 | |
|             typedef
 | |
|                 typename boost::phoenix::result_of::context<State, Data>::type
 | |
|                 context_type;
 | |
|             typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::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 <typename Fun, typename Expr, typename State, typename Data>
 | |
|         struct call_impl<Fun, Expr, State, Data, 6>
 | |
|             : proto::transform_impl<Expr, State, Data>
 | |
|         {
 | |
|             typedef
 | |
|                 typename boost::phoenix::result_of::context<State, Data>::type
 | |
|                 context_type;
 | |
|             typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::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 <typename Fun, typename Expr, typename State, typename Data>
 | |
|         struct call_impl<Fun, Expr, State, Data, 7>
 | |
|             : proto::transform_impl<Expr, State, Data>
 | |
|         {
 | |
|             typedef
 | |
|                 typename boost::phoenix::result_of::context<State, Data>::type
 | |
|                 context_type;
 | |
|             typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::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 <typename Fun, typename Expr, typename State, typename Data>
 | |
|         struct call_impl<Fun, Expr, State, Data, 8>
 | |
|             : proto::transform_impl<Expr, State, Data>
 | |
|         {
 | |
|             typedef
 | |
|                 typename boost::phoenix::result_of::context<State, Data>::type
 | |
|                 context_type;
 | |
|             typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::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 <typename Fun, typename Expr, typename State, typename Data>
 | |
|         struct call_impl<Fun, Expr, State, Data, 9>
 | |
|             : proto::transform_impl<Expr, State, Data>
 | |
|         {
 | |
|             typedef
 | |
|                 typename boost::phoenix::result_of::context<State, Data>::type
 | |
|                 context_type;
 | |
|             typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::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 <typename Fun, typename Expr, typename State, typename Data>
 | |
|         struct call_impl<Fun, Expr, State, Data, 10>
 | |
|             : proto::transform_impl<Expr, State, Data>
 | |
|         {
 | |
|             typedef
 | |
|                 typename boost::phoenix::result_of::context<State, Data>::type
 | |
|                 context_type;
 | |
|             typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::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)
 | |
|                     );
 | |
|             }
 | |
|         };
 | |
|     
 | |
|     
 | |
|     
 | |
|     
 | |
|     
 | |
|     
 | |
|     
 | |
|         
 | |
|         template <typename Fun, typename Expr, typename State, typename Data>
 | |
|         struct call_impl<Fun, Expr, State, Data, 11>
 | |
|             : proto::transform_impl<Expr, State, Data>
 | |
|         {
 | |
|             typedef
 | |
|                 typename boost::phoenix::result_of::context<State, Data>::type
 | |
|                 context_type;
 | |
|             typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10;
 | |
|             typedef
 | |
|                 typename boost::result_of<
 | |
|                     Fun(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10, 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) , proto::child_c< 10>(e)
 | |
|                       , boost::phoenix::context(s, d)
 | |
|                     );
 | |
|             }
 | |
|         };
 | |
|     
 | |
|     
 | |
|     
 | |
|     
 | |
|     
 | |
|     
 | |
|     
 | |
|         
 | |
|         template <typename Fun, typename Expr, typename State, typename Data>
 | |
|         struct call_impl<Fun, Expr, State, Data, 12>
 | |
|             : proto::transform_impl<Expr, State, Data>
 | |
|         {
 | |
|             typedef
 | |
|                 typename boost::phoenix::result_of::context<State, Data>::type
 | |
|                 context_type;
 | |
|             typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10; typedef typename proto::result_of::child_c<Expr, 11>::type A11;
 | |
|             typedef
 | |
|                 typename boost::result_of<
 | |
|                     Fun(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11, 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) , proto::child_c< 10>(e) , proto::child_c< 11>(e)
 | |
|                       , boost::phoenix::context(s, d)
 | |
|                     );
 | |
|             }
 | |
|         };
 | |
|     
 | |
|     
 | |
|     
 | |
|     
 | |
|     
 | |
|     
 | |
|     
 | |
|         
 | |
|         template <typename Fun, typename Expr, typename State, typename Data>
 | |
|         struct call_impl<Fun, Expr, State, Data, 13>
 | |
|             : proto::transform_impl<Expr, State, Data>
 | |
|         {
 | |
|             typedef
 | |
|                 typename boost::phoenix::result_of::context<State, Data>::type
 | |
|                 context_type;
 | |
|             typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10; typedef typename proto::result_of::child_c<Expr, 11>::type A11; typedef typename proto::result_of::child_c<Expr, 12>::type A12;
 | |
|             typedef
 | |
|                 typename boost::result_of<
 | |
|                     Fun(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12, 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) , proto::child_c< 10>(e) , proto::child_c< 11>(e) , proto::child_c< 12>(e)
 | |
|                       , boost::phoenix::context(s, d)
 | |
|                     );
 | |
|             }
 | |
|         };
 | |
|     
 | |
|     
 | |
|     
 | |
|     
 | |
|     
 | |
|     
 | |
|     
 | |
|         
 | |
|         template <typename Fun, typename Expr, typename State, typename Data>
 | |
|         struct call_impl<Fun, Expr, State, Data, 14>
 | |
|             : proto::transform_impl<Expr, State, Data>
 | |
|         {
 | |
|             typedef
 | |
|                 typename boost::phoenix::result_of::context<State, Data>::type
 | |
|                 context_type;
 | |
|             typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10; typedef typename proto::result_of::child_c<Expr, 11>::type A11; typedef typename proto::result_of::child_c<Expr, 12>::type A12; typedef typename proto::result_of::child_c<Expr, 13>::type A13;
 | |
|             typedef
 | |
|                 typename boost::result_of<
 | |
|                     Fun(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13, 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) , proto::child_c< 10>(e) , proto::child_c< 11>(e) , proto::child_c< 12>(e) , proto::child_c< 13>(e)
 | |
|                       , boost::phoenix::context(s, d)
 | |
|                     );
 | |
|             }
 | |
|         };
 | |
|     
 | |
|     
 | |
|     
 | |
|     
 | |
|     
 | |
|     
 | |
|     
 | |
|         
 | |
|         template <typename Fun, typename Expr, typename State, typename Data>
 | |
|         struct call_impl<Fun, Expr, State, Data, 15>
 | |
|             : proto::transform_impl<Expr, State, Data>
 | |
|         {
 | |
|             typedef
 | |
|                 typename boost::phoenix::result_of::context<State, Data>::type
 | |
|                 context_type;
 | |
|             typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10; typedef typename proto::result_of::child_c<Expr, 11>::type A11; typedef typename proto::result_of::child_c<Expr, 12>::type A12; typedef typename proto::result_of::child_c<Expr, 13>::type A13; typedef typename proto::result_of::child_c<Expr, 14>::type A14;
 | |
|             typedef
 | |
|                 typename boost::result_of<
 | |
|                     Fun(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14, 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) , proto::child_c< 10>(e) , proto::child_c< 11>(e) , proto::child_c< 12>(e) , proto::child_c< 13>(e) , proto::child_c< 14>(e)
 | |
|                       , boost::phoenix::context(s, d)
 | |
|                     );
 | |
|             }
 | |
|         };
 | |
|     
 | |
|     
 | |
|     
 | |
|     
 | |
|     
 | |
|     
 | |
|     
 | |
|         
 | |
|         template <typename Fun, typename Expr, typename State, typename Data>
 | |
|         struct call_impl<Fun, Expr, State, Data, 16>
 | |
|             : proto::transform_impl<Expr, State, Data>
 | |
|         {
 | |
|             typedef
 | |
|                 typename boost::phoenix::result_of::context<State, Data>::type
 | |
|                 context_type;
 | |
|             typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10; typedef typename proto::result_of::child_c<Expr, 11>::type A11; typedef typename proto::result_of::child_c<Expr, 12>::type A12; typedef typename proto::result_of::child_c<Expr, 13>::type A13; typedef typename proto::result_of::child_c<Expr, 14>::type A14; typedef typename proto::result_of::child_c<Expr, 15>::type A15;
 | |
|             typedef
 | |
|                 typename boost::result_of<
 | |
|                     Fun(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15, 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) , proto::child_c< 10>(e) , proto::child_c< 11>(e) , proto::child_c< 12>(e) , proto::child_c< 13>(e) , proto::child_c< 14>(e) , proto::child_c< 15>(e)
 | |
|                       , boost::phoenix::context(s, d)
 | |
|                     );
 | |
|             }
 | |
|         };
 | |
|     
 | |
|     
 | |
|     
 | |
|     
 | |
|     
 | |
|     
 | |
|     
 | |
|         
 | |
|         template <typename Fun, typename Expr, typename State, typename Data>
 | |
|         struct call_impl<Fun, Expr, State, Data, 17>
 | |
|             : proto::transform_impl<Expr, State, Data>
 | |
|         {
 | |
|             typedef
 | |
|                 typename boost::phoenix::result_of::context<State, Data>::type
 | |
|                 context_type;
 | |
|             typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10; typedef typename proto::result_of::child_c<Expr, 11>::type A11; typedef typename proto::result_of::child_c<Expr, 12>::type A12; typedef typename proto::result_of::child_c<Expr, 13>::type A13; typedef typename proto::result_of::child_c<Expr, 14>::type A14; typedef typename proto::result_of::child_c<Expr, 15>::type A15; typedef typename proto::result_of::child_c<Expr, 16>::type A16;
 | |
|             typedef
 | |
|                 typename boost::result_of<
 | |
|                     Fun(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16, 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) , proto::child_c< 10>(e) , proto::child_c< 11>(e) , proto::child_c< 12>(e) , proto::child_c< 13>(e) , proto::child_c< 14>(e) , proto::child_c< 15>(e) , proto::child_c< 16>(e)
 | |
|                       , boost::phoenix::context(s, d)
 | |
|                     );
 | |
|             }
 | |
|         };
 | |
|     
 | |
|     
 | |
|     
 | |
|     
 | |
|     
 | |
|     
 | |
|     
 | |
|         
 | |
|         template <typename Fun, typename Expr, typename State, typename Data>
 | |
|         struct call_impl<Fun, Expr, State, Data, 18>
 | |
|             : proto::transform_impl<Expr, State, Data>
 | |
|         {
 | |
|             typedef
 | |
|                 typename boost::phoenix::result_of::context<State, Data>::type
 | |
|                 context_type;
 | |
|             typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10; typedef typename proto::result_of::child_c<Expr, 11>::type A11; typedef typename proto::result_of::child_c<Expr, 12>::type A12; typedef typename proto::result_of::child_c<Expr, 13>::type A13; typedef typename proto::result_of::child_c<Expr, 14>::type A14; typedef typename proto::result_of::child_c<Expr, 15>::type A15; typedef typename proto::result_of::child_c<Expr, 16>::type A16; typedef typename proto::result_of::child_c<Expr, 17>::type A17;
 | |
|             typedef
 | |
|                 typename boost::result_of<
 | |
|                     Fun(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17, 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) , proto::child_c< 10>(e) , proto::child_c< 11>(e) , proto::child_c< 12>(e) , proto::child_c< 13>(e) , proto::child_c< 14>(e) , proto::child_c< 15>(e) , proto::child_c< 16>(e) , proto::child_c< 17>(e)
 | |
|                       , boost::phoenix::context(s, d)
 | |
|                     );
 | |
|             }
 | |
|         };
 | |
|     
 | |
|     
 | |
|     
 | |
|     
 | |
|     
 | |
|     
 | |
|     
 | |
|         
 | |
|         template <typename Fun, typename Expr, typename State, typename Data>
 | |
|         struct call_impl<Fun, Expr, State, Data, 19>
 | |
|             : proto::transform_impl<Expr, State, Data>
 | |
|         {
 | |
|             typedef
 | |
|                 typename boost::phoenix::result_of::context<State, Data>::type
 | |
|                 context_type;
 | |
|             typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10; typedef typename proto::result_of::child_c<Expr, 11>::type A11; typedef typename proto::result_of::child_c<Expr, 12>::type A12; typedef typename proto::result_of::child_c<Expr, 13>::type A13; typedef typename proto::result_of::child_c<Expr, 14>::type A14; typedef typename proto::result_of::child_c<Expr, 15>::type A15; typedef typename proto::result_of::child_c<Expr, 16>::type A16; typedef typename proto::result_of::child_c<Expr, 17>::type A17; typedef typename proto::result_of::child_c<Expr, 18>::type A18;
 | |
|             typedef
 | |
|                 typename boost::result_of<
 | |
|                     Fun(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18, 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) , proto::child_c< 10>(e) , proto::child_c< 11>(e) , proto::child_c< 12>(e) , proto::child_c< 13>(e) , proto::child_c< 14>(e) , proto::child_c< 15>(e) , proto::child_c< 16>(e) , proto::child_c< 17>(e) , proto::child_c< 18>(e)
 | |
|                       , boost::phoenix::context(s, d)
 | |
|                     );
 | |
|             }
 | |
|         };
 | |
|     
 | |
|     
 | |
|     
 | |
|     
 | |
|     
 | |
|     
 | |
|     
 | |
|         
 | |
|         template <typename Fun, typename Expr, typename State, typename Data>
 | |
|         struct call_impl<Fun, Expr, State, Data, 20>
 | |
|             : proto::transform_impl<Expr, State, Data>
 | |
|         {
 | |
|             typedef
 | |
|                 typename boost::phoenix::result_of::context<State, Data>::type
 | |
|                 context_type;
 | |
|             typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10; typedef typename proto::result_of::child_c<Expr, 11>::type A11; typedef typename proto::result_of::child_c<Expr, 12>::type A12; typedef typename proto::result_of::child_c<Expr, 13>::type A13; typedef typename proto::result_of::child_c<Expr, 14>::type A14; typedef typename proto::result_of::child_c<Expr, 15>::type A15; typedef typename proto::result_of::child_c<Expr, 16>::type A16; typedef typename proto::result_of::child_c<Expr, 17>::type A17; typedef typename proto::result_of::child_c<Expr, 18>::type A18; typedef typename proto::result_of::child_c<Expr, 19>::type A19;
 | |
|             typedef
 | |
|                 typename boost::result_of<
 | |
|                     Fun(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19, 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) , proto::child_c< 10>(e) , proto::child_c< 11>(e) , proto::child_c< 12>(e) , proto::child_c< 13>(e) , proto::child_c< 14>(e) , proto::child_c< 15>(e) , proto::child_c< 16>(e) , proto::child_c< 17>(e) , proto::child_c< 18>(e) , proto::child_c< 19>(e)
 | |
|                       , boost::phoenix::context(s, d)
 | |
|                     );
 | |
|             }
 | |
|         };
 | 
