Chris@16: /////////////////////////////////////////////////////////////////////////////// Chris@16: /// \file args.hpp Chris@16: /// Contains definition of \c term\<\>, \c list1\<\>, \c list2\<\>, ... Chris@16: /// class templates. Chris@16: // Chris@16: // Copyright 2008 Eric Niebler. Distributed under the Boost Chris@16: // Software License, Version 1.0. (See accompanying file Chris@16: // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) Chris@16: Chris@16: Chris@16: Chris@16: Chris@16: template< typename Arg0 > Chris@16: struct term Chris@16: { Chris@16: static const long arity = 0; Chris@16: typedef Arg0 child0; Chris@16: typedef mpl::void_ child1; typedef mpl::void_ child2; typedef mpl::void_ child3; typedef mpl::void_ child4; typedef mpl::void_ child5; typedef mpl::void_ child6; typedef mpl::void_ child7; typedef mpl::void_ child8; typedef mpl::void_ child9; Chris@16: Chris@16: Chris@16: typedef Arg0 back_; Chris@16: }; Chris@16: Chris@16: Chris@16: Chris@16: Chris@16: template< typename Arg0 > Chris@16: struct list1 Chris@16: { Chris@16: static const long arity = 1; Chris@16: typedef Arg0 child0; Chris@16: typedef mpl::void_ child1; typedef mpl::void_ child2; typedef mpl::void_ child3; typedef mpl::void_ child4; typedef mpl::void_ child5; typedef mpl::void_ child6; typedef mpl::void_ child7; typedef mpl::void_ child8; typedef mpl::void_ child9; Chris@16: Chris@16: Chris@16: typedef Arg0 back_; Chris@16: }; Chris@16: Chris@16: Chris@16: Chris@16: Chris@16: template< typename Arg0 , typename Arg1 > Chris@16: struct list2 Chris@16: { Chris@16: static const long arity = 2; Chris@16: typedef Arg0 child0; typedef Arg1 child1; Chris@16: typedef mpl::void_ child2; typedef mpl::void_ child3; typedef mpl::void_ child4; typedef mpl::void_ child5; typedef mpl::void_ child6; typedef mpl::void_ child7; typedef mpl::void_ child8; typedef mpl::void_ child9; Chris@16: Chris@16: Chris@16: typedef Arg1 back_; Chris@16: }; Chris@16: Chris@16: Chris@16: Chris@16: Chris@16: template< typename Arg0 , typename Arg1 , typename Arg2 > Chris@16: struct list3 Chris@16: { Chris@16: static const long arity = 3; Chris@16: typedef Arg0 child0; typedef Arg1 child1; typedef Arg2 child2; Chris@16: typedef mpl::void_ child3; typedef mpl::void_ child4; typedef mpl::void_ child5; typedef mpl::void_ child6; typedef mpl::void_ child7; typedef mpl::void_ child8; typedef mpl::void_ child9; Chris@16: Chris@16: Chris@16: typedef Arg2 back_; Chris@16: }; Chris@16: Chris@16: Chris@16: Chris@16: Chris@16: template< typename Arg0 , typename Arg1 , typename Arg2 , typename Arg3 > Chris@16: struct list4 Chris@16: { Chris@16: static const long arity = 4; Chris@16: typedef Arg0 child0; typedef Arg1 child1; typedef Arg2 child2; typedef Arg3 child3; Chris@16: typedef mpl::void_ child4; typedef mpl::void_ child5; typedef mpl::void_ child6; typedef mpl::void_ child7; typedef mpl::void_ child8; typedef mpl::void_ child9; Chris@16: Chris@16: Chris@16: typedef Arg3 back_; Chris@16: }; Chris@16: Chris@16: Chris@16: Chris@16: Chris@16: template< typename Arg0 , typename Arg1 , typename Arg2 , typename Arg3 , typename Arg4 > Chris@16: struct list5 Chris@16: { Chris@16: static const long arity = 5; Chris@16: typedef Arg0 child0; typedef Arg1 child1; typedef Arg2 child2; typedef Arg3 child3; typedef Arg4 child4; Chris@16: typedef mpl::void_ child5; typedef mpl::void_ child6; typedef mpl::void_ child7; typedef mpl::void_ child8; typedef mpl::void_ child9; Chris@16: Chris@16: Chris@16: typedef Arg4 back_; Chris@16: }; Chris@16: Chris@16: Chris@16: Chris@16: Chris@16: template< typename Arg0 , typename Arg1 , typename Arg2 , typename Arg3 , typename Arg4 , typename Arg5 > Chris@16: struct list6 Chris@16: { Chris@16: static const long arity = 6; Chris@16: typedef Arg0 child0; typedef Arg1 child1; typedef Arg2 child2; typedef Arg3 child3; typedef Arg4 child4; typedef Arg5 child5; Chris@16: typedef mpl::void_ child6; typedef mpl::void_ child7; typedef mpl::void_ child8; typedef mpl::void_ child9; Chris@16: Chris@16: Chris@16: typedef Arg5 back_; Chris@16: }; Chris@16: Chris@16: Chris@16: Chris@16: Chris@16: template< typename Arg0 , typename Arg1 , typename Arg2 , typename Arg3 , typename Arg4 , typename Arg5 , typename Arg6 > Chris@16: struct list7 Chris@16: { Chris@16: static const long arity = 7; Chris@16: typedef Arg0 child0; typedef Arg1 child1; typedef Arg2 child2; typedef Arg3 child3; typedef Arg4 child4; typedef Arg5 child5; typedef Arg6 child6; Chris@16: typedef mpl::void_ child7; typedef mpl::void_ child8; typedef mpl::void_ child9; Chris@16: Chris@16: Chris@16: typedef Arg6 back_; Chris@16: }; Chris@16: Chris@16: Chris@16: Chris@16: Chris@16: template< typename Arg0 , typename Arg1 , typename Arg2 , typename Arg3 , typename Arg4 , typename Arg5 , typename Arg6 , typename Arg7 > Chris@16: struct list8 Chris@16: { Chris@16: static const long arity = 8; Chris@16: typedef Arg0 child0; typedef Arg1 child1; typedef Arg2 child2; typedef Arg3 child3; typedef Arg4 child4; typedef Arg5 child5; typedef Arg6 child6; typedef Arg7 child7; Chris@16: typedef mpl::void_ child8; typedef mpl::void_ child9; Chris@16: Chris@16: Chris@16: typedef Arg7 back_; Chris@16: }; Chris@16: Chris@16: Chris@16: Chris@16: Chris@16: template< typename Arg0 , typename Arg1 , typename Arg2 , typename Arg3 , typename Arg4 , typename Arg5 , typename Arg6 , typename Arg7 , typename Arg8 > Chris@16: struct list9 Chris@16: { Chris@16: static const long arity = 9; Chris@16: typedef Arg0 child0; typedef Arg1 child1; typedef Arg2 child2; typedef Arg3 child3; typedef Arg4 child4; typedef Arg5 child5; typedef Arg6 child6; typedef Arg7 child7; typedef Arg8 child8; Chris@16: typedef mpl::void_ child9; Chris@16: Chris@16: Chris@16: typedef Arg8 back_; Chris@16: }; Chris@16: Chris@16: Chris@16: Chris@16: Chris@16: template< typename Arg0 , typename Arg1 , typename Arg2 , typename Arg3 , typename Arg4 , typename Arg5 , typename Arg6 , typename Arg7 , typename Arg8 , typename Arg9 > Chris@16: struct list10 Chris@16: { Chris@16: static const long arity = 10; Chris@16: typedef Arg0 child0; typedef Arg1 child1; typedef Arg2 child2; typedef Arg3 child3; typedef Arg4 child4; typedef Arg5 child5; typedef Arg6 child6; typedef Arg7 child7; typedef Arg8 child8; typedef Arg9 child9; Chris@16: Chris@16: Chris@16: Chris@16: typedef Arg9 back_; Chris@16: };