/*============================================================================== 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 boost { namespace phoenix { namespace expression { template struct mem_ptr : expr {}; typedef proto::functional::make_expr make_mem_ptr; } namespace rule { struct mem_ptr : expression:: mem_ptr {}; } template struct meta_grammar::case_ : enable_rule {}; template inline typename boost::enable_if< is_member_function_pointer , detail::mem_fun_ptr_gen, MemPtr> const >::type operator->*(actor const& obj, MemPtr ptr) { return detail::mem_fun_ptr_gen, MemPtr>(obj, ptr); } using proto::exprns_::operator->*; namespace result_of { template < typename Context , typename A0 = void , typename A1 = void , typename A2 = void , typename A3 = void , typename A4 = void , typename A5 = void , typename A6 = void , typename A7 = void , typename A8 = void , typename A9 = void , typename Dummy = void > struct mem_fun_ptr_eval; template struct mem_fun_ptr_eval { typedef typename evaluator::impl< A0 , Context , int >::result_type child0; typedef typename evaluator::impl< A1 , Context , int >::result_type child1; typedef typename boost::result_of< child1( child1 ) >::type type; }; template struct mem_fun_ptr_eval { typedef typename evaluator::impl< A0 , Context , int >::result_type child0; typedef typename evaluator::impl< A1 , Context , int >::result_type child1; typedef typename evaluator::impl< A2 , Context , int >::result_type child2; typedef typename boost::result_of< child1( child1 , child2 ) >::type type; }; template struct mem_fun_ptr_eval { typedef typename evaluator::impl< A0 , Context , int >::result_type child0; typedef typename evaluator::impl< A1 , Context , int >::result_type child1; typedef typename evaluator::impl< A2 , Context , int >::result_type child2; typedef typename evaluator::impl< A3 , Context , int >::result_type child3; typedef typename boost::result_of< child1( child1 , child2 , child3 ) >::type type; }; template struct mem_fun_ptr_eval { typedef typename evaluator::impl< A0 , Context , int >::result_type child0; typedef typename evaluator::impl< A1 , Context , int >::result_type child1; typedef typename evaluator::impl< A2 , Context , int >::result_type child2; typedef typename evaluator::impl< A3 , Context , int >::result_type child3; typedef typename evaluator::impl< A4 , Context , int >::result_type child4; typedef typename boost::result_of< child1( child1 , child2 , child3 , child4 ) >::type type; }; template struct mem_fun_ptr_eval { typedef typename evaluator::impl< A0 , Context , int >::result_type child0; typedef typename evaluator::impl< A1 , Context , int >::result_type child1; typedef typename evaluator::impl< A2 , Context , int >::result_type child2; typedef typename evaluator::impl< A3 , Context , int >::result_type child3; typedef typename evaluator::impl< A4 , Context , int >::result_type child4; typedef typename evaluator::impl< A5 , Context , int >::result_type child5; typedef typename boost::result_of< child1( child1 , child2 , child3 , child4 , child5 ) >::type type; }; template struct mem_fun_ptr_eval { typedef typename evaluator::impl< A0 , Context , int >::result_type child0; typedef typename evaluator::impl< A1 , Context , int >::result_type child1; typedef typename evaluator::impl< A2 , Context , int >::result_type child2; typedef typename evaluator::impl< A3 , Context , int >::result_type child3; typedef typename evaluator::impl< A4 , Context , int >::result_type child4; typedef typename evaluator::impl< A5 , Context , int >::result_type child5; typedef typename evaluator::impl< A6 , Context , int >::result_type child6; typedef typename boost::result_of< child1( child1 , child2 , child3 , child4 , child5 , child6 ) >::type type; }; template struct mem_fun_ptr_eval { typedef typename evaluator::impl< A0 , Context , int >::result_type child0; typedef typename evaluator::impl< A1 , Context , int >::result_type child1; typedef typename evaluator::impl< A2 , Context , int >::result_type child2; typedef typename evaluator::impl< A3 , Context , int >::result_type child3; typedef typename evaluator::impl< A4 , Context , int >::result_type child4; typedef typename evaluator::impl< A5 , Context , int >::result_type child5; typedef typename evaluator::impl< A6 , Context , int >::result_type child6; typedef typename evaluator::impl< A7 , Context , int >::result_type child7; typedef typename boost::result_of< child1( child1 , child2 , child3 , child4 , child5 , child6 , child7 ) >::type type; }; template struct mem_fun_ptr_eval { typedef typename evaluator::impl< A0 , Context , int >::result_type child0; typedef typename evaluator::impl< A1 , Context , int >::result_type child1; typedef typename evaluator::impl< A2 , Context , int >::result_type child2; typedef typename evaluator::impl< A3 , Context , int >::result_type child3; typedef typename evaluator::impl< A4 , Context , int >::result_type child4; typedef typename evaluator::impl< A5 , Context , int >::result_type child5; typedef typename evaluator::impl< A6 , Context , int >::result_type child6; typedef typename evaluator::impl< A7 , Context , int >::result_type child7; typedef typename evaluator::impl< A8 , Context , int >::result_type child8; typedef typename boost::result_of< child1( child1 , child2 , child3 , child4 , child5 , child6 , child7 , child8 ) >::type type; }; template struct mem_fun_ptr_eval { typedef typename evaluator::impl< A0 , Context , int >::result_type child0; typedef typename evaluator::impl< A1 , Context , int >::result_type child1; typedef typename evaluator::impl< A2 , Context , int >::result_type child2; typedef typename evaluator::impl< A3 , Context , int >::result_type child3; typedef typename evaluator::impl< A4 , Context , int >::result_type child4; typedef typename evaluator::impl< A5 , Context , int >::result_type child5; typedef typename evaluator::impl< A6 , Context , int >::result_type child6; typedef typename evaluator::impl< A7 , Context , int >::result_type child7; typedef typename evaluator::impl< A8 , Context , int >::result_type child8; typedef typename evaluator::impl< A9 , Context , int >::result_type child9; typedef typename boost::result_of< child1( child1 , child2 , child3 , child4 , child5 , child6 , child7 , child8 , child9 ) >::type type; }; } struct mem_fun_ptr_eval { template struct result; template struct result : result {}; template struct result : result_of::mem_fun_ptr_eval {}; template typename result_of::mem_fun_ptr_eval::type operator()( A0 const& a0 , A1 const& a1 , Context & ctx ) const { return ( get_pointer(boost::phoenix::eval(a0, ctx)) ->*boost::phoenix::eval(a1, ctx) )( ); } template struct result : result {}; template struct result : result_of::mem_fun_ptr_eval {}; template typename result_of::mem_fun_ptr_eval::type operator()( A0 const& a0 , A1 const& a1 , A2 const& a2 , Context & ctx ) const { return ( get_pointer(boost::phoenix::eval(a0, ctx)) ->*boost::phoenix::eval(a1, ctx) )( boost::phoenix::eval(a2, ctx) ); } template struct result : result {}; template struct result : result_of::mem_fun_ptr_eval {}; template typename result_of::mem_fun_ptr_eval::type operator()( A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , Context & ctx ) const { return ( get_pointer(boost::phoenix::eval(a0, ctx)) ->*boost::phoenix::eval(a1, ctx) )( boost::phoenix::eval(a2, ctx) , boost::phoenix::eval(a3, ctx) ); } template struct result : result {}; template struct result : result_of::mem_fun_ptr_eval {}; template typename result_of::mem_fun_ptr_eval::type operator()( A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , Context & ctx ) const { return ( get_pointer(boost::phoenix::eval(a0, ctx)) ->*boost::phoenix::eval(a1, ctx) )( boost::phoenix::eval(a2, ctx) , boost::phoenix::eval(a3, ctx) , boost::phoenix::eval(a4, ctx) ); } template struct result : result {}; template struct result : result_of::mem_fun_ptr_eval {}; template typename result_of::mem_fun_ptr_eval::type operator()( A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , Context & ctx ) const { return ( get_pointer(boost::phoenix::eval(a0, ctx)) ->*boost::phoenix::eval(a1, ctx) )( boost::phoenix::eval(a2, ctx) , boost::phoenix::eval(a3, ctx) , boost::phoenix::eval(a4, ctx) , boost::phoenix::eval(a5, ctx) ); } template struct result : result {}; template struct result : result_of::mem_fun_ptr_eval {}; template typename result_of::mem_fun_ptr_eval::type operator()( A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , Context & ctx ) const { return ( get_pointer(boost::phoenix::eval(a0, ctx)) ->*boost::phoenix::eval(a1, ctx) )( boost::phoenix::eval(a2, ctx) , boost::phoenix::eval(a3, ctx) , boost::phoenix::eval(a4, ctx) , boost::phoenix::eval(a5, ctx) , boost::phoenix::eval(a6, ctx) ); } template struct result : result {}; template struct result : result_of::mem_fun_ptr_eval {}; template typename result_of::mem_fun_ptr_eval::type operator()( A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , Context & ctx ) const { return ( get_pointer(boost::phoenix::eval(a0, ctx)) ->*boost::phoenix::eval(a1, ctx) )( boost::phoenix::eval(a2, ctx) , boost::phoenix::eval(a3, ctx) , boost::phoenix::eval(a4, ctx) , boost::phoenix::eval(a5, ctx) , boost::phoenix::eval(a6, ctx) , boost::phoenix::eval(a7, ctx) ); } template struct result : result {}; template struct result : result_of::mem_fun_ptr_eval {}; template typename result_of::mem_fun_ptr_eval::type operator()( A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , Context & ctx ) const { return ( get_pointer(boost::phoenix::eval(a0, ctx)) ->*boost::phoenix::eval(a1, ctx) )( boost::phoenix::eval(a2, ctx) , boost::phoenix::eval(a3, ctx) , boost::phoenix::eval(a4, ctx) , boost::phoenix::eval(a5, ctx) , boost::phoenix::eval(a6, ctx) , boost::phoenix::eval(a7, ctx) , boost::phoenix::eval(a8, ctx) ); } template struct result : result {}; template struct result : result_of::mem_fun_ptr_eval {}; template typename result_of::mem_fun_ptr_eval::type operator()( A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , Context & ctx ) const { return ( get_pointer(boost::phoenix::eval(a0, ctx)) ->*boost::phoenix::eval(a1, ctx) )( boost::phoenix::eval(a2, ctx) , boost::phoenix::eval(a3, ctx) , boost::phoenix::eval(a4, ctx) , boost::phoenix::eval(a5, ctx) , boost::phoenix::eval(a6, ctx) , boost::phoenix::eval(a7, ctx) , boost::phoenix::eval(a8, ctx) , boost::phoenix::eval(a9, ctx) ); } }; template struct default_actions::when : call {}; }}