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)
 | |
| )
 | 
