00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041 #ifndef GTEST_INCLUDE_GTEST_GTEST_PARAM_TEST_H_
00042 #define GTEST_INCLUDE_GTEST_GTEST_PARAM_TEST_H_
00043
00044
00045
00046
00047
00048
00049
00050 #if 0
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060 class FooTest : public ::testing::TestWithParam<const char*> {
00061
00062 };
00063
00064
00065
00066
00067
00068 TEST_P(FooTest, DoesBlah) {
00069
00070
00071 EXPECT_TRUE(foo.Blah(GetParam()));
00072 ...
00073 }
00074
00075 TEST_P(FooTest, HasBlahBlah) {
00076 ...
00077 }
00078
00079
00080
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090
00091
00092
00093
00094
00095
00096
00097
00098
00099
00100
00101
00102
00103 INSTANTIATE_TEST_CASE_P(InstantiationName,
00104 FooTest,
00105 Values("meeny", "miny", "moe"));
00106
00107
00108
00109
00110
00111
00112
00113
00114
00115
00116
00117
00118
00119
00120
00121
00122
00123
00124
00125
00126 const char* pets[] = {"cat", "dog"};
00127 INSTANTIATE_TEST_CASE_P(AnotherInstantiationName, FooTest, ValuesIn(pets));
00128
00129
00130
00131
00132
00133
00134
00135
00136
00137
00138
00139
00140
00141
00142
00143
00144
00145
00146
00147
00148
00149
00150
00151
00152
00153
00154
00155
00156
00157
00158
00159
00160
00161
00162 class BaseTest : public ::testing::Test {
00163
00164
00165 };
00166
00167 class DerivedTest : public BaseTest, public ::testing::WithParamInterface<int> {
00168
00169 };
00170
00171 TEST_F(BaseTest, HasFoo) {
00172
00173 }
00174
00175 TEST_P(DerivedTest, DoesBlah) {
00176
00177 EXPECT_TRUE(foo.Blah(GetParam()));
00178 }
00179
00180 #endif // 0
00181
00182 #include "gtest/internal/gtest-port.h"
00183
00184 #if !GTEST_OS_SYMBIAN
00185 # include <utility>
00186 #endif
00187
00188
00189
00190
00191 #include "gtest/internal/gtest-internal.h"
00192 #include "gtest/internal/gtest-param-util.h"
00193 #include "gtest/internal/gtest-param-util-generated.h"
00194
00195 #if GTEST_HAS_PARAM_TEST
00196
00197 namespace testing {
00198
00199
00200
00201
00202
00203
00204
00205
00206
00207
00208
00209
00210
00211
00212
00213
00214
00215
00216
00217
00218
00219
00220
00221
00222
00223
00224
00225
00226
00227
00228
00229
00230
00231
00232
00233
00234
00235
00236
00237
00238
00239
00240
00241 template <typename T, typename IncrementT>
00242 internal::ParamGenerator<T> Range(T start, T end, IncrementT step) {
00243 return internal::ParamGenerator<T>(
00244 new internal::RangeGenerator<T, IncrementT>(start, end, step));
00245 }
00246
00247 template <typename T>
00248 internal::ParamGenerator<T> Range(T start, T end) {
00249 return Range(start, end, 1);
00250 }
00251
00252
00253
00254
00255
00256
00257
00258
00259
00260
00261
00262
00263
00264
00265
00266
00267
00268
00269
00270
00271
00272
00273
00274
00275
00276
00277
00278
00279
00280
00281
00282
00283
00284
00285
00286
00287
00288
00289
00290
00291
00292
00293
00294
00295
00296
00297
00298
00299
00300
00301
00302
00303
00304
00305
00306
00307 template <typename ForwardIterator>
00308 internal::ParamGenerator<
00309 typename ::testing::internal::IteratorTraits<ForwardIterator>::value_type>
00310 ValuesIn(ForwardIterator begin, ForwardIterator end) {
00311 typedef typename ::testing::internal::IteratorTraits<ForwardIterator>
00312 ::value_type ParamType;
00313 return internal::ParamGenerator<ParamType>(
00314 new internal::ValuesInIteratorRangeGenerator<ParamType>(begin, end));
00315 }
00316
00317 template <typename T, size_t N>
00318 internal::ParamGenerator<T> ValuesIn(const T (&array)[N]) {
00319 return ValuesIn(array, array + N);
00320 }
00321
00322 template <class Container>
00323 internal::ParamGenerator<typename Container::value_type> ValuesIn(
00324 const Container& container) {
00325 return ValuesIn(container.begin(), container.end());
00326 }
00327
00328
00329
00330
00331
00332
00333
00334
00335
00336
00337
00338
00339
00340
00341
00342
00343
00344
00345
00346
00347 template <typename T1>
00348 internal::ValueArray1<T1> Values(T1 v1) {
00349 return internal::ValueArray1<T1>(v1);
00350 }
00351
00352 template <typename T1, typename T2>
00353 internal::ValueArray2<T1, T2> Values(T1 v1, T2 v2) {
00354 return internal::ValueArray2<T1, T2>(v1, v2);
00355 }
00356
00357 template <typename T1, typename T2, typename T3>
00358 internal::ValueArray3<T1, T2, T3> Values(T1 v1, T2 v2, T3 v3) {
00359 return internal::ValueArray3<T1, T2, T3>(v1, v2, v3);
00360 }
00361
00362 template <typename T1, typename T2, typename T3, typename T4>
00363 internal::ValueArray4<T1, T2, T3, T4> Values(T1 v1, T2 v2, T3 v3, T4 v4) {
00364 return internal::ValueArray4<T1, T2, T3, T4>(v1, v2, v3, v4);
00365 }
00366
00367 template <typename T1, typename T2, typename T3, typename T4, typename T5>
00368 internal::ValueArray5<T1, T2, T3, T4, T5> Values(T1 v1, T2 v2, T3 v3, T4 v4,
00369 T5 v5) {
00370 return internal::ValueArray5<T1, T2, T3, T4, T5>(v1, v2, v3, v4, v5);
00371 }
00372
00373 template <typename T1, typename T2, typename T3, typename T4, typename T5,
00374 typename T6>
00375 internal::ValueArray6<T1, T2, T3, T4, T5, T6> Values(T1 v1, T2 v2, T3 v3,
00376 T4 v4, T5 v5, T6 v6) {
00377 return internal::ValueArray6<T1, T2, T3, T4, T5, T6>(v1, v2, v3, v4, v5, v6);
00378 }
00379
00380 template <typename T1, typename T2, typename T3, typename T4, typename T5,
00381 typename T6, typename T7>
00382 internal::ValueArray7<T1, T2, T3, T4, T5, T6, T7> Values(T1 v1, T2 v2, T3 v3,
00383 T4 v4, T5 v5, T6 v6, T7 v7) {
00384 return internal::ValueArray7<T1, T2, T3, T4, T5, T6, T7>(v1, v2, v3, v4, v5,
00385 v6, v7);
00386 }
00387
00388 template <typename T1, typename T2, typename T3, typename T4, typename T5,
00389 typename T6, typename T7, typename T8>
00390 internal::ValueArray8<T1, T2, T3, T4, T5, T6, T7, T8> Values(T1 v1, T2 v2,
00391 T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8) {
00392 return internal::ValueArray8<T1, T2, T3, T4, T5, T6, T7, T8>(v1, v2, v3, v4,
00393 v5, v6, v7, v8);
00394 }
00395
00396 template <typename T1, typename T2, typename T3, typename T4, typename T5,
00397 typename T6, typename T7, typename T8, typename T9>
00398 internal::ValueArray9<T1, T2, T3, T4, T5, T6, T7, T8, T9> Values(T1 v1, T2 v2,
00399 T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9) {
00400 return internal::ValueArray9<T1, T2, T3, T4, T5, T6, T7, T8, T9>(v1, v2, v3,
00401 v4, v5, v6, v7, v8, v9);
00402 }
00403
00404 template <typename T1, typename T2, typename T3, typename T4, typename T5,
00405 typename T6, typename T7, typename T8, typename T9, typename T10>
00406 internal::ValueArray10<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> Values(T1 v1,
00407 T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10) {
00408 return internal::ValueArray10<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>(v1,
00409 v2, v3, v4, v5, v6, v7, v8, v9, v10);
00410 }
00411
00412 template <typename T1, typename T2, typename T3, typename T4, typename T5,
00413 typename T6, typename T7, typename T8, typename T9, typename T10,
00414 typename T11>
00415 internal::ValueArray11<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10,
00416 T11> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
00417 T10 v10, T11 v11) {
00418 return internal::ValueArray11<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10,
00419 T11>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11);
00420 }
00421
00422 template <typename T1, typename T2, typename T3, typename T4, typename T5,
00423 typename T6, typename T7, typename T8, typename T9, typename T10,
00424 typename T11, typename T12>
00425 internal::ValueArray12<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
00426 T12> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
00427 T10 v10, T11 v11, T12 v12) {
00428 return internal::ValueArray12<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
00429 T12>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12);
00430 }
00431
00432 template <typename T1, typename T2, typename T3, typename T4, typename T5,
00433 typename T6, typename T7, typename T8, typename T9, typename T10,
00434 typename T11, typename T12, typename T13>
00435 internal::ValueArray13<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
00436 T13> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
00437 T10 v10, T11 v11, T12 v12, T13 v13) {
00438 return internal::ValueArray13<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
00439 T12, T13>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13);
00440 }
00441
00442 template <typename T1, typename T2, typename T3, typename T4, typename T5,
00443 typename T6, typename T7, typename T8, typename T9, typename T10,
00444 typename T11, typename T12, typename T13, typename T14>
00445 internal::ValueArray14<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
00446 T14> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
00447 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14) {
00448 return internal::ValueArray14<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
00449 T12, T13, T14>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13,
00450 v14);
00451 }
00452
00453 template <typename T1, typename T2, typename T3, typename T4, typename T5,
00454 typename T6, typename T7, typename T8, typename T9, typename T10,
00455 typename T11, typename T12, typename T13, typename T14, typename T15>
00456 internal::ValueArray15<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
00457 T14, T15> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8,
00458 T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15) {
00459 return internal::ValueArray15<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
00460 T12, T13, T14, T15>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12,
00461 v13, v14, v15);
00462 }
00463
00464 template <typename T1, typename T2, typename T3, typename T4, typename T5,
00465 typename T6, typename T7, typename T8, typename T9, typename T10,
00466 typename T11, typename T12, typename T13, typename T14, typename T15,
00467 typename T16>
00468 internal::ValueArray16<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
00469 T14, T15, T16> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7,
00470 T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15,
00471 T16 v16) {
00472 return internal::ValueArray16<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
00473 T12, T13, T14, T15, T16>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11,
00474 v12, v13, v14, v15, v16);
00475 }
00476
00477 template <typename T1, typename T2, typename T3, typename T4, typename T5,
00478 typename T6, typename T7, typename T8, typename T9, typename T10,
00479 typename T11, typename T12, typename T13, typename T14, typename T15,
00480 typename T16, typename T17>
00481 internal::ValueArray17<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
00482 T14, T15, T16, T17> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7,
00483 T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15,
00484 T16 v16, T17 v17) {
00485 return internal::ValueArray17<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
00486 T12, T13, T14, T15, T16, T17>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10,
00487 v11, v12, v13, v14, v15, v16, v17);
00488 }
00489
00490 template <typename T1, typename T2, typename T3, typename T4, typename T5,
00491 typename T6, typename T7, typename T8, typename T9, typename T10,
00492 typename T11, typename T12, typename T13, typename T14, typename T15,
00493 typename T16, typename T17, typename T18>
00494 internal::ValueArray18<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
00495 T14, T15, T16, T17, T18> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6,
00496 T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15,
00497 T16 v16, T17 v17, T18 v18) {
00498 return internal::ValueArray18<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
00499 T12, T13, T14, T15, T16, T17, T18>(v1, v2, v3, v4, v5, v6, v7, v8, v9,
00500 v10, v11, v12, v13, v14, v15, v16, v17, v18);
00501 }
00502
00503 template <typename T1, typename T2, typename T3, typename T4, typename T5,
00504 typename T6, typename T7, typename T8, typename T9, typename T10,
00505 typename T11, typename T12, typename T13, typename T14, typename T15,
00506 typename T16, typename T17, typename T18, typename T19>
00507 internal::ValueArray19<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
00508 T14, T15, T16, T17, T18, T19> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5,
00509 T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14,
00510 T15 v15, T16 v16, T17 v17, T18 v18, T19 v19) {
00511 return internal::ValueArray19<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
00512 T12, T13, T14, T15, T16, T17, T18, T19>(v1, v2, v3, v4, v5, v6, v7, v8,
00513 v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19);
00514 }
00515
00516 template <typename T1, typename T2, typename T3, typename T4, typename T5,
00517 typename T6, typename T7, typename T8, typename T9, typename T10,
00518 typename T11, typename T12, typename T13, typename T14, typename T15,
00519 typename T16, typename T17, typename T18, typename T19, typename T20>
00520 internal::ValueArray20<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
00521 T14, T15, T16, T17, T18, T19, T20> Values(T1 v1, T2 v2, T3 v3, T4 v4,
00522 T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13,
00523 T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20) {
00524 return internal::ValueArray20<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
00525 T12, T13, T14, T15, T16, T17, T18, T19, T20>(v1, v2, v3, v4, v5, v6, v7,
00526 v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20);
00527 }
00528
00529 template <typename T1, typename T2, typename T3, typename T4, typename T5,
00530 typename T6, typename T7, typename T8, typename T9, typename T10,
00531 typename T11, typename T12, typename T13, typename T14, typename T15,
00532 typename T16, typename T17, typename T18, typename T19, typename T20,
00533 typename T21>
00534 internal::ValueArray21<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
00535 T14, T15, T16, T17, T18, T19, T20, T21> Values(T1 v1, T2 v2, T3 v3, T4 v4,
00536 T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13,
00537 T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21) {
00538 return internal::ValueArray21<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
00539 T12, T13, T14, T15, T16, T17, T18, T19, T20, T21>(v1, v2, v3, v4, v5, v6,
00540 v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21);
00541 }
00542
00543 template <typename T1, typename T2, typename T3, typename T4, typename T5,
00544 typename T6, typename T7, typename T8, typename T9, typename T10,
00545 typename T11, typename T12, typename T13, typename T14, typename T15,
00546 typename T16, typename T17, typename T18, typename T19, typename T20,
00547 typename T21, typename T22>
00548 internal::ValueArray22<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
00549 T14, T15, T16, T17, T18, T19, T20, T21, T22> Values(T1 v1, T2 v2, T3 v3,
00550 T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12,
00551 T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20,
00552 T21 v21, T22 v22) {
00553 return internal::ValueArray22<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
00554 T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22>(v1, v2, v3, v4,
00555 v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19,
00556 v20, v21, v22);
00557 }
00558
00559 template <typename T1, typename T2, typename T3, typename T4, typename T5,
00560 typename T6, typename T7, typename T8, typename T9, typename T10,
00561 typename T11, typename T12, typename T13, typename T14, typename T15,
00562 typename T16, typename T17, typename T18, typename T19, typename T20,
00563 typename T21, typename T22, typename T23>
00564 internal::ValueArray23<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
00565 T14, T15, T16, T17, T18, T19, T20, T21, T22, T23> Values(T1 v1, T2 v2,
00566 T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12,
00567 T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20,
00568 T21 v21, T22 v22, T23 v23) {
00569 return internal::ValueArray23<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
00570 T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23>(v1, v2, v3,
00571 v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19,
00572 v20, v21, v22, v23);
00573 }
00574
00575 template <typename T1, typename T2, typename T3, typename T4, typename T5,
00576 typename T6, typename T7, typename T8, typename T9, typename T10,
00577 typename T11, typename T12, typename T13, typename T14, typename T15,
00578 typename T16, typename T17, typename T18, typename T19, typename T20,
00579 typename T21, typename T22, typename T23, typename T24>
00580 internal::ValueArray24<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
00581 T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24> Values(T1 v1, T2 v2,
00582 T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12,
00583 T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20,
00584 T21 v21, T22 v22, T23 v23, T24 v24) {
00585 return internal::ValueArray24<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
00586 T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24>(v1, v2,
00587 v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18,
00588 v19, v20, v21, v22, v23, v24);
00589 }
00590
00591 template <typename T1, typename T2, typename T3, typename T4, typename T5,
00592 typename T6, typename T7, typename T8, typename T9, typename T10,
00593 typename T11, typename T12, typename T13, typename T14, typename T15,
00594 typename T16, typename T17, typename T18, typename T19, typename T20,
00595 typename T21, typename T22, typename T23, typename T24, typename T25>
00596 internal::ValueArray25<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
00597 T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25> Values(T1 v1,
00598 T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11,
00599 T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19,
00600 T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25) {
00601 return internal::ValueArray25<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
00602 T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25>(v1,
00603 v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17,
00604 v18, v19, v20, v21, v22, v23, v24, v25);
00605 }
00606
00607 template <typename T1, typename T2, typename T3, typename T4, typename T5,
00608 typename T6, typename T7, typename T8, typename T9, typename T10,
00609 typename T11, typename T12, typename T13, typename T14, typename T15,
00610 typename T16, typename T17, typename T18, typename T19, typename T20,
00611 typename T21, typename T22, typename T23, typename T24, typename T25,
00612 typename T26>
00613 internal::ValueArray26<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
00614 T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
00615 T26> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
00616 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
00617 T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
00618 T26 v26) {
00619 return internal::ValueArray26<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
00620 T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
00621 T26>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15,
00622 v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26);
00623 }
00624
00625 template <typename T1, typename T2, typename T3, typename T4, typename T5,
00626 typename T6, typename T7, typename T8, typename T9, typename T10,
00627 typename T11, typename T12, typename T13, typename T14, typename T15,
00628 typename T16, typename T17, typename T18, typename T19, typename T20,
00629 typename T21, typename T22, typename T23, typename T24, typename T25,
00630 typename T26, typename T27>
00631 internal::ValueArray27<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
00632 T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
00633 T27> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
00634 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
00635 T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
00636 T26 v26, T27 v27) {
00637 return internal::ValueArray27<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
00638 T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
00639 T26, T27>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14,
00640 v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27);
00641 }
00642
00643 template <typename T1, typename T2, typename T3, typename T4, typename T5,
00644 typename T6, typename T7, typename T8, typename T9, typename T10,
00645 typename T11, typename T12, typename T13, typename T14, typename T15,
00646 typename T16, typename T17, typename T18, typename T19, typename T20,
00647 typename T21, typename T22, typename T23, typename T24, typename T25,
00648 typename T26, typename T27, typename T28>
00649 internal::ValueArray28<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
00650 T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
00651 T28> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
00652 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
00653 T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
00654 T26 v26, T27 v27, T28 v28) {
00655 return internal::ValueArray28<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
00656 T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
00657 T26, T27, T28>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13,
00658 v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27,
00659 v28);
00660 }
00661
00662 template <typename T1, typename T2, typename T3, typename T4, typename T5,
00663 typename T6, typename T7, typename T8, typename T9, typename T10,
00664 typename T11, typename T12, typename T13, typename T14, typename T15,
00665 typename T16, typename T17, typename T18, typename T19, typename T20,
00666 typename T21, typename T22, typename T23, typename T24, typename T25,
00667 typename T26, typename T27, typename T28, typename T29>
00668 internal::ValueArray29<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
00669 T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
00670 T29> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
00671 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
00672 T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
00673 T26 v26, T27 v27, T28 v28, T29 v29) {
00674 return internal::ValueArray29<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
00675 T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
00676 T26, T27, T28, T29>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12,
00677 v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26,
00678 v27, v28, v29);
00679 }
00680
00681 template <typename T1, typename T2, typename T3, typename T4, typename T5,
00682 typename T6, typename T7, typename T8, typename T9, typename T10,
00683 typename T11, typename T12, typename T13, typename T14, typename T15,
00684 typename T16, typename T17, typename T18, typename T19, typename T20,
00685 typename T21, typename T22, typename T23, typename T24, typename T25,
00686 typename T26, typename T27, typename T28, typename T29, typename T30>
00687 internal::ValueArray30<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
00688 T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
00689 T29, T30> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8,
00690 T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16,
00691 T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24,
00692 T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30) {
00693 return internal::ValueArray30<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
00694 T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
00695 T26, T27, T28, T29, T30>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11,
00696 v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25,
00697 v26, v27, v28, v29, v30);
00698 }
00699
00700 template <typename T1, typename T2, typename T3, typename T4, typename T5,
00701 typename T6, typename T7, typename T8, typename T9, typename T10,
00702 typename T11, typename T12, typename T13, typename T14, typename T15,
00703 typename T16, typename T17, typename T18, typename T19, typename T20,
00704 typename T21, typename T22, typename T23, typename T24, typename T25,
00705 typename T26, typename T27, typename T28, typename T29, typename T30,
00706 typename T31>
00707 internal::ValueArray31<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
00708 T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
00709 T29, T30, T31> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7,
00710 T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15,
00711 T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23,
00712 T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31) {
00713 return internal::ValueArray31<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
00714 T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
00715 T26, T27, T28, T29, T30, T31>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10,
00716 v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24,
00717 v25, v26, v27, v28, v29, v30, v31);
00718 }
00719
00720 template <typename T1, typename T2, typename T3, typename T4, typename T5,
00721 typename T6, typename T7, typename T8, typename T9, typename T10,
00722 typename T11, typename T12, typename T13, typename T14, typename T15,
00723 typename T16, typename T17, typename T18, typename T19, typename T20,
00724 typename T21, typename T22, typename T23, typename T24, typename T25,
00725 typename T26, typename T27, typename T28, typename T29, typename T30,
00726 typename T31, typename T32>
00727 internal::ValueArray32<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
00728 T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
00729 T29, T30, T31, T32> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7,
00730 T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15,
00731 T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23,
00732 T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31,
00733 T32 v32) {
00734 return internal::ValueArray32<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
00735 T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
00736 T26, T27, T28, T29, T30, T31, T32>(v1, v2, v3, v4, v5, v6, v7, v8, v9,
00737 v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23,
00738 v24, v25, v26, v27, v28, v29, v30, v31, v32);
00739 }
00740
00741 template <typename T1, typename T2, typename T3, typename T4, typename T5,
00742 typename T6, typename T7, typename T8, typename T9, typename T10,
00743 typename T11, typename T12, typename T13, typename T14, typename T15,
00744 typename T16, typename T17, typename T18, typename T19, typename T20,
00745 typename T21, typename T22, typename T23, typename T24, typename T25,
00746 typename T26, typename T27, typename T28, typename T29, typename T30,
00747 typename T31, typename T32, typename T33>
00748 internal::ValueArray33<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
00749 T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
00750 T29, T30, T31, T32, T33> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6,
00751 T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15,
00752 T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23,
00753 T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31,
00754 T32 v32, T33 v33) {
00755 return internal::ValueArray33<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
00756 T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
00757 T26, T27, T28, T29, T30, T31, T32, T33>(v1, v2, v3, v4, v5, v6, v7, v8,
00758 v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23,
00759 v24, v25, v26, v27, v28, v29, v30, v31, v32, v33);
00760 }
00761
00762 template <typename T1, typename T2, typename T3, typename T4, typename T5,
00763 typename T6, typename T7, typename T8, typename T9, typename T10,
00764 typename T11, typename T12, typename T13, typename T14, typename T15,
00765 typename T16, typename T17, typename T18, typename T19, typename T20,
00766 typename T21, typename T22, typename T23, typename T24, typename T25,
00767 typename T26, typename T27, typename T28, typename T29, typename T30,
00768 typename T31, typename T32, typename T33, typename T34>
00769 internal::ValueArray34<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
00770 T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
00771 T29, T30, T31, T32, T33, T34> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5,
00772 T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14,
00773 T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22,
00774 T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30,
00775 T31 v31, T32 v32, T33 v33, T34 v34) {
00776 return internal::ValueArray34<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
00777 T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
00778 T26, T27, T28, T29, T30, T31, T32, T33, T34>(v1, v2, v3, v4, v5, v6, v7,
00779 v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22,
00780 v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34);
00781 }
00782
00783 template <typename T1, typename T2, typename T3, typename T4, typename T5,
00784 typename T6, typename T7, typename T8, typename T9, typename T10,
00785 typename T11, typename T12, typename T13, typename T14, typename T15,
00786 typename T16, typename T17, typename T18, typename T19, typename T20,
00787 typename T21, typename T22, typename T23, typename T24, typename T25,
00788 typename T26, typename T27, typename T28, typename T29, typename T30,
00789 typename T31, typename T32, typename T33, typename T34, typename T35>
00790 internal::ValueArray35<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
00791 T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
00792 T29, T30, T31, T32, T33, T34, T35> Values(T1 v1, T2 v2, T3 v3, T4 v4,
00793 T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13,
00794 T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21,
00795 T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29,
00796 T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35) {
00797 return internal::ValueArray35<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
00798 T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
00799 T26, T27, T28, T29, T30, T31, T32, T33, T34, T35>(v1, v2, v3, v4, v5, v6,
00800 v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21,
00801 v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35);
00802 }
00803
00804 template <typename T1, typename T2, typename T3, typename T4, typename T5,
00805 typename T6, typename T7, typename T8, typename T9, typename T10,
00806 typename T11, typename T12, typename T13, typename T14, typename T15,
00807 typename T16, typename T17, typename T18, typename T19, typename T20,
00808 typename T21, typename T22, typename T23, typename T24, typename T25,
00809 typename T26, typename T27, typename T28, typename T29, typename T30,
00810 typename T31, typename T32, typename T33, typename T34, typename T35,
00811 typename T36>
00812 internal::ValueArray36<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
00813 T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
00814 T29, T30, T31, T32, T33, T34, T35, T36> Values(T1 v1, T2 v2, T3 v3, T4 v4,
00815 T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13,
00816 T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21,
00817 T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29,
00818 T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36) {
00819 return internal::ValueArray36<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
00820 T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
00821 T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36>(v1, v2, v3, v4,
00822 v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19,
00823 v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33,
00824 v34, v35, v36);
00825 }
00826
00827 template <typename T1, typename T2, typename T3, typename T4, typename T5,
00828 typename T6, typename T7, typename T8, typename T9, typename T10,
00829 typename T11, typename T12, typename T13, typename T14, typename T15,
00830 typename T16, typename T17, typename T18, typename T19, typename T20,
00831 typename T21, typename T22, typename T23, typename T24, typename T25,
00832 typename T26, typename T27, typename T28, typename T29, typename T30,
00833 typename T31, typename T32, typename T33, typename T34, typename T35,
00834 typename T36, typename T37>
00835 internal::ValueArray37<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
00836 T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
00837 T29, T30, T31, T32, T33, T34, T35, T36, T37> Values(T1 v1, T2 v2, T3 v3,
00838 T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12,
00839 T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20,
00840 T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28,
00841 T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36,
00842 T37 v37) {
00843 return internal::ValueArray37<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
00844 T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
00845 T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37>(v1, v2, v3,
00846 v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19,
00847 v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33,
00848 v34, v35, v36, v37);
00849 }
00850
00851 template <typename T1, typename T2, typename T3, typename T4, typename T5,
00852 typename T6, typename T7, typename T8, typename T9, typename T10,
00853 typename T11, typename T12, typename T13, typename T14, typename T15,
00854 typename T16, typename T17, typename T18, typename T19, typename T20,
00855 typename T21, typename T22, typename T23, typename T24, typename T25,
00856 typename T26, typename T27, typename T28, typename T29, typename T30,
00857 typename T31, typename T32, typename T33, typename T34, typename T35,
00858 typename T36, typename T37, typename T38>
00859 internal::ValueArray38<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
00860 T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
00861 T29, T30, T31, T32, T33, T34, T35, T36, T37, T38> Values(T1 v1, T2 v2,
00862 T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12,
00863 T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20,
00864 T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28,
00865 T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36,
00866 T37 v37, T38 v38) {
00867 return internal::ValueArray38<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
00868 T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
00869 T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38>(v1, v2,
00870 v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18,
00871 v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32,
00872 v33, v34, v35, v36, v37, v38);
00873 }
00874
00875 template <typename T1, typename T2, typename T3, typename T4, typename T5,
00876 typename T6, typename T7, typename T8, typename T9, typename T10,
00877 typename T11, typename T12, typename T13, typename T14, typename T15,
00878 typename T16, typename T17, typename T18, typename T19, typename T20,
00879 typename T21, typename T22, typename T23, typename T24, typename T25,
00880 typename T26, typename T27, typename T28, typename T29, typename T30,
00881 typename T31, typename T32, typename T33, typename T34, typename T35,
00882 typename T36, typename T37, typename T38, typename T39>
00883 internal::ValueArray39<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
00884 T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
00885 T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39> Values(T1 v1, T2 v2,
00886 T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12,
00887 T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20,
00888 T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28,
00889 T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36,
00890 T37 v37, T38 v38, T39 v39) {
00891 return internal::ValueArray39<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
00892 T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
00893 T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39>(v1,
00894 v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17,
00895 v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31,
00896 v32, v33, v34, v35, v36, v37, v38, v39);
00897 }
00898
00899 template <typename T1, typename T2, typename T3, typename T4, typename T5,
00900 typename T6, typename T7, typename T8, typename T9, typename T10,
00901 typename T11, typename T12, typename T13, typename T14, typename T15,
00902 typename T16, typename T17, typename T18, typename T19, typename T20,
00903 typename T21, typename T22, typename T23, typename T24, typename T25,
00904 typename T26, typename T27, typename T28, typename T29, typename T30,
00905 typename T31, typename T32, typename T33, typename T34, typename T35,
00906 typename T36, typename T37, typename T38, typename T39, typename T40>
00907 internal::ValueArray40<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
00908 T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
00909 T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40> Values(T1 v1,
00910 T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11,
00911 T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19,
00912 T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27,
00913 T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35,
00914 T36 v36, T37 v37, T38 v38, T39 v39, T40 v40) {
00915 return internal::ValueArray40<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
00916 T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
00917 T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39,
00918 T40>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15,
00919 v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29,
00920 v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40);
00921 }
00922
00923 template <typename T1, typename T2, typename T3, typename T4, typename T5,
00924 typename T6, typename T7, typename T8, typename T9, typename T10,
00925 typename T11, typename T12, typename T13, typename T14, typename T15,
00926 typename T16, typename T17, typename T18, typename T19, typename T20,
00927 typename T21, typename T22, typename T23, typename T24, typename T25,
00928 typename T26, typename T27, typename T28, typename T29, typename T30,
00929 typename T31, typename T32, typename T33, typename T34, typename T35,
00930 typename T36, typename T37, typename T38, typename T39, typename T40,
00931 typename T41>
00932 internal::ValueArray41<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
00933 T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
00934 T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
00935 T41> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
00936 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
00937 T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
00938 T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
00939 T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41) {
00940 return internal::ValueArray41<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
00941 T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
00942 T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39,
00943 T40, T41>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14,
00944 v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28,
00945 v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41);
00946 }
00947
00948 template <typename T1, typename T2, typename T3, typename T4, typename T5,
00949 typename T6, typename T7, typename T8, typename T9, typename T10,
00950 typename T11, typename T12, typename T13, typename T14, typename T15,
00951 typename T16, typename T17, typename T18, typename T19, typename T20,
00952 typename T21, typename T22, typename T23, typename T24, typename T25,
00953 typename T26, typename T27, typename T28, typename T29, typename T30,
00954 typename T31, typename T32, typename T33, typename T34, typename T35,
00955 typename T36, typename T37, typename T38, typename T39, typename T40,
00956 typename T41, typename T42>
00957 internal::ValueArray42<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
00958 T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
00959 T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41,
00960 T42> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
00961 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
00962 T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
00963 T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
00964 T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41,
00965 T42 v42) {
00966 return internal::ValueArray42<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
00967 T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
00968 T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39,
00969 T40, T41, T42>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13,
00970 v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27,
00971 v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41,
00972 v42);
00973 }
00974
00975 template <typename T1, typename T2, typename T3, typename T4, typename T5,
00976 typename T6, typename T7, typename T8, typename T9, typename T10,
00977 typename T11, typename T12, typename T13, typename T14, typename T15,
00978 typename T16, typename T17, typename T18, typename T19, typename T20,
00979 typename T21, typename T22, typename T23, typename T24, typename T25,
00980 typename T26, typename T27, typename T28, typename T29, typename T30,
00981 typename T31, typename T32, typename T33, typename T34, typename T35,
00982 typename T36, typename T37, typename T38, typename T39, typename T40,
00983 typename T41, typename T42, typename T43>
00984 internal::ValueArray43<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
00985 T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
00986 T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42,
00987 T43> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
00988 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
00989 T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
00990 T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
00991 T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41,
00992 T42 v42, T43 v43) {
00993 return internal::ValueArray43<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
00994 T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
00995 T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39,
00996 T40, T41, T42, T43>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12,
00997 v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26,
00998 v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40,
00999 v41, v42, v43);
01000 }
01001
01002 template <typename T1, typename T2, typename T3, typename T4, typename T5,
01003 typename T6, typename T7, typename T8, typename T9, typename T10,
01004 typename T11, typename T12, typename T13, typename T14, typename T15,
01005 typename T16, typename T17, typename T18, typename T19, typename T20,
01006 typename T21, typename T22, typename T23, typename T24, typename T25,
01007 typename T26, typename T27, typename T28, typename T29, typename T30,
01008 typename T31, typename T32, typename T33, typename T34, typename T35,
01009 typename T36, typename T37, typename T38, typename T39, typename T40,
01010 typename T41, typename T42, typename T43, typename T44>
01011 internal::ValueArray44<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
01012 T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
01013 T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
01014 T44> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
01015 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
01016 T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
01017 T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
01018 T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41,
01019 T42 v42, T43 v43, T44 v44) {
01020 return internal::ValueArray44<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
01021 T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
01022 T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39,
01023 T40, T41, T42, T43, T44>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11,
01024 v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25,
01025 v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39,
01026 v40, v41, v42, v43, v44);
01027 }
01028
01029 template <typename T1, typename T2, typename T3, typename T4, typename T5,
01030 typename T6, typename T7, typename T8, typename T9, typename T10,
01031 typename T11, typename T12, typename T13, typename T14, typename T15,
01032 typename T16, typename T17, typename T18, typename T19, typename T20,
01033 typename T21, typename T22, typename T23, typename T24, typename T25,
01034 typename T26, typename T27, typename T28, typename T29, typename T30,
01035 typename T31, typename T32, typename T33, typename T34, typename T35,
01036 typename T36, typename T37, typename T38, typename T39, typename T40,
01037 typename T41, typename T42, typename T43, typename T44, typename T45>
01038 internal::ValueArray45<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
01039 T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
01040 T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
01041 T44, T45> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8,
01042 T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16,
01043 T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24,
01044 T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32,
01045 T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40,
01046 T41 v41, T42 v42, T43 v43, T44 v44, T45 v45) {
01047 return internal::ValueArray45<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
01048 T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
01049 T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39,
01050 T40, T41, T42, T43, T44, T45>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10,
01051 v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24,
01052 v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38,
01053 v39, v40, v41, v42, v43, v44, v45);
01054 }
01055
01056 template <typename T1, typename T2, typename T3, typename T4, typename T5,
01057 typename T6, typename T7, typename T8, typename T9, typename T10,
01058 typename T11, typename T12, typename T13, typename T14, typename T15,
01059 typename T16, typename T17, typename T18, typename T19, typename T20,
01060 typename T21, typename T22, typename T23, typename T24, typename T25,
01061 typename T26, typename T27, typename T28, typename T29, typename T30,
01062 typename T31, typename T32, typename T33, typename T34, typename T35,
01063 typename T36, typename T37, typename T38, typename T39, typename T40,
01064 typename T41, typename T42, typename T43, typename T44, typename T45,
01065 typename T46>
01066 internal::ValueArray46<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
01067 T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
01068 T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
01069 T44, T45, T46> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7,
01070 T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15,
01071 T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23,
01072 T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31,
01073 T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39,
01074 T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46) {
01075 return internal::ValueArray46<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
01076 T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
01077 T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39,
01078 T40, T41, T42, T43, T44, T45, T46>(v1, v2, v3, v4, v5, v6, v7, v8, v9,
01079 v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23,
01080 v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37,
01081 v38, v39, v40, v41, v42, v43, v44, v45, v46);
01082 }
01083
01084 template <typename T1, typename T2, typename T3, typename T4, typename T5,
01085 typename T6, typename T7, typename T8, typename T9, typename T10,
01086 typename T11, typename T12, typename T13, typename T14, typename T15,
01087 typename T16, typename T17, typename T18, typename T19, typename T20,
01088 typename T21, typename T22, typename T23, typename T24, typename T25,
01089 typename T26, typename T27, typename T28, typename T29, typename T30,
01090 typename T31, typename T32, typename T33, typename T34, typename T35,
01091 typename T36, typename T37, typename T38, typename T39, typename T40,
01092 typename T41, typename T42, typename T43, typename T44, typename T45,
01093 typename T46, typename T47>
01094 internal::ValueArray47<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
01095 T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
01096 T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
01097 T44, T45, T46, T47> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7,
01098 T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15,
01099 T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23,
01100 T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31,
01101 T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39,
01102 T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47) {
01103 return internal::ValueArray47<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
01104 T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
01105 T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39,
01106 T40, T41, T42, T43, T44, T45, T46, T47>(v1, v2, v3, v4, v5, v6, v7, v8,
01107 v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23,
01108 v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37,
01109 v38, v39, v40, v41, v42, v43, v44, v45, v46, v47);
01110 }
01111
01112 template <typename T1, typename T2, typename T3, typename T4, typename T5,
01113 typename T6, typename T7, typename T8, typename T9, typename T10,
01114 typename T11, typename T12, typename T13, typename T14, typename T15,
01115 typename T16, typename T17, typename T18, typename T19, typename T20,
01116 typename T21, typename T22, typename T23, typename T24, typename T25,
01117 typename T26, typename T27, typename T28, typename T29, typename T30,
01118 typename T31, typename T32, typename T33, typename T34, typename T35,
01119 typename T36, typename T37, typename T38, typename T39, typename T40,
01120 typename T41, typename T42, typename T43, typename T44, typename T45,
01121 typename T46, typename T47, typename T48>
01122 internal::ValueArray48<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
01123 T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
01124 T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
01125 T44, T45, T46, T47, T48> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6,
01126 T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15,
01127 T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23,
01128 T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31,
01129 T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39,
01130 T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47,
01131 T48 v48) {
01132 return internal::ValueArray48<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
01133 T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
01134 T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39,
01135 T40, T41, T42, T43, T44, T45, T46, T47, T48>(v1, v2, v3, v4, v5, v6, v7,
01136 v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22,
01137 v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36,
01138 v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48);
01139 }
01140
01141 template <typename T1, typename T2, typename T3, typename T4, typename T5,
01142 typename T6, typename T7, typename T8, typename T9, typename T10,
01143 typename T11, typename T12, typename T13, typename T14, typename T15,
01144 typename T16, typename T17, typename T18, typename T19, typename T20,
01145 typename T21, typename T22, typename T23, typename T24, typename T25,
01146 typename T26, typename T27, typename T28, typename T29, typename T30,
01147 typename T31, typename T32, typename T33, typename T34, typename T35,
01148 typename T36, typename T37, typename T38, typename T39, typename T40,
01149 typename T41, typename T42, typename T43, typename T44, typename T45,
01150 typename T46, typename T47, typename T48, typename T49>
01151 internal::ValueArray49<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
01152 T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
01153 T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
01154 T44, T45, T46, T47, T48, T49> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5,
01155 T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14,
01156 T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22,
01157 T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30,
01158 T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38,
01159 T39 v39, T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46,
01160 T47 v47, T48 v48, T49 v49) {
01161 return internal::ValueArray49<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
01162 T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
01163 T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39,
01164 T40, T41, T42, T43, T44, T45, T46, T47, T48, T49>(v1, v2, v3, v4, v5, v6,
01165 v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21,
01166 v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35,
01167 v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49);
01168 }
01169
01170 template <typename T1, typename T2, typename T3, typename T4, typename T5,
01171 typename T6, typename T7, typename T8, typename T9, typename T10,
01172 typename T11, typename T12, typename T13, typename T14, typename T15,
01173 typename T16, typename T17, typename T18, typename T19, typename T20,
01174 typename T21, typename T22, typename T23, typename T24, typename T25,
01175 typename T26, typename T27, typename T28, typename T29, typename T30,
01176 typename T31, typename T32, typename T33, typename T34, typename T35,
01177 typename T36, typename T37, typename T38, typename T39, typename T40,
01178 typename T41, typename T42, typename T43, typename T44, typename T45,
01179 typename T46, typename T47, typename T48, typename T49, typename T50>
01180 internal::ValueArray50<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
01181 T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
01182 T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
01183 T44, T45, T46, T47, T48, T49, T50> Values(T1 v1, T2 v2, T3 v3, T4 v4,
01184 T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13,
01185 T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21,
01186 T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29,
01187 T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37,
01188 T38 v38, T39 v39, T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45,
01189 T46 v46, T47 v47, T48 v48, T49 v49, T50 v50) {
01190 return internal::ValueArray50<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
01191 T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
01192 T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39,
01193 T40, T41, T42, T43, T44, T45, T46, T47, T48, T49, T50>(v1, v2, v3, v4,
01194 v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19,
01195 v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33,
01196 v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47,
01197 v48, v49, v50);
01198 }
01199
01200
01201
01202
01203
01204
01205
01206
01207
01208
01209
01210
01211
01212
01213
01214
01215
01216
01217
01218
01219
01220 inline internal::ParamGenerator<bool> Bool() {
01221 return Values(false, true);
01222 }
01223
01224 # if GTEST_HAS_COMBINE
01225
01226
01227
01228
01229
01230
01231
01232
01233
01234
01235
01236
01237
01238
01239
01240
01241
01242
01243
01244
01245
01246
01247
01248
01249
01250
01251
01252
01253
01254
01255
01256
01257
01258
01259
01260
01261
01262
01263
01264
01265
01266
01267
01268
01269
01270
01271
01272
01273 template <typename Generator1, typename Generator2>
01274 internal::CartesianProductHolder2<Generator1, Generator2> Combine(
01275 const Generator1& g1, const Generator2& g2) {
01276 return internal::CartesianProductHolder2<Generator1, Generator2>(
01277 g1, g2);
01278 }
01279
01280 template <typename Generator1, typename Generator2, typename Generator3>
01281 internal::CartesianProductHolder3<Generator1, Generator2, Generator3> Combine(
01282 const Generator1& g1, const Generator2& g2, const Generator3& g3) {
01283 return internal::CartesianProductHolder3<Generator1, Generator2, Generator3>(
01284 g1, g2, g3);
01285 }
01286
01287 template <typename Generator1, typename Generator2, typename Generator3,
01288 typename Generator4>
01289 internal::CartesianProductHolder4<Generator1, Generator2, Generator3,
01290 Generator4> Combine(
01291 const Generator1& g1, const Generator2& g2, const Generator3& g3,
01292 const Generator4& g4) {
01293 return internal::CartesianProductHolder4<Generator1, Generator2, Generator3,
01294 Generator4>(
01295 g1, g2, g3, g4);
01296 }
01297
01298 template <typename Generator1, typename Generator2, typename Generator3,
01299 typename Generator4, typename Generator5>
01300 internal::CartesianProductHolder5<Generator1, Generator2, Generator3,
01301 Generator4, Generator5> Combine(
01302 const Generator1& g1, const Generator2& g2, const Generator3& g3,
01303 const Generator4& g4, const Generator5& g5) {
01304 return internal::CartesianProductHolder5<Generator1, Generator2, Generator3,
01305 Generator4, Generator5>(
01306 g1, g2, g3, g4, g5);
01307 }
01308
01309 template <typename Generator1, typename Generator2, typename Generator3,
01310 typename Generator4, typename Generator5, typename Generator6>
01311 internal::CartesianProductHolder6<Generator1, Generator2, Generator3,
01312 Generator4, Generator5, Generator6> Combine(
01313 const Generator1& g1, const Generator2& g2, const Generator3& g3,
01314 const Generator4& g4, const Generator5& g5, const Generator6& g6) {
01315 return internal::CartesianProductHolder6<Generator1, Generator2, Generator3,
01316 Generator4, Generator5, Generator6>(
01317 g1, g2, g3, g4, g5, g6);
01318 }
01319
01320 template <typename Generator1, typename Generator2, typename Generator3,
01321 typename Generator4, typename Generator5, typename Generator6,
01322 typename Generator7>
01323 internal::CartesianProductHolder7<Generator1, Generator2, Generator3,
01324 Generator4, Generator5, Generator6, Generator7> Combine(
01325 const Generator1& g1, const Generator2& g2, const Generator3& g3,
01326 const Generator4& g4, const Generator5& g5, const Generator6& g6,
01327 const Generator7& g7) {
01328 return internal::CartesianProductHolder7<Generator1, Generator2, Generator3,
01329 Generator4, Generator5, Generator6, Generator7>(
01330 g1, g2, g3, g4, g5, g6, g7);
01331 }
01332
01333 template <typename Generator1, typename Generator2, typename Generator3,
01334 typename Generator4, typename Generator5, typename Generator6,
01335 typename Generator7, typename Generator8>
01336 internal::CartesianProductHolder8<Generator1, Generator2, Generator3,
01337 Generator4, Generator5, Generator6, Generator7, Generator8> Combine(
01338 const Generator1& g1, const Generator2& g2, const Generator3& g3,
01339 const Generator4& g4, const Generator5& g5, const Generator6& g6,
01340 const Generator7& g7, const Generator8& g8) {
01341 return internal::CartesianProductHolder8<Generator1, Generator2, Generator3,
01342 Generator4, Generator5, Generator6, Generator7, Generator8>(
01343 g1, g2, g3, g4, g5, g6, g7, g8);
01344 }
01345
01346 template <typename Generator1, typename Generator2, typename Generator3,
01347 typename Generator4, typename Generator5, typename Generator6,
01348 typename Generator7, typename Generator8, typename Generator9>
01349 internal::CartesianProductHolder9<Generator1, Generator2, Generator3,
01350 Generator4, Generator5, Generator6, Generator7, Generator8,
01351 Generator9> Combine(
01352 const Generator1& g1, const Generator2& g2, const Generator3& g3,
01353 const Generator4& g4, const Generator5& g5, const Generator6& g6,
01354 const Generator7& g7, const Generator8& g8, const Generator9& g9) {
01355 return internal::CartesianProductHolder9<Generator1, Generator2, Generator3,
01356 Generator4, Generator5, Generator6, Generator7, Generator8, Generator9>(
01357 g1, g2, g3, g4, g5, g6, g7, g8, g9);
01358 }
01359
01360 template <typename Generator1, typename Generator2, typename Generator3,
01361 typename Generator4, typename Generator5, typename Generator6,
01362 typename Generator7, typename Generator8, typename Generator9,
01363 typename Generator10>
01364 internal::CartesianProductHolder10<Generator1, Generator2, Generator3,
01365 Generator4, Generator5, Generator6, Generator7, Generator8, Generator9,
01366 Generator10> Combine(
01367 const Generator1& g1, const Generator2& g2, const Generator3& g3,
01368 const Generator4& g4, const Generator5& g5, const Generator6& g6,
01369 const Generator7& g7, const Generator8& g8, const Generator9& g9,
01370 const Generator10& g10) {
01371 return internal::CartesianProductHolder10<Generator1, Generator2, Generator3,
01372 Generator4, Generator5, Generator6, Generator7, Generator8, Generator9,
01373 Generator10>(
01374 g1, g2, g3, g4, g5, g6, g7, g8, g9, g10);
01375 }
01376 # endif // GTEST_HAS_COMBINE
01377
01378
01379
01380 # define TEST_P(test_case_name, test_name) \
01381 class GTEST_TEST_CLASS_NAME_(test_case_name, test_name) \
01382 : public test_case_name { \
01383 public: \
01384 GTEST_TEST_CLASS_NAME_(test_case_name, test_name)() {} \
01385 virtual void TestBody(); \
01386 private: \
01387 static int AddToRegistry() { \
01388 ::testing::UnitTest::GetInstance()->parameterized_test_registry(). \
01389 GetTestCasePatternHolder<test_case_name>(\
01390 #test_case_name, \
01391 ::testing::internal::CodeLocation(\
01392 __FILE__, __LINE__))->AddTestPattern(\
01393 #test_case_name, \
01394 #test_name, \
01395 new ::testing::internal::TestMetaFactory< \
01396 GTEST_TEST_CLASS_NAME_(\
01397 test_case_name, test_name)>()); \
01398 return 0; \
01399 } \
01400 static int gtest_registering_dummy_ GTEST_ATTRIBUTE_UNUSED_; \
01401 GTEST_DISALLOW_COPY_AND_ASSIGN_(\
01402 GTEST_TEST_CLASS_NAME_(test_case_name, test_name)); \
01403 }; \
01404 int GTEST_TEST_CLASS_NAME_(test_case_name, \
01405 test_name)::gtest_registering_dummy_ = \
01406 GTEST_TEST_CLASS_NAME_(test_case_name, test_name)::AddToRegistry(); \
01407 void GTEST_TEST_CLASS_NAME_(test_case_name, test_name)::TestBody()
01408
01409
01410
01411
01412
01413
01414
01415
01416
01417
01418
01419
01420
01421 # define INSTANTIATE_TEST_CASE_P(prefix, test_case_name, generator, ...) \
01422 ::testing::internal::ParamGenerator<test_case_name::ParamType> \
01423 gtest_##prefix##test_case_name##_EvalGenerator_() { return generator; } \
01424 ::std::string gtest_##prefix##test_case_name##_EvalGenerateName_( \
01425 const ::testing::TestParamInfo<test_case_name::ParamType>& info) { \
01426 return ::testing::internal::GetParamNameGen<test_case_name::ParamType> \
01427 (__VA_ARGS__)(info); \
01428 } \
01429 int gtest_##prefix##test_case_name##_dummy_ GTEST_ATTRIBUTE_UNUSED_ = \
01430 ::testing::UnitTest::GetInstance()->parameterized_test_registry(). \
01431 GetTestCasePatternHolder<test_case_name>(\
01432 #test_case_name, \
01433 ::testing::internal::CodeLocation(\
01434 __FILE__, __LINE__))->AddTestCaseInstantiation(\
01435 #prefix, \
01436 >est_##prefix##test_case_name##_EvalGenerator_, \
01437 >est_##prefix##test_case_name##_EvalGenerateName_, \
01438 __FILE__, __LINE__)
01439
01440 }
01441
01442 #endif // GTEST_HAS_PARAM_TEST
01443
01444 #endif // GTEST_INCLUDE_GTEST_GTEST_PARAM_TEST_H_