41 #ifndef GTEST_INCLUDE_GTEST_GTEST_PARAM_TEST_H_
42 #define GTEST_INCLUDE_GTEST_GTEST_PARAM_TEST_H_
60 class FooTest :
public ::testing::TestWithParam<const char*> {
68 TEST_P(FooTest, DoesBlah) {
75 TEST_P(FooTest, HasBlahBlah) {
105 Values(
"meeny",
"miny",
"moe"));
126 const char* pets[] = {
"cat",
"dog"};
167 class DerivedTest :
public BaseTest,
public ::testing::WithParamInterface<int> {
171 TEST_F(BaseTest, HasFoo) {
175 TEST_P(DerivedTest, DoesBlah) {
184 #if !GTEST_OS_SYMBIAN
195 #if GTEST_HAS_PARAM_TEST
241 template <
typename T,
typename IncrementT>
243 return internal::ParamGenerator<T>(
244 new internal::RangeGenerator<T, IncrementT>(
start,
end,
step));
247 template <
typename T>
249 return Range(start, end, 1);
307 template <
typename ForwardIterator>
308 internal::ParamGenerator<
310 ValuesIn(ForwardIterator
begin, ForwardIterator
end) {
311 typedef typename ::testing::internal::IteratorTraits<ForwardIterator>
313 return internal::ParamGenerator<ParamType>(
314 new internal::ValuesInIteratorRangeGenerator<ParamType>(
begin,
end));
317 template <
typename T,
size_t N>
318 internal::ParamGenerator<T> ValuesIn(
const T (&
array)[
N]) {
322 template <
class Container>
323 internal::ParamGenerator<typename Container::value_type> ValuesIn(
325 return ValuesIn(container.begin(), container.end());
347 template <
typename T1>
348 internal::ValueArray1<T1> Values(
T1 v1) {
349 return internal::ValueArray1<T1>(
v1);
352 template <
typename T1,
typename T2>
353 internal::ValueArray2<T1, T2> Values(
T1 v1,
T2 v2) {
354 return internal::ValueArray2<T1, T2>(
v1,
v2);
357 template <
typename T1,
typename T2,
typename T3>
358 internal::ValueArray3<T1, T2, T3> Values(
T1 v1,
T2 v2,
T3 v3) {
359 return internal::ValueArray3<T1, T2, T3>(
v1,
v2,
v3);
362 template <
typename T1,
typename T2,
typename T3,
typename T4>
364 return internal::ValueArray4<T1, T2, T3, T4>(
v1,
v2,
v3,
v4);
367 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5>
368 internal::ValueArray5<T1, T2, T3, T4, T5> Values(
T1 v1,
T2 v2,
T3 v3,
T4 v4,
370 return internal::ValueArray5<T1, T2, T3, T4, T5>(
v1,
v2,
v3,
v4,
v5);
373 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
375 internal::ValueArray6<T1, T2, T3, T4, T5, T6> Values(
T1 v1,
T2 v2,
T3 v3,
377 return internal::ValueArray6<T1, T2, T3, T4, T5, T6>(
v1,
v2,
v3,
v4,
v5,
v6);
380 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
381 typename T6,
typename T7>
382 internal::ValueArray7<T1, T2, T3, T4, T5, T6, T7> Values(
T1 v1,
T2 v2,
T3 v3,
384 return internal::ValueArray7<T1, T2, T3, T4, T5, T6, T7>(
v1,
v2,
v3,
v4,
v5,
388 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
389 typename T6,
typename T7,
typename T8>
390 internal::ValueArray8<T1, T2, T3, T4, T5, T6, T7, T8> Values(
T1 v1,
T2 v2,
392 return internal::ValueArray8<T1, T2, T3, T4, T5, T6, T7, T8>(
v1,
v2,
v3,
v4,
396 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
397 typename T6,
typename T7,
typename T8,
typename T9>
398 internal::ValueArray9<T1, T2, T3, T4, T5, T6, T7, T8, T9> Values(
T1 v1,
T2 v2,
400 return internal::ValueArray9<T1, T2, T3, T4, T5, T6, T7, T8, T9>(
v1,
v2,
v3,
404 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
405 typename T6,
typename T7,
typename T8,
typename T9,
typename T10>
406 internal::ValueArray10<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> Values(
T1 v1,
408 return internal::ValueArray10<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>(
v1,
412 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
413 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
415 internal::ValueArray11<
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
418 return internal::ValueArray11<
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
419 T11>(
v1,
v2,
v3,
v4,
v5,
v6, v7, v8, v9, v10, v11);
422 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
423 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
424 typename T11,
typename T12>
425 internal::ValueArray12<
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11,
428 return internal::ValueArray12<
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11,
429 T12>(
v1,
v2,
v3,
v4,
v5,
v6, v7, v8, v9, v10, v11, v12);
432 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
433 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
434 typename T11,
typename T12,
typename T13>
435 internal::ValueArray13<
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11,
T12,
438 return internal::ValueArray13<
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11,
439 T12,
T13>(
v1,
v2,
v3,
v4,
v5,
v6, v7, v8, v9, v10, v11, v12, v13);
442 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
443 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
445 internal::ValueArray14<
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11,
T12,
T13,
448 return internal::ValueArray14<
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11,
449 T12,
T13,
T14>(
v1,
v2,
v3,
v4,
v5,
v6, v7, v8, v9, v10, v11, v12, v13,
453 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
454 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
456 internal::ValueArray15<
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11,
T12,
T13,
459 return internal::ValueArray15<
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11,
460 T12,
T13,
T14,
T15>(
v1,
v2,
v3,
v4,
v5,
v6, v7, v8, v9, v10, v11, v12,
464 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
465 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
468 internal::ValueArray16<
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11,
T12,
T13,
472 return internal::ValueArray16<
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11,
473 T12,
T13,
T14,
T15,
T16>(
v1,
v2,
v3,
v4,
v5,
v6, v7, v8, v9, v10, v11,
474 v12, v13, v14, v15, v16);
477 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
478 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
480 typename T16,
typename T17>
481 internal::ValueArray17<
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11,
T12,
T13,
482 T14,
T15,
T16,
T17> Values(
T1 v1,
T2 v2,
T3 v3,
T4 v4,
T5 v5,
T6 v6,
T7 v7,
485 return internal::ValueArray17<
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11,
486 T12,
T13,
T14,
T15,
T16,
T17>(
v1,
v2,
v3,
v4,
v5,
v6, v7, v8, v9, v10,
487 v11, v12, v13, v14, v15, v16, v17);
490 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
491 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
493 typename T16,
typename T17,
typename T18>
494 internal::ValueArray18<
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11,
T12,
T13,
495 T14,
T15,
T16,
T17,
T18> Values(
T1 v1,
T2 v2,
T3 v3,
T4 v4,
T5 v5,
T6 v6,
498 return internal::ValueArray18<
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11,
499 T12,
T13,
T14,
T15,
T16,
T17,
T18>(
v1,
v2,
v3,
v4,
v5,
v6, v7, v8, v9,
500 v10, v11, v12, v13, v14, v15, v16, v17, v18);
503 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
504 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
507 internal::ValueArray19<
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11,
T12,
T13,
508 T14,
T15,
T16,
T17,
T18,
T19> Values(
T1 v1,
T2 v2,
T3 v3,
T4 v4,
T5 v5,
511 return internal::ValueArray19<
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11,
512 T12,
T13,
T14,
T15,
T16,
T17,
T18,
T19>(
v1,
v2,
v3,
v4,
v5,
v6, v7, v8,
513 v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19);
516 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
517 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
520 internal::ValueArray20<
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11,
T12,
T13,
521 T14,
T15,
T16,
T17,
T18,
T19,
T20> Values(
T1 v1,
T2 v2,
T3 v3,
T4 v4,
524 return internal::ValueArray20<
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11,
525 T12,
T13,
T14,
T15,
T16,
T17,
T18,
T19,
T20>(
v1,
v2,
v3,
v4,
v5,
v6, v7,
526 v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20);
529 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
530 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
534 internal::ValueArray21<
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11,
T12,
T13,
535 T14,
T15,
T16,
T17,
T18,
T19,
T20,
T21> Values(
T1 v1,
T2 v2,
T3 v3,
T4 v4,
538 return internal::ValueArray21<
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11,
539 T12,
T13,
T14,
T15,
T16,
T17,
T18,
T19,
T20,
T21>(
v1,
v2,
v3,
v4,
v5,
v6,
540 v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21);
543 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
544 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
547 typename T21,
typename T22>
548 internal::ValueArray22<
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11,
T12,
T13,
549 T14,
T15,
T16,
T17,
T18,
T19,
T20,
T21,
T22> Values(
T1 v1,
T2 v2,
T3 v3,
553 return internal::ValueArray22<
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11,
554 T12,
T13,
T14,
T15,
T16,
T17,
T18,
T19,
T20,
T21,
T22>(
v1,
v2,
v3,
v4,
555 v5,
v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19,
559 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
560 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
563 typename T21,
typename T22,
typename T23>
564 internal::ValueArray23<
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11,
T12,
T13,
565 T14,
T15,
T16,
T17,
T18,
T19,
T20,
T21,
T22,
T23> Values(
T1 v1,
T2 v2,
566 T3 v3,
T4 v4,
T5 v5,
T6 v6,
T7 v7,
T8 v8,
T9 v9,
T10 v10,
T11 v11,
T12 v12,
569 return internal::ValueArray23<
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11,
570 T12,
T13,
T14,
T15,
T16,
T17,
T18,
T19,
T20,
T21,
T22,
T23>(
v1,
v2,
v3,
571 v4,
v5,
v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19,
575 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
576 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
580 internal::ValueArray24<
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11,
T12,
T13,
581 T14,
T15,
T16,
T17,
T18,
T19,
T20,
T21,
T22,
T23,
T24> Values(
T1 v1,
T2 v2,
582 T3 v3,
T4 v4,
T5 v5,
T6 v6,
T7 v7,
T8 v8,
T9 v9,
T10 v10,
T11 v11,
T12 v12,
585 return internal::ValueArray24<
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11,
586 T12,
T13,
T14,
T15,
T16,
T17,
T18,
T19,
T20,
T21,
T22,
T23,
T24>(
v1,
v2,
587 v3,
v4,
v5,
v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18,
588 v19, v20, v21, v22, v23, v24);
591 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
592 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
596 internal::ValueArray25<
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11,
T12,
T13,
597 T14,
T15,
T16,
T17,
T18,
T19,
T20,
T21,
T22,
T23,
T24,
T25> Values(
T1 v1,
598 T2 v2,
T3 v3,
T4 v4,
T5 v5,
T6 v6,
T7 v7,
T8 v8,
T9 v9,
T10 v10,
T11 v11,
601 return internal::ValueArray25<
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11,
602 T12,
T13,
T14,
T15,
T16,
T17,
T18,
T19,
T20,
T21,
T22,
T23,
T24,
T25>(
v1,
603 v2,
v3,
v4,
v5,
v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17,
604 v18, v19, v20, v21, v22, v23, v24, v25);
607 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
608 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
613 internal::ValueArray26<
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11,
T12,
T13,
614 T14,
T15,
T16,
T17,
T18,
T19,
T20,
T21,
T22,
T23,
T24,
T25,
619 return internal::ValueArray26<
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11,
620 T12,
T13,
T14,
T15,
T16,
T17,
T18,
T19,
T20,
T21,
T22,
T23,
T24,
T25,
621 T26>(
v1,
v2,
v3,
v4,
v5,
v6, v7, v8, v9, v10, v11, v12, v13, v14, v15,
622 v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26);
625 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
626 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
630 typename T26,
typename T27>
631 internal::ValueArray27<
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11,
T12,
T13,
632 T14,
T15,
T16,
T17,
T18,
T19,
T20,
T21,
T22,
T23,
T24,
T25,
T26,
637 return internal::ValueArray27<
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11,
638 T12,
T13,
T14,
T15,
T16,
T17,
T18,
T19,
T20,
T21,
T22,
T23,
T24,
T25,
639 T26,
T27>(
v1,
v2,
v3,
v4,
v5,
v6, v7, v8, v9, v10, v11, v12, v13, v14,
640 v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27);
643 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
644 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
648 typename T26,
typename T27,
typename T28>
649 internal::ValueArray28<
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11,
T12,
T13,
650 T14,
T15,
T16,
T17,
T18,
T19,
T20,
T21,
T22,
T23,
T24,
T25,
T26,
T27,
655 return internal::ValueArray28<
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11,
656 T12,
T13,
T14,
T15,
T16,
T17,
T18,
T19,
T20,
T21,
T22,
T23,
T24,
T25,
657 T26,
T27,
T28>(
v1,
v2,
v3,
v4,
v5,
v6, v7, v8, v9, v10, v11, v12, v13,
658 v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27,
662 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
663 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
668 internal::ValueArray29<
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11,
T12,
T13,
669 T14,
T15,
T16,
T17,
T18,
T19,
T20,
T21,
T22,
T23,
T24,
T25,
T26,
T27,
T28,
674 return internal::ValueArray29<
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11,
675 T12,
T13,
T14,
T15,
T16,
T17,
T18,
T19,
T20,
T21,
T22,
T23,
T24,
T25,
676 T26,
T27,
T28,
T29>(
v1,
v2,
v3,
v4,
v5,
v6, v7, v8, v9, v10, v11, v12,
677 v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26,
681 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
682 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
687 internal::ValueArray30<
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11,
T12,
T13,
688 T14,
T15,
T16,
T17,
T18,
T19,
T20,
T21,
T22,
T23,
T24,
T25,
T26,
T27,
T28,
693 return internal::ValueArray30<
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11,
694 T12,
T13,
T14,
T15,
T16,
T17,
T18,
T19,
T20,
T21,
T22,
T23,
T24,
T25,
695 T26,
T27,
T28,
T29,
T30>(
v1,
v2,
v3,
v4,
v5,
v6, v7, v8, v9, v10, v11,
696 v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25,
697 v26, v27, v28, v29, v30);
700 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
701 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
707 internal::ValueArray31<
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11,
T12,
T13,
708 T14,
T15,
T16,
T17,
T18,
T19,
T20,
T21,
T22,
T23,
T24,
T25,
T26,
T27,
T28,
713 return internal::ValueArray31<
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11,
714 T12,
T13,
T14,
T15,
T16,
T17,
T18,
T19,
T20,
T21,
T22,
T23,
T24,
T25,
715 T26,
T27,
T28,
T29,
T30,
T31>(
v1,
v2,
v3,
v4,
v5,
v6, v7, v8, v9, v10,
716 v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24,
717 v25, v26, v27, v28, v29, v30, v31);
720 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
721 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
726 typename T31,
typename T32>
727 internal::ValueArray32<
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11,
T12,
T13,
728 T14,
T15,
T16,
T17,
T18,
T19,
T20,
T21,
T22,
T23,
T24,
T25,
T26,
T27,
T28,
729 T29,
T30,
T31,
T32> Values(
T1 v1,
T2 v2,
T3 v3,
T4 v4,
T5 v5,
T6 v6,
T7 v7,
734 return internal::ValueArray32<
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11,
735 T12,
T13,
T14,
T15,
T16,
T17,
T18,
T19,
T20,
T21,
T22,
T23,
T24,
T25,
736 T26,
T27,
T28,
T29,
T30,
T31,
T32>(
v1,
v2,
v3,
v4,
v5,
v6, v7, v8, v9,
737 v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23,
738 v24, v25, v26, v27, v28, v29, v30, v31, v32);
741 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
742 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
747 typename T31,
typename T32,
typename T33>
748 internal::ValueArray33<
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11,
T12,
T13,
749 T14,
T15,
T16,
T17,
T18,
T19,
T20,
T21,
T22,
T23,
T24,
T25,
T26,
T27,
T28,
750 T29,
T30,
T31,
T32,
T33> Values(
T1 v1,
T2 v2,
T3 v3,
T4 v4,
T5 v5,
T6 v6,
755 return internal::ValueArray33<
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11,
756 T12,
T13,
T14,
T15,
T16,
T17,
T18,
T19,
T20,
T21,
T22,
T23,
T24,
T25,
757 T26,
T27,
T28,
T29,
T30,
T31,
T32,
T33>(
v1,
v2,
v3,
v4,
v5,
v6, v7, v8,
758 v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23,
759 v24, v25, v26, v27, v28, v29, v30, v31, v32, v33);
762 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
763 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
769 internal::ValueArray34<
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11,
T12,
T13,
770 T14,
T15,
T16,
T17,
T18,
T19,
T20,
T21,
T22,
T23,
T24,
T25,
T26,
T27,
T28,
771 T29,
T30,
T31,
T32,
T33,
T34> Values(
T1 v1,
T2 v2,
T3 v3,
T4 v4,
T5 v5,
776 return internal::ValueArray34<
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11,
777 T12,
T13,
T14,
T15,
T16,
T17,
T18,
T19,
T20,
T21,
T22,
T23,
T24,
T25,
778 T26,
T27,
T28,
T29,
T30,
T31,
T32,
T33,
T34>(
v1,
v2,
v3,
v4,
v5,
v6, v7,
779 v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22,
780 v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34);
783 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
784 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
790 internal::ValueArray35<
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11,
T12,
T13,
791 T14,
T15,
T16,
T17,
T18,
T19,
T20,
T21,
T22,
T23,
T24,
T25,
T26,
T27,
T28,
792 T29,
T30,
T31,
T32,
T33,
T34,
T35> Values(
T1 v1,
T2 v2,
T3 v3,
T4 v4,
797 return internal::ValueArray35<
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11,
798 T12,
T13,
T14,
T15,
T16,
T17,
T18,
T19,
T20,
T21,
T22,
T23,
T24,
T25,
799 T26,
T27,
T28,
T29,
T30,
T31,
T32,
T33,
T34,
T35>(
v1,
v2,
v3,
v4,
v5,
v6,
800 v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21,
801 v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35);
804 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
805 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
812 internal::ValueArray36<
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11,
T12,
T13,
813 T14,
T15,
T16,
T17,
T18,
T19,
T20,
T21,
T22,
T23,
T24,
T25,
T26,
T27,
T28,
814 T29,
T30,
T31,
T32,
T33,
T34,
T35,
T36> Values(
T1 v1,
T2 v2,
T3 v3,
T4 v4,
819 return internal::ValueArray36<
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11,
820 T12,
T13,
T14,
T15,
T16,
T17,
T18,
T19,
T20,
T21,
T22,
T23,
T24,
T25,
821 T26,
T27,
T28,
T29,
T30,
T31,
T32,
T33,
T34,
T35,
T36>(
v1,
v2,
v3,
v4,
822 v5,
v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19,
823 v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33,
827 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
828 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
834 typename T36,
typename T37>
835 internal::ValueArray37<
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11,
T12,
T13,
836 T14,
T15,
T16,
T17,
T18,
T19,
T20,
T21,
T22,
T23,
T24,
T25,
T26,
T27,
T28,
837 T29,
T30,
T31,
T32,
T33,
T34,
T35,
T36,
T37> Values(
T1 v1,
T2 v2,
T3 v3,
843 return internal::ValueArray37<
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11,
844 T12,
T13,
T14,
T15,
T16,
T17,
T18,
T19,
T20,
T21,
T22,
T23,
T24,
T25,
845 T26,
T27,
T28,
T29,
T30,
T31,
T32,
T33,
T34,
T35,
T36,
T37>(
v1,
v2,
v3,
846 v4,
v5,
v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19,
847 v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33,
851 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
852 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
858 typename T36,
typename T37,
typename T38>
859 internal::ValueArray38<
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11,
T12,
T13,
860 T14,
T15,
T16,
T17,
T18,
T19,
T20,
T21,
T22,
T23,
T24,
T25,
T26,
T27,
T28,
861 T29,
T30,
T31,
T32,
T33,
T34,
T35,
T36,
T37,
T38> Values(
T1 v1,
T2 v2,
862 T3 v3,
T4 v4,
T5 v5,
T6 v6,
T7 v7,
T8 v8,
T9 v9,
T10 v10,
T11 v11,
T12 v12,
867 return internal::ValueArray38<
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11,
868 T12,
T13,
T14,
T15,
T16,
T17,
T18,
T19,
T20,
T21,
T22,
T23,
T24,
T25,
869 T26,
T27,
T28,
T29,
T30,
T31,
T32,
T33,
T34,
T35,
T36,
T37,
T38>(
v1,
v2,
870 v3,
v4,
v5,
v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18,
871 v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32,
872 v33, v34, v35, v36, v37, v38);
875 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
876 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
883 internal::ValueArray39<
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11,
T12,
T13,
884 T14,
T15,
T16,
T17,
T18,
T19,
T20,
T21,
T22,
T23,
T24,
T25,
T26,
T27,
T28,
885 T29,
T30,
T31,
T32,
T33,
T34,
T35,
T36,
T37,
T38,
T39> Values(
T1 v1,
T2 v2,
886 T3 v3,
T4 v4,
T5 v5,
T6 v6,
T7 v7,
T8 v8,
T9 v9,
T10 v10,
T11 v11,
T12 v12,
891 return internal::ValueArray39<
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11,
892 T12,
T13,
T14,
T15,
T16,
T17,
T18,
T19,
T20,
T21,
T22,
T23,
T24,
T25,
893 T26,
T27,
T28,
T29,
T30,
T31,
T32,
T33,
T34,
T35,
T36,
T37,
T38,
T39>(
v1,
894 v2,
v3,
v4,
v5,
v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17,
895 v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31,
896 v32, v33, v34, v35, v36, v37, v38, v39);
899 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
900 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
907 internal::ValueArray40<
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11,
T12,
T13,
908 T14,
T15,
T16,
T17,
T18,
T19,
T20,
T21,
T22,
T23,
T24,
T25,
T26,
T27,
T28,
909 T29,
T30,
T31,
T32,
T33,
T34,
T35,
T36,
T37,
T38,
T39,
T40> Values(
T1 v1,
910 T2 v2,
T3 v3,
T4 v4,
T5 v5,
T6 v6,
T7 v7,
T8 v8,
T9 v9,
T10 v10,
T11 v11,
915 return internal::ValueArray40<
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11,
916 T12,
T13,
T14,
T15,
T16,
T17,
T18,
T19,
T20,
T21,
T22,
T23,
T24,
T25,
917 T26,
T27,
T28,
T29,
T30,
T31,
T32,
T33,
T34,
T35,
T36,
T37,
T38,
T39,
918 T40>(
v1,
v2,
v3,
v4,
v5,
v6, v7, v8, v9, v10, v11, v12, v13, v14, v15,
919 v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29,
920 v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40);
923 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
924 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
932 internal::ValueArray41<
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11,
T12,
T13,
933 T14,
T15,
T16,
T17,
T18,
T19,
T20,
T21,
T22,
T23,
T24,
T25,
T26,
T27,
T28,
934 T29,
T30,
T31,
T32,
T33,
T34,
T35,
T36,
T37,
T38,
T39,
T40,
940 return internal::ValueArray41<
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11,
941 T12,
T13,
T14,
T15,
T16,
T17,
T18,
T19,
T20,
T21,
T22,
T23,
T24,
T25,
942 T26,
T27,
T28,
T29,
T30,
T31,
T32,
T33,
T34,
T35,
T36,
T37,
T38,
T39,
943 T40,
T41>(
v1,
v2,
v3,
v4,
v5,
v6, v7, v8, v9, v10, v11, v12, v13, v14,
944 v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28,
945 v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41);
948 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
949 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
956 typename T41,
typename T42>
957 internal::ValueArray42<
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11,
T12,
T13,
958 T14,
T15,
T16,
T17,
T18,
T19,
T20,
T21,
T22,
T23,
T24,
T25,
T26,
T27,
T28,
959 T29,
T30,
T31,
T32,
T33,
T34,
T35,
T36,
T37,
T38,
T39,
T40,
T41,
966 return internal::ValueArray42<
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11,
967 T12,
T13,
T14,
T15,
T16,
T17,
T18,
T19,
T20,
T21,
T22,
T23,
T24,
T25,
968 T26,
T27,
T28,
T29,
T30,
T31,
T32,
T33,
T34,
T35,
T36,
T37,
T38,
T39,
969 T40,
T41,
T42>(
v1,
v2,
v3,
v4,
v5,
v6, v7, v8, v9, v10, v11, v12, v13,
970 v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27,
971 v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41,
975 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
976 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
983 typename T41,
typename T42,
typename T43>
984 internal::ValueArray43<
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11,
T12,
T13,
985 T14,
T15,
T16,
T17,
T18,
T19,
T20,
T21,
T22,
T23,
T24,
T25,
T26,
T27,
T28,
986 T29,
T30,
T31,
T32,
T33,
T34,
T35,
T36,
T37,
T38,
T39,
T40,
T41,
T42,
993 return internal::ValueArray43<
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11,
994 T12,
T13,
T14,
T15,
T16,
T17,
T18,
T19,
T20,
T21,
T22,
T23,
T24,
T25,
995 T26,
T27,
T28,
T29,
T30,
T31,
T32,
T33,
T34,
T35,
T36,
T37,
T38,
T39,
996 T40,
T41,
T42,
T43>(
v1,
v2,
v3,
v4,
v5,
v6, v7, v8, v9, v10, v11, v12,
997 v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26,
998 v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40,
1002 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
1003 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
1010 typename T41,
typename T42,
typename T43,
typename T44>
1011 internal::ValueArray44<
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11,
T12,
T13,
1012 T14,
T15,
T16,
T17,
T18,
T19,
T20,
T21,
T22,
T23,
T24,
T25,
T26,
T27,
T28,
1013 T29,
T30,
T31,
T32,
T33,
T34,
T35,
T36,
T37,
T38,
T39,
T40,
T41,
T42,
T43,
1020 return internal::ValueArray44<
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11,
1021 T12,
T13,
T14,
T15,
T16,
T17,
T18,
T19,
T20,
T21,
T22,
T23,
T24,
T25,
1022 T26,
T27,
T28,
T29,
T30,
T31,
T32,
T33,
T34,
T35,
T36,
T37,
T38,
T39,
1023 T40,
T41,
T42,
T43,
T44>(
v1,
v2,
v3,
v4,
v5,
v6, v7, v8, v9, v10, v11,
1024 v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25,
1025 v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39,
1026 v40, v41, v42, v43, v44);
1029 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
1030 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
1038 internal::ValueArray45<
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11,
T12,
T13,
1039 T14,
T15,
T16,
T17,
T18,
T19,
T20,
T21,
T22,
T23,
T24,
T25,
T26,
T27,
T28,
1040 T29,
T30,
T31,
T32,
T33,
T34,
T35,
T36,
T37,
T38,
T39,
T40,
T41,
T42,
T43,
1047 return internal::ValueArray45<
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11,
1048 T12,
T13,
T14,
T15,
T16,
T17,
T18,
T19,
T20,
T21,
T22,
T23,
T24,
T25,
1049 T26,
T27,
T28,
T29,
T30,
T31,
T32,
T33,
T34,
T35,
T36,
T37,
T38,
T39,
1050 T40,
T41,
T42,
T43,
T44,
T45>(
v1,
v2,
v3,
v4,
v5,
v6, v7, v8, v9, v10,
1051 v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24,
1052 v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38,
1053 v39, v40, v41, v42, v43, v44, v45);
1056 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
1057 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
1066 internal::ValueArray46<
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11,
T12,
T13,
1067 T14,
T15,
T16,
T17,
T18,
T19,
T20,
T21,
T22,
T23,
T24,
T25,
T26,
T27,
T28,
1068 T29,
T30,
T31,
T32,
T33,
T34,
T35,
T36,
T37,
T38,
T39,
T40,
T41,
T42,
T43,
1075 return internal::ValueArray46<
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11,
1076 T12,
T13,
T14,
T15,
T16,
T17,
T18,
T19,
T20,
T21,
T22,
T23,
T24,
T25,
1077 T26,
T27,
T28,
T29,
T30,
T31,
T32,
T33,
T34,
T35,
T36,
T37,
T38,
T39,
1078 T40,
T41,
T42,
T43,
T44,
T45,
T46>(
v1,
v2,
v3,
v4,
v5,
v6, v7, v8, v9,
1079 v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23,
1080 v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37,
1081 v38, v39, v40, v41, v42, v43, v44, v45, v46);
1084 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
1085 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
1093 typename T46,
typename T47>
1094 internal::ValueArray47<
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11,
T12,
T13,
1095 T14,
T15,
T16,
T17,
T18,
T19,
T20,
T21,
T22,
T23,
T24,
T25,
T26,
T27,
T28,
1096 T29,
T30,
T31,
T32,
T33,
T34,
T35,
T36,
T37,
T38,
T39,
T40,
T41,
T42,
T43,
1097 T44,
T45,
T46,
T47> Values(
T1 v1,
T2 v2,
T3 v3,
T4 v4,
T5 v5,
T6 v6,
T7 v7,
1103 return internal::ValueArray47<
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11,
1104 T12,
T13,
T14,
T15,
T16,
T17,
T18,
T19,
T20,
T21,
T22,
T23,
T24,
T25,
1105 T26,
T27,
T28,
T29,
T30,
T31,
T32,
T33,
T34,
T35,
T36,
T37,
T38,
T39,
1106 T40,
T41,
T42,
T43,
T44,
T45,
T46,
T47>(
v1,
v2,
v3,
v4,
v5,
v6, v7, v8,
1107 v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23,
1108 v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37,
1109 v38, v39, v40, v41, v42, v43, v44, v45, v46, v47);
1112 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
1113 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
1121 typename T46,
typename T47,
typename T48>
1122 internal::ValueArray48<
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11,
T12,
T13,
1123 T14,
T15,
T16,
T17,
T18,
T19,
T20,
T21,
T22,
T23,
T24,
T25,
T26,
T27,
T28,
1124 T29,
T30,
T31,
T32,
T33,
T34,
T35,
T36,
T37,
T38,
T39,
T40,
T41,
T42,
T43,
1125 T44,
T45,
T46,
T47,
T48> Values(
T1 v1,
T2 v2,
T3 v3,
T4 v4,
T5 v5,
T6 v6,
1132 return internal::ValueArray48<
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11,
1133 T12,
T13,
T14,
T15,
T16,
T17,
T18,
T19,
T20,
T21,
T22,
T23,
T24,
T25,
1134 T26,
T27,
T28,
T29,
T30,
T31,
T32,
T33,
T34,
T35,
T36,
T37,
T38,
T39,
1135 T40,
T41,
T42,
T43,
T44,
T45,
T46,
T47,
T48>(
v1,
v2,
v3,
v4,
v5,
v6, v7,
1136 v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22,
1137 v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36,
1138 v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48);
1141 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
1142 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
1150 typename T46,
typename T47,
typename T48,
typename T49>
1151 internal::ValueArray49<
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11,
T12,
T13,
1152 T14,
T15,
T16,
T17,
T18,
T19,
T20,
T21,
T22,
T23,
T24,
T25,
T26,
T27,
T28,
1153 T29,
T30,
T31,
T32,
T33,
T34,
T35,
T36,
T37,
T38,
T39,
T40,
T41,
T42,
T43,
1154 T44,
T45,
T46,
T47,
T48,
T49> Values(
T1 v1,
T2 v2,
T3 v3,
T4 v4,
T5 v5,
1161 return internal::ValueArray49<
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11,
1162 T12,
T13,
T14,
T15,
T16,
T17,
T18,
T19,
T20,
T21,
T22,
T23,
T24,
T25,
1163 T26,
T27,
T28,
T29,
T30,
T31,
T32,
T33,
T34,
T35,
T36,
T37,
T38,
T39,
1164 T40,
T41,
T42,
T43,
T44,
T45,
T46,
T47,
T48,
T49>(
v1,
v2,
v3,
v4,
v5,
v6,
1165 v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21,
1166 v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35,
1167 v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49);
1170 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
1171 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
1180 internal::ValueArray50<
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11,
T12,
T13,
1181 T14,
T15,
T16,
T17,
T18,
T19,
T20,
T21,
T22,
T23,
T24,
T25,
T26,
T27,
T28,
1182 T29,
T30,
T31,
T32,
T33,
T34,
T35,
T36,
T37,
T38,
T39,
T40,
T41,
T42,
T43,
1183 T44,
T45,
T46,
T47,
T48,
T49,
T50> Values(
T1 v1,
T2 v2,
T3 v3,
T4 v4,
1190 return internal::ValueArray50<
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11,
1191 T12,
T13,
T14,
T15,
T16,
T17,
T18,
T19,
T20,
T21,
T22,
T23,
T24,
T25,
1192 T26,
T27,
T28,
T29,
T30,
T31,
T32,
T33,
T34,
T35,
T36,
T37,
T38,
T39,
1193 T40,
T41,
T42,
T43,
T44,
T45,
T46,
T47,
T48,
T49,
T50>(
v1,
v2,
v3,
v4,
1194 v5,
v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19,
1195 v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33,
1196 v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47,
1220 inline internal::ParamGenerator<bool>
Bool() {
1221 return Values(
false,
true);
1224 # if GTEST_HAS_COMBINE
1273 template <
typename Generator1,
typename Generator2>
1274 internal::CartesianProductHolder2<Generator1, Generator2> Combine(
1275 const Generator1& g1,
const Generator2& g2) {
1276 return internal::CartesianProductHolder2<Generator1, Generator2>(
1280 template <
typename Generator1,
typename Generator2,
typename Generator3>
1281 internal::CartesianProductHolder3<Generator1, Generator2, Generator3> Combine(
1282 const Generator1& g1,
const Generator2& g2,
const Generator3& g3) {
1283 return internal::CartesianProductHolder3<Generator1, Generator2, Generator3>(
1287 template <
typename Generator1,
typename Generator2,
typename Generator3,
1288 typename Generator4>
1289 internal::CartesianProductHolder4<Generator1, Generator2, Generator3,
1290 Generator4> Combine(
1291 const Generator1& g1,
const Generator2& g2,
const Generator3& g3,
1292 const Generator4&
g4) {
1293 return internal::CartesianProductHolder4<Generator1, Generator2, Generator3,
1298 template <
typename Generator1,
typename Generator2,
typename Generator3,
1299 typename Generator4,
typename Generator5>
1300 internal::CartesianProductHolder5<Generator1, Generator2, Generator3,
1301 Generator4, Generator5> Combine(
1302 const Generator1& g1,
const Generator2& g2,
const Generator3& g3,
1303 const Generator4&
g4,
const Generator5& g5) {
1304 return internal::CartesianProductHolder5<Generator1, Generator2, Generator3,
1305 Generator4, Generator5>(
1306 g1, g2, g3,
g4, g5);
1309 template <
typename Generator1,
typename Generator2,
typename Generator3,
1310 typename Generator4,
typename Generator5,
typename Generator6>
1311 internal::CartesianProductHolder6<Generator1, Generator2, Generator3,
1312 Generator4, Generator5, Generator6> Combine(
1313 const Generator1& g1,
const Generator2& g2,
const Generator3& g3,
1314 const Generator4&
g4,
const Generator5& g5,
const Generator6& g6) {
1315 return internal::CartesianProductHolder6<Generator1, Generator2, Generator3,
1316 Generator4, Generator5, Generator6>(
1317 g1, g2, g3,
g4, g5, g6);
1320 template <
typename Generator1,
typename Generator2,
typename Generator3,
1321 typename Generator4,
typename Generator5,
typename Generator6,
1322 typename Generator7>
1323 internal::CartesianProductHolder7<Generator1, Generator2, Generator3,
1324 Generator4, Generator5, Generator6, Generator7> Combine(
1325 const Generator1& g1,
const Generator2& g2,
const Generator3& g3,
1326 const Generator4&
g4,
const Generator5& g5,
const Generator6& g6,
1327 const Generator7& g7) {
1328 return internal::CartesianProductHolder7<Generator1, Generator2, Generator3,
1329 Generator4, Generator5, Generator6, Generator7>(
1330 g1, g2, g3,
g4, g5, g6, g7);
1333 template <
typename Generator1,
typename Generator2,
typename Generator3,
1334 typename Generator4,
typename Generator5,
typename Generator6,
1335 typename Generator7,
typename Generator8>
1336 internal::CartesianProductHolder8<Generator1, Generator2, Generator3,
1337 Generator4, Generator5, Generator6, Generator7, Generator8> Combine(
1338 const Generator1& g1,
const Generator2& g2,
const Generator3& g3,
1339 const Generator4&
g4,
const Generator5& g5,
const Generator6& g6,
1340 const Generator7& g7,
const Generator8& g8) {
1341 return internal::CartesianProductHolder8<Generator1, Generator2, Generator3,
1342 Generator4, Generator5, Generator6, Generator7, Generator8>(
1343 g1, g2, g3,
g4, g5, g6, g7, g8);
1346 template <
typename Generator1,
typename Generator2,
typename Generator3,
1347 typename Generator4,
typename Generator5,
typename Generator6,
1348 typename Generator7,
typename Generator8,
typename Generator9>
1349 internal::CartesianProductHolder9<Generator1, Generator2, Generator3,
1350 Generator4, Generator5, Generator6, Generator7, Generator8,
1351 Generator9> Combine(
1352 const Generator1& g1,
const Generator2& g2,
const Generator3& g3,
1353 const Generator4&
g4,
const Generator5& g5,
const Generator6& g6,
1354 const Generator7& g7,
const Generator8& g8,
const Generator9& g9) {
1355 return internal::CartesianProductHolder9<Generator1, Generator2, Generator3,
1356 Generator4, Generator5, Generator6, Generator7, Generator8, Generator9>(
1357 g1, g2, g3,
g4, g5, g6, g7, g8, g9);
1360 template <
typename Generator1,
typename Generator2,
typename Generator3,
1361 typename Generator4,
typename Generator5,
typename Generator6,
1362 typename Generator7,
typename Generator8,
typename Generator9,
1363 typename Generator10>
1364 internal::CartesianProductHolder10<Generator1, Generator2, Generator3,
1365 Generator4, Generator5, Generator6, Generator7, Generator8, Generator9,
1366 Generator10> Combine(
1367 const Generator1& g1,
const Generator2& g2,
const Generator3& g3,
1368 const Generator4&
g4,
const Generator5& g5,
const Generator6& g6,
1369 const Generator7& g7,
const Generator8& g8,
const Generator9& g9,
1370 const Generator10& g10) {
1371 return internal::CartesianProductHolder10<Generator1, Generator2, Generator3,
1372 Generator4, Generator5, Generator6, Generator7, Generator8, Generator9,
1374 g1, g2, g3,
g4, g5, g6, g7, g8, g9, g10);
1376 # endif // GTEST_HAS_COMBINE
1380 # define TEST_P(test_case_name, test_name) \
1381 class GTEST_TEST_CLASS_NAME_(test_case_name, test_name) \
1382 : public test_case_name { \
1384 GTEST_TEST_CLASS_NAME_(test_case_name, test_name)() {} \
1385 virtual void TestBody(); \
1387 static int AddToRegistry() { \
1388 ::testing::UnitTest::GetInstance()->parameterized_test_registry(). \
1389 GetTestCasePatternHolder<test_case_name>(\
1391 ::testing::internal::CodeLocation(\
1392 __FILE__, __LINE__))->AddTestPattern(\
1395 new ::testing::internal::TestMetaFactory< \
1396 GTEST_TEST_CLASS_NAME_(\
1397 test_case_name, test_name)>()); \
1400 static int gtest_registering_dummy_ GTEST_ATTRIBUTE_UNUSED_; \
1401 GTEST_DISALLOW_COPY_AND_ASSIGN_(\
1402 GTEST_TEST_CLASS_NAME_(test_case_name, test_name)); \
1404 int GTEST_TEST_CLASS_NAME_(test_case_name, \
1405 test_name)::gtest_registering_dummy_ = \
1406 GTEST_TEST_CLASS_NAME_(test_case_name, test_name)::AddToRegistry(); \
1407 void GTEST_TEST_CLASS_NAME_(test_case_name, test_name)::TestBody()
1421 # define INSTANTIATE_TEST_CASE_P(prefix, test_case_name, generator, ...) \
1422 ::testing::internal::ParamGenerator<test_case_name::ParamType> \
1423 gtest_##prefix##test_case_name##_EvalGenerator_() { return generator; } \
1424 ::std::string gtest_##prefix##test_case_name##_EvalGenerateName_( \
1425 const ::testing::TestParamInfo<test_case_name::ParamType>& info) { \
1426 return ::testing::internal::GetParamNameGen<test_case_name::ParamType> \
1427 (__VA_ARGS__)(info); \
1429 int gtest_##prefix##test_case_name##_dummy_ GTEST_ATTRIBUTE_UNUSED_ = \
1430 ::testing::UnitTest::GetInstance()->parameterized_test_registry(). \
1431 GetTestCasePatternHolder<test_case_name>(\
1433 ::testing::internal::CodeLocation(\
1434 __FILE__, __LINE__))->AddTestCaseInstantiation(\
1436 >est_##prefix##test_case_name##_EvalGenerator_, \
1437 >est_##prefix##test_case_name##_EvalGenerateName_, \
1442 #endif // GTEST_HAS_PARAM_TEST
1444 #endif // GTEST_INCLUDE_GTEST_GTEST_PARAM_TEST_H_