1 /*============================================================================== 2 Copyright (c) 2005-2010 Joel de Guzman 3 Copyright (c) 2010 Thomas Heller 4 5 Distributed under the Boost Software License, Version 1.0. (See accompanying 6 file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 7 ==============================================================================*/ 8 namespace boost { namespace phoenix 9 { 10 template <typename Dummy = void> 11 struct vector0 12 { 13 typedef mpl::int_<0> size_type; 14 static const int size_value = 0; 15 }; 16 }} 17 18 19 20 21 22 23 24 namespace boost { namespace phoenix 25 { 26 template <typename A0> 27 struct vector1 28 { 29 typedef A0 member_type0; A0 a0; 30 31 typedef mpl::int_<1> size_type; 32 static const int size_value = 1; 33 typedef 34 vector0<> 35 args_type; argsboost::phoenix::vector136 args_type args() const 37 { 38 args_type r = {}; 39 return r; 40 } 41 }; 42 }} 43 BOOST_FUSION_ADAPT_TPL_STRUCT_NO_PARTIAL( 44 (A0) 45 , ( boost::phoenix::vector1 ) (A0) 46 , (A0, a0) 47 ) 48 49 50 51 52 53 54 55 namespace boost { namespace phoenix 56 { 57 template <typename A0 , typename A1> 58 struct vector2 59 { 60 typedef A0 member_type0; A0 a0; typedef A1 member_type1; A1 a1; 61 62 typedef mpl::int_<2> size_type; 63 static const int size_value = 2; 64 typedef 65 vector1<A1> 66 args_type; argsboost::phoenix::vector267 args_type args() const 68 { 69 args_type r = {a1}; 70 return r; 71 } 72 }; 73 }} 74 BOOST_FUSION_ADAPT_TPL_STRUCT_NO_PARTIAL( 75 (A0) (A1) 76 , ( boost::phoenix::vector2 ) (A0) (A1) 77 , (A0, a0) (A1, a1) 78 ) 79 80 81 82 83 84 85 86 namespace boost { namespace phoenix 87 { 88 template <typename A0 , typename A1 , typename A2> 89 struct vector3 90 { 91 typedef A0 member_type0; A0 a0; typedef A1 member_type1; A1 a1; typedef A2 member_type2; A2 a2; 92 93 typedef mpl::int_<3> size_type; 94 static const int size_value = 3; 95 typedef 96 vector2<A1 , A2> 97 args_type; argsboost::phoenix::vector398 args_type args() const 99 { 100 args_type r = {a1 , a2}; 101 return r; 102 } 103 }; 104 }} 105 BOOST_FUSION_ADAPT_TPL_STRUCT_NO_PARTIAL( 106 (A0) (A1) (A2) 107 , ( boost::phoenix::vector3 ) (A0) (A1) (A2) 108 , (A0, a0) (A1, a1) (A2, a2) 109 ) 110 111 112 113 114 115 116 117 namespace boost { namespace phoenix 118 { 119 template <typename A0 , typename A1 , typename A2 , typename A3> 120 struct vector4 121 { 122 typedef A0 member_type0; A0 a0; typedef A1 member_type1; A1 a1; typedef A2 member_type2; A2 a2; typedef A3 member_type3; A3 a3; 123 124 typedef mpl::int_<4> size_type; 125 static const int size_value = 4; 126 typedef 127 vector3<A1 , A2 , A3> 128 args_type; argsboost::phoenix::vector4129 args_type args() const 130 { 131 args_type r = {a1 , a2 , a3}; 132 return r; 133 } 134 }; 135 }} 136 BOOST_FUSION_ADAPT_TPL_STRUCT_NO_PARTIAL( 137 (A0) (A1) (A2) (A3) 138 , ( boost::phoenix::vector4 ) (A0) (A1) (A2) (A3) 139 , (A0, a0) (A1, a1) (A2, a2) (A3, a3) 140 ) 141 142 143 144 145 146 147 148 namespace boost { namespace phoenix 149 { 150 template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4> 151 struct vector5 152 { 153 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; 154 155 typedef mpl::int_<5> size_type; 156 static const int size_value = 5; 157 typedef 158 vector4<A1 , A2 , A3 , A4> 159 args_type; argsboost::phoenix::vector5160 args_type args() const 161 { 162 args_type r = {a1 , a2 , a3 , a4}; 163 return r; 164 } 165 }; 166 }} 167 BOOST_FUSION_ADAPT_TPL_STRUCT_NO_PARTIAL( 168 (A0) (A1) (A2) (A3) (A4) 169 , ( boost::phoenix::vector5 ) (A0) (A1) (A2) (A3) (A4) 170 , (A0, a0) (A1, a1) (A2, a2) (A3, a3) (A4, a4) 171 ) 172 173 174 175 176 177 178 179 namespace boost { namespace phoenix 180 { 181 template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5> 182 struct vector6 183 { 184 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; 185 186 typedef mpl::int_<6> size_type; 187 static const int size_value = 6; 188 typedef 189 vector5<A1 , A2 , A3 , A4 , A5> 190 args_type; argsboost::phoenix::vector6191 args_type args() const 192 { 193 args_type r = {a1 , a2 , a3 , a4 , a5}; 194 return r; 195 } 196 }; 197 }} 198 BOOST_FUSION_ADAPT_TPL_STRUCT_NO_PARTIAL( 199 (A0) (A1) (A2) (A3) (A4) (A5) 200 , ( boost::phoenix::vector6 ) (A0) (A1) (A2) (A3) (A4) (A5) 201 , (A0, a0) (A1, a1) (A2, a2) (A3, a3) (A4, a4) (A5, a5) 202 ) 203 204 205 206 207 208 209 210 namespace boost { namespace phoenix 211 { 212 template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6> 213 struct vector7 214 { 215 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; 216 217 typedef mpl::int_<7> size_type; 218 static const int size_value = 7; 219 typedef 220 vector6<A1 , A2 , A3 , A4 , A5 , A6> 221 args_type; argsboost::phoenix::vector7222 args_type args() const 223 { 224 args_type r = {a1 , a2 , a3 , a4 , a5 , a6}; 225 return r; 226 } 227 }; 228 }} 229 BOOST_FUSION_ADAPT_TPL_STRUCT_NO_PARTIAL( 230 (A0) (A1) (A2) (A3) (A4) (A5) (A6) 231 , ( boost::phoenix::vector7 ) (A0) (A1) (A2) (A3) (A4) (A5) (A6) 232 , (A0, a0) (A1, a1) (A2, a2) (A3, a3) (A4, a4) (A5, a5) (A6, a6) 233 ) 234 235 236 237 238 239 240 241 namespace boost { namespace phoenix 242 { 243 template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7> 244 struct vector8 245 { 246 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; 247 248 typedef mpl::int_<8> size_type; 249 static const int size_value = 8; 250 typedef 251 vector7<A1 , A2 , A3 , A4 , A5 , A6 , A7> 252 args_type; argsboost::phoenix::vector8253 args_type args() const 254 { 255 args_type r = {a1 , a2 , a3 , a4 , a5 , a6 , a7}; 256 return r; 257 } 258 }; 259 }} 260 BOOST_FUSION_ADAPT_TPL_STRUCT_NO_PARTIAL( 261 (A0) (A1) (A2) (A3) (A4) (A5) (A6) (A7) 262 , ( boost::phoenix::vector8 ) (A0) (A1) (A2) (A3) (A4) (A5) (A6) (A7) 263 , (A0, a0) (A1, a1) (A2, a2) (A3, a3) (A4, a4) (A5, a5) (A6, a6) (A7, a7) 264 ) 265 266 267 268 269 270 271 272 namespace boost { namespace phoenix 273 { 274 template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8> 275 struct vector9 276 { 277 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; 278 279 typedef mpl::int_<9> size_type; 280 static const int size_value = 9; 281 typedef 282 vector8<A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8> 283 args_type; argsboost::phoenix::vector9284 args_type args() const 285 { 286 args_type r = {a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8}; 287 return r; 288 } 289 }; 290 }} 291 BOOST_FUSION_ADAPT_TPL_STRUCT_NO_PARTIAL( 292 (A0) (A1) (A2) (A3) (A4) (A5) (A6) (A7) (A8) 293 , ( boost::phoenix::vector9 ) (A0) (A1) (A2) (A3) (A4) (A5) (A6) (A7) (A8) 294 , (A0, a0) (A1, a1) (A2, a2) (A3, a3) (A4, a4) (A5, a5) (A6, a6) (A7, a7) (A8, a8) 295 ) 296 297 298 299 300 301 302 303 namespace boost { namespace phoenix 304 { 305 template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9> 306 struct vector10 307 { 308 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; 309 310 typedef mpl::int_<10> size_type; 311 static const int size_value = 10; 312 typedef 313 vector9<A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9> 314 args_type; argsboost::phoenix::vector10315 args_type args() const 316 { 317 args_type r = {a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9}; 318 return r; 319 } 320 }; 321 }} 322 BOOST_FUSION_ADAPT_TPL_STRUCT_NO_PARTIAL( 323 (A0) (A1) (A2) (A3) (A4) (A5) (A6) (A7) (A8) (A9) 324 , ( boost::phoenix::vector10 ) (A0) (A1) (A2) (A3) (A4) (A5) (A6) (A7) (A8) (A9) 325 , (A0, a0) (A1, a1) (A2, a2) (A3, a3) (A4, a4) (A5, a5) (A6, a6) (A7, a7) (A8, a8) (A9, a9) 326 ) 327 328 329 330 331 332 333 334 namespace boost { namespace phoenix 335 { 336 template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10> 337 struct vector11 338 { 339 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; 340 341 typedef mpl::int_<11> size_type; 342 static const int size_value = 11; 343 typedef 344 vector10<A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10> 345 args_type; argsboost::phoenix::vector11346 args_type args() const 347 { 348 args_type r = {a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10}; 349 return r; 350 } 351 }; 352 }} 353 BOOST_FUSION_ADAPT_TPL_STRUCT_NO_PARTIAL( 354 (A0) (A1) (A2) (A3) (A4) (A5) (A6) (A7) (A8) (A9) (A10) 355 , ( boost::phoenix::vector11 ) (A0) (A1) (A2) (A3) (A4) (A5) (A6) (A7) (A8) (A9) (A10) 356 , (A0, a0) (A1, a1) (A2, a2) (A3, a3) (A4, a4) (A5, a5) (A6, a6) (A7, a7) (A8, a8) (A9, a9) (A10, a10) 357 ) 358