163 lines
5.8 KiB
C++
163 lines
5.8 KiB
C++
///////////////////////////////////////////////////////////////////////////////
|
|
/// \file args.hpp
|
|
/// Contains definition of \c term\<\>, \c list1\<\>, \c list2\<\>, ...
|
|
/// class templates.
|
|
//
|
|
// 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< typename Arg0 >
|
|
struct term
|
|
{
|
|
static const long arity = 0;
|
|
typedef Arg0 child0;
|
|
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;
|
|
|
|
|
|
typedef Arg0 back_;
|
|
};
|
|
|
|
|
|
|
|
|
|
template< typename Arg0 >
|
|
struct list1
|
|
{
|
|
static const long arity = 1;
|
|
typedef Arg0 child0;
|
|
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;
|
|
|
|
|
|
typedef Arg0 back_;
|
|
};
|
|
|
|
|
|
|
|
|
|
template< typename Arg0 , typename Arg1 >
|
|
struct list2
|
|
{
|
|
static const long arity = 2;
|
|
typedef Arg0 child0; typedef Arg1 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;
|
|
|
|
|
|
typedef Arg1 back_;
|
|
};
|
|
|
|
|
|
|
|
|
|
template< typename Arg0 , typename Arg1 , typename Arg2 >
|
|
struct list3
|
|
{
|
|
static const long arity = 3;
|
|
typedef Arg0 child0; typedef Arg1 child1; typedef Arg2 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;
|
|
|
|
|
|
typedef Arg2 back_;
|
|
};
|
|
|
|
|
|
|
|
|
|
template< typename Arg0 , typename Arg1 , typename Arg2 , typename Arg3 >
|
|
struct list4
|
|
{
|
|
static const long arity = 4;
|
|
typedef Arg0 child0; typedef Arg1 child1; typedef Arg2 child2; typedef Arg3 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;
|
|
|
|
|
|
typedef Arg3 back_;
|
|
};
|
|
|
|
|
|
|
|
|
|
template< typename Arg0 , typename Arg1 , typename Arg2 , typename Arg3 , typename Arg4 >
|
|
struct list5
|
|
{
|
|
static const long arity = 5;
|
|
typedef Arg0 child0; typedef Arg1 child1; typedef Arg2 child2; typedef Arg3 child3; typedef Arg4 child4;
|
|
typedef mpl::void_ child5; typedef mpl::void_ child6; typedef mpl::void_ child7; typedef mpl::void_ child8; typedef mpl::void_ child9;
|
|
|
|
|
|
typedef Arg4 back_;
|
|
};
|
|
|
|
|
|
|
|
|
|
template< typename Arg0 , typename Arg1 , typename Arg2 , typename Arg3 , typename Arg4 , typename Arg5 >
|
|
struct list6
|
|
{
|
|
static const long arity = 6;
|
|
typedef Arg0 child0; typedef Arg1 child1; typedef Arg2 child2; typedef Arg3 child3; typedef Arg4 child4; typedef Arg5 child5;
|
|
typedef mpl::void_ child6; typedef mpl::void_ child7; typedef mpl::void_ child8; typedef mpl::void_ child9;
|
|
|
|
|
|
typedef Arg5 back_;
|
|
};
|
|
|
|
|
|
|
|
|
|
template< typename Arg0 , typename Arg1 , typename Arg2 , typename Arg3 , typename Arg4 , typename Arg5 , typename Arg6 >
|
|
struct list7
|
|
{
|
|
static const long arity = 7;
|
|
typedef Arg0 child0; typedef Arg1 child1; typedef Arg2 child2; typedef Arg3 child3; typedef Arg4 child4; typedef Arg5 child5; typedef Arg6 child6;
|
|
typedef mpl::void_ child7; typedef mpl::void_ child8; typedef mpl::void_ child9;
|
|
|
|
|
|
typedef Arg6 back_;
|
|
};
|
|
|
|
|
|
|
|
|
|
template< typename Arg0 , typename Arg1 , typename Arg2 , typename Arg3 , typename Arg4 , typename Arg5 , typename Arg6 , typename Arg7 >
|
|
struct list8
|
|
{
|
|
static const long arity = 8;
|
|
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 mpl::void_ child8; typedef mpl::void_ child9;
|
|
|
|
|
|
typedef Arg7 back_;
|
|
};
|
|
|
|
|
|
|
|
|
|
template< typename Arg0 , typename Arg1 , typename Arg2 , typename Arg3 , typename Arg4 , typename Arg5 , typename Arg6 , typename Arg7 , typename Arg8 >
|
|
struct list9
|
|
{
|
|
static const long arity = 9;
|
|
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 mpl::void_ child9;
|
|
|
|
|
|
typedef Arg8 back_;
|
|
};
|
|
|
|
|
|
|
|
|
|
template< typename Arg0 , typename Arg1 , typename Arg2 , typename Arg3 , typename Arg4 , typename Arg5 , typename Arg6 , typename Arg7 , typename Arg8 , typename Arg9 >
|
|
struct list10
|
|
{
|
|
static const long arity = 10;
|
|
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;
|
|
|
|
|
|
|
|
typedef Arg9 back_;
|
|
};
|