1 2 // 3 // Vector__create.h: Rcpp R/C++ interface class library -- generated helper code for Vector.h 4 // 5 // Copyright (C) 2010 - 2020 Dirk Eddelbuettel and Romain Francois 6 // 7 // This file is part of Rcpp. 8 // 9 // Rcpp is free software: you can redistribute it and/or modify it 10 // under the terms of the GNU General Public License as published by 11 // the Free Software Foundation, either version 2 of the License, or 12 // (at your option) any later version. 13 // 14 // Rcpp is distributed in the hope that it will be useful, but 15 // WITHOUT ANY WARRANTY; without even the implied warranty of 16 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 // GNU General Public License for more details. 18 // 19 // You should have received a copy of the GNU General Public License 20 // along with Rcpp. If not, see <http://www.gnu.org/licenses/>. 21 22 #ifndef Rcpp__generated__Vector_create_h 23 #define Rcpp__generated__Vector_create_h 24 25 /* <code-bloat> 26 27 public: 28 29 template <TYPENAMES> 30 static Vector create(ARGUMENTS){ 31 return create__dispatch( typename traits::integral_constant<bool, 32 __OR__{{ traits::is_named<___T___>::value }} 33 >::type(), PARAMETERS ) ; 34 } 35 36 private: 37 38 template <TYPENAMES> 39 static Vector create__dispatch( traits::false_type, ARGUMENTS ){ 40 Vector res(___N___) ; 41 iterator it( res.begin() ); 42 43 //// 44 __FOR_EACH__{{ *it = converter_type::get(___X___) ; ++it ; }} 45 //// 46 47 return res ; 48 } 49 50 template <TYPENAMES> 51 static Vector create__dispatch( traits::true_type, ARGUMENTS){ 52 Vector res( ___N___ ) ; 53 Shield<SEXP> names( ::Rf_allocVector( STRSXP, ___N___ ) ) ; 54 int index = 0 ; 55 iterator it( res.begin() ); 56 57 //// 58 __FOR_EACH__{{ replace_element( it, names, index, ___X___ ) ; ++it; ++index ; }} 59 //// 60 61 res.attr("names") = names ; 62 63 return res ; 64 } 65 66 */ 67 public: 68 69 template <typename T1> create(const T1 & t1)70 static Vector create(const T1& t1){ 71 return create__dispatch( typename traits::integral_constant<bool, 72 traits::is_named<T1>::value 73 >::type(), t1 ) ; 74 } 75 76 private: 77 78 template <typename T1> create__dispatch(traits::false_type,const T1 & t1)79 static Vector create__dispatch( traits::false_type, const T1& t1 ){ 80 Vector res(1) ; 81 iterator it( res.begin() ); 82 83 //// 84 *it = converter_type::get(t1) ; ++it ; 85 //// 86 87 return res ; 88 } 89 90 template <typename T1> create__dispatch(traits::true_type,const T1 & t1)91 static Vector create__dispatch( traits::true_type, const T1& t1){ 92 Vector res( 1 ) ; 93 Shield<SEXP> names( ::Rf_allocVector( STRSXP, 1 ) ) ; 94 int index = 0 ; 95 iterator it( res.begin() ); 96 97 //// 98 replace_element( it, names, index, t1 ) ; ++it; ++index ; 99 //// 100 101 res.attr("names") = names ; 102 103 return res ; 104 } 105 106 public: 107 108 template <typename T1, typename T2> create(const T1 & t1,const T2 & t2)109 static Vector create(const T1& t1, const T2& t2){ // #nocov start 110 return create__dispatch( typename traits::integral_constant<bool, 111 traits::is_named<T1>::value || 112 traits::is_named<T2>::value 113 >::type(), t1, t2 ) ; // #nocov end 114 } 115 116 private: 117 118 template <typename T1, typename T2> create__dispatch(traits::false_type,const T1 & t1,const T2 & t2)119 static Vector create__dispatch( traits::false_type, const T1& t1, const T2& t2 ){ 120 Vector res(2) ; 121 iterator it( res.begin() ); 122 123 //// 124 *it = converter_type::get(t1) ; ++it ; 125 *it = converter_type::get(t2) ; ++it ; 126 //// 127 128 return res ; 129 } 130 131 template <typename T1, typename T2> // #nocov start create__dispatch(traits::true_type,const T1 & t1,const T2 & t2)132 static Vector create__dispatch( traits::true_type, const T1& t1, const T2& t2){ 133 Vector res( 2 ) ; 134 Shield<SEXP> names( ::Rf_allocVector( STRSXP, 2 ) ) ; 135 int index = 0 ; 136 iterator it( res.begin() ); 137 138 //// 139 replace_element( it, names, index, t1 ) ; ++it; ++index ; 140 replace_element( it, names, index, t2 ) ; ++it; ++index ; 141 //// 142 143 res.attr("names") = names ; 144 145 return res ; // #nocov end 146 } 147 148 public: 149 150 template <typename T1, typename T2, typename T3> create(const T1 & t1,const T2 & t2,const T3 & t3)151 static Vector create(const T1& t1, const T2& t2, const T3& t3){ 152 return create__dispatch( typename traits::integral_constant<bool, 153 traits::is_named<T1>::value || 154 traits::is_named<T2>::value || 155 traits::is_named<T3>::value 156 >::type(), t1, t2, t3 ) ; 157 } 158 159 private: 160 161 template <typename T1, typename T2, typename T3> create__dispatch(traits::false_type,const T1 & t1,const T2 & t2,const T3 & t3)162 static Vector create__dispatch( traits::false_type, const T1& t1, const T2& t2, const T3& t3 ){ 163 Vector res(3) ; 164 iterator it( res.begin() ); 165 166 //// 167 *it = converter_type::get(t1) ; ++it ; 168 *it = converter_type::get(t2) ; ++it ; 169 *it = converter_type::get(t3) ; ++it ; 170 //// 171 172 return res ; 173 } 174 175 template <typename T1, typename T2, typename T3> create__dispatch(traits::true_type,const T1 & t1,const T2 & t2,const T3 & t3)176 static Vector create__dispatch( traits::true_type, const T1& t1, const T2& t2, const T3& t3){ // #nocov start 177 Vector res( 3 ) ; 178 Shield<SEXP> names( ::Rf_allocVector( STRSXP, 3 ) ) ; 179 int index = 0 ; 180 iterator it( res.begin() ); 181 182 //// 183 replace_element( it, names, index, t1 ) ; ++it; ++index ; 184 replace_element( it, names, index, t2 ) ; ++it; ++index ; 185 replace_element( it, names, index, t3 ) ; ++it; ++index ; 186 //// 187 188 res.attr("names") = names ; 189 190 return res ; // #nocov end 191 } 192 193 public: 194 195 template <typename T1, typename T2, typename T3, typename T4> create(const T1 & t1,const T2 & t2,const T3 & t3,const T4 & t4)196 static Vector create(const T1& t1, const T2& t2, const T3& t3, const T4& t4){ 197 return create__dispatch( typename traits::integral_constant<bool, 198 traits::is_named<T1>::value || 199 traits::is_named<T2>::value || 200 traits::is_named<T3>::value || 201 traits::is_named<T4>::value 202 >::type(), t1, t2, t3, t4 ) ; 203 } 204 205 private: 206 207 template <typename T1, typename T2, typename T3, typename T4> create__dispatch(traits::false_type,const T1 & t1,const T2 & t2,const T3 & t3,const T4 & t4)208 static Vector create__dispatch( traits::false_type, const T1& t1, const T2& t2, const T3& t3, const T4& t4 ){ 209 Vector res(4) ; 210 iterator it( res.begin() ); 211 212 //// 213 *it = converter_type::get(t1) ; ++it ; 214 *it = converter_type::get(t2) ; ++it ; 215 *it = converter_type::get(t3) ; ++it ; 216 *it = converter_type::get(t4) ; ++it ; 217 //// 218 219 return res ; 220 } 221 222 template <typename T1, typename T2, typename T3, typename T4> create__dispatch(traits::true_type,const T1 & t1,const T2 & t2,const T3 & t3,const T4 & t4)223 static Vector create__dispatch( traits::true_type, const T1& t1, const T2& t2, const T3& t3, const T4& t4){ 224 Vector res( 4 ) ; 225 Shield<SEXP> names( ::Rf_allocVector( STRSXP, 4 ) ) ; 226 int index = 0 ; 227 iterator it( res.begin() ); 228 229 //// 230 replace_element( it, names, index, t1 ) ; ++it; ++index ; 231 replace_element( it, names, index, t2 ) ; ++it; ++index ; 232 replace_element( it, names, index, t3 ) ; ++it; ++index ; 233 replace_element( it, names, index, t4 ) ; ++it; ++index ; 234 //// 235 236 res.attr("names") = names ; 237 238 return res ; 239 } 240 241 public: 242 243 template <typename T1, typename T2, typename T3, typename T4, typename T5> create(const T1 & t1,const T2 & t2,const T3 & t3,const T4 & t4,const T5 & t5)244 static Vector create(const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5){ 245 return create__dispatch( typename traits::integral_constant<bool, 246 traits::is_named<T1>::value || traits::is_named<T2>::value || traits::is_named<T3>::value || traits::is_named<T4>::value || traits::is_named<T5>::value 247 >::type(), t1, t2, t3, t4, t5 ) ; 248 } 249 250 private: 251 252 template <typename T1, typename T2, typename T3, typename T4, typename T5> create__dispatch(traits::false_type,const T1 & t1,const T2 & t2,const T3 & t3,const T4 & t4,const T5 & t5)253 static Vector create__dispatch( traits::false_type, const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5 ){ 254 Vector res(5) ; 255 iterator it( res.begin() ); 256 257 //// 258 *it = converter_type::get(t1) ; ++it ; 259 *it = converter_type::get(t2) ; ++it ; 260 *it = converter_type::get(t3) ; ++it ; 261 *it = converter_type::get(t4) ; ++it ; 262 *it = converter_type::get(t5) ; ++it ; 263 //// 264 265 return res ; 266 } 267 268 template <typename T1, typename T2, typename T3, typename T4, typename T5> create__dispatch(traits::true_type,const T1 & t1,const T2 & t2,const T3 & t3,const T4 & t4,const T5 & t5)269 static Vector create__dispatch( traits::true_type, const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5){ 270 Vector res( 5 ) ; 271 Shield<SEXP> names( ::Rf_allocVector( STRSXP, 5 ) ) ; 272 int index = 0 ; 273 iterator it( res.begin() ); 274 275 //// 276 replace_element( it, names, index, t1 ) ; ++it; ++index ; 277 replace_element( it, names, index, t2 ) ; ++it; ++index ; 278 replace_element( it, names, index, t3 ) ; ++it; ++index ; 279 replace_element( it, names, index, t4 ) ; ++it; ++index ; 280 replace_element( it, names, index, t5 ) ; ++it; ++index ; 281 //// 282 283 res.attr("names") = names ; 284 285 return res ; 286 } 287 288 public: 289 290 template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6> create(const T1 & t1,const T2 & t2,const T3 & t3,const T4 & t4,const T5 & t5,const T6 & t6)291 static Vector create(const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5, const T6& t6){ 292 return create__dispatch( typename traits::integral_constant<bool, 293 traits::is_named<T1>::value || traits::is_named<T2>::value || traits::is_named<T3>::value || traits::is_named<T4>::value || traits::is_named<T5>::value || traits::is_named<T6>::value 294 >::type(), t1, t2, t3, t4, t5, t6 ) ; 295 } 296 297 private: 298 299 template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6> create__dispatch(traits::false_type,const T1 & t1,const T2 & t2,const T3 & t3,const T4 & t4,const T5 & t5,const T6 & t6)300 static Vector create__dispatch( traits::false_type, const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5, const T6& t6 ){ 301 Vector res(6) ; 302 iterator it( res.begin() ); 303 304 //// 305 *it = converter_type::get(t1) ; ++it ; 306 *it = converter_type::get(t2) ; ++it ; 307 *it = converter_type::get(t3) ; ++it ; 308 *it = converter_type::get(t4) ; ++it ; 309 *it = converter_type::get(t5) ; ++it ; 310 *it = converter_type::get(t6) ; ++it ; 311 //// 312 313 return res ; 314 } 315 316 template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6> create__dispatch(traits::true_type,const T1 & t1,const T2 & t2,const T3 & t3,const T4 & t4,const T5 & t5,const T6 & t6)317 static Vector create__dispatch( traits::true_type, const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5, const T6& t6){ 318 Vector res( 6 ) ; 319 Shield<SEXP> names( ::Rf_allocVector( STRSXP, 6 ) ) ; 320 int index = 0 ; 321 iterator it( res.begin() ); 322 323 //// 324 replace_element( it, names, index, t1 ) ; ++it; ++index ; 325 replace_element( it, names, index, t2 ) ; ++it; ++index ; 326 replace_element( it, names, index, t3 ) ; ++it; ++index ; 327 replace_element( it, names, index, t4 ) ; ++it; ++index ; 328 replace_element( it, names, index, t5 ) ; ++it; ++index ; 329 replace_element( it, names, index, t6 ) ; ++it; ++index ; 330 //// 331 332 res.attr("names") = names ; 333 334 return res ; 335 } 336 337 public: 338 339 template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7> create(const T1 & t1,const T2 & t2,const T3 & t3,const T4 & t4,const T5 & t5,const T6 & t6,const T7 & t7)340 static Vector create(const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5, const T6& t6, const T7& t7){ 341 return create__dispatch( typename traits::integral_constant<bool, 342 traits::is_named<T1>::value || traits::is_named<T2>::value || traits::is_named<T3>::value || traits::is_named<T4>::value || traits::is_named<T5>::value || traits::is_named<T6>::value || traits::is_named<T7>::value 343 >::type(), t1, t2, t3, t4, t5, t6, t7 ) ; 344 } 345 346 private: 347 348 template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7> create__dispatch(traits::false_type,const T1 & t1,const T2 & t2,const T3 & t3,const T4 & t4,const T5 & t5,const T6 & t6,const T7 & t7)349 static Vector create__dispatch( traits::false_type, const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5, const T6& t6, const T7& t7 ){ 350 Vector res(7) ; 351 iterator it( res.begin() ); 352 353 //// 354 *it = converter_type::get(t1) ; ++it ; 355 *it = converter_type::get(t2) ; ++it ; 356 *it = converter_type::get(t3) ; ++it ; 357 *it = converter_type::get(t4) ; ++it ; 358 *it = converter_type::get(t5) ; ++it ; 359 *it = converter_type::get(t6) ; ++it ; 360 *it = converter_type::get(t7) ; ++it ; 361 //// 362 363 return res ; 364 } 365 366 template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7> create__dispatch(traits::true_type,const T1 & t1,const T2 & t2,const T3 & t3,const T4 & t4,const T5 & t5,const T6 & t6,const T7 & t7)367 static Vector create__dispatch( traits::true_type, const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5, const T6& t6, const T7& t7){ 368 Vector res( 7 ) ; 369 Shield<SEXP> names( ::Rf_allocVector( STRSXP, 7 ) ) ; 370 int index = 0 ; 371 iterator it( res.begin() ); 372 373 //// 374 replace_element( it, names, index, t1 ) ; ++it; ++index ; 375 replace_element( it, names, index, t2 ) ; ++it; ++index ; 376 replace_element( it, names, index, t3 ) ; ++it; ++index ; 377 replace_element( it, names, index, t4 ) ; ++it; ++index ; 378 replace_element( it, names, index, t5 ) ; ++it; ++index ; 379 replace_element( it, names, index, t6 ) ; ++it; ++index ; 380 replace_element( it, names, index, t7 ) ; ++it; ++index ; 381 //// 382 383 res.attr("names") = names ; 384 385 return res ; 386 } 387 388 public: 389 390 template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8> create(const T1 & t1,const T2 & t2,const T3 & t3,const T4 & t4,const T5 & t5,const T6 & t6,const T7 & t7,const T8 & t8)391 static Vector create(const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5, const T6& t6, const T7& t7, const T8& t8){ 392 return create__dispatch( typename traits::integral_constant<bool, 393 traits::is_named<T1>::value || traits::is_named<T2>::value || traits::is_named<T3>::value || traits::is_named<T4>::value || traits::is_named<T5>::value || traits::is_named<T6>::value || traits::is_named<T7>::value || traits::is_named<T8>::value 394 >::type(), t1, t2, t3, t4, t5, t6, t7, t8 ) ; 395 } 396 397 private: 398 399 template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8> create__dispatch(traits::false_type,const T1 & t1,const T2 & t2,const T3 & t3,const T4 & t4,const T5 & t5,const T6 & t6,const T7 & t7,const T8 & t8)400 static Vector create__dispatch( traits::false_type, const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5, const T6& t6, const T7& t7, const T8& t8 ){ 401 Vector res(8) ; 402 iterator it( res.begin() ); 403 404 //// 405 *it = converter_type::get(t1) ; ++it ; 406 *it = converter_type::get(t2) ; ++it ; 407 *it = converter_type::get(t3) ; ++it ; 408 *it = converter_type::get(t4) ; ++it ; 409 *it = converter_type::get(t5) ; ++it ; 410 *it = converter_type::get(t6) ; ++it ; 411 *it = converter_type::get(t7) ; ++it ; 412 *it = converter_type::get(t8) ; ++it ; 413 //// 414 415 return res ; 416 } 417 418 template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8> create__dispatch(traits::true_type,const T1 & t1,const T2 & t2,const T3 & t3,const T4 & t4,const T5 & t5,const T6 & t6,const T7 & t7,const T8 & t8)419 static Vector create__dispatch( traits::true_type, const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5, const T6& t6, const T7& t7, const T8& t8){ 420 Vector res( 8 ) ; 421 Shield<SEXP> names( ::Rf_allocVector( STRSXP, 8 ) ) ; 422 int index = 0 ; 423 iterator it( res.begin() ); 424 425 //// 426 replace_element( it, names, index, t1 ) ; ++it; ++index ; 427 replace_element( it, names, index, t2 ) ; ++it; ++index ; 428 replace_element( it, names, index, t3 ) ; ++it; ++index ; 429 replace_element( it, names, index, t4 ) ; ++it; ++index ; 430 replace_element( it, names, index, t5 ) ; ++it; ++index ; 431 replace_element( it, names, index, t6 ) ; ++it; ++index ; 432 replace_element( it, names, index, t7 ) ; ++it; ++index ; 433 replace_element( it, names, index, t8 ) ; ++it; ++index ; 434 //// 435 436 res.attr("names") = names ; 437 438 return res ; 439 } 440 441 public: 442 443 template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9> create(const T1 & t1,const T2 & t2,const T3 & t3,const T4 & t4,const T5 & t5,const T6 & t6,const T7 & t7,const T8 & t8,const T9 & t9)444 static Vector create(const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5, const T6& t6, const T7& t7, const T8& t8, const T9& t9){ 445 return create__dispatch( typename traits::integral_constant<bool, 446 traits::is_named<T1>::value || traits::is_named<T2>::value || traits::is_named<T3>::value || traits::is_named<T4>::value || traits::is_named<T5>::value || traits::is_named<T6>::value || traits::is_named<T7>::value || traits::is_named<T8>::value || traits::is_named<T9>::value 447 >::type(), t1, t2, t3, t4, t5, t6, t7, t8, t9 ) ; 448 } 449 450 private: 451 452 template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9> create__dispatch(traits::false_type,const T1 & t1,const T2 & t2,const T3 & t3,const T4 & t4,const T5 & t5,const T6 & t6,const T7 & t7,const T8 & t8,const T9 & t9)453 static Vector create__dispatch( traits::false_type, const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5, const T6& t6, const T7& t7, const T8& t8, const T9& t9 ){ 454 Vector res(9) ; 455 iterator it( res.begin() ); 456 457 //// 458 *it = converter_type::get(t1) ; ++it ; 459 *it = converter_type::get(t2) ; ++it ; 460 *it = converter_type::get(t3) ; ++it ; 461 *it = converter_type::get(t4) ; ++it ; 462 *it = converter_type::get(t5) ; ++it ; 463 *it = converter_type::get(t6) ; ++it ; 464 *it = converter_type::get(t7) ; ++it ; 465 *it = converter_type::get(t8) ; ++it ; 466 *it = converter_type::get(t9) ; ++it ; 467 //// 468 469 return res ; 470 } 471 472 template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9> create__dispatch(traits::true_type,const T1 & t1,const T2 & t2,const T3 & t3,const T4 & t4,const T5 & t5,const T6 & t6,const T7 & t7,const T8 & t8,const T9 & t9)473 static Vector create__dispatch( traits::true_type, const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5, const T6& t6, const T7& t7, const T8& t8, const T9& t9){ 474 Vector res( 9 ) ; 475 Shield<SEXP> names( ::Rf_allocVector( STRSXP, 9 ) ) ; 476 int index = 0 ; 477 iterator it( res.begin() ); 478 479 //// 480 replace_element( it, names, index, t1 ) ; ++it; ++index ; 481 replace_element( it, names, index, t2 ) ; ++it; ++index ; 482 replace_element( it, names, index, t3 ) ; ++it; ++index ; 483 replace_element( it, names, index, t4 ) ; ++it; ++index ; 484 replace_element( it, names, index, t5 ) ; ++it; ++index ; 485 replace_element( it, names, index, t6 ) ; ++it; ++index ; 486 replace_element( it, names, index, t7 ) ; ++it; ++index ; 487 replace_element( it, names, index, t8 ) ; ++it; ++index ; 488 replace_element( it, names, index, t9 ) ; ++it; ++index ; 489 //// 490 491 res.attr("names") = names ; 492 493 return res ; 494 } 495 496 public: 497 498 template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10> create(const T1 & t1,const T2 & t2,const T3 & t3,const T4 & t4,const T5 & t5,const T6 & t6,const T7 & t7,const T8 & t8,const T9 & t9,const T10 & t10)499 static Vector create(const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5, const T6& t6, const T7& t7, const T8& t8, const T9& t9, const T10& t10){ 500 return create__dispatch( typename traits::integral_constant<bool, 501 traits::is_named<T1>::value || traits::is_named<T2>::value || traits::is_named<T3>::value || traits::is_named<T4>::value || traits::is_named<T5>::value || traits::is_named<T6>::value || traits::is_named<T7>::value || traits::is_named<T8>::value || traits::is_named<T9>::value || traits::is_named<T10>::value 502 >::type(), t1, t2, t3, t4, t5, t6, t7, t8, t9, t10 ) ; 503 } 504 505 private: 506 507 template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10> create__dispatch(traits::false_type,const T1 & t1,const T2 & t2,const T3 & t3,const T4 & t4,const T5 & t5,const T6 & t6,const T7 & t7,const T8 & t8,const T9 & t9,const T10 & t10)508 static Vector create__dispatch( traits::false_type, const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5, const T6& t6, const T7& t7, const T8& t8, const T9& t9, const T10& t10 ){ 509 Vector res(10) ; 510 iterator it( res.begin() ); 511 512 //// 513 *it = converter_type::get(t1) ; ++it ; 514 *it = converter_type::get(t2) ; ++it ; 515 *it = converter_type::get(t3) ; ++it ; 516 *it = converter_type::get(t4) ; ++it ; 517 *it = converter_type::get(t5) ; ++it ; 518 *it = converter_type::get(t6) ; ++it ; 519 *it = converter_type::get(t7) ; ++it ; 520 *it = converter_type::get(t8) ; ++it ; 521 *it = converter_type::get(t9) ; ++it ; 522 *it = converter_type::get(t10) ; ++it ; 523 //// 524 525 return res ; 526 } 527 528 template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10> create__dispatch(traits::true_type,const T1 & t1,const T2 & t2,const T3 & t3,const T4 & t4,const T5 & t5,const T6 & t6,const T7 & t7,const T8 & t8,const T9 & t9,const T10 & t10)529 static Vector create__dispatch( traits::true_type, const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5, const T6& t6, const T7& t7, const T8& t8, const T9& t9, const T10& t10){ 530 Vector res( 10 ) ; 531 Shield<SEXP> names( ::Rf_allocVector( STRSXP, 10 ) ) ; 532 int index = 0 ; 533 iterator it( res.begin() ); 534 535 //// 536 replace_element( it, names, index, t1 ) ; ++it; ++index ; 537 replace_element( it, names, index, t2 ) ; ++it; ++index ; 538 replace_element( it, names, index, t3 ) ; ++it; ++index ; 539 replace_element( it, names, index, t4 ) ; ++it; ++index ; 540 replace_element( it, names, index, t5 ) ; ++it; ++index ; 541 replace_element( it, names, index, t6 ) ; ++it; ++index ; 542 replace_element( it, names, index, t7 ) ; ++it; ++index ; 543 replace_element( it, names, index, t8 ) ; ++it; ++index ; 544 replace_element( it, names, index, t9 ) ; ++it; ++index ; 545 replace_element( it, names, index, t10 ) ; ++it; ++index ; 546 //// 547 548 res.attr("names") = names ; 549 550 return res ; 551 } 552 553 public: 554 555 template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11> create(const T1 & t1,const T2 & t2,const T3 & t3,const T4 & t4,const T5 & t5,const T6 & t6,const T7 & t7,const T8 & t8,const T9 & t9,const T10 & t10,const T11 & t11)556 static Vector create(const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5, const T6& t6, const T7& t7, const T8& t8, const T9& t9, const T10& t10, const T11& t11){ 557 return create__dispatch( typename traits::integral_constant<bool, 558 traits::is_named<T1>::value || traits::is_named<T2>::value || traits::is_named<T3>::value || traits::is_named<T4>::value || traits::is_named<T5>::value || traits::is_named<T6>::value || traits::is_named<T7>::value || traits::is_named<T8>::value || traits::is_named<T9>::value || traits::is_named<T10>::value || traits::is_named<T11>::value 559 >::type(), t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11 ) ; 560 } 561 562 private: 563 564 template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11> create__dispatch(traits::false_type,const T1 & t1,const T2 & t2,const T3 & t3,const T4 & t4,const T5 & t5,const T6 & t6,const T7 & t7,const T8 & t8,const T9 & t9,const T10 & t10,const T11 & t11)565 static Vector create__dispatch( traits::false_type, const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5, const T6& t6, const T7& t7, const T8& t8, const T9& t9, const T10& t10, const T11& t11 ){ 566 Vector res(11) ; 567 iterator it( res.begin() ); 568 569 //// 570 *it = converter_type::get(t1) ; ++it ; 571 *it = converter_type::get(t2) ; ++it ; 572 *it = converter_type::get(t3) ; ++it ; 573 *it = converter_type::get(t4) ; ++it ; 574 *it = converter_type::get(t5) ; ++it ; 575 *it = converter_type::get(t6) ; ++it ; 576 *it = converter_type::get(t7) ; ++it ; 577 *it = converter_type::get(t8) ; ++it ; 578 *it = converter_type::get(t9) ; ++it ; 579 *it = converter_type::get(t10) ; ++it ; 580 *it = converter_type::get(t11) ; ++it ; 581 //// 582 583 return res ; 584 } 585 586 template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11> create__dispatch(traits::true_type,const T1 & t1,const T2 & t2,const T3 & t3,const T4 & t4,const T5 & t5,const T6 & t6,const T7 & t7,const T8 & t8,const T9 & t9,const T10 & t10,const T11 & t11)587 static Vector create__dispatch( traits::true_type, const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5, const T6& t6, const T7& t7, const T8& t8, const T9& t9, const T10& t10, const T11& t11){ 588 Vector res( 11 ) ; 589 Shield<SEXP> names( ::Rf_allocVector( STRSXP, 11 ) ) ; 590 int index = 0 ; 591 iterator it( res.begin() ); 592 593 //// 594 replace_element( it, names, index, t1 ) ; ++it; ++index ; 595 replace_element( it, names, index, t2 ) ; ++it; ++index ; 596 replace_element( it, names, index, t3 ) ; ++it; ++index ; 597 replace_element( it, names, index, t4 ) ; ++it; ++index ; 598 replace_element( it, names, index, t5 ) ; ++it; ++index ; 599 replace_element( it, names, index, t6 ) ; ++it; ++index ; 600 replace_element( it, names, index, t7 ) ; ++it; ++index ; 601 replace_element( it, names, index, t8 ) ; ++it; ++index ; 602 replace_element( it, names, index, t9 ) ; ++it; ++index ; 603 replace_element( it, names, index, t10 ) ; ++it; ++index ; 604 replace_element( it, names, index, t11 ) ; ++it; ++index ; 605 //// 606 607 res.attr("names") = names ; 608 609 return res ; 610 } 611 612 public: 613 614 template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12> create(const T1 & t1,const T2 & t2,const T3 & t3,const T4 & t4,const T5 & t5,const T6 & t6,const T7 & t7,const T8 & t8,const T9 & t9,const T10 & t10,const T11 & t11,const T12 & t12)615 static Vector create(const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5, const T6& t6, const T7& t7, const T8& t8, const T9& t9, const T10& t10, const T11& t11, const T12& t12){ 616 return create__dispatch( typename traits::integral_constant<bool, 617 traits::is_named<T1>::value || traits::is_named<T2>::value || traits::is_named<T3>::value || traits::is_named<T4>::value || traits::is_named<T5>::value || traits::is_named<T6>::value || traits::is_named<T7>::value || traits::is_named<T8>::value || traits::is_named<T9>::value || traits::is_named<T10>::value || traits::is_named<T11>::value || traits::is_named<T12>::value 618 >::type(), t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12 ) ; 619 } 620 621 private: 622 623 template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12> create__dispatch(traits::false_type,const T1 & t1,const T2 & t2,const T3 & t3,const T4 & t4,const T5 & t5,const T6 & t6,const T7 & t7,const T8 & t8,const T9 & t9,const T10 & t10,const T11 & t11,const T12 & t12)624 static Vector create__dispatch( traits::false_type, const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5, const T6& t6, const T7& t7, const T8& t8, const T9& t9, const T10& t10, const T11& t11, const T12& t12 ){ 625 Vector res(12) ; 626 iterator it( res.begin() ); 627 628 //// 629 *it = converter_type::get(t1) ; ++it ; 630 *it = converter_type::get(t2) ; ++it ; 631 *it = converter_type::get(t3) ; ++it ; 632 *it = converter_type::get(t4) ; ++it ; 633 *it = converter_type::get(t5) ; ++it ; 634 *it = converter_type::get(t6) ; ++it ; 635 *it = converter_type::get(t7) ; ++it ; 636 *it = converter_type::get(t8) ; ++it ; 637 *it = converter_type::get(t9) ; ++it ; 638 *it = converter_type::get(t10) ; ++it ; 639 *it = converter_type::get(t11) ; ++it ; 640 *it = converter_type::get(t12) ; ++it ; 641 //// 642 643 return res ; 644 } 645 646 template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12> create__dispatch(traits::true_type,const T1 & t1,const T2 & t2,const T3 & t3,const T4 & t4,const T5 & t5,const T6 & t6,const T7 & t7,const T8 & t8,const T9 & t9,const T10 & t10,const T11 & t11,const T12 & t12)647 static Vector create__dispatch( traits::true_type, const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5, const T6& t6, const T7& t7, const T8& t8, const T9& t9, const T10& t10, const T11& t11, const T12& t12){ 648 Vector res( 12 ) ; 649 Shield<SEXP> names( ::Rf_allocVector( STRSXP, 12 ) ) ; 650 int index = 0 ; 651 iterator it( res.begin() ); 652 653 //// 654 replace_element( it, names, index, t1 ) ; ++it; ++index ; 655 replace_element( it, names, index, t2 ) ; ++it; ++index ; 656 replace_element( it, names, index, t3 ) ; ++it; ++index ; 657 replace_element( it, names, index, t4 ) ; ++it; ++index ; 658 replace_element( it, names, index, t5 ) ; ++it; ++index ; 659 replace_element( it, names, index, t6 ) ; ++it; ++index ; 660 replace_element( it, names, index, t7 ) ; ++it; ++index ; 661 replace_element( it, names, index, t8 ) ; ++it; ++index ; 662 replace_element( it, names, index, t9 ) ; ++it; ++index ; 663 replace_element( it, names, index, t10 ) ; ++it; ++index ; 664 replace_element( it, names, index, t11 ) ; ++it; ++index ; 665 replace_element( it, names, index, t12 ) ; ++it; ++index ; 666 //// 667 668 res.attr("names") = names ; 669 670 return res ; 671 } 672 673 public: 674 675 template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13> create(const T1 & t1,const T2 & t2,const T3 & t3,const T4 & t4,const T5 & t5,const T6 & t6,const T7 & t7,const T8 & t8,const T9 & t9,const T10 & t10,const T11 & t11,const T12 & t12,const T13 & t13)676 static Vector create(const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5, const T6& t6, const T7& t7, const T8& t8, const T9& t9, const T10& t10, const T11& t11, const T12& t12, const T13& t13){ 677 return create__dispatch( typename traits::integral_constant<bool, 678 traits::is_named<T1>::value || traits::is_named<T2>::value || traits::is_named<T3>::value || traits::is_named<T4>::value || traits::is_named<T5>::value || traits::is_named<T6>::value || traits::is_named<T7>::value || traits::is_named<T8>::value || traits::is_named<T9>::value || traits::is_named<T10>::value || traits::is_named<T11>::value || traits::is_named<T12>::value || traits::is_named<T13>::value 679 >::type(), t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13 ) ; 680 } 681 682 private: 683 684 template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13> create__dispatch(traits::false_type,const T1 & t1,const T2 & t2,const T3 & t3,const T4 & t4,const T5 & t5,const T6 & t6,const T7 & t7,const T8 & t8,const T9 & t9,const T10 & t10,const T11 & t11,const T12 & t12,const T13 & t13)685 static Vector create__dispatch( traits::false_type, const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5, const T6& t6, const T7& t7, const T8& t8, const T9& t9, const T10& t10, const T11& t11, const T12& t12, const T13& t13 ){ 686 Vector res(13) ; 687 iterator it( res.begin() ); 688 689 //// 690 *it = converter_type::get(t1) ; ++it ; 691 *it = converter_type::get(t2) ; ++it ; 692 *it = converter_type::get(t3) ; ++it ; 693 *it = converter_type::get(t4) ; ++it ; 694 *it = converter_type::get(t5) ; ++it ; 695 *it = converter_type::get(t6) ; ++it ; 696 *it = converter_type::get(t7) ; ++it ; 697 *it = converter_type::get(t8) ; ++it ; 698 *it = converter_type::get(t9) ; ++it ; 699 *it = converter_type::get(t10) ; ++it ; 700 *it = converter_type::get(t11) ; ++it ; 701 *it = converter_type::get(t12) ; ++it ; 702 *it = converter_type::get(t13) ; ++it ; 703 //// 704 705 return res ; 706 } 707 708 template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13> create__dispatch(traits::true_type,const T1 & t1,const T2 & t2,const T3 & t3,const T4 & t4,const T5 & t5,const T6 & t6,const T7 & t7,const T8 & t8,const T9 & t9,const T10 & t10,const T11 & t11,const T12 & t12,const T13 & t13)709 static Vector create__dispatch( traits::true_type, const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5, const T6& t6, const T7& t7, const T8& t8, const T9& t9, const T10& t10, const T11& t11, const T12& t12, const T13& t13){ 710 Vector res( 13 ) ; 711 Shield<SEXP> names( ::Rf_allocVector( STRSXP, 13 ) ) ; 712 int index = 0 ; 713 iterator it( res.begin() ); 714 715 //// 716 replace_element( it, names, index, t1 ) ; ++it; ++index ; 717 replace_element( it, names, index, t2 ) ; ++it; ++index ; 718 replace_element( it, names, index, t3 ) ; ++it; ++index ; 719 replace_element( it, names, index, t4 ) ; ++it; ++index ; 720 replace_element( it, names, index, t5 ) ; ++it; ++index ; 721 replace_element( it, names, index, t6 ) ; ++it; ++index ; 722 replace_element( it, names, index, t7 ) ; ++it; ++index ; 723 replace_element( it, names, index, t8 ) ; ++it; ++index ; 724 replace_element( it, names, index, t9 ) ; ++it; ++index ; 725 replace_element( it, names, index, t10 ) ; ++it; ++index ; 726 replace_element( it, names, index, t11 ) ; ++it; ++index ; 727 replace_element( it, names, index, t12 ) ; ++it; ++index ; 728 replace_element( it, names, index, t13 ) ; ++it; ++index ; 729 //// 730 731 res.attr("names") = names ; 732 733 return res ; 734 } 735 736 public: 737 738 template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14> create(const T1 & t1,const T2 & t2,const T3 & t3,const T4 & t4,const T5 & t5,const T6 & t6,const T7 & t7,const T8 & t8,const T9 & t9,const T10 & t10,const T11 & t11,const T12 & t12,const T13 & t13,const T14 & t14)739 static Vector create(const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5, const T6& t6, const T7& t7, const T8& t8, const T9& t9, const T10& t10, const T11& t11, const T12& t12, const T13& t13, const T14& t14){ 740 return create__dispatch( typename traits::integral_constant<bool, 741 traits::is_named<T1>::value || traits::is_named<T2>::value || traits::is_named<T3>::value || traits::is_named<T4>::value || traits::is_named<T5>::value || traits::is_named<T6>::value || traits::is_named<T7>::value || traits::is_named<T8>::value || traits::is_named<T9>::value || traits::is_named<T10>::value || traits::is_named<T11>::value || traits::is_named<T12>::value || traits::is_named<T13>::value || traits::is_named<T14>::value 742 >::type(), t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14 ) ; 743 } 744 745 private: 746 747 template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14> create__dispatch(traits::false_type,const T1 & t1,const T2 & t2,const T3 & t3,const T4 & t4,const T5 & t5,const T6 & t6,const T7 & t7,const T8 & t8,const T9 & t9,const T10 & t10,const T11 & t11,const T12 & t12,const T13 & t13,const T14 & t14)748 static Vector create__dispatch( traits::false_type, const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5, const T6& t6, const T7& t7, const T8& t8, const T9& t9, const T10& t10, const T11& t11, const T12& t12, const T13& t13, const T14& t14 ){ 749 Vector res(14) ; 750 iterator it( res.begin() ); 751 752 //// 753 *it = converter_type::get(t1) ; ++it ; 754 *it = converter_type::get(t2) ; ++it ; 755 *it = converter_type::get(t3) ; ++it ; 756 *it = converter_type::get(t4) ; ++it ; 757 *it = converter_type::get(t5) ; ++it ; 758 *it = converter_type::get(t6) ; ++it ; 759 *it = converter_type::get(t7) ; ++it ; 760 *it = converter_type::get(t8) ; ++it ; 761 *it = converter_type::get(t9) ; ++it ; 762 *it = converter_type::get(t10) ; ++it ; 763 *it = converter_type::get(t11) ; ++it ; 764 *it = converter_type::get(t12) ; ++it ; 765 *it = converter_type::get(t13) ; ++it ; 766 *it = converter_type::get(t14) ; ++it ; 767 //// 768 769 return res ; 770 } 771 772 template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14> create__dispatch(traits::true_type,const T1 & t1,const T2 & t2,const T3 & t3,const T4 & t4,const T5 & t5,const T6 & t6,const T7 & t7,const T8 & t8,const T9 & t9,const T10 & t10,const T11 & t11,const T12 & t12,const T13 & t13,const T14 & t14)773 static Vector create__dispatch( traits::true_type, const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5, const T6& t6, const T7& t7, const T8& t8, const T9& t9, const T10& t10, const T11& t11, const T12& t12, const T13& t13, const T14& t14){ 774 Vector res( 14 ) ; 775 Shield<SEXP> names( ::Rf_allocVector( STRSXP, 14 ) ) ; 776 int index = 0 ; 777 iterator it( res.begin() ); 778 779 //// 780 replace_element( it, names, index, t1 ) ; ++it; ++index ; 781 replace_element( it, names, index, t2 ) ; ++it; ++index ; 782 replace_element( it, names, index, t3 ) ; ++it; ++index ; 783 replace_element( it, names, index, t4 ) ; ++it; ++index ; 784 replace_element( it, names, index, t5 ) ; ++it; ++index ; 785 replace_element( it, names, index, t6 ) ; ++it; ++index ; 786 replace_element( it, names, index, t7 ) ; ++it; ++index ; 787 replace_element( it, names, index, t8 ) ; ++it; ++index ; 788 replace_element( it, names, index, t9 ) ; ++it; ++index ; 789 replace_element( it, names, index, t10 ) ; ++it; ++index ; 790 replace_element( it, names, index, t11 ) ; ++it; ++index ; 791 replace_element( it, names, index, t12 ) ; ++it; ++index ; 792 replace_element( it, names, index, t13 ) ; ++it; ++index ; 793 replace_element( it, names, index, t14 ) ; ++it; ++index ; 794 //// 795 796 res.attr("names") = names ; 797 798 return res ; 799 } 800 801 public: 802 803 template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15> create(const T1 & t1,const T2 & t2,const T3 & t3,const T4 & t4,const T5 & t5,const T6 & t6,const T7 & t7,const T8 & t8,const T9 & t9,const T10 & t10,const T11 & t11,const T12 & t12,const T13 & t13,const T14 & t14,const T15 & t15)804 static Vector create(const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5, const T6& t6, const T7& t7, const T8& t8, const T9& t9, const T10& t10, const T11& t11, const T12& t12, const T13& t13, const T14& t14, const T15& t15){ 805 return create__dispatch( typename traits::integral_constant<bool, 806 traits::is_named<T1>::value || traits::is_named<T2>::value || traits::is_named<T3>::value || traits::is_named<T4>::value || traits::is_named<T5>::value || traits::is_named<T6>::value || traits::is_named<T7>::value || traits::is_named<T8>::value || traits::is_named<T9>::value || traits::is_named<T10>::value || traits::is_named<T11>::value || traits::is_named<T12>::value || traits::is_named<T13>::value || traits::is_named<T14>::value || traits::is_named<T15>::value 807 >::type(), t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15 ) ; 808 } 809 810 private: 811 812 template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15> create__dispatch(traits::false_type,const T1 & t1,const T2 & t2,const T3 & t3,const T4 & t4,const T5 & t5,const T6 & t6,const T7 & t7,const T8 & t8,const T9 & t9,const T10 & t10,const T11 & t11,const T12 & t12,const T13 & t13,const T14 & t14,const T15 & t15)813 static Vector create__dispatch( traits::false_type, const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5, const T6& t6, const T7& t7, const T8& t8, const T9& t9, const T10& t10, const T11& t11, const T12& t12, const T13& t13, const T14& t14, const T15& t15 ){ 814 Vector res(15) ; 815 iterator it( res.begin() ); 816 817 //// 818 *it = converter_type::get(t1) ; ++it ; 819 *it = converter_type::get(t2) ; ++it ; 820 *it = converter_type::get(t3) ; ++it ; 821 *it = converter_type::get(t4) ; ++it ; 822 *it = converter_type::get(t5) ; ++it ; 823 *it = converter_type::get(t6) ; ++it ; 824 *it = converter_type::get(t7) ; ++it ; 825 *it = converter_type::get(t8) ; ++it ; 826 *it = converter_type::get(t9) ; ++it ; 827 *it = converter_type::get(t10) ; ++it ; 828 *it = converter_type::get(t11) ; ++it ; 829 *it = converter_type::get(t12) ; ++it ; 830 *it = converter_type::get(t13) ; ++it ; 831 *it = converter_type::get(t14) ; ++it ; 832 *it = converter_type::get(t15) ; ++it ; 833 //// 834 835 return res ; 836 } 837 838 template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15> create__dispatch(traits::true_type,const T1 & t1,const T2 & t2,const T3 & t3,const T4 & t4,const T5 & t5,const T6 & t6,const T7 & t7,const T8 & t8,const T9 & t9,const T10 & t10,const T11 & t11,const T12 & t12,const T13 & t13,const T14 & t14,const T15 & t15)839 static Vector create__dispatch( traits::true_type, const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5, const T6& t6, const T7& t7, const T8& t8, const T9& t9, const T10& t10, const T11& t11, const T12& t12, const T13& t13, const T14& t14, const T15& t15){ 840 Vector res( 15 ) ; 841 Shield<SEXP> names( ::Rf_allocVector( STRSXP, 15 ) ) ; 842 int index = 0 ; 843 iterator it( res.begin() ); 844 845 //// 846 replace_element( it, names, index, t1 ) ; ++it; ++index ; 847 replace_element( it, names, index, t2 ) ; ++it; ++index ; 848 replace_element( it, names, index, t3 ) ; ++it; ++index ; 849 replace_element( it, names, index, t4 ) ; ++it; ++index ; 850 replace_element( it, names, index, t5 ) ; ++it; ++index ; 851 replace_element( it, names, index, t6 ) ; ++it; ++index ; 852 replace_element( it, names, index, t7 ) ; ++it; ++index ; 853 replace_element( it, names, index, t8 ) ; ++it; ++index ; 854 replace_element( it, names, index, t9 ) ; ++it; ++index ; 855 replace_element( it, names, index, t10 ) ; ++it; ++index ; 856 replace_element( it, names, index, t11 ) ; ++it; ++index ; 857 replace_element( it, names, index, t12 ) ; ++it; ++index ; 858 replace_element( it, names, index, t13 ) ; ++it; ++index ; 859 replace_element( it, names, index, t14 ) ; ++it; ++index ; 860 replace_element( it, names, index, t15 ) ; ++it; ++index ; 861 //// 862 863 res.attr("names") = names ; 864 865 return res ; 866 } 867 868 public: 869 870 template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16> create(const T1 & t1,const T2 & t2,const T3 & t3,const T4 & t4,const T5 & t5,const T6 & t6,const T7 & t7,const T8 & t8,const T9 & t9,const T10 & t10,const T11 & t11,const T12 & t12,const T13 & t13,const T14 & t14,const T15 & t15,const T16 & t16)871 static Vector create(const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5, const T6& t6, const T7& t7, const T8& t8, const T9& t9, const T10& t10, const T11& t11, const T12& t12, const T13& t13, const T14& t14, const T15& t15, const T16& t16){ 872 return create__dispatch( typename traits::integral_constant<bool, 873 traits::is_named<T1>::value || traits::is_named<T2>::value || traits::is_named<T3>::value || traits::is_named<T4>::value || traits::is_named<T5>::value || traits::is_named<T6>::value || traits::is_named<T7>::value || traits::is_named<T8>::value || traits::is_named<T9>::value || traits::is_named<T10>::value || traits::is_named<T11>::value || traits::is_named<T12>::value || traits::is_named<T13>::value || traits::is_named<T14>::value || traits::is_named<T15>::value || traits::is_named<T16>::value 874 >::type(), t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16 ) ; 875 } 876 877 private: 878 879 template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16> create__dispatch(traits::false_type,const T1 & t1,const T2 & t2,const T3 & t3,const T4 & t4,const T5 & t5,const T6 & t6,const T7 & t7,const T8 & t8,const T9 & t9,const T10 & t10,const T11 & t11,const T12 & t12,const T13 & t13,const T14 & t14,const T15 & t15,const T16 & t16)880 static Vector create__dispatch( traits::false_type, const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5, const T6& t6, const T7& t7, const T8& t8, const T9& t9, const T10& t10, const T11& t11, const T12& t12, const T13& t13, const T14& t14, const T15& t15, const T16& t16 ){ 881 Vector res(16) ; 882 iterator it( res.begin() ); 883 884 //// 885 *it = converter_type::get(t1) ; ++it ; 886 *it = converter_type::get(t2) ; ++it ; 887 *it = converter_type::get(t3) ; ++it ; 888 *it = converter_type::get(t4) ; ++it ; 889 *it = converter_type::get(t5) ; ++it ; 890 *it = converter_type::get(t6) ; ++it ; 891 *it = converter_type::get(t7) ; ++it ; 892 *it = converter_type::get(t8) ; ++it ; 893 *it = converter_type::get(t9) ; ++it ; 894 *it = converter_type::get(t10) ; ++it ; 895 *it = converter_type::get(t11) ; ++it ; 896 *it = converter_type::get(t12) ; ++it ; 897 *it = converter_type::get(t13) ; ++it ; 898 *it = converter_type::get(t14) ; ++it ; 899 *it = converter_type::get(t15) ; ++it ; 900 *it = converter_type::get(t16) ; ++it ; 901 //// 902 903 return res ; 904 } 905 906 template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16> create__dispatch(traits::true_type,const T1 & t1,const T2 & t2,const T3 & t3,const T4 & t4,const T5 & t5,const T6 & t6,const T7 & t7,const T8 & t8,const T9 & t9,const T10 & t10,const T11 & t11,const T12 & t12,const T13 & t13,const T14 & t14,const T15 & t15,const T16 & t16)907 static Vector create__dispatch( traits::true_type, const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5, const T6& t6, const T7& t7, const T8& t8, const T9& t9, const T10& t10, const T11& t11, const T12& t12, const T13& t13, const T14& t14, const T15& t15, const T16& t16){ 908 Vector res( 16 ) ; 909 Shield<SEXP> names( ::Rf_allocVector( STRSXP, 16 ) ) ; 910 int index = 0 ; 911 iterator it( res.begin() ); 912 913 //// 914 replace_element( it, names, index, t1 ) ; ++it; ++index ; 915 replace_element( it, names, index, t2 ) ; ++it; ++index ; 916 replace_element( it, names, index, t3 ) ; ++it; ++index ; 917 replace_element( it, names, index, t4 ) ; ++it; ++index ; 918 replace_element( it, names, index, t5 ) ; ++it; ++index ; 919 replace_element( it, names, index, t6 ) ; ++it; ++index ; 920 replace_element( it, names, index, t7 ) ; ++it; ++index ; 921 replace_element( it, names, index, t8 ) ; ++it; ++index ; 922 replace_element( it, names, index, t9 ) ; ++it; ++index ; 923 replace_element( it, names, index, t10 ) ; ++it; ++index ; 924 replace_element( it, names, index, t11 ) ; ++it; ++index ; 925 replace_element( it, names, index, t12 ) ; ++it; ++index ; 926 replace_element( it, names, index, t13 ) ; ++it; ++index ; 927 replace_element( it, names, index, t14 ) ; ++it; ++index ; 928 replace_element( it, names, index, t15 ) ; ++it; ++index ; 929 replace_element( it, names, index, t16 ) ; ++it; ++index ; 930 //// 931 932 res.attr("names") = names ; 933 934 return res ; 935 } 936 937 public: 938 939 template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17> create(const T1 & t1,const T2 & t2,const T3 & t3,const T4 & t4,const T5 & t5,const T6 & t6,const T7 & t7,const T8 & t8,const T9 & t9,const T10 & t10,const T11 & t11,const T12 & t12,const T13 & t13,const T14 & t14,const T15 & t15,const T16 & t16,const T17 & t17)940 static Vector create(const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5, const T6& t6, const T7& t7, const T8& t8, const T9& t9, const T10& t10, const T11& t11, const T12& t12, const T13& t13, const T14& t14, const T15& t15, const T16& t16, const T17& t17){ 941 return create__dispatch( typename traits::integral_constant<bool, 942 traits::is_named<T1>::value || traits::is_named<T2>::value || traits::is_named<T3>::value || traits::is_named<T4>::value || traits::is_named<T5>::value || traits::is_named<T6>::value || traits::is_named<T7>::value || traits::is_named<T8>::value || traits::is_named<T9>::value || traits::is_named<T10>::value || traits::is_named<T11>::value || traits::is_named<T12>::value || traits::is_named<T13>::value || traits::is_named<T14>::value || traits::is_named<T15>::value || traits::is_named<T16>::value || traits::is_named<T17>::value 943 >::type(), t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17 ) ; 944 } 945 946 private: 947 948 template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17> create__dispatch(traits::false_type,const T1 & t1,const T2 & t2,const T3 & t3,const T4 & t4,const T5 & t5,const T6 & t6,const T7 & t7,const T8 & t8,const T9 & t9,const T10 & t10,const T11 & t11,const T12 & t12,const T13 & t13,const T14 & t14,const T15 & t15,const T16 & t16,const T17 & t17)949 static Vector create__dispatch( traits::false_type, const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5, const T6& t6, const T7& t7, const T8& t8, const T9& t9, const T10& t10, const T11& t11, const T12& t12, const T13& t13, const T14& t14, const T15& t15, const T16& t16, const T17& t17 ){ 950 Vector res(17) ; 951 iterator it( res.begin() ); 952 953 //// 954 *it = converter_type::get(t1) ; ++it ; 955 *it = converter_type::get(t2) ; ++it ; 956 *it = converter_type::get(t3) ; ++it ; 957 *it = converter_type::get(t4) ; ++it ; 958 *it = converter_type::get(t5) ; ++it ; 959 *it = converter_type::get(t6) ; ++it ; 960 *it = converter_type::get(t7) ; ++it ; 961 *it = converter_type::get(t8) ; ++it ; 962 *it = converter_type::get(t9) ; ++it ; 963 *it = converter_type::get(t10) ; ++it ; 964 *it = converter_type::get(t11) ; ++it ; 965 *it = converter_type::get(t12) ; ++it ; 966 *it = converter_type::get(t13) ; ++it ; 967 *it = converter_type::get(t14) ; ++it ; 968 *it = converter_type::get(t15) ; ++it ; 969 *it = converter_type::get(t16) ; ++it ; 970 *it = converter_type::get(t17) ; ++it ; 971 //// 972 973 return res ; 974 } 975 976 template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17> create__dispatch(traits::true_type,const T1 & t1,const T2 & t2,const T3 & t3,const T4 & t4,const T5 & t5,const T6 & t6,const T7 & t7,const T8 & t8,const T9 & t9,const T10 & t10,const T11 & t11,const T12 & t12,const T13 & t13,const T14 & t14,const T15 & t15,const T16 & t16,const T17 & t17)977 static Vector create__dispatch( traits::true_type, const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5, const T6& t6, const T7& t7, const T8& t8, const T9& t9, const T10& t10, const T11& t11, const T12& t12, const T13& t13, const T14& t14, const T15& t15, const T16& t16, const T17& t17){ 978 Vector res( 17 ) ; 979 Shield<SEXP> names( ::Rf_allocVector( STRSXP, 17 ) ) ; 980 int index = 0 ; 981 iterator it( res.begin() ); 982 983 //// 984 replace_element( it, names, index, t1 ) ; ++it; ++index ; 985 replace_element( it, names, index, t2 ) ; ++it; ++index ; 986 replace_element( it, names, index, t3 ) ; ++it; ++index ; 987 replace_element( it, names, index, t4 ) ; ++it; ++index ; 988 replace_element( it, names, index, t5 ) ; ++it; ++index ; 989 replace_element( it, names, index, t6 ) ; ++it; ++index ; 990 replace_element( it, names, index, t7 ) ; ++it; ++index ; 991 replace_element( it, names, index, t8 ) ; ++it; ++index ; 992 replace_element( it, names, index, t9 ) ; ++it; ++index ; 993 replace_element( it, names, index, t10 ) ; ++it; ++index ; 994 replace_element( it, names, index, t11 ) ; ++it; ++index ; 995 replace_element( it, names, index, t12 ) ; ++it; ++index ; 996 replace_element( it, names, index, t13 ) ; ++it; ++index ; 997 replace_element( it, names, index, t14 ) ; ++it; ++index ; 998 replace_element( it, names, index, t15 ) ; ++it; ++index ; 999 replace_element( it, names, index, t16 ) ; ++it; ++index ; 1000 replace_element( it, names, index, t17 ) ; ++it; ++index ; 1001 //// 1002 1003 res.attr("names") = names ; 1004 1005 return res ; 1006 } 1007 1008 public: 1009 1010 template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18> create(const T1 & t1,const T2 & t2,const T3 & t3,const T4 & t4,const T5 & t5,const T6 & t6,const T7 & t7,const T8 & t8,const T9 & t9,const T10 & t10,const T11 & t11,const T12 & t12,const T13 & t13,const T14 & t14,const T15 & t15,const T16 & t16,const T17 & t17,const T18 & t18)1011 static Vector create(const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5, const T6& t6, const T7& t7, const T8& t8, const T9& t9, const T10& t10, const T11& t11, const T12& t12, const T13& t13, const T14& t14, const T15& t15, const T16& t16, const T17& t17, const T18& t18){ 1012 return create__dispatch( typename traits::integral_constant<bool, 1013 traits::is_named<T1>::value || traits::is_named<T2>::value || traits::is_named<T3>::value || traits::is_named<T4>::value || traits::is_named<T5>::value || traits::is_named<T6>::value || traits::is_named<T7>::value || traits::is_named<T8>::value || traits::is_named<T9>::value || traits::is_named<T10>::value || traits::is_named<T11>::value || traits::is_named<T12>::value || traits::is_named<T13>::value || traits::is_named<T14>::value || traits::is_named<T15>::value || traits::is_named<T16>::value || traits::is_named<T17>::value || traits::is_named<T18>::value 1014 >::type(), t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18 ) ; 1015 } 1016 1017 private: 1018 1019 template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18> create__dispatch(traits::false_type,const T1 & t1,const T2 & t2,const T3 & t3,const T4 & t4,const T5 & t5,const T6 & t6,const T7 & t7,const T8 & t8,const T9 & t9,const T10 & t10,const T11 & t11,const T12 & t12,const T13 & t13,const T14 & t14,const T15 & t15,const T16 & t16,const T17 & t17,const T18 & t18)1020 static Vector create__dispatch( traits::false_type, const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5, const T6& t6, const T7& t7, const T8& t8, const T9& t9, const T10& t10, const T11& t11, const T12& t12, const T13& t13, const T14& t14, const T15& t15, const T16& t16, const T17& t17, const T18& t18 ){ 1021 Vector res(18) ; 1022 iterator it( res.begin() ); 1023 1024 //// 1025 *it = converter_type::get(t1) ; ++it ; 1026 *it = converter_type::get(t2) ; ++it ; 1027 *it = converter_type::get(t3) ; ++it ; 1028 *it = converter_type::get(t4) ; ++it ; 1029 *it = converter_type::get(t5) ; ++it ; 1030 *it = converter_type::get(t6) ; ++it ; 1031 *it = converter_type::get(t7) ; ++it ; 1032 *it = converter_type::get(t8) ; ++it ; 1033 *it = converter_type::get(t9) ; ++it ; 1034 *it = converter_type::get(t10) ; ++it ; 1035 *it = converter_type::get(t11) ; ++it ; 1036 *it = converter_type::get(t12) ; ++it ; 1037 *it = converter_type::get(t13) ; ++it ; 1038 *it = converter_type::get(t14) ; ++it ; 1039 *it = converter_type::get(t15) ; ++it ; 1040 *it = converter_type::get(t16) ; ++it ; 1041 *it = converter_type::get(t17) ; ++it ; 1042 *it = converter_type::get(t18) ; ++it ; 1043 //// 1044 1045 return res ; 1046 } 1047 1048 template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18> create__dispatch(traits::true_type,const T1 & t1,const T2 & t2,const T3 & t3,const T4 & t4,const T5 & t5,const T6 & t6,const T7 & t7,const T8 & t8,const T9 & t9,const T10 & t10,const T11 & t11,const T12 & t12,const T13 & t13,const T14 & t14,const T15 & t15,const T16 & t16,const T17 & t17,const T18 & t18)1049 static Vector create__dispatch( traits::true_type, const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5, const T6& t6, const T7& t7, const T8& t8, const T9& t9, const T10& t10, const T11& t11, const T12& t12, const T13& t13, const T14& t14, const T15& t15, const T16& t16, const T17& t17, const T18& t18){ 1050 Vector res( 18 ) ; 1051 Shield<SEXP> names( ::Rf_allocVector( STRSXP, 18 ) ) ; 1052 int index = 0 ; 1053 iterator it( res.begin() ); 1054 1055 //// 1056 replace_element( it, names, index, t1 ) ; ++it; ++index ; 1057 replace_element( it, names, index, t2 ) ; ++it; ++index ; 1058 replace_element( it, names, index, t3 ) ; ++it; ++index ; 1059 replace_element( it, names, index, t4 ) ; ++it; ++index ; 1060 replace_element( it, names, index, t5 ) ; ++it; ++index ; 1061 replace_element( it, names, index, t6 ) ; ++it; ++index ; 1062 replace_element( it, names, index, t7 ) ; ++it; ++index ; 1063 replace_element( it, names, index, t8 ) ; ++it; ++index ; 1064 replace_element( it, names, index, t9 ) ; ++it; ++index ; 1065 replace_element( it, names, index, t10 ) ; ++it; ++index ; 1066 replace_element( it, names, index, t11 ) ; ++it; ++index ; 1067 replace_element( it, names, index, t12 ) ; ++it; ++index ; 1068 replace_element( it, names, index, t13 ) ; ++it; ++index ; 1069 replace_element( it, names, index, t14 ) ; ++it; ++index ; 1070 replace_element( it, names, index, t15 ) ; ++it; ++index ; 1071 replace_element( it, names, index, t16 ) ; ++it; ++index ; 1072 replace_element( it, names, index, t17 ) ; ++it; ++index ; 1073 replace_element( it, names, index, t18 ) ; ++it; ++index ; 1074 //// 1075 1076 res.attr("names") = names ; 1077 1078 return res ; 1079 } 1080 1081 public: 1082 1083 template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19> create(const T1 & t1,const T2 & t2,const T3 & t3,const T4 & t4,const T5 & t5,const T6 & t6,const T7 & t7,const T8 & t8,const T9 & t9,const T10 & t10,const T11 & t11,const T12 & t12,const T13 & t13,const T14 & t14,const T15 & t15,const T16 & t16,const T17 & t17,const T18 & t18,const T19 & t19)1084 static Vector create(const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5, const T6& t6, const T7& t7, const T8& t8, const T9& t9, const T10& t10, const T11& t11, const T12& t12, const T13& t13, const T14& t14, const T15& t15, const T16& t16, const T17& t17, const T18& t18, const T19& t19){ 1085 return create__dispatch( typename traits::integral_constant<bool, 1086 traits::is_named<T1>::value || traits::is_named<T2>::value || traits::is_named<T3>::value || traits::is_named<T4>::value || traits::is_named<T5>::value || traits::is_named<T6>::value || traits::is_named<T7>::value || traits::is_named<T8>::value || traits::is_named<T9>::value || traits::is_named<T10>::value || traits::is_named<T11>::value || traits::is_named<T12>::value || traits::is_named<T13>::value || traits::is_named<T14>::value || traits::is_named<T15>::value || traits::is_named<T16>::value || traits::is_named<T17>::value || traits::is_named<T18>::value || traits::is_named<T19>::value 1087 >::type(), t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19 ) ; 1088 } 1089 1090 private: 1091 1092 template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19> create__dispatch(traits::false_type,const T1 & t1,const T2 & t2,const T3 & t3,const T4 & t4,const T5 & t5,const T6 & t6,const T7 & t7,const T8 & t8,const T9 & t9,const T10 & t10,const T11 & t11,const T12 & t12,const T13 & t13,const T14 & t14,const T15 & t15,const T16 & t16,const T17 & t17,const T18 & t18,const T19 & t19)1093 static Vector create__dispatch( traits::false_type, const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5, const T6& t6, const T7& t7, const T8& t8, const T9& t9, const T10& t10, const T11& t11, const T12& t12, const T13& t13, const T14& t14, const T15& t15, const T16& t16, const T17& t17, const T18& t18, const T19& t19 ){ 1094 Vector res(19) ; 1095 iterator it( res.begin() ); 1096 1097 //// 1098 *it = converter_type::get(t1) ; ++it ; 1099 *it = converter_type::get(t2) ; ++it ; 1100 *it = converter_type::get(t3) ; ++it ; 1101 *it = converter_type::get(t4) ; ++it ; 1102 *it = converter_type::get(t5) ; ++it ; 1103 *it = converter_type::get(t6) ; ++it ; 1104 *it = converter_type::get(t7) ; ++it ; 1105 *it = converter_type::get(t8) ; ++it ; 1106 *it = converter_type::get(t9) ; ++it ; 1107 *it = converter_type::get(t10) ; ++it ; 1108 *it = converter_type::get(t11) ; ++it ; 1109 *it = converter_type::get(t12) ; ++it ; 1110 *it = converter_type::get(t13) ; ++it ; 1111 *it = converter_type::get(t14) ; ++it ; 1112 *it = converter_type::get(t15) ; ++it ; 1113 *it = converter_type::get(t16) ; ++it ; 1114 *it = converter_type::get(t17) ; ++it ; 1115 *it = converter_type::get(t18) ; ++it ; 1116 *it = converter_type::get(t19) ; ++it ; 1117 //// 1118 1119 return res ; 1120 } 1121 1122 template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19> create__dispatch(traits::true_type,const T1 & t1,const T2 & t2,const T3 & t3,const T4 & t4,const T5 & t5,const T6 & t6,const T7 & t7,const T8 & t8,const T9 & t9,const T10 & t10,const T11 & t11,const T12 & t12,const T13 & t13,const T14 & t14,const T15 & t15,const T16 & t16,const T17 & t17,const T18 & t18,const T19 & t19)1123 static Vector create__dispatch( traits::true_type, const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5, const T6& t6, const T7& t7, const T8& t8, const T9& t9, const T10& t10, const T11& t11, const T12& t12, const T13& t13, const T14& t14, const T15& t15, const T16& t16, const T17& t17, const T18& t18, const T19& t19){ 1124 Vector res( 19 ) ; 1125 Shield<SEXP> names( ::Rf_allocVector( STRSXP, 19 ) ) ; 1126 int index = 0 ; 1127 iterator it( res.begin() ); 1128 1129 //// 1130 replace_element( it, names, index, t1 ) ; ++it; ++index ; 1131 replace_element( it, names, index, t2 ) ; ++it; ++index ; 1132 replace_element( it, names, index, t3 ) ; ++it; ++index ; 1133 replace_element( it, names, index, t4 ) ; ++it; ++index ; 1134 replace_element( it, names, index, t5 ) ; ++it; ++index ; 1135 replace_element( it, names, index, t6 ) ; ++it; ++index ; 1136 replace_element( it, names, index, t7 ) ; ++it; ++index ; 1137 replace_element( it, names, index, t8 ) ; ++it; ++index ; 1138 replace_element( it, names, index, t9 ) ; ++it; ++index ; 1139 replace_element( it, names, index, t10 ) ; ++it; ++index ; 1140 replace_element( it, names, index, t11 ) ; ++it; ++index ; 1141 replace_element( it, names, index, t12 ) ; ++it; ++index ; 1142 replace_element( it, names, index, t13 ) ; ++it; ++index ; 1143 replace_element( it, names, index, t14 ) ; ++it; ++index ; 1144 replace_element( it, names, index, t15 ) ; ++it; ++index ; 1145 replace_element( it, names, index, t16 ) ; ++it; ++index ; 1146 replace_element( it, names, index, t17 ) ; ++it; ++index ; 1147 replace_element( it, names, index, t18 ) ; ++it; ++index ; 1148 replace_element( it, names, index, t19 ) ; ++it; ++index ; 1149 //// 1150 1151 res.attr("names") = names ; 1152 1153 return res ; 1154 } 1155 1156 public: 1157 1158 template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20> create(const T1 & t1,const T2 & t2,const T3 & t3,const T4 & t4,const T5 & t5,const T6 & t6,const T7 & t7,const T8 & t8,const T9 & t9,const T10 & t10,const T11 & t11,const T12 & t12,const T13 & t13,const T14 & t14,const T15 & t15,const T16 & t16,const T17 & t17,const T18 & t18,const T19 & t19,const T20 & t20)1159 static Vector create(const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5, const T6& t6, const T7& t7, const T8& t8, const T9& t9, const T10& t10, const T11& t11, const T12& t12, const T13& t13, const T14& t14, const T15& t15, const T16& t16, const T17& t17, const T18& t18, const T19& t19, const T20& t20){ 1160 return create__dispatch( typename traits::integral_constant<bool, 1161 traits::is_named<T1>::value || traits::is_named<T2>::value || traits::is_named<T3>::value || traits::is_named<T4>::value || traits::is_named<T5>::value || traits::is_named<T6>::value || traits::is_named<T7>::value || traits::is_named<T8>::value || traits::is_named<T9>::value || traits::is_named<T10>::value || traits::is_named<T11>::value || traits::is_named<T12>::value || traits::is_named<T13>::value || traits::is_named<T14>::value || traits::is_named<T15>::value || traits::is_named<T16>::value || traits::is_named<T17>::value || traits::is_named<T18>::value || traits::is_named<T19>::value || traits::is_named<T20>::value 1162 >::type(), t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20 ) ; 1163 } 1164 1165 private: 1166 1167 template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20> create__dispatch(traits::false_type,const T1 & t1,const T2 & t2,const T3 & t3,const T4 & t4,const T5 & t5,const T6 & t6,const T7 & t7,const T8 & t8,const T9 & t9,const T10 & t10,const T11 & t11,const T12 & t12,const T13 & t13,const T14 & t14,const T15 & t15,const T16 & t16,const T17 & t17,const T18 & t18,const T19 & t19,const T20 & t20)1168 static Vector create__dispatch( traits::false_type, const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5, const T6& t6, const T7& t7, const T8& t8, const T9& t9, const T10& t10, const T11& t11, const T12& t12, const T13& t13, const T14& t14, const T15& t15, const T16& t16, const T17& t17, const T18& t18, const T19& t19, const T20& t20 ){ 1169 Vector res(20) ; 1170 iterator it( res.begin() ); 1171 1172 //// 1173 *it = converter_type::get(t1) ; ++it ; 1174 *it = converter_type::get(t2) ; ++it ; 1175 *it = converter_type::get(t3) ; ++it ; 1176 *it = converter_type::get(t4) ; ++it ; 1177 *it = converter_type::get(t5) ; ++it ; 1178 *it = converter_type::get(t6) ; ++it ; 1179 *it = converter_type::get(t7) ; ++it ; 1180 *it = converter_type::get(t8) ; ++it ; 1181 *it = converter_type::get(t9) ; ++it ; 1182 *it = converter_type::get(t10) ; ++it ; 1183 *it = converter_type::get(t11) ; ++it ; 1184 *it = converter_type::get(t12) ; ++it ; 1185 *it = converter_type::get(t13) ; ++it ; 1186 *it = converter_type::get(t14) ; ++it ; 1187 *it = converter_type::get(t15) ; ++it ; 1188 *it = converter_type::get(t16) ; ++it ; 1189 *it = converter_type::get(t17) ; ++it ; 1190 *it = converter_type::get(t18) ; ++it ; 1191 *it = converter_type::get(t19) ; ++it ; 1192 *it = converter_type::get(t20) ; ++it ; 1193 //// 1194 1195 return res ; 1196 } 1197 1198 template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20> create__dispatch(traits::true_type,const T1 & t1,const T2 & t2,const T3 & t3,const T4 & t4,const T5 & t5,const T6 & t6,const T7 & t7,const T8 & t8,const T9 & t9,const T10 & t10,const T11 & t11,const T12 & t12,const T13 & t13,const T14 & t14,const T15 & t15,const T16 & t16,const T17 & t17,const T18 & t18,const T19 & t19,const T20 & t20)1199 static Vector create__dispatch( traits::true_type, const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5, const T6& t6, const T7& t7, const T8& t8, const T9& t9, const T10& t10, const T11& t11, const T12& t12, const T13& t13, const T14& t14, const T15& t15, const T16& t16, const T17& t17, const T18& t18, const T19& t19, const T20& t20){ 1200 Vector res( 20 ) ; 1201 Shield<SEXP> names( ::Rf_allocVector( STRSXP, 20 ) ) ; 1202 int index = 0 ; 1203 iterator it( res.begin() ); 1204 1205 //// 1206 replace_element( it, names, index, t1 ) ; ++it; ++index ; 1207 replace_element( it, names, index, t2 ) ; ++it; ++index ; 1208 replace_element( it, names, index, t3 ) ; ++it; ++index ; 1209 replace_element( it, names, index, t4 ) ; ++it; ++index ; 1210 replace_element( it, names, index, t5 ) ; ++it; ++index ; 1211 replace_element( it, names, index, t6 ) ; ++it; ++index ; 1212 replace_element( it, names, index, t7 ) ; ++it; ++index ; 1213 replace_element( it, names, index, t8 ) ; ++it; ++index ; 1214 replace_element( it, names, index, t9 ) ; ++it; ++index ; 1215 replace_element( it, names, index, t10 ) ; ++it; ++index ; 1216 replace_element( it, names, index, t11 ) ; ++it; ++index ; 1217 replace_element( it, names, index, t12 ) ; ++it; ++index ; 1218 replace_element( it, names, index, t13 ) ; ++it; ++index ; 1219 replace_element( it, names, index, t14 ) ; ++it; ++index ; 1220 replace_element( it, names, index, t15 ) ; ++it; ++index ; 1221 replace_element( it, names, index, t16 ) ; ++it; ++index ; 1222 replace_element( it, names, index, t17 ) ; ++it; ++index ; 1223 replace_element( it, names, index, t18 ) ; ++it; ++index ; 1224 replace_element( it, names, index, t19 ) ; ++it; ++index ; 1225 replace_element( it, names, index, t20 ) ; ++it; ++index ; 1226 //// 1227 1228 res.attr("names") = names ; 1229 1230 return res ; 1231 } 1232 1233 /* </code-bloat> */ 1234 1235 #endif 1236