467 lines
14 KiB
Plaintext
467 lines
14 KiB
Plaintext
/*==============================================================================
|
|
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
|
|
{
|
|
template <typename Dummy = void>
|
|
struct vector0
|
|
{
|
|
typedef mpl::int_<0> size_type;
|
|
static const int size_value = 0;
|
|
};
|
|
template <int> struct vector_chooser;
|
|
template <>
|
|
struct vector_chooser<0>
|
|
{
|
|
template <typename Dummy = void>
|
|
struct apply
|
|
{
|
|
typedef vector0<> type;
|
|
};
|
|
};
|
|
}}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
namespace boost { namespace phoenix
|
|
{
|
|
template <typename A0>
|
|
struct vector1
|
|
{
|
|
typedef A0 member_type0; A0 a0;
|
|
|
|
typedef mpl::int_<1> size_type;
|
|
static const int size_value = 1;
|
|
typedef
|
|
vector0<>
|
|
args_type;
|
|
args_type args() const
|
|
{
|
|
args_type r = {};
|
|
return r;
|
|
}
|
|
};
|
|
template <>
|
|
struct vector_chooser<1>
|
|
{
|
|
template <typename A0>
|
|
struct apply
|
|
{
|
|
typedef vector1<A0> type;
|
|
};
|
|
};
|
|
}}
|
|
BOOST_FUSION_ADAPT_TPL_STRUCT_NO_PARTIAL(
|
|
(A0)
|
|
, ( boost::phoenix::vector1 ) (A0)
|
|
, (A0, a0)
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
namespace boost { namespace phoenix
|
|
{
|
|
template <typename A0 , typename A1>
|
|
struct vector2
|
|
{
|
|
typedef A0 member_type0; A0 a0; typedef A1 member_type1; A1 a1;
|
|
|
|
typedef mpl::int_<2> size_type;
|
|
static const int size_value = 2;
|
|
typedef
|
|
vector1<A1>
|
|
args_type;
|
|
args_type args() const
|
|
{
|
|
args_type r = {a1};
|
|
return r;
|
|
}
|
|
};
|
|
template <>
|
|
struct vector_chooser<2>
|
|
{
|
|
template <typename A0 , typename A1>
|
|
struct apply
|
|
{
|
|
typedef vector2<A0 , A1> type;
|
|
};
|
|
};
|
|
}}
|
|
BOOST_FUSION_ADAPT_TPL_STRUCT_NO_PARTIAL(
|
|
(A0) (A1)
|
|
, ( boost::phoenix::vector2 ) (A0) (A1)
|
|
, (A0, a0) (A1, a1)
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
namespace boost { namespace phoenix
|
|
{
|
|
template <typename A0 , typename A1 , typename A2>
|
|
struct vector3
|
|
{
|
|
typedef A0 member_type0; A0 a0; typedef A1 member_type1; A1 a1; typedef A2 member_type2; A2 a2;
|
|
|
|
typedef mpl::int_<3> size_type;
|
|
static const int size_value = 3;
|
|
typedef
|
|
vector2<A1 , A2>
|
|
args_type;
|
|
args_type args() const
|
|
{
|
|
args_type r = {a1 , a2};
|
|
return r;
|
|
}
|
|
};
|
|
template <>
|
|
struct vector_chooser<3>
|
|
{
|
|
template <typename A0 , typename A1 , typename A2>
|
|
struct apply
|
|
{
|
|
typedef vector3<A0 , A1 , A2> type;
|
|
};
|
|
};
|
|
}}
|
|
BOOST_FUSION_ADAPT_TPL_STRUCT_NO_PARTIAL(
|
|
(A0) (A1) (A2)
|
|
, ( boost::phoenix::vector3 ) (A0) (A1) (A2)
|
|
, (A0, a0) (A1, a1) (A2, a2)
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
namespace boost { namespace phoenix
|
|
{
|
|
template <typename A0 , typename A1 , typename A2 , typename A3>
|
|
struct vector4
|
|
{
|
|
typedef A0 member_type0; A0 a0; typedef A1 member_type1; A1 a1; typedef A2 member_type2; A2 a2; typedef A3 member_type3; A3 a3;
|
|
|
|
typedef mpl::int_<4> size_type;
|
|
static const int size_value = 4;
|
|
typedef
|
|
vector3<A1 , A2 , A3>
|
|
args_type;
|
|
args_type args() const
|
|
{
|
|
args_type r = {a1 , a2 , a3};
|
|
return r;
|
|
}
|
|
};
|
|
template <>
|
|
struct vector_chooser<4>
|
|
{
|
|
template <typename A0 , typename A1 , typename A2 , typename A3>
|
|
struct apply
|
|
{
|
|
typedef vector4<A0 , A1 , A2 , A3> type;
|
|
};
|
|
};
|
|
}}
|
|
BOOST_FUSION_ADAPT_TPL_STRUCT_NO_PARTIAL(
|
|
(A0) (A1) (A2) (A3)
|
|
, ( boost::phoenix::vector4 ) (A0) (A1) (A2) (A3)
|
|
, (A0, a0) (A1, a1) (A2, a2) (A3, a3)
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
namespace boost { namespace phoenix
|
|
{
|
|
template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
|
|
struct vector5
|
|
{
|
|
typedef A0 member_type0; A0 a0; typedef A1 member_type1; A1 a1; typedef A2 member_type2; A2 a2; typedef A3 member_type3; A3 a3; typedef A4 member_type4; A4 a4;
|
|
|
|
typedef mpl::int_<5> size_type;
|
|
static const int size_value = 5;
|
|
typedef
|
|
vector4<A1 , A2 , A3 , A4>
|
|
args_type;
|
|
args_type args() const
|
|
{
|
|
args_type r = {a1 , a2 , a3 , a4};
|
|
return r;
|
|
}
|
|
};
|
|
template <>
|
|
struct vector_chooser<5>
|
|
{
|
|
template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
|
|
struct apply
|
|
{
|
|
typedef vector5<A0 , A1 , A2 , A3 , A4> type;
|
|
};
|
|
};
|
|
}}
|
|
BOOST_FUSION_ADAPT_TPL_STRUCT_NO_PARTIAL(
|
|
(A0) (A1) (A2) (A3) (A4)
|
|
, ( boost::phoenix::vector5 ) (A0) (A1) (A2) (A3) (A4)
|
|
, (A0, a0) (A1, a1) (A2, a2) (A3, a3) (A4, a4)
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
namespace boost { namespace phoenix
|
|
{
|
|
template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
|
|
struct vector6
|
|
{
|
|
typedef A0 member_type0; A0 a0; typedef A1 member_type1; A1 a1; typedef A2 member_type2; A2 a2; typedef A3 member_type3; A3 a3; typedef A4 member_type4; A4 a4; typedef A5 member_type5; A5 a5;
|
|
|
|
typedef mpl::int_<6> size_type;
|
|
static const int size_value = 6;
|
|
typedef
|
|
vector5<A1 , A2 , A3 , A4 , A5>
|
|
args_type;
|
|
args_type args() const
|
|
{
|
|
args_type r = {a1 , a2 , a3 , a4 , a5};
|
|
return r;
|
|
}
|
|
};
|
|
template <>
|
|
struct vector_chooser<6>
|
|
{
|
|
template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
|
|
struct apply
|
|
{
|
|
typedef vector6<A0 , A1 , A2 , A3 , A4 , A5> type;
|
|
};
|
|
};
|
|
}}
|
|
BOOST_FUSION_ADAPT_TPL_STRUCT_NO_PARTIAL(
|
|
(A0) (A1) (A2) (A3) (A4) (A5)
|
|
, ( boost::phoenix::vector6 ) (A0) (A1) (A2) (A3) (A4) (A5)
|
|
, (A0, a0) (A1, a1) (A2, a2) (A3, a3) (A4, a4) (A5, a5)
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
namespace boost { namespace phoenix
|
|
{
|
|
template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
|
|
struct vector7
|
|
{
|
|
typedef A0 member_type0; A0 a0; typedef A1 member_type1; A1 a1; typedef A2 member_type2; A2 a2; typedef A3 member_type3; A3 a3; typedef A4 member_type4; A4 a4; typedef A5 member_type5; A5 a5; typedef A6 member_type6; A6 a6;
|
|
|
|
typedef mpl::int_<7> size_type;
|
|
static const int size_value = 7;
|
|
typedef
|
|
vector6<A1 , A2 , A3 , A4 , A5 , A6>
|
|
args_type;
|
|
args_type args() const
|
|
{
|
|
args_type r = {a1 , a2 , a3 , a4 , a5 , a6};
|
|
return r;
|
|
}
|
|
};
|
|
template <>
|
|
struct vector_chooser<7>
|
|
{
|
|
template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
|
|
struct apply
|
|
{
|
|
typedef vector7<A0 , A1 , A2 , A3 , A4 , A5 , A6> type;
|
|
};
|
|
};
|
|
}}
|
|
BOOST_FUSION_ADAPT_TPL_STRUCT_NO_PARTIAL(
|
|
(A0) (A1) (A2) (A3) (A4) (A5) (A6)
|
|
, ( boost::phoenix::vector7 ) (A0) (A1) (A2) (A3) (A4) (A5) (A6)
|
|
, (A0, a0) (A1, a1) (A2, a2) (A3, a3) (A4, a4) (A5, a5) (A6, a6)
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
namespace boost { namespace phoenix
|
|
{
|
|
template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
|
|
struct vector8
|
|
{
|
|
typedef A0 member_type0; A0 a0; typedef A1 member_type1; A1 a1; typedef A2 member_type2; A2 a2; typedef A3 member_type3; A3 a3; typedef A4 member_type4; A4 a4; typedef A5 member_type5; A5 a5; typedef A6 member_type6; A6 a6; typedef A7 member_type7; A7 a7;
|
|
|
|
typedef mpl::int_<8> size_type;
|
|
static const int size_value = 8;
|
|
typedef
|
|
vector7<A1 , A2 , A3 , A4 , A5 , A6 , A7>
|
|
args_type;
|
|
args_type args() const
|
|
{
|
|
args_type r = {a1 , a2 , a3 , a4 , a5 , a6 , a7};
|
|
return r;
|
|
}
|
|
};
|
|
template <>
|
|
struct vector_chooser<8>
|
|
{
|
|
template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
|
|
struct apply
|
|
{
|
|
typedef vector8<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7> type;
|
|
};
|
|
};
|
|
}}
|
|
BOOST_FUSION_ADAPT_TPL_STRUCT_NO_PARTIAL(
|
|
(A0) (A1) (A2) (A3) (A4) (A5) (A6) (A7)
|
|
, ( boost::phoenix::vector8 ) (A0) (A1) (A2) (A3) (A4) (A5) (A6) (A7)
|
|
, (A0, a0) (A1, a1) (A2, a2) (A3, a3) (A4, a4) (A5, a5) (A6, a6) (A7, a7)
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
namespace boost { namespace phoenix
|
|
{
|
|
template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
|
|
struct vector9
|
|
{
|
|
typedef A0 member_type0; A0 a0; typedef A1 member_type1; A1 a1; typedef A2 member_type2; A2 a2; typedef A3 member_type3; A3 a3; typedef A4 member_type4; A4 a4; typedef A5 member_type5; A5 a5; typedef A6 member_type6; A6 a6; typedef A7 member_type7; A7 a7; typedef A8 member_type8; A8 a8;
|
|
|
|
typedef mpl::int_<9> size_type;
|
|
static const int size_value = 9;
|
|
typedef
|
|
vector8<A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8>
|
|
args_type;
|
|
args_type args() const
|
|
{
|
|
args_type r = {a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8};
|
|
return r;
|
|
}
|
|
};
|
|
template <>
|
|
struct vector_chooser<9>
|
|
{
|
|
template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
|
|
struct apply
|
|
{
|
|
typedef vector9<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8> type;
|
|
};
|
|
};
|
|
}}
|
|
BOOST_FUSION_ADAPT_TPL_STRUCT_NO_PARTIAL(
|
|
(A0) (A1) (A2) (A3) (A4) (A5) (A6) (A7) (A8)
|
|
, ( boost::phoenix::vector9 ) (A0) (A1) (A2) (A3) (A4) (A5) (A6) (A7) (A8)
|
|
, (A0, a0) (A1, a1) (A2, a2) (A3, a3) (A4, a4) (A5, a5) (A6, a6) (A7, a7) (A8, a8)
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
namespace boost { namespace phoenix
|
|
{
|
|
template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
|
|
struct vector10
|
|
{
|
|
typedef A0 member_type0; A0 a0; typedef A1 member_type1; A1 a1; typedef A2 member_type2; A2 a2; typedef A3 member_type3; A3 a3; typedef A4 member_type4; A4 a4; typedef A5 member_type5; A5 a5; typedef A6 member_type6; A6 a6; typedef A7 member_type7; A7 a7; typedef A8 member_type8; A8 a8; typedef A9 member_type9; A9 a9;
|
|
|
|
typedef mpl::int_<10> size_type;
|
|
static const int size_value = 10;
|
|
typedef
|
|
vector9<A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9>
|
|
args_type;
|
|
args_type args() const
|
|
{
|
|
args_type r = {a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9};
|
|
return r;
|
|
}
|
|
};
|
|
template <>
|
|
struct vector_chooser<10>
|
|
{
|
|
template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
|
|
struct apply
|
|
{
|
|
typedef vector10<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9> type;
|
|
};
|
|
};
|
|
}}
|
|
BOOST_FUSION_ADAPT_TPL_STRUCT_NO_PARTIAL(
|
|
(A0) (A1) (A2) (A3) (A4) (A5) (A6) (A7) (A8) (A9)
|
|
, ( boost::phoenix::vector10 ) (A0) (A1) (A2) (A3) (A4) (A5) (A6) (A7) (A8) (A9)
|
|
, (A0, a0) (A1, a1) (A2, a2) (A3, a3) (A4, a4) (A5, a5) (A6, a6) (A7, a7) (A8, a8) (A9, a9)
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
namespace boost { namespace phoenix
|
|
{
|
|
template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10>
|
|
struct vector11
|
|
{
|
|
typedef A0 member_type0; A0 a0; typedef A1 member_type1; A1 a1; typedef A2 member_type2; A2 a2; typedef A3 member_type3; A3 a3; typedef A4 member_type4; A4 a4; typedef A5 member_type5; A5 a5; typedef A6 member_type6; A6 a6; typedef A7 member_type7; A7 a7; typedef A8 member_type8; A8 a8; typedef A9 member_type9; A9 a9; typedef A10 member_type10; A10 a10;
|
|
|
|
typedef mpl::int_<11> size_type;
|
|
static const int size_value = 11;
|
|
typedef
|
|
vector10<A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10>
|
|
args_type;
|
|
args_type args() const
|
|
{
|
|
args_type r = {a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10};
|
|
return r;
|
|
}
|
|
};
|
|
template <>
|
|
struct vector_chooser<11>
|
|
{
|
|
template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10>
|
|
struct apply
|
|
{
|
|
typedef vector11<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10> type;
|
|
};
|
|
};
|
|
}}
|
|
BOOST_FUSION_ADAPT_TPL_STRUCT_NO_PARTIAL(
|
|
(A0) (A1) (A2) (A3) (A4) (A5) (A6) (A7) (A8) (A9) (A10)
|
|
, ( boost::phoenix::vector11 ) (A0) (A1) (A2) (A3) (A4) (A5) (A6) (A7) (A8) (A9) (A10)
|
|
, (A0, a0) (A1, a1) (A2, a2) (A3, a3) (A4, a4) (A5, a5) (A6, a6) (A7, a7) (A8, a8) (A9, a9) (A10, a10)
|
|
)
|