1 /////////////////////////////////////////////////////////////////////////////// 2 /// \file args.hpp 3 /// Contains definition of \c term\<\>, \c list1\<\>, \c list2\<\>, ... 4 /// class templates. 5 // 6 // Copyright 2008 Eric Niebler. Distributed under the Boost 7 // Software License, Version 1.0. (See accompanying file 8 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 9 10 11 12 13 template< typename Arg0 > 14 struct term 15 { 16 static const long arity = 0; 17 typedef Arg0 child0; 18 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; 19 20 21 typedef Arg0 back_; 22 }; 23 24 25 26 27 template< typename Arg0 > 28 struct list1 29 { 30 static const long arity = 1; 31 typedef Arg0 child0; 32 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; 33 34 35 typedef Arg0 back_; 36 }; 37 38 39 40 41 template< typename Arg0 , typename Arg1 > 42 struct list2 43 { 44 static const long arity = 2; 45 typedef Arg0 child0; typedef Arg1 child1; 46 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; 47 48 49 typedef Arg1 back_; 50 }; 51 52 53 54 55 template< typename Arg0 , typename Arg1 , typename Arg2 > 56 struct list3 57 { 58 static const long arity = 3; 59 typedef Arg0 child0; typedef Arg1 child1; typedef Arg2 child2; 60 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; 61 62 63 typedef Arg2 back_; 64 }; 65 66 67 68 69 template< typename Arg0 , typename Arg1 , typename Arg2 , typename Arg3 > 70 struct list4 71 { 72 static const long arity = 4; 73 typedef Arg0 child0; typedef Arg1 child1; typedef Arg2 child2; typedef Arg3 child3; 74 typedef mpl::void_ child4; typedef mpl::void_ child5; typedef mpl::void_ child6; typedef mpl::void_ child7; typedef mpl::void_ child8; typedef mpl::void_ child9; 75 76 77 typedef Arg3 back_; 78 }; 79 80 81 82 83 template< typename Arg0 , typename Arg1 , typename Arg2 , typename Arg3 , typename Arg4 > 84 struct list5 85 { 86 static const long arity = 5; 87 typedef Arg0 child0; typedef Arg1 child1; typedef Arg2 child2; typedef Arg3 child3; typedef Arg4 child4; 88 typedef mpl::void_ child5; typedef mpl::void_ child6; typedef mpl::void_ child7; typedef mpl::void_ child8; typedef mpl::void_ child9; 89 90 91 typedef Arg4 back_; 92 }; 93 94 95 96 97 template< typename Arg0 , typename Arg1 , typename Arg2 , typename Arg3 , typename Arg4 , typename Arg5 > 98 struct list6 99 { 100 static const long arity = 6; 101 typedef Arg0 child0; typedef Arg1 child1; typedef Arg2 child2; typedef Arg3 child3; typedef Arg4 child4; typedef Arg5 child5; 102 typedef mpl::void_ child6; typedef mpl::void_ child7; typedef mpl::void_ child8; typedef mpl::void_ child9; 103 104 105 typedef Arg5 back_; 106 }; 107 108 109 110 111 template< typename Arg0 , typename Arg1 , typename Arg2 , typename Arg3 , typename Arg4 , typename Arg5 , typename Arg6 > 112 struct list7 113 { 114 static const long arity = 7; 115 typedef Arg0 child0; typedef Arg1 child1; typedef Arg2 child2; typedef Arg3 child3; typedef Arg4 child4; typedef Arg5 child5; typedef Arg6 child6; 116 typedef mpl::void_ child7; typedef mpl::void_ child8; typedef mpl::void_ child9; 117 118 119 typedef Arg6 back_; 120 }; 121 122 123 124 125 template< typename Arg0 , typename Arg1 , typename Arg2 , typename Arg3 , typename Arg4 , typename Arg5 , typename Arg6 , typename Arg7 > 126 struct list8 127 { 128 static const long arity = 8; 129 typedef Arg0 child0; typedef Arg1 child1; typedef Arg2 child2; typedef Arg3 child3; typedef Arg4 child4; typedef Arg5 child5; typedef Arg6 child6; typedef Arg7 child7; 130 typedef mpl::void_ child8; typedef mpl::void_ child9; 131 132 133 typedef Arg7 back_; 134 }; 135 136 137 138 139 template< typename Arg0 , typename Arg1 , typename Arg2 , typename Arg3 , typename Arg4 , typename Arg5 , typename Arg6 , typename Arg7 , typename Arg8 > 140 struct list9 141 { 142 static const long arity = 9; 143 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; 144 typedef mpl::void_ child9; 145 146 147 typedef Arg8 back_; 148 }; 149 150 151 152 153 template< typename Arg0 , typename Arg1 , typename Arg2 , typename Arg3 , typename Arg4 , typename Arg5 , typename Arg6 , typename Arg7 , typename Arg8 , typename Arg9 > 154 struct list10 155 { 156 static const long arity = 10; 157 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; 158 159 160 161 typedef Arg9 back_; 162 }; 163