/////////////////////////////////////////////////////////////////////////////// /// \file generate_by_value.hpp /// Contains definition of by_value_generator_\<\> class template. // // 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 by_value_generator_< proto::expr, 1> > { typedef list1 src_args; typedef list1< typename uncvref::type > dst_args; typedef proto::expr src_type; typedef proto::expr type; BOOST_FORCEINLINE static type const call(src_type const &e) { type that = { e.child0 }; return that; } }; template struct by_value_generator_< proto::basic_expr, 1> > { typedef list1 src_args; typedef list1< typename uncvref::type > dst_args; typedef proto::basic_expr src_type; typedef proto::basic_expr type; BOOST_FORCEINLINE static type const call(src_type const &e) { type that = { e.child0 }; return that; } }; template struct by_value_generator_< proto::expr, 2> > { typedef list2 src_args; typedef list2< typename uncvref::type , typename uncvref::type > dst_args; typedef proto::expr src_type; typedef proto::expr type; BOOST_FORCEINLINE static type const call(src_type const &e) { type that = { e.child0 , e.child1 }; return that; } }; template struct by_value_generator_< proto::basic_expr, 2> > { typedef list2 src_args; typedef list2< typename uncvref::type , typename uncvref::type > dst_args; typedef proto::basic_expr src_type; typedef proto::basic_expr type; BOOST_FORCEINLINE static type const call(src_type const &e) { type that = { e.child0 , e.child1 }; return that; } }; template struct by_value_generator_< proto::expr, 3> > { typedef list3 src_args; typedef list3< typename uncvref::type , typename uncvref::type , typename uncvref::type > dst_args; typedef proto::expr src_type; typedef proto::expr type; BOOST_FORCEINLINE static type const call(src_type const &e) { type that = { e.child0 , e.child1 , e.child2 }; return that; } }; template struct by_value_generator_< proto::basic_expr, 3> > { typedef list3 src_args; typedef list3< typename uncvref::type , typename uncvref::type , typename uncvref::type > dst_args; typedef proto::basic_expr src_type; typedef proto::basic_expr type; BOOST_FORCEINLINE static type const call(src_type const &e) { type that = { e.child0 , e.child1 , e.child2 }; return that; } }; template struct by_value_generator_< proto::expr, 4> > { typedef list4 src_args; typedef list4< typename uncvref::type , typename uncvref::type , typename uncvref::type , typename uncvref::type > dst_args; typedef proto::expr src_type; typedef proto::expr type; BOOST_FORCEINLINE static type const call(src_type const &e) { type that = { e.child0 , e.child1 , e.child2 , e.child3 }; return that; } }; template struct by_value_generator_< proto::basic_expr, 4> > { typedef list4 src_args; typedef list4< typename uncvref::type , typename uncvref::type , typename uncvref::type , typename uncvref::type > dst_args; typedef proto::basic_expr src_type; typedef proto::basic_expr type; BOOST_FORCEINLINE static type const call(src_type const &e) { type that = { e.child0 , e.child1 , e.child2 , e.child3 }; return that; } }; template struct by_value_generator_< proto::expr, 5> > { typedef list5 src_args; typedef list5< typename uncvref::type , typename uncvref::type , typename uncvref::type , typename uncvref::type , typename uncvref::type > dst_args; typedef proto::expr src_type; typedef proto::expr type; BOOST_FORCEINLINE static type const call(src_type const &e) { type that = { e.child0 , e.child1 , e.child2 , e.child3 , e.child4 }; return that; } }; template struct by_value_generator_< proto::basic_expr, 5> > { typedef list5 src_args; typedef list5< typename uncvref::type , typename uncvref::type , typename uncvref::type , typename uncvref::type , typename uncvref::type > dst_args; typedef proto::basic_expr src_type; typedef proto::basic_expr type; BOOST_FORCEINLINE static type const call(src_type const &e) { type that = { e.child0 , e.child1 , e.child2 , e.child3 , e.child4 }; return that; } }; template struct by_value_generator_< proto::expr, 6> > { typedef list6 src_args; typedef list6< typename uncvref::type , typename uncvref::type , typename uncvref::type , typename uncvref::type , typename uncvref::type , typename uncvref::type > dst_args; typedef proto::expr src_type; typedef proto::expr type; BOOST_FORCEINLINE static type const call(src_type const &e) { type that = { e.child0 , e.child1 , e.child2 , e.child3 , e.child4 , e.child5 }; return that; } }; template struct by_value_generator_< proto::basic_expr, 6> > { typedef list6 src_args; typedef list6< typename uncvref::type , typename uncvref::type , typename uncvref::type , typename uncvref::type , typename uncvref::type , typename uncvref::type > dst_args; typedef proto::basic_expr src_type; typedef proto::basic_expr type; BOOST_FORCEINLINE static type const call(src_type const &e) { type that = { e.child0 , e.child1 , e.child2 , e.child3 , e.child4 , e.child5 }; return that; } }; template struct by_value_generator_< proto::expr, 7> > { typedef list7 src_args; typedef list7< typename uncvref::type , typename uncvref::type , typename uncvref::type , typename uncvref::type , typename uncvref::type , typename uncvref::type , typename uncvref::type > dst_args; typedef proto::expr src_type; typedef proto::expr type; BOOST_FORCEINLINE static type const call(src_type const &e) { type that = { e.child0 , e.child1 , e.child2 , e.child3 , e.child4 , e.child5 , e.child6 }; return that; } }; template struct by_value_generator_< proto::basic_expr, 7> > { typedef list7 src_args; typedef list7< typename uncvref::type , typename uncvref::type , typename uncvref::type , typename uncvref::type , typename uncvref::type , typename uncvref::type , typename uncvref::type > dst_args; typedef proto::basic_expr src_type; typedef proto::basic_expr type; BOOST_FORCEINLINE static type const call(src_type const &e) { type that = { e.child0 , e.child1 , e.child2 , e.child3 , e.child4 , e.child5 , e.child6 }; return that; } }; template struct by_value_generator_< proto::expr, 8> > { typedef list8 src_args; typedef list8< typename uncvref::type , typename uncvref::type , typename uncvref::type , typename uncvref::type , typename uncvref::type , typename uncvref::type , typename uncvref::type , typename uncvref::type > dst_args; typedef proto::expr src_type; typedef proto::expr type; BOOST_FORCEINLINE static type const call(src_type const &e) { type that = { e.child0 , e.child1 , e.child2 , e.child3 , e.child4 , e.child5 , e.child6 , e.child7 }; return that; } }; template struct by_value_generator_< proto::basic_expr, 8> > { typedef list8 src_args; typedef list8< typename uncvref::type , typename uncvref::type , typename uncvref::type , typename uncvref::type , typename uncvref::type , typename uncvref::type , typename uncvref::type , typename uncvref::type > dst_args; typedef proto::basic_expr src_type; typedef proto::basic_expr type; BOOST_FORCEINLINE static type const call(src_type const &e) { type that = { e.child0 , e.child1 , e.child2 , e.child3 , e.child4 , e.child5 , e.child6 , e.child7 }; return that; } }; template struct by_value_generator_< proto::expr, 9> > { typedef list9 src_args; typedef list9< typename uncvref::type , typename uncvref::type , typename uncvref::type , typename uncvref::type , typename uncvref::type , typename uncvref::type , typename uncvref::type , typename uncvref::type , typename uncvref::type > dst_args; typedef proto::expr src_type; typedef proto::expr type; BOOST_FORCEINLINE static type const call(src_type const &e) { type that = { e.child0 , e.child1 , e.child2 , e.child3 , e.child4 , e.child5 , e.child6 , e.child7 , e.child8 }; return that; } }; template struct by_value_generator_< proto::basic_expr, 9> > { typedef list9 src_args; typedef list9< typename uncvref::type , typename uncvref::type , typename uncvref::type , typename uncvref::type , typename uncvref::type , typename uncvref::type , typename uncvref::type , typename uncvref::type , typename uncvref::type > dst_args; typedef proto::basic_expr src_type; typedef proto::basic_expr type; BOOST_FORCEINLINE static type const call(src_type const &e) { type that = { e.child0 , e.child1 , e.child2 , e.child3 , e.child4 , e.child5 , e.child6 , e.child7 , e.child8 }; return that; } }; template struct by_value_generator_< proto::expr, 10> > { typedef list10 src_args; typedef list10< typename uncvref::type , typename uncvref::type , typename uncvref::type , typename uncvref::type , typename uncvref::type , typename uncvref::type , typename uncvref::type , typename uncvref::type , typename uncvref::type , typename uncvref::type > dst_args; typedef proto::expr src_type; typedef proto::expr type; BOOST_FORCEINLINE static type const call(src_type const &e) { type that = { e.child0 , e.child1 , e.child2 , e.child3 , e.child4 , e.child5 , e.child6 , e.child7 , e.child8 , e.child9 }; return that; } }; template struct by_value_generator_< proto::basic_expr, 10> > { typedef list10 src_args; typedef list10< typename uncvref::type , typename uncvref::type , typename uncvref::type , typename uncvref::type , typename uncvref::type , typename uncvref::type , typename uncvref::type , typename uncvref::type , typename uncvref::type , typename uncvref::type > dst_args; typedef proto::basic_expr src_type; typedef proto::basic_expr type; BOOST_FORCEINLINE static type const call(src_type const &e) { type that = { e.child0 , e.child1 , e.child2 , e.child3 , e.child4 , e.child5 , e.child6 , e.child7 , e.child8 , e.child9 }; return that; } };