1f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// This file was GENERATED by command: 2f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// pump.py gtest-param-test.h.pump 3f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// DO NOT EDIT BY HAND!!! 4f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 5f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// Copyright 2008, Google Inc. 6f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// All rights reserved. 7f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// 8f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// Redistribution and use in source and binary forms, with or without 9f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// modification, are permitted provided that the following conditions are 10f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// met: 11f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// 12f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// * Redistributions of source code must retain the above copyright 13f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// notice, this list of conditions and the following disclaimer. 14f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// * Redistributions in binary form must reproduce the above 15f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// copyright notice, this list of conditions and the following disclaimer 16f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// in the documentation and/or other materials provided with the 17f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// distribution. 18f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// * Neither the name of Google Inc. nor the names of its 19f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// contributors may be used to endorse or promote products derived from 20f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// this software without specific prior written permission. 21f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// 22f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 23f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 24f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 25f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 26f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 27f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 28f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 29f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 30f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 31f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 32f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 33f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// 34f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// Authors: vladl@google.com (Vlad Losev) 35f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// 36f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// Macros and functions for implementing parameterized tests 37f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// in Google C++ Testing Framework (Google Test) 38f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// 39f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// This file is generated by a SCRIPT. DO NOT EDIT BY HAND! 40f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// 41f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#ifndef GTEST_INCLUDE_GTEST_GTEST_PARAM_TEST_H_ 42f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define GTEST_INCLUDE_GTEST_GTEST_PARAM_TEST_H_ 43f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 44f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 45f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// Value-parameterized tests allow you to test your code with different 46f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// parameters without writing multiple copies of the same test. 47f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// 48f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// Here is how you use value-parameterized tests: 49f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 50f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#if 0 51f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 52f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// To write value-parameterized tests, first you should define a fixture 53f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// class. It is usually derived from testing::TestWithParam<T> (see below for 54f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// another inheritance scheme that's sometimes useful in more complicated 55f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// class hierarchies), where the type of your parameter values. 56f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// TestWithParam<T> is itself derived from testing::Test. T can be any 57f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// copyable type. If it's a raw pointer, you are responsible for managing the 58f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// lifespan of the pointed values. 59f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 60f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgclass FooTest : public ::testing::TestWithParam<const char*> { 61f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org // You can implement all the usual class fixture members here. 62f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org}; 63f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 64f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// Then, use the TEST_P macro to define as many parameterized tests 65f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// for this fixture as you want. The _P suffix is for "parameterized" 66f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// or "pattern", whichever you prefer to think. 67f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 68f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgTEST_P(FooTest, DoesBlah) { 69f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org // Inside a test, access the test parameter with the GetParam() method 70f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org // of the TestWithParam<T> class: 71f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org EXPECT_TRUE(foo.Blah(GetParam())); 72f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org ... 73f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 74f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 75f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgTEST_P(FooTest, HasBlahBlah) { 76f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org ... 77f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 78f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 79f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// Finally, you can use INSTANTIATE_TEST_CASE_P to instantiate the test 80f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// case with any set of parameters you want. Google Test defines a number 81f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// of functions for generating test parameters. They return what we call 82f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// (surprise!) parameter generators. Here is a summary of them, which 83f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// are all in the testing namespace: 84f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// 85f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// 86f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// Range(begin, end [, step]) - Yields values {begin, begin+step, 87f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// begin+step+step, ...}. The values do not 88f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// include end. step defaults to 1. 89f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// Values(v1, v2, ..., vN) - Yields values {v1, v2, ..., vN}. 90f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// ValuesIn(container) - Yields values from a C-style array, an STL 91f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// ValuesIn(begin,end) container, or an iterator range [begin, end). 92f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// Bool() - Yields sequence {false, true}. 93f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// Combine(g1, g2, ..., gN) - Yields all combinations (the Cartesian product 94f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// for the math savvy) of the values generated 95f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// by the N generators. 96f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// 97f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// For more details, see comments at the definitions of these functions below 98f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// in this file. 99f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// 100f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// The following statement will instantiate tests from the FooTest test case 101f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// each with parameter values "meeny", "miny", and "moe". 102f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 103f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgINSTANTIATE_TEST_CASE_P(InstantiationName, 104f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org FooTest, 105f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org Values("meeny", "miny", "moe")); 106f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 107f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// To distinguish different instances of the pattern, (yes, you 108f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// can instantiate it more then once) the first argument to the 109f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// INSTANTIATE_TEST_CASE_P macro is a prefix that will be added to the 110f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// actual test case name. Remember to pick unique prefixes for different 111f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// instantiations. The tests from the instantiation above will have 112f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// these names: 113f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// 114f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// * InstantiationName/FooTest.DoesBlah/0 for "meeny" 115f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// * InstantiationName/FooTest.DoesBlah/1 for "miny" 116f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// * InstantiationName/FooTest.DoesBlah/2 for "moe" 117f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// * InstantiationName/FooTest.HasBlahBlah/0 for "meeny" 118f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// * InstantiationName/FooTest.HasBlahBlah/1 for "miny" 119f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// * InstantiationName/FooTest.HasBlahBlah/2 for "moe" 120f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// 121f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// You can use these names in --gtest_filter. 122f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// 123f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// This statement will instantiate all tests from FooTest again, each 124f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// with parameter values "cat" and "dog": 125f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 126f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgconst char* pets[] = {"cat", "dog"}; 127f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgINSTANTIATE_TEST_CASE_P(AnotherInstantiationName, FooTest, ValuesIn(pets)); 128f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 129f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// The tests from the instantiation above will have these names: 130f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// 131f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// * AnotherInstantiationName/FooTest.DoesBlah/0 for "cat" 132f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// * AnotherInstantiationName/FooTest.DoesBlah/1 for "dog" 133f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// * AnotherInstantiationName/FooTest.HasBlahBlah/0 for "cat" 134f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// * AnotherInstantiationName/FooTest.HasBlahBlah/1 for "dog" 135f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// 136f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// Please note that INSTANTIATE_TEST_CASE_P will instantiate all tests 137f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// in the given test case, whether their definitions come before or 138f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// AFTER the INSTANTIATE_TEST_CASE_P statement. 139f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// 140f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// Please also note that generator expressions (including parameters to the 141f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// generators) are evaluated in InitGoogleTest(), after main() has started. 142f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// This allows the user on one hand, to adjust generator parameters in order 143f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// to dynamically determine a set of tests to run and on the other hand, 144f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// give the user a chance to inspect the generated tests with Google Test 145f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// reflection API before RUN_ALL_TESTS() is executed. 146f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// 147f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// You can see samples/sample7_unittest.cc and samples/sample8_unittest.cc 148f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// for more examples. 149f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// 150f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// In the future, we plan to publish the API for defining new parameter 151f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// generators. But for now this interface remains part of the internal 152f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// implementation and is subject to change. 153f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// 154f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// 155f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// A parameterized test fixture must be derived from testing::Test and from 156f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// testing::WithParamInterface<T>, where T is the type of the parameter 157f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// values. Inheriting from TestWithParam<T> satisfies that requirement because 158f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// TestWithParam<T> inherits from both Test and WithParamInterface. In more 159f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// complicated hierarchies, however, it is occasionally useful to inherit 160f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// separately from Test and WithParamInterface. For example: 161f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 162f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgclass BaseTest : public ::testing::Test { 163f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org // You can inherit all the usual members for a non-parameterized test 164f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org // fixture here. 165f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org}; 166f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 167f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgclass DerivedTest : public BaseTest, public ::testing::WithParamInterface<int> { 168f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org // The usual test fixture members go here too. 169f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org}; 170f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 171f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgTEST_F(BaseTest, HasFoo) { 172f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org // This is an ordinary non-parameterized test. 173f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 174f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 175f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgTEST_P(DerivedTest, DoesBlah) { 176f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org // GetParam works just the same here as if you inherit from TestWithParam. 177f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org EXPECT_TRUE(foo.Blah(GetParam())); 178f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 179f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 180f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#endif // 0 181f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 182f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "gtest/internal/gtest-port.h" 183f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 184f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#if !GTEST_OS_SYMBIAN 185f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org# include <utility> 186f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#endif 187f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 188f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// scripts/fuse_gtest.py depends on gtest's own header being #included 189f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// *unconditionally*. Therefore these #includes cannot be moved 190f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// inside #if GTEST_HAS_PARAM_TEST. 191f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "gtest/internal/gtest-internal.h" 192f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "gtest/internal/gtest-param-util.h" 193f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "gtest/internal/gtest-param-util-generated.h" 194f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 195f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#if GTEST_HAS_PARAM_TEST 196f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 197f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgnamespace testing { 198f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 199f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// Functions producing parameter generators. 200f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// 201f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// Google Test uses these generators to produce parameters for value- 202f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// parameterized tests. When a parameterized test case is instantiated 203f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// with a particular generator, Google Test creates and runs tests 204f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// for each element in the sequence produced by the generator. 205f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// 206f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// In the following sample, tests from test case FooTest are instantiated 207f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// each three times with parameter values 3, 5, and 8: 208f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// 209f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// class FooTest : public TestWithParam<int> { ... }; 210f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// 211f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// TEST_P(FooTest, TestThis) { 212f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// } 213f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// TEST_P(FooTest, TestThat) { 214f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// } 215f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// INSTANTIATE_TEST_CASE_P(TestSequence, FooTest, Values(3, 5, 8)); 216f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// 217f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 218f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// Range() returns generators providing sequences of values in a range. 219f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// 220f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// Synopsis: 221f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// Range(start, end) 222f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// - returns a generator producing a sequence of values {start, start+1, 223f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// start+2, ..., }. 224f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// Range(start, end, step) 225f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// - returns a generator producing a sequence of values {start, start+step, 226f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// start+step+step, ..., }. 227f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// Notes: 228f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// * The generated sequences never include end. For example, Range(1, 5) 229f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// returns a generator producing a sequence {1, 2, 3, 4}. Range(1, 9, 2) 230f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// returns a generator producing {1, 3, 5, 7}. 231f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// * start and end must have the same type. That type may be any integral or 232f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// floating-point type or a user defined type satisfying these conditions: 233f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// * It must be assignable (have operator=() defined). 234f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// * It must have operator+() (operator+(int-compatible type) for 235f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// two-operand version). 236f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// * It must have operator<() defined. 237f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// Elements in the resulting sequences will also have that type. 238f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// * Condition start < end must be satisfied in order for resulting sequences 239f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// to contain any elements. 240f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// 241f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgtemplate <typename T, typename IncrementT> 242f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orginternal::ParamGenerator<T> Range(T start, T end, IncrementT step) { 243f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return internal::ParamGenerator<T>( 244f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org new internal::RangeGenerator<T, IncrementT>(start, end, step)); 245f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 246f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 247f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgtemplate <typename T> 248f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orginternal::ParamGenerator<T> Range(T start, T end) { 249f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return Range(start, end, 1); 250f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 251f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 252f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// ValuesIn() function allows generation of tests with parameters coming from 253f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// a container. 254f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// 255f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// Synopsis: 256f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// ValuesIn(const T (&array)[N]) 257f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// - returns a generator producing sequences with elements from 258f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// a C-style array. 259f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// ValuesIn(const Container& container) 260f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// - returns a generator producing sequences with elements from 261f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// an STL-style container. 262f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// ValuesIn(Iterator begin, Iterator end) 263f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// - returns a generator producing sequences with elements from 264f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// a range [begin, end) defined by a pair of STL-style iterators. These 265f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// iterators can also be plain C pointers. 266f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// 267f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// Please note that ValuesIn copies the values from the containers 268f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// passed in and keeps them to generate tests in RUN_ALL_TESTS(). 269f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// 270f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// Examples: 271f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// 272f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// This instantiates tests from test case StringTest 273f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// each with C-string values of "foo", "bar", and "baz": 274f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// 275f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// const char* strings[] = {"foo", "bar", "baz"}; 276f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// INSTANTIATE_TEST_CASE_P(StringSequence, SrtingTest, ValuesIn(strings)); 277f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// 278f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// This instantiates tests from test case StlStringTest 279f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// each with STL strings with values "a" and "b": 280f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// 281f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// ::std::vector< ::std::string> GetParameterStrings() { 282f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// ::std::vector< ::std::string> v; 283f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// v.push_back("a"); 284f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// v.push_back("b"); 285f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// return v; 286f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// } 287f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// 288f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// INSTANTIATE_TEST_CASE_P(CharSequence, 289f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// StlStringTest, 290f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// ValuesIn(GetParameterStrings())); 291f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// 292f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// 293f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// This will also instantiate tests from CharTest 294f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// each with parameter values 'a' and 'b': 295f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// 296f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// ::std::list<char> GetParameterChars() { 297f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// ::std::list<char> list; 298f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// list.push_back('a'); 299f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// list.push_back('b'); 300f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// return list; 301f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// } 302f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// ::std::list<char> l = GetParameterChars(); 303f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// INSTANTIATE_TEST_CASE_P(CharSequence2, 304f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// CharTest, 305f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// ValuesIn(l.begin(), l.end())); 306f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// 307f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgtemplate <typename ForwardIterator> 308f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orginternal::ParamGenerator< 309f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename ::testing::internal::IteratorTraits<ForwardIterator>::value_type> 310f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgValuesIn(ForwardIterator begin, ForwardIterator end) { 311f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typedef typename ::testing::internal::IteratorTraits<ForwardIterator> 312f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org ::value_type ParamType; 313f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return internal::ParamGenerator<ParamType>( 314f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org new internal::ValuesInIteratorRangeGenerator<ParamType>(begin, end)); 315f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 316f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 317f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgtemplate <typename T, size_t N> 318f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orginternal::ParamGenerator<T> ValuesIn(const T (&array)[N]) { 319f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return ValuesIn(array, array + N); 320f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 321f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 322f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgtemplate <class Container> 323f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orginternal::ParamGenerator<typename Container::value_type> ValuesIn( 324f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org const Container& container) { 325f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return ValuesIn(container.begin(), container.end()); 326f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 327f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 328f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// Values() allows generating tests from explicitly specified list of 329f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// parameters. 330f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// 331f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// Synopsis: 332f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// Values(T v1, T v2, ..., T vN) 333f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// - returns a generator producing sequences with elements v1, v2, ..., vN. 334f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// 335f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// For example, this instantiates tests from test case BarTest each 336f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// with values "one", "two", and "three": 337f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// 338f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// INSTANTIATE_TEST_CASE_P(NumSequence, BarTest, Values("one", "two", "three")); 339f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// 340f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// This instantiates tests from test case BazTest each with values 1, 2, 3.5. 341f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// The exact type of values will depend on the type of parameter in BazTest. 342f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// 343f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// INSTANTIATE_TEST_CASE_P(FloatingNumbers, BazTest, Values(1, 2, 3.5)); 344f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// 345f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// Currently, Values() supports from 1 to 50 parameters. 346f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// 347f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgtemplate <typename T1> 348f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orginternal::ValueArray1<T1> Values(T1 v1) { 349f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return internal::ValueArray1<T1>(v1); 350f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 351f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 352f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgtemplate <typename T1, typename T2> 353f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orginternal::ValueArray2<T1, T2> Values(T1 v1, T2 v2) { 354f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return internal::ValueArray2<T1, T2>(v1, v2); 355f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 356f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 357f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgtemplate <typename T1, typename T2, typename T3> 358f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orginternal::ValueArray3<T1, T2, T3> Values(T1 v1, T2 v2, T3 v3) { 359f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return internal::ValueArray3<T1, T2, T3>(v1, v2, v3); 360f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 361f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 362f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgtemplate <typename T1, typename T2, typename T3, typename T4> 363f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orginternal::ValueArray4<T1, T2, T3, T4> Values(T1 v1, T2 v2, T3 v3, T4 v4) { 364f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return internal::ValueArray4<T1, T2, T3, T4>(v1, v2, v3, v4); 365f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 366f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 367f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgtemplate <typename T1, typename T2, typename T3, typename T4, typename T5> 368f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orginternal::ValueArray5<T1, T2, T3, T4, T5> Values(T1 v1, T2 v2, T3 v3, T4 v4, 369f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T5 v5) { 370f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return internal::ValueArray5<T1, T2, T3, T4, T5>(v1, v2, v3, v4, v5); 371f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 372f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 373f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 374f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T6> 375f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orginternal::ValueArray6<T1, T2, T3, T4, T5, T6> Values(T1 v1, T2 v2, T3 v3, 376f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T4 v4, T5 v5, T6 v6) { 377f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return internal::ValueArray6<T1, T2, T3, T4, T5, T6>(v1, v2, v3, v4, v5, v6); 378f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 379f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 380f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 381f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T6, typename T7> 382f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orginternal::ValueArray7<T1, T2, T3, T4, T5, T6, T7> Values(T1 v1, T2 v2, T3 v3, 383f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T4 v4, T5 v5, T6 v6, T7 v7) { 384f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return internal::ValueArray7<T1, T2, T3, T4, T5, T6, T7>(v1, v2, v3, v4, v5, 385f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org v6, v7); 386f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 387f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 388f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 389f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T6, typename T7, typename T8> 390f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orginternal::ValueArray8<T1, T2, T3, T4, T5, T6, T7, T8> Values(T1 v1, T2 v2, 391f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8) { 392f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return internal::ValueArray8<T1, T2, T3, T4, T5, T6, T7, T8>(v1, v2, v3, v4, 393f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org v5, v6, v7, v8); 394f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 395f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 396f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 397f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T6, typename T7, typename T8, typename T9> 398f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orginternal::ValueArray9<T1, T2, T3, T4, T5, T6, T7, T8, T9> Values(T1 v1, T2 v2, 399f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9) { 400f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return internal::ValueArray9<T1, T2, T3, T4, T5, T6, T7, T8, T9>(v1, v2, v3, 401f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org v4, v5, v6, v7, v8, v9); 402f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 403f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 404f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 405f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T6, typename T7, typename T8, typename T9, typename T10> 406f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orginternal::ValueArray10<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> Values(T1 v1, 407f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10) { 408f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return internal::ValueArray10<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>(v1, 409f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org v2, v3, v4, v5, v6, v7, v8, v9, v10); 410f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 411f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 412f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 413f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T6, typename T7, typename T8, typename T9, typename T10, 414f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T11> 415f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orginternal::ValueArray11<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, 416f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T11> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 417f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T10 v10, T11 v11) { 418f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return internal::ValueArray11<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, 419f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T11>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11); 420f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 421f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 422f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 423f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T6, typename T7, typename T8, typename T9, typename T10, 424f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T11, typename T12> 425f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orginternal::ValueArray12<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 426f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T12> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 427f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T10 v10, T11 v11, T12 v12) { 428f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return internal::ValueArray12<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 429f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T12>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12); 430f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 431f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 432f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 433f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T6, typename T7, typename T8, typename T9, typename T10, 434f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T11, typename T12, typename T13> 435f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orginternal::ValueArray13<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, 436f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T13> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 437f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T10 v10, T11 v11, T12 v12, T13 v13) { 438f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return internal::ValueArray13<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 439f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T12, T13>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13); 440f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 441f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 442f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 443f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T6, typename T7, typename T8, typename T9, typename T10, 444f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T11, typename T12, typename T13, typename T14> 445f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orginternal::ValueArray14<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 446f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T14> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 447f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T10 v10, T11 v11, T12 v12, T13 v13, T14 v14) { 448f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return internal::ValueArray14<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 449f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T12, T13, T14>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, 450f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org v14); 451f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 452f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 453f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 454f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T6, typename T7, typename T8, typename T9, typename T10, 455f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T11, typename T12, typename T13, typename T14, typename T15> 456f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orginternal::ValueArray15<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 457f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T14, T15> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, 458f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15) { 459f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return internal::ValueArray15<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 460f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T12, T13, T14, T15>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, 461f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org v13, v14, v15); 462f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 463f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 464f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 465f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T6, typename T7, typename T8, typename T9, typename T10, 466f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T11, typename T12, typename T13, typename T14, typename T15, 467f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T16> 468f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orginternal::ValueArray16<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 469f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T14, T15, T16> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, 470f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, 471f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T16 v16) { 472f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return internal::ValueArray16<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 473f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T12, T13, T14, T15, T16>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, 474f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org v12, v13, v14, v15, v16); 475f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 476f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 477f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 478f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T6, typename T7, typename T8, typename T9, typename T10, 479f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T11, typename T12, typename T13, typename T14, typename T15, 480f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T16, typename T17> 481f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orginternal::ValueArray17<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 482f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T14, T15, T16, T17> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, 483f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, 484f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T16 v16, T17 v17) { 485f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return internal::ValueArray17<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 486f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T12, T13, T14, T15, T16, T17>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, 487f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org v11, v12, v13, v14, v15, v16, v17); 488f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 489f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 490f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 491f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T6, typename T7, typename T8, typename T9, typename T10, 492f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T11, typename T12, typename T13, typename T14, typename T15, 493f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T16, typename T17, typename T18> 494f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orginternal::ValueArray18<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 495f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T14, T15, T16, T17, T18> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, 496f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, 497f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T16 v16, T17 v17, T18 v18) { 498f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return internal::ValueArray18<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 499f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T12, T13, T14, T15, T16, T17, T18>(v1, v2, v3, v4, v5, v6, v7, v8, v9, 500f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org v10, v11, v12, v13, v14, v15, v16, v17, v18); 501f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 502f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 503f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 504f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T6, typename T7, typename T8, typename T9, typename T10, 505f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T11, typename T12, typename T13, typename T14, typename T15, 506f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T16, typename T17, typename T18, typename T19> 507f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orginternal::ValueArray19<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 508f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T14, T15, T16, T17, T18, T19> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, 509f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, 510f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T15 v15, T16 v16, T17 v17, T18 v18, T19 v19) { 511f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return internal::ValueArray19<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 512f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T12, T13, T14, T15, T16, T17, T18, T19>(v1, v2, v3, v4, v5, v6, v7, v8, 513f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19); 514f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 515f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 516f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 517f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T6, typename T7, typename T8, typename T9, typename T10, 518f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T11, typename T12, typename T13, typename T14, typename T15, 519f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T16, typename T17, typename T18, typename T19, typename T20> 520f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orginternal::ValueArray20<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 521f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T14, T15, T16, T17, T18, T19, T20> Values(T1 v1, T2 v2, T3 v3, T4 v4, 522f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, 523f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20) { 524f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return internal::ValueArray20<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 525f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T12, T13, T14, T15, T16, T17, T18, T19, T20>(v1, v2, v3, v4, v5, v6, v7, 526f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20); 527f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 528f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 529f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 530f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T6, typename T7, typename T8, typename T9, typename T10, 531f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T11, typename T12, typename T13, typename T14, typename T15, 532f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T16, typename T17, typename T18, typename T19, typename T20, 533f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T21> 534f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orginternal::ValueArray21<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 535f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T14, T15, T16, T17, T18, T19, T20, T21> Values(T1 v1, T2 v2, T3 v3, T4 v4, 536f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, 537f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21) { 538f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return internal::ValueArray21<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 539f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T12, T13, T14, T15, T16, T17, T18, T19, T20, T21>(v1, v2, v3, v4, v5, v6, 540f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21); 541f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 542f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 543f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 544f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T6, typename T7, typename T8, typename T9, typename T10, 545f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T11, typename T12, typename T13, typename T14, typename T15, 546f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T16, typename T17, typename T18, typename T19, typename T20, 547f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T21, typename T22> 548f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orginternal::ValueArray22<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 549f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T14, T15, T16, T17, T18, T19, T20, T21, T22> Values(T1 v1, T2 v2, T3 v3, 550f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, 551f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, 552f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T21 v21, T22 v22) { 553f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return internal::ValueArray22<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 554f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22>(v1, v2, v3, v4, 555f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, 556f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org v20, v21, v22); 557f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 558f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 559f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 560f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T6, typename T7, typename T8, typename T9, typename T10, 561f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T11, typename T12, typename T13, typename T14, typename T15, 562f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T16, typename T17, typename T18, typename T19, typename T20, 563f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T21, typename T22, typename T23> 564f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orginternal::ValueArray23<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 565f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T14, T15, T16, T17, T18, T19, T20, T21, T22, T23> Values(T1 v1, T2 v2, 566f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, 567f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, 568f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T21 v21, T22 v22, T23 v23) { 569f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return internal::ValueArray23<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 570f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23>(v1, v2, v3, 571f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, 572f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org v20, v21, v22, v23); 573f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 574f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 575f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 576f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T6, typename T7, typename T8, typename T9, typename T10, 577f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T11, typename T12, typename T13, typename T14, typename T15, 578f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T16, typename T17, typename T18, typename T19, typename T20, 579f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T21, typename T22, typename T23, typename T24> 580f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orginternal::ValueArray24<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 581f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24> Values(T1 v1, T2 v2, 582f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, 583f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, 584f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T21 v21, T22 v22, T23 v23, T24 v24) { 585f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return internal::ValueArray24<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 586f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24>(v1, v2, 587f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, 588f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org v19, v20, v21, v22, v23, v24); 589f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 590f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 591f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 592f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T6, typename T7, typename T8, typename T9, typename T10, 593f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T11, typename T12, typename T13, typename T14, typename T15, 594f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T16, typename T17, typename T18, typename T19, typename T20, 595f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T21, typename T22, typename T23, typename T24, typename T25> 596f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orginternal::ValueArray25<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 597f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25> Values(T1 v1, 598f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, 599f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, 600f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25) { 601f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return internal::ValueArray25<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 602f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25>(v1, 603f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, 604f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org v18, v19, v20, v21, v22, v23, v24, v25); 605f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 606f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 607f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 608f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T6, typename T7, typename T8, typename T9, typename T10, 609f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T11, typename T12, typename T13, typename T14, typename T15, 610f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T16, typename T17, typename T18, typename T19, typename T20, 611f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T21, typename T22, typename T23, typename T24, typename T25, 612f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T26> 613f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orginternal::ValueArray26<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 614f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 615f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T26> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 616f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 617f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 618f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T26 v26) { 619f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return internal::ValueArray26<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 620f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 621f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T26>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, 622f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26); 623f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 624f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 625f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 626f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T6, typename T7, typename T8, typename T9, typename T10, 627f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T11, typename T12, typename T13, typename T14, typename T15, 628f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T16, typename T17, typename T18, typename T19, typename T20, 629f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T21, typename T22, typename T23, typename T24, typename T25, 630f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T26, typename T27> 631f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orginternal::ValueArray27<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 632f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, 633f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T27> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 634f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 635f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 636f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T26 v26, T27 v27) { 637f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return internal::ValueArray27<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 638f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 639f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T26, T27>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, 640f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27); 641f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 642f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 643f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 644f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T6, typename T7, typename T8, typename T9, typename T10, 645f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T11, typename T12, typename T13, typename T14, typename T15, 646f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T16, typename T17, typename T18, typename T19, typename T20, 647f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T21, typename T22, typename T23, typename T24, typename T25, 648f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T26, typename T27, typename T28> 649f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orginternal::ValueArray28<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 650f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, 651f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T28> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 652f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 653f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 654f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T26 v26, T27 v27, T28 v28) { 655f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return internal::ValueArray28<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 656f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 657f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T26, T27, T28>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, 658f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, 659f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org v28); 660f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 661f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 662f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 663f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T6, typename T7, typename T8, typename T9, typename T10, 664f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T11, typename T12, typename T13, typename T14, typename T15, 665f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T16, typename T17, typename T18, typename T19, typename T20, 666f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T21, typename T22, typename T23, typename T24, typename T25, 667f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T26, typename T27, typename T28, typename T29> 668f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orginternal::ValueArray29<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 669f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 670f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T29> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 671f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 672f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 673f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T26 v26, T27 v27, T28 v28, T29 v29) { 674f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return internal::ValueArray29<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 675f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 676f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T26, T27, T28, T29>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, 677f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, 678f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org v27, v28, v29); 679f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 680f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 681f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 682f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T6, typename T7, typename T8, typename T9, typename T10, 683f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T11, typename T12, typename T13, typename T14, typename T15, 684f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T16, typename T17, typename T18, typename T19, typename T20, 685f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T21, typename T22, typename T23, typename T24, typename T25, 686f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T26, typename T27, typename T28, typename T29, typename T30> 687f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orginternal::ValueArray30<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 688f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 689f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T29, T30> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, 690f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, 691f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, 692f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30) { 693f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return internal::ValueArray30<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 694f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 695f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T26, T27, T28, T29, T30>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, 696f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, 697f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org v26, v27, v28, v29, v30); 698f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 699f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 700f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 701f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T6, typename T7, typename T8, typename T9, typename T10, 702f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T11, typename T12, typename T13, typename T14, typename T15, 703f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T16, typename T17, typename T18, typename T19, typename T20, 704f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T21, typename T22, typename T23, typename T24, typename T25, 705f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T26, typename T27, typename T28, typename T29, typename T30, 706f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T31> 707f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orginternal::ValueArray31<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 708f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 709f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T29, T30, T31> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, 710f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, 711f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, 712f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31) { 713f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return internal::ValueArray31<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 714f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 715f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T26, T27, T28, T29, T30, T31>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, 716f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, 717f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org v25, v26, v27, v28, v29, v30, v31); 718f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 719f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 720f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 721f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T6, typename T7, typename T8, typename T9, typename T10, 722f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T11, typename T12, typename T13, typename T14, typename T15, 723f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T16, typename T17, typename T18, typename T19, typename T20, 724f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T21, typename T22, typename T23, typename T24, typename T25, 725f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T26, typename T27, typename T28, typename T29, typename T30, 726f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T31, typename T32> 727f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orginternal::ValueArray32<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 728f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 729f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T29, T30, T31, T32> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, 730f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, 731f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, 732f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, 733f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T32 v32) { 734f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return internal::ValueArray32<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 735f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 736f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T26, T27, T28, T29, T30, T31, T32>(v1, v2, v3, v4, v5, v6, v7, v8, v9, 737f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, 738f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org v24, v25, v26, v27, v28, v29, v30, v31, v32); 739f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 740f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 741f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 742f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T6, typename T7, typename T8, typename T9, typename T10, 743f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T11, typename T12, typename T13, typename T14, typename T15, 744f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T16, typename T17, typename T18, typename T19, typename T20, 745f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T21, typename T22, typename T23, typename T24, typename T25, 746f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T26, typename T27, typename T28, typename T29, typename T30, 747f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T31, typename T32, typename T33> 748f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orginternal::ValueArray33<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 749f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 750f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T29, T30, T31, T32, T33> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, 751f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, 752f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, 753f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, 754f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T32 v32, T33 v33) { 755f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return internal::ValueArray33<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 756f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 757f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T26, T27, T28, T29, T30, T31, T32, T33>(v1, v2, v3, v4, v5, v6, v7, v8, 758f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, 759f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org v24, v25, v26, v27, v28, v29, v30, v31, v32, v33); 760f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 761f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 762f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 763f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T6, typename T7, typename T8, typename T9, typename T10, 764f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T11, typename T12, typename T13, typename T14, typename T15, 765f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T16, typename T17, typename T18, typename T19, typename T20, 766f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T21, typename T22, typename T23, typename T24, typename T25, 767f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T26, typename T27, typename T28, typename T29, typename T30, 768f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T31, typename T32, typename T33, typename T34> 769f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orginternal::ValueArray34<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 770f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 771f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T29, T30, T31, T32, T33, T34> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, 772f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, 773f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, 774f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, 775f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T31 v31, T32 v32, T33 v33, T34 v34) { 776f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return internal::ValueArray34<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 777f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 778f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T26, T27, T28, T29, T30, T31, T32, T33, T34>(v1, v2, v3, v4, v5, v6, v7, 779f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, 780f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34); 781f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 782f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 783f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 784f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T6, typename T7, typename T8, typename T9, typename T10, 785f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T11, typename T12, typename T13, typename T14, typename T15, 786f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T16, typename T17, typename T18, typename T19, typename T20, 787f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T21, typename T22, typename T23, typename T24, typename T25, 788f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T26, typename T27, typename T28, typename T29, typename T30, 789f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T31, typename T32, typename T33, typename T34, typename T35> 790f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orginternal::ValueArray35<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 791f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 792f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T29, T30, T31, T32, T33, T34, T35> Values(T1 v1, T2 v2, T3 v3, T4 v4, 793f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, 794f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, 795f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, 796f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35) { 797f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return internal::ValueArray35<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 798f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 799f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T26, T27, T28, T29, T30, T31, T32, T33, T34, T35>(v1, v2, v3, v4, v5, v6, 800f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, 801f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35); 802f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 803f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 804f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 805f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T6, typename T7, typename T8, typename T9, typename T10, 806f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T11, typename T12, typename T13, typename T14, typename T15, 807f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T16, typename T17, typename T18, typename T19, typename T20, 808f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T21, typename T22, typename T23, typename T24, typename T25, 809f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T26, typename T27, typename T28, typename T29, typename T30, 810f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T31, typename T32, typename T33, typename T34, typename T35, 811f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T36> 812f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orginternal::ValueArray36<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 813f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 814f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T29, T30, T31, T32, T33, T34, T35, T36> Values(T1 v1, T2 v2, T3 v3, T4 v4, 815f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, 816f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, 817f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, 818f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36) { 819f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return internal::ValueArray36<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 820f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 821f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36>(v1, v2, v3, v4, 822f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, 823f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, 824f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org v34, v35, v36); 825f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 826f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 827f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 828f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T6, typename T7, typename T8, typename T9, typename T10, 829f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T11, typename T12, typename T13, typename T14, typename T15, 830f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T16, typename T17, typename T18, typename T19, typename T20, 831f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T21, typename T22, typename T23, typename T24, typename T25, 832f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T26, typename T27, typename T28, typename T29, typename T30, 833f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T31, typename T32, typename T33, typename T34, typename T35, 834f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T36, typename T37> 835f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orginternal::ValueArray37<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 836f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 837f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T29, T30, T31, T32, T33, T34, T35, T36, T37> Values(T1 v1, T2 v2, T3 v3, 838f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, 839f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, 840f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, 841f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, 842f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T37 v37) { 843f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return internal::ValueArray37<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 844f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 845f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37>(v1, v2, v3, 846f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, 847f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, 848f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org v34, v35, v36, v37); 849f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 850f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 851f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 852f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T6, typename T7, typename T8, typename T9, typename T10, 853f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T11, typename T12, typename T13, typename T14, typename T15, 854f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T16, typename T17, typename T18, typename T19, typename T20, 855f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T21, typename T22, typename T23, typename T24, typename T25, 856f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T26, typename T27, typename T28, typename T29, typename T30, 857f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T31, typename T32, typename T33, typename T34, typename T35, 858f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T36, typename T37, typename T38> 859f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orginternal::ValueArray38<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 860f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 861f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T29, T30, T31, T32, T33, T34, T35, T36, T37, T38> Values(T1 v1, T2 v2, 862f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, 863f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, 864f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, 865f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, 866f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T37 v37, T38 v38) { 867f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return internal::ValueArray38<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 868f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 869f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38>(v1, v2, 870f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, 871f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, 872f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org v33, v34, v35, v36, v37, v38); 873f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 874f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 875f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 876f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T6, typename T7, typename T8, typename T9, typename T10, 877f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T11, typename T12, typename T13, typename T14, typename T15, 878f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T16, typename T17, typename T18, typename T19, typename T20, 879f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T21, typename T22, typename T23, typename T24, typename T25, 880f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T26, typename T27, typename T28, typename T29, typename T30, 881f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T31, typename T32, typename T33, typename T34, typename T35, 882f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T36, typename T37, typename T38, typename T39> 883f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orginternal::ValueArray39<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 884f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 885f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39> Values(T1 v1, T2 v2, 886f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, 887f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, 888f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, 889f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, 890f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T37 v37, T38 v38, T39 v39) { 891f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return internal::ValueArray39<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 892f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 893f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39>(v1, 894f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, 895f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, 896f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org v32, v33, v34, v35, v36, v37, v38, v39); 897f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 898f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 899f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 900f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T6, typename T7, typename T8, typename T9, typename T10, 901f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T11, typename T12, typename T13, typename T14, typename T15, 902f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T16, typename T17, typename T18, typename T19, typename T20, 903f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T21, typename T22, typename T23, typename T24, typename T25, 904f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T26, typename T27, typename T28, typename T29, typename T30, 905f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T31, typename T32, typename T33, typename T34, typename T35, 906f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T36, typename T37, typename T38, typename T39, typename T40> 907f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orginternal::ValueArray40<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 908f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 909f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40> Values(T1 v1, 910f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, 911f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, 912f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, 913f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, 914f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T36 v36, T37 v37, T38 v38, T39 v39, T40 v40) { 915f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return internal::ValueArray40<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 916f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 917f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, 918f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T40>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, 919f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, 920f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40); 921f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 922f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 923f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 924f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T6, typename T7, typename T8, typename T9, typename T10, 925f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T11, typename T12, typename T13, typename T14, typename T15, 926f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T16, typename T17, typename T18, typename T19, typename T20, 927f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T21, typename T22, typename T23, typename T24, typename T25, 928f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T26, typename T27, typename T28, typename T29, typename T30, 929f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T31, typename T32, typename T33, typename T34, typename T35, 930f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T36, typename T37, typename T38, typename T39, typename T40, 931f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T41> 932f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orginternal::ValueArray41<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 933f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 934f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, 935f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T41> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 936f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 937f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 938f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, 939f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41) { 940f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return internal::ValueArray41<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 941f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 942f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, 943f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T40, T41>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, 944f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, 945f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41); 946f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 947f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 948f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 949f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T6, typename T7, typename T8, typename T9, typename T10, 950f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T11, typename T12, typename T13, typename T14, typename T15, 951f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T16, typename T17, typename T18, typename T19, typename T20, 952f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T21, typename T22, typename T23, typename T24, typename T25, 953f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T26, typename T27, typename T28, typename T29, typename T30, 954f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T31, typename T32, typename T33, typename T34, typename T35, 955f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T36, typename T37, typename T38, typename T39, typename T40, 956f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T41, typename T42> 957f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orginternal::ValueArray42<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 958f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 959f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, 960f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T42> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 961f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 962f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 963f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, 964f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, 965f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T42 v42) { 966f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return internal::ValueArray42<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 967f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 968f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, 969f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T40, T41, T42>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, 970f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, 971f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, 972f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org v42); 973f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 974f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 975f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 976f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T6, typename T7, typename T8, typename T9, typename T10, 977f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T11, typename T12, typename T13, typename T14, typename T15, 978f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T16, typename T17, typename T18, typename T19, typename T20, 979f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T21, typename T22, typename T23, typename T24, typename T25, 980f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T26, typename T27, typename T28, typename T29, typename T30, 981f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T31, typename T32, typename T33, typename T34, typename T35, 982f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T36, typename T37, typename T38, typename T39, typename T40, 983f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T41, typename T42, typename T43> 984f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orginternal::ValueArray43<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 985f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 986f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, 987f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T43> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 988f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 989f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 990f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, 991f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, 992f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T42 v42, T43 v43) { 993f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return internal::ValueArray43<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 994f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 995f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, 996f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T40, T41, T42, T43>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, 997f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, 998f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, 999f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org v41, v42, v43); 1000f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 1001f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1002f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 1003f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T6, typename T7, typename T8, typename T9, typename T10, 1004f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T11, typename T12, typename T13, typename T14, typename T15, 1005f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T16, typename T17, typename T18, typename T19, typename T20, 1006f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T21, typename T22, typename T23, typename T24, typename T25, 1007f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T26, typename T27, typename T28, typename T29, typename T30, 1008f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T31, typename T32, typename T33, typename T34, typename T35, 1009f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T36, typename T37, typename T38, typename T39, typename T40, 1010f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T41, typename T42, typename T43, typename T44> 1011f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orginternal::ValueArray44<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 1012f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 1013f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, 1014f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T44> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 1015f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 1016f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 1017f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, 1018f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, 1019f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T42 v42, T43 v43, T44 v44) { 1020f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return internal::ValueArray44<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 1021f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 1022f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, 1023f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T40, T41, T42, T43, T44>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, 1024f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, 1025f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, 1026f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org v40, v41, v42, v43, v44); 1027f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 1028f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1029f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 1030f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T6, typename T7, typename T8, typename T9, typename T10, 1031f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T11, typename T12, typename T13, typename T14, typename T15, 1032f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T16, typename T17, typename T18, typename T19, typename T20, 1033f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T21, typename T22, typename T23, typename T24, typename T25, 1034f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T26, typename T27, typename T28, typename T29, typename T30, 1035f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T31, typename T32, typename T33, typename T34, typename T35, 1036f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T36, typename T37, typename T38, typename T39, typename T40, 1037f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T41, typename T42, typename T43, typename T44, typename T45> 1038f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orginternal::ValueArray45<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 1039f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 1040f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, 1041f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T44, T45> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, 1042f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, 1043f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, 1044f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, 1045f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, 1046f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T41 v41, T42 v42, T43 v43, T44 v44, T45 v45) { 1047f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return internal::ValueArray45<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 1048f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 1049f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, 1050f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T40, T41, T42, T43, T44, T45>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, 1051f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, 1052f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, 1053f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org v39, v40, v41, v42, v43, v44, v45); 1054f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 1055f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1056f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 1057f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T6, typename T7, typename T8, typename T9, typename T10, 1058f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T11, typename T12, typename T13, typename T14, typename T15, 1059f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T16, typename T17, typename T18, typename T19, typename T20, 1060f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T21, typename T22, typename T23, typename T24, typename T25, 1061f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T26, typename T27, typename T28, typename T29, typename T30, 1062f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T31, typename T32, typename T33, typename T34, typename T35, 1063f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T36, typename T37, typename T38, typename T39, typename T40, 1064f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T41, typename T42, typename T43, typename T44, typename T45, 1065f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T46> 1066f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orginternal::ValueArray46<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 1067f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 1068f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, 1069f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T44, T45, T46> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, 1070f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, 1071f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, 1072f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, 1073f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, 1074f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46) { 1075f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return internal::ValueArray46<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 1076f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 1077f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, 1078f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T40, T41, T42, T43, T44, T45, T46>(v1, v2, v3, v4, v5, v6, v7, v8, v9, 1079f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, 1080f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, 1081f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org v38, v39, v40, v41, v42, v43, v44, v45, v46); 1082f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 1083f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1084f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 1085f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T6, typename T7, typename T8, typename T9, typename T10, 1086f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T11, typename T12, typename T13, typename T14, typename T15, 1087f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T16, typename T17, typename T18, typename T19, typename T20, 1088f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T21, typename T22, typename T23, typename T24, typename T25, 1089f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T26, typename T27, typename T28, typename T29, typename T30, 1090f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T31, typename T32, typename T33, typename T34, typename T35, 1091f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T36, typename T37, typename T38, typename T39, typename T40, 1092f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T41, typename T42, typename T43, typename T44, typename T45, 1093f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T46, typename T47> 1094f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orginternal::ValueArray47<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 1095f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 1096f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, 1097f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T44, T45, T46, T47> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, 1098f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, 1099f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, 1100f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, 1101f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, 1102f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47) { 1103f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return internal::ValueArray47<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 1104f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 1105f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, 1106f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T40, T41, T42, T43, T44, T45, T46, T47>(v1, v2, v3, v4, v5, v6, v7, v8, 1107f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, 1108f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, 1109f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org v38, v39, v40, v41, v42, v43, v44, v45, v46, v47); 1110f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 1111f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1112f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 1113f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T6, typename T7, typename T8, typename T9, typename T10, 1114f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T11, typename T12, typename T13, typename T14, typename T15, 1115f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T16, typename T17, typename T18, typename T19, typename T20, 1116f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T21, typename T22, typename T23, typename T24, typename T25, 1117f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T26, typename T27, typename T28, typename T29, typename T30, 1118f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T31, typename T32, typename T33, typename T34, typename T35, 1119f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T36, typename T37, typename T38, typename T39, typename T40, 1120f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T41, typename T42, typename T43, typename T44, typename T45, 1121f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T46, typename T47, typename T48> 1122f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orginternal::ValueArray48<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 1123f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 1124f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, 1125f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T44, T45, T46, T47, T48> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, 1126f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, 1127f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, 1128f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, 1129f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, 1130f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47, 1131f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T48 v48) { 1132f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return internal::ValueArray48<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 1133f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 1134f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, 1135f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T40, T41, T42, T43, T44, T45, T46, T47, T48>(v1, v2, v3, v4, v5, v6, v7, 1136f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, 1137f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, 1138f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48); 1139f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 1140f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1141f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 1142f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T6, typename T7, typename T8, typename T9, typename T10, 1143f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T11, typename T12, typename T13, typename T14, typename T15, 1144f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T16, typename T17, typename T18, typename T19, typename T20, 1145f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T21, typename T22, typename T23, typename T24, typename T25, 1146f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T26, typename T27, typename T28, typename T29, typename T30, 1147f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T31, typename T32, typename T33, typename T34, typename T35, 1148f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T36, typename T37, typename T38, typename T39, typename T40, 1149f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T41, typename T42, typename T43, typename T44, typename T45, 1150f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T46, typename T47, typename T48, typename T49> 1151f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orginternal::ValueArray49<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 1152f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 1153f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, 1154f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T44, T45, T46, T47, T48, T49> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, 1155f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, 1156f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, 1157f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, 1158f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, 1159f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T39 v39, T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, 1160f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T47 v47, T48 v48, T49 v49) { 1161f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return internal::ValueArray49<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 1162f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 1163f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, 1164f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T40, T41, T42, T43, T44, T45, T46, T47, T48, T49>(v1, v2, v3, v4, v5, v6, 1165f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, 1166f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, 1167f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49); 1168f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 1169f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1170f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 1171f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T6, typename T7, typename T8, typename T9, typename T10, 1172f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T11, typename T12, typename T13, typename T14, typename T15, 1173f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T16, typename T17, typename T18, typename T19, typename T20, 1174f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T21, typename T22, typename T23, typename T24, typename T25, 1175f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T26, typename T27, typename T28, typename T29, typename T30, 1176f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T31, typename T32, typename T33, typename T34, typename T35, 1177f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T36, typename T37, typename T38, typename T39, typename T40, 1178f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T41, typename T42, typename T43, typename T44, typename T45, 1179f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename T46, typename T47, typename T48, typename T49, typename T50> 1180f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orginternal::ValueArray50<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 1181f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 1182f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, 1183f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T44, T45, T46, T47, T48, T49, T50> Values(T1 v1, T2 v2, T3 v3, T4 v4, 1184f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, 1185f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, 1186f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, 1187f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, 1188f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T38 v38, T39 v39, T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, 1189f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T46 v46, T47 v47, T48 v48, T49 v49, T50 v50) { 1190f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return internal::ValueArray50<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 1191f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 1192f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, 1193f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org T40, T41, T42, T43, T44, T45, T46, T47, T48, T49, T50>(v1, v2, v3, v4, 1194f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, 1195f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, 1196f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, 1197f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org v48, v49, v50); 1198f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 1199f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1200f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// Bool() allows generating tests with parameters in a set of (false, true). 1201f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// 1202f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// Synopsis: 1203f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// Bool() 1204f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// - returns a generator producing sequences with elements {false, true}. 1205f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// 1206f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// It is useful when testing code that depends on Boolean flags. Combinations 1207f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// of multiple flags can be tested when several Bool()'s are combined using 1208f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// Combine() function. 1209f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// 1210f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// In the following example all tests in the test case FlagDependentTest 1211f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// will be instantiated twice with parameters false and true. 1212f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// 1213f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// class FlagDependentTest : public testing::TestWithParam<bool> { 1214f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// virtual void SetUp() { 1215f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// external_flag = GetParam(); 1216f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// } 1217f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// } 1218f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// INSTANTIATE_TEST_CASE_P(BoolSequence, FlagDependentTest, Bool()); 1219f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// 1220f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orginline internal::ParamGenerator<bool> Bool() { 1221f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return Values(false, true); 1222f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 1223f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1224f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org# if GTEST_HAS_COMBINE 1225f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// Combine() allows the user to combine two or more sequences to produce 1226f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// values of a Cartesian product of those sequences' elements. 1227f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// 1228f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// Synopsis: 1229f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// Combine(gen1, gen2, ..., genN) 1230f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// - returns a generator producing sequences with elements coming from 1231f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// the Cartesian product of elements from the sequences generated by 1232f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// gen1, gen2, ..., genN. The sequence elements will have a type of 1233f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// tuple<T1, T2, ..., TN> where T1, T2, ..., TN are the types 1234f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// of elements from sequences produces by gen1, gen2, ..., genN. 1235f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// 1236f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// Combine can have up to 10 arguments. This number is currently limited 1237f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// by the maximum number of elements in the tuple implementation used by Google 1238f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// Test. 1239f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// 1240f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// Example: 1241f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// 1242f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// This will instantiate tests in test case AnimalTest each one with 1243f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// the parameter values tuple("cat", BLACK), tuple("cat", WHITE), 1244f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// tuple("dog", BLACK), and tuple("dog", WHITE): 1245f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// 1246f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// enum Color { BLACK, GRAY, WHITE }; 1247f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// class AnimalTest 1248f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// : public testing::TestWithParam<tuple<const char*, Color> > {...}; 1249f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// 1250f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// TEST_P(AnimalTest, AnimalLooksNice) {...} 1251f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// 1252f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// INSTANTIATE_TEST_CASE_P(AnimalVariations, AnimalTest, 1253f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// Combine(Values("cat", "dog"), 1254f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// Values(BLACK, WHITE))); 1255f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// 1256f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// This will instantiate tests in FlagDependentTest with all variations of two 1257f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// Boolean flags: 1258f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// 1259f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// class FlagDependentTest 1260f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// : public testing::TestWithParam<tuple(bool, bool)> > { 1261f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// virtual void SetUp() { 1262f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// // Assigns external_flag_1 and external_flag_2 values from the tuple. 1263f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// tie(external_flag_1, external_flag_2) = GetParam(); 1264f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// } 1265f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// }; 1266f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// 1267f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// TEST_P(FlagDependentTest, TestFeature1) { 1268f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// // Test your code using external_flag_1 and external_flag_2 here. 1269f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// } 1270f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// INSTANTIATE_TEST_CASE_P(TwoBoolSequence, FlagDependentTest, 1271f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// Combine(Bool(), Bool())); 1272f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// 1273f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgtemplate <typename Generator1, typename Generator2> 1274f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orginternal::CartesianProductHolder2<Generator1, Generator2> Combine( 1275f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org const Generator1& g1, const Generator2& g2) { 1276f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return internal::CartesianProductHolder2<Generator1, Generator2>( 1277f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org g1, g2); 1278f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 1279f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1280f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgtemplate <typename Generator1, typename Generator2, typename Generator3> 1281f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orginternal::CartesianProductHolder3<Generator1, Generator2, Generator3> Combine( 1282f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org const Generator1& g1, const Generator2& g2, const Generator3& g3) { 1283f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return internal::CartesianProductHolder3<Generator1, Generator2, Generator3>( 1284f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org g1, g2, g3); 1285f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 1286f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1287f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgtemplate <typename Generator1, typename Generator2, typename Generator3, 1288f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename Generator4> 1289f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orginternal::CartesianProductHolder4<Generator1, Generator2, Generator3, 1290f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org Generator4> Combine( 1291f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org const Generator1& g1, const Generator2& g2, const Generator3& g3, 1292f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org const Generator4& g4) { 1293f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return internal::CartesianProductHolder4<Generator1, Generator2, Generator3, 1294f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org Generator4>( 1295f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org g1, g2, g3, g4); 1296f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 1297f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1298f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgtemplate <typename Generator1, typename Generator2, typename Generator3, 1299f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename Generator4, typename Generator5> 1300f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orginternal::CartesianProductHolder5<Generator1, Generator2, Generator3, 1301f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org Generator4, Generator5> Combine( 1302f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org const Generator1& g1, const Generator2& g2, const Generator3& g3, 1303f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org const Generator4& g4, const Generator5& g5) { 1304f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return internal::CartesianProductHolder5<Generator1, Generator2, Generator3, 1305f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org Generator4, Generator5>( 1306f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org g1, g2, g3, g4, g5); 1307f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 1308f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1309f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgtemplate <typename Generator1, typename Generator2, typename Generator3, 1310f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename Generator4, typename Generator5, typename Generator6> 1311f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orginternal::CartesianProductHolder6<Generator1, Generator2, Generator3, 1312f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org Generator4, Generator5, Generator6> Combine( 1313f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org const Generator1& g1, const Generator2& g2, const Generator3& g3, 1314f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org const Generator4& g4, const Generator5& g5, const Generator6& g6) { 1315f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return internal::CartesianProductHolder6<Generator1, Generator2, Generator3, 1316f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org Generator4, Generator5, Generator6>( 1317f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org g1, g2, g3, g4, g5, g6); 1318f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 1319f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1320f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgtemplate <typename Generator1, typename Generator2, typename Generator3, 1321f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename Generator4, typename Generator5, typename Generator6, 1322f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename Generator7> 1323f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orginternal::CartesianProductHolder7<Generator1, Generator2, Generator3, 1324f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org Generator4, Generator5, Generator6, Generator7> Combine( 1325f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org const Generator1& g1, const Generator2& g2, const Generator3& g3, 1326f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org const Generator4& g4, const Generator5& g5, const Generator6& g6, 1327f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org const Generator7& g7) { 1328f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return internal::CartesianProductHolder7<Generator1, Generator2, Generator3, 1329f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org Generator4, Generator5, Generator6, Generator7>( 1330f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org g1, g2, g3, g4, g5, g6, g7); 1331f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 1332f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1333f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgtemplate <typename Generator1, typename Generator2, typename Generator3, 1334f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename Generator4, typename Generator5, typename Generator6, 1335f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename Generator7, typename Generator8> 1336f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orginternal::CartesianProductHolder8<Generator1, Generator2, Generator3, 1337f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org Generator4, Generator5, Generator6, Generator7, Generator8> Combine( 1338f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org const Generator1& g1, const Generator2& g2, const Generator3& g3, 1339f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org const Generator4& g4, const Generator5& g5, const Generator6& g6, 1340f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org const Generator7& g7, const Generator8& g8) { 1341f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return internal::CartesianProductHolder8<Generator1, Generator2, Generator3, 1342f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org Generator4, Generator5, Generator6, Generator7, Generator8>( 1343f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org g1, g2, g3, g4, g5, g6, g7, g8); 1344f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 1345f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1346f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgtemplate <typename Generator1, typename Generator2, typename Generator3, 1347f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename Generator4, typename Generator5, typename Generator6, 1348f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename Generator7, typename Generator8, typename Generator9> 1349f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orginternal::CartesianProductHolder9<Generator1, Generator2, Generator3, 1350f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org Generator4, Generator5, Generator6, Generator7, Generator8, 1351f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org Generator9> Combine( 1352f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org const Generator1& g1, const Generator2& g2, const Generator3& g3, 1353f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org const Generator4& g4, const Generator5& g5, const Generator6& g6, 1354f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org const Generator7& g7, const Generator8& g8, const Generator9& g9) { 1355f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return internal::CartesianProductHolder9<Generator1, Generator2, Generator3, 1356f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org Generator4, Generator5, Generator6, Generator7, Generator8, Generator9>( 1357f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org g1, g2, g3, g4, g5, g6, g7, g8, g9); 1358f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 1359f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1360f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgtemplate <typename Generator1, typename Generator2, typename Generator3, 1361f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename Generator4, typename Generator5, typename Generator6, 1362f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename Generator7, typename Generator8, typename Generator9, 1363f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org typename Generator10> 1364f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orginternal::CartesianProductHolder10<Generator1, Generator2, Generator3, 1365f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org Generator4, Generator5, Generator6, Generator7, Generator8, Generator9, 1366f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org Generator10> Combine( 1367f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org const Generator1& g1, const Generator2& g2, const Generator3& g3, 1368f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org const Generator4& g4, const Generator5& g5, const Generator6& g6, 1369f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org const Generator7& g7, const Generator8& g8, const Generator9& g9, 1370f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org const Generator10& g10) { 1371f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return internal::CartesianProductHolder10<Generator1, Generator2, Generator3, 1372f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org Generator4, Generator5, Generator6, Generator7, Generator8, Generator9, 1373f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org Generator10>( 1374f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org g1, g2, g3, g4, g5, g6, g7, g8, g9, g10); 1375f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 1376f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org# endif // GTEST_HAS_COMBINE 1377f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1378f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1379f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1380f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org# define TEST_P(test_case_name, test_name) \ 1381f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org class GTEST_TEST_CLASS_NAME_(test_case_name, test_name) \ 1382f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org : public test_case_name { \ 1383f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org public: \ 1384f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GTEST_TEST_CLASS_NAME_(test_case_name, test_name)() {} \ 1385f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org virtual void TestBody(); \ 1386f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org private: \ 1387f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org static int AddToRegistry() { \ 1388f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org ::testing::UnitTest::GetInstance()->parameterized_test_registry(). \ 1389f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GetTestCasePatternHolder<test_case_name>(\ 1390f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org #test_case_name, __FILE__, __LINE__)->AddTestPattern(\ 1391f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org #test_case_name, \ 1392f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org #test_name, \ 1393f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org new ::testing::internal::TestMetaFactory< \ 1394f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GTEST_TEST_CLASS_NAME_(test_case_name, test_name)>()); \ 1395f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return 0; \ 1396f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } \ 1397f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org static int gtest_registering_dummy_; \ 1398f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GTEST_DISALLOW_COPY_AND_ASSIGN_(\ 1399f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GTEST_TEST_CLASS_NAME_(test_case_name, test_name)); \ 1400f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }; \ 1401f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org int GTEST_TEST_CLASS_NAME_(test_case_name, \ 1402f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org test_name)::gtest_registering_dummy_ = \ 1403f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GTEST_TEST_CLASS_NAME_(test_case_name, test_name)::AddToRegistry(); \ 1404f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org void GTEST_TEST_CLASS_NAME_(test_case_name, test_name)::TestBody() 1405f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1406f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org# define INSTANTIATE_TEST_CASE_P(prefix, test_case_name, generator) \ 1407f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org ::testing::internal::ParamGenerator<test_case_name::ParamType> \ 1408f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org gtest_##prefix##test_case_name##_EvalGenerator_() { return generator; } \ 1409f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org int gtest_##prefix##test_case_name##_dummy_ = \ 1410f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org ::testing::UnitTest::GetInstance()->parameterized_test_registry(). \ 1411f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GetTestCasePatternHolder<test_case_name>(\ 1412f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org #test_case_name, __FILE__, __LINE__)->AddTestCaseInstantiation(\ 1413f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org #prefix, \ 1414f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org >est_##prefix##test_case_name##_EvalGenerator_, \ 1415f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org __FILE__, __LINE__) 1416f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1417f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} // namespace testing 1418f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1419f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#endif // GTEST_HAS_PARAM_TEST 1420f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1421f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#endif // GTEST_INCLUDE_GTEST_GTEST_PARAM_TEST_H_ 1422