/////////////////////////////////////////////////////////////////////////////// /// \file when.hpp /// Definition of when transform. // // 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 struct when : transform > { typedef Grammar first; typedef R second(); typedef typename Grammar::proto_grammar proto_grammar; template struct impl : transform_impl { typedef typename mpl::if_c< is_callable::value , call , make >::type which; typedef typename which::template impl::result_type result_type; result_type operator ()( typename impl::expr_param e , typename impl::state_param s , typename impl::data_param d ) const { return typename which::template impl()(e, s, d); } }; }; template struct when : transform > { typedef Grammar first; typedef R second(A0); typedef typename Grammar::proto_grammar proto_grammar; template struct impl : transform_impl { typedef typename mpl::if_c< is_callable::value , call , make >::type which; typedef typename which::template impl::result_type result_type; result_type operator ()( typename impl::expr_param e , typename impl::state_param s , typename impl::data_param d ) const { return typename which::template impl()(e, s, d); } }; }; template struct when : transform > { typedef Grammar first; typedef R second(A0 , A1); typedef typename Grammar::proto_grammar proto_grammar; template struct impl : transform_impl { typedef typename mpl::if_c< is_callable::value , call , make >::type which; typedef typename which::template impl::result_type result_type; result_type operator ()( typename impl::expr_param e , typename impl::state_param s , typename impl::data_param d ) const { return typename which::template impl()(e, s, d); } }; }; template struct when : transform > { typedef Grammar first; typedef R second(A0 , A1 , A2); typedef typename Grammar::proto_grammar proto_grammar; template struct impl : transform_impl { typedef typename mpl::if_c< is_callable::value , call , make >::type which; typedef typename which::template impl::result_type result_type; result_type operator ()( typename impl::expr_param e , typename impl::state_param s , typename impl::data_param d ) const { return typename which::template impl()(e, s, d); } }; }; template struct when : transform > { typedef Grammar first; typedef R second(A0 , A1 , A2 , A3); typedef typename Grammar::proto_grammar proto_grammar; template struct impl : transform_impl { typedef typename mpl::if_c< is_callable::value , call , make >::type which; typedef typename which::template impl::result_type result_type; result_type operator ()( typename impl::expr_param e , typename impl::state_param s , typename impl::data_param d ) const { return typename which::template impl()(e, s, d); } }; }; template struct when : transform > { typedef Grammar first; typedef R second(A0 , A1 , A2 , A3 , A4); typedef typename Grammar::proto_grammar proto_grammar; template struct impl : transform_impl { typedef typename mpl::if_c< is_callable::value , call , make >::type which; typedef typename which::template impl::result_type result_type; result_type operator ()( typename impl::expr_param e , typename impl::state_param s , typename impl::data_param d ) const { return typename which::template impl()(e, s, d); } }; }; template struct when : transform > { typedef Grammar first; typedef R second(A0 , A1 , A2 , A3 , A4 , A5); typedef typename Grammar::proto_grammar proto_grammar; template struct impl : transform_impl { typedef typename mpl::if_c< is_callable::value , call , make >::type which; typedef typename which::template impl::result_type result_type; result_type operator ()( typename impl::expr_param e , typename impl::state_param s , typename impl::data_param d ) const { return typename which::template impl()(e, s, d); } }; }; template struct when : transform > { typedef Grammar first; typedef R second(A0 , A1 , A2 , A3 , A4 , A5 , A6); typedef typename Grammar::proto_grammar proto_grammar; template struct impl : transform_impl { typedef typename mpl::if_c< is_callable::value , call , make >::type which; typedef typename which::template impl::result_type result_type; result_type operator ()( typename impl::expr_param e , typename impl::state_param s , typename impl::data_param d ) const { return typename which::template impl()(e, s, d); } }; }; template struct when : transform > { typedef Grammar first; typedef R second(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7); typedef typename Grammar::proto_grammar proto_grammar; template struct impl : transform_impl { typedef typename mpl::if_c< is_callable::value , call , make >::type which; typedef typename which::template impl::result_type result_type; result_type operator ()( typename impl::expr_param e , typename impl::state_param s , typename impl::data_param d ) const { return typename which::template impl()(e, s, d); } }; }; template struct when : transform > { typedef Grammar first; typedef R second(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8); typedef typename Grammar::proto_grammar proto_grammar; template struct impl : transform_impl { typedef typename mpl::if_c< is_callable::value , call , make >::type which; typedef typename which::template impl::result_type result_type; result_type operator ()( typename impl::expr_param e , typename impl::state_param s , typename impl::data_param d ) const { return typename which::template impl()(e, s, d); } }; }; template struct when : transform > { typedef Grammar first; typedef R second(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9); typedef typename Grammar::proto_grammar proto_grammar; template struct impl : transform_impl { typedef typename mpl::if_c< is_callable::value , call , make >::type which; typedef typename which::template impl::result_type result_type; result_type operator ()( typename impl::expr_param e , typename impl::state_param s , typename impl::data_param d ) const { return typename which::template impl()(e, s, d); } }; };