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