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