Qucs-core
0.0.19
|
00001 // This file was GENERATED by command: 00002 // pump.py gtest-param-test.h.pump 00003 // DO NOT EDIT BY HAND!!! 00004 00005 // Copyright 2008, Google Inc. 00006 // All rights reserved. 00007 // 00008 // Redistribution and use in source and binary forms, with or without 00009 // modification, are permitted provided that the following conditions are 00010 // met: 00011 // 00012 // * Redistributions of source code must retain the above copyright 00013 // notice, this list of conditions and the following disclaimer. 00014 // * Redistributions in binary form must reproduce the above 00015 // copyright notice, this list of conditions and the following disclaimer 00016 // in the documentation and/or other materials provided with the 00017 // distribution. 00018 // * Neither the name of Google Inc. nor the names of its 00019 // contributors may be used to endorse or promote products derived from 00020 // this software without specific prior written permission. 00021 // 00022 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 00023 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 00024 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 00025 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 00026 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 00027 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 00028 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 00029 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 00030 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 00031 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 00032 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 00033 // 00034 // Authors: vladl@google.com (Vlad Losev) 00035 // 00036 // Macros and functions for implementing parameterized tests 00037 // in Google C++ Testing Framework (Google Test) 00038 // 00039 // This file is generated by a SCRIPT. DO NOT EDIT BY HAND! 00040 // 00041 #ifndef GTEST_INCLUDE_GTEST_GTEST_PARAM_TEST_H_ 00042 #define GTEST_INCLUDE_GTEST_GTEST_PARAM_TEST_H_ 00043 00044 00045 // Value-parameterized tests allow you to test your code with different 00046 // parameters without writing multiple copies of the same test. 00047 // 00048 // Here is how you use value-parameterized tests: 00049 00050 #if 0 00051 00052 // To write value-parameterized tests, first you should define a fixture 00053 // class. It is usually derived from testing::TestWithParam<T> (see below for 00054 // another inheritance scheme that's sometimes useful in more complicated 00055 // class hierarchies), where the type of your parameter values. 00056 // TestWithParam<T> is itself derived from testing::Test. T can be any 00057 // copyable type. If it's a raw pointer, you are responsible for managing the 00058 // lifespan of the pointed values. 00059 00060 class FooTest : public ::testing::TestWithParam<const char*> { 00061 // You can implement all the usual class fixture members here. 00062 }; 00063 00064 // Then, use the TEST_P macro to define as many parameterized tests 00065 // for this fixture as you want. The _P suffix is for "parameterized" 00066 // or "pattern", whichever you prefer to think. 00067 00068 TEST_P(FooTest, DoesBlah) { 00069 // Inside a test, access the test parameter with the GetParam() method 00070 // of the TestWithParam<T> class: 00071 EXPECT_TRUE(foo.Blah(GetParam())); 00072 ... 00073 } 00074 00075 TEST_P(FooTest, HasBlahBlah) { 00076 ... 00077 } 00078 00079 // Finally, you can use INSTANTIATE_TEST_CASE_P to instantiate the test 00080 // case with any set of parameters you want. Google Test defines a number 00081 // of functions for generating test parameters. They return what we call 00082 // (surprise!) parameter generators. Here is a summary of them, which 00083 // are all in the testing namespace: 00084 // 00085 // 00086 // Range(begin, end [, step]) - Yields values {begin, begin+step, 00087 // begin+step+step, ...}. The values do not 00088 // include end. step defaults to 1. 00089 // Values(v1, v2, ..., vN) - Yields values {v1, v2, ..., vN}. 00090 // ValuesIn(container) - Yields values from a C-style array, an STL 00091 // ValuesIn(begin,end) container, or an iterator range [begin, end). 00092 // Bool() - Yields sequence {false, true}. 00093 // Combine(g1, g2, ..., gN) - Yields all combinations (the Cartesian product 00094 // for the math savvy) of the values generated 00095 // by the N generators. 00096 // 00097 // For more details, see comments at the definitions of these functions below 00098 // in this file. 00099 // 00100 // The following statement will instantiate tests from the FooTest test case 00101 // each with parameter values "meeny", "miny", and "moe". 00102 00103 INSTANTIATE_TEST_CASE_P(InstantiationName, 00104 FooTest, 00105 Values("meeny", "miny", "moe")); 00106 00107 // To distinguish different instances of the pattern, (yes, you 00108 // can instantiate it more then once) the first argument to the 00109 // INSTANTIATE_TEST_CASE_P macro is a prefix that will be added to the 00110 // actual test case name. Remember to pick unique prefixes for different 00111 // instantiations. The tests from the instantiation above will have 00112 // these names: 00113 // 00114 // * InstantiationName/FooTest.DoesBlah/0 for "meeny" 00115 // * InstantiationName/FooTest.DoesBlah/1 for "miny" 00116 // * InstantiationName/FooTest.DoesBlah/2 for "moe" 00117 // * InstantiationName/FooTest.HasBlahBlah/0 for "meeny" 00118 // * InstantiationName/FooTest.HasBlahBlah/1 for "miny" 00119 // * InstantiationName/FooTest.HasBlahBlah/2 for "moe" 00120 // 00121 // You can use these names in --gtest_filter. 00122 // 00123 // This statement will instantiate all tests from FooTest again, each 00124 // with parameter values "cat" and "dog": 00125 00126 const char* pets[] = {"cat", "dog"}; 00127 INSTANTIATE_TEST_CASE_P(AnotherInstantiationName, FooTest, ValuesIn(pets)); 00128 00129 // The tests from the instantiation above will have these names: 00130 // 00131 // * AnotherInstantiationName/FooTest.DoesBlah/0 for "cat" 00132 // * AnotherInstantiationName/FooTest.DoesBlah/1 for "dog" 00133 // * AnotherInstantiationName/FooTest.HasBlahBlah/0 for "cat" 00134 // * AnotherInstantiationName/FooTest.HasBlahBlah/1 for "dog" 00135 // 00136 // Please note that INSTANTIATE_TEST_CASE_P will instantiate all tests 00137 // in the given test case, whether their definitions come before or 00138 // AFTER the INSTANTIATE_TEST_CASE_P statement. 00139 // 00140 // Please also note that generator expressions (including parameters to the 00141 // generators) are evaluated in InitGoogleTest(), after main() has started. 00142 // This allows the user on one hand, to adjust generator parameters in order 00143 // to dynamically determine a set of tests to run and on the other hand, 00144 // give the user a chance to inspect the generated tests with Google Test 00145 // reflection API before RUN_ALL_TESTS() is executed. 00146 // 00147 // You can see samples/sample7_unittest.cc and samples/sample8_unittest.cc 00148 // for more examples. 00149 // 00150 // In the future, we plan to publish the API for defining new parameter 00151 // generators. But for now this interface remains part of the internal 00152 // implementation and is subject to change. 00153 // 00154 // 00155 // A parameterized test fixture must be derived from testing::Test and from 00156 // testing::WithParamInterface<T>, where T is the type of the parameter 00157 // values. Inheriting from TestWithParam<T> satisfies that requirement because 00158 // TestWithParam<T> inherits from both Test and WithParamInterface. In more 00159 // complicated hierarchies, however, it is occasionally useful to inherit 00160 // separately from Test and WithParamInterface. For example: 00161 00162 class BaseTest : public ::testing::Test { 00163 // You can inherit all the usual members for a non-parameterized test 00164 // fixture here. 00165 }; 00166 00167 class DerivedTest : public BaseTest, public ::testing::WithParamInterface<int> { 00168 // The usual test fixture members go here too. 00169 }; 00170 00171 TEST_F(BaseTest, HasFoo) { 00172 // This is an ordinary non-parameterized test. 00173 } 00174 00175 TEST_P(DerivedTest, DoesBlah) { 00176 // GetParam works just the same here as if you inherit from TestWithParam. 00177 EXPECT_TRUE(foo.Blah(GetParam())); 00178 } 00179 00180 #endif // 0 00181 00182 #include "gtest/internal/gtest-port.h" 00183 00184 #if !GTEST_OS_SYMBIAN 00185 # include <utility> 00186 #endif 00187 00188 // scripts/fuse_gtest.py depends on gtest's own header being #included 00189 // *unconditionally*. Therefore these #includes cannot be moved 00190 // inside #if GTEST_HAS_PARAM_TEST. 00191 #include "gtest/internal/gtest-internal.h" 00192 #include "gtest/internal/gtest-param-util.h" 00193 #include "gtest/internal/gtest-param-util-generated.h" 00194 00195 #if GTEST_HAS_PARAM_TEST 00196 00197 namespace testing { 00198 00199 // Functions producing parameter generators. 00200 // 00201 // Google Test uses these generators to produce parameters for value- 00202 // parameterized tests. When a parameterized test case is instantiated 00203 // with a particular generator, Google Test creates and runs tests 00204 // for each element in the sequence produced by the generator. 00205 // 00206 // In the following sample, tests from test case FooTest are instantiated 00207 // each three times with parameter values 3, 5, and 8: 00208 // 00209 // class FooTest : public TestWithParam<int> { ... }; 00210 // 00211 // TEST_P(FooTest, TestThis) { 00212 // } 00213 // TEST_P(FooTest, TestThat) { 00214 // } 00215 // INSTANTIATE_TEST_CASE_P(TestSequence, FooTest, Values(3, 5, 8)); 00216 // 00217 00218 // Range() returns generators providing sequences of values in a range. 00219 // 00220 // Synopsis: 00221 // Range(start, end) 00222 // - returns a generator producing a sequence of values {start, start+1, 00223 // start+2, ..., }. 00224 // Range(start, end, step) 00225 // - returns a generator producing a sequence of values {start, start+step, 00226 // start+step+step, ..., }. 00227 // Notes: 00228 // * The generated sequences never include end. For example, Range(1, 5) 00229 // returns a generator producing a sequence {1, 2, 3, 4}. Range(1, 9, 2) 00230 // returns a generator producing {1, 3, 5, 7}. 00231 // * start and end must have the same type. That type may be any integral or 00232 // floating-point type or a user defined type satisfying these conditions: 00233 // * It must be assignable (have operator=() defined). 00234 // * It must have operator+() (operator+(int-compatible type) for 00235 // two-operand version). 00236 // * It must have operator<() defined. 00237 // Elements in the resulting sequences will also have that type. 00238 // * Condition start < end must be satisfied in order for resulting sequences 00239 // to contain any elements. 00240 // 00241 template <typename T, typename IncrementT> 00242 internal::ParamGenerator<T> Range(T start, T end, IncrementT step) { 00243 return internal::ParamGenerator<T>( 00244 new internal::RangeGenerator<T, IncrementT>(start, end, step)); 00245 } 00246 00247 template <typename T> 00248 internal::ParamGenerator<T> Range(T start, T end) { 00249 return Range(start, end, 1); 00250 } 00251 00252 // ValuesIn() function allows generation of tests with parameters coming from 00253 // a container. 00254 // 00255 // Synopsis: 00256 // ValuesIn(const T (&array)[N]) 00257 // - returns a generator producing sequences with elements from 00258 // a C-style array. 00259 // ValuesIn(const Container& container) 00260 // - returns a generator producing sequences with elements from 00261 // an STL-style container. 00262 // ValuesIn(Iterator begin, Iterator end) 00263 // - returns a generator producing sequences with elements from 00264 // a range [begin, end) defined by a pair of STL-style iterators. These 00265 // iterators can also be plain C pointers. 00266 // 00267 // Please note that ValuesIn copies the values from the containers 00268 // passed in and keeps them to generate tests in RUN_ALL_TESTS(). 00269 // 00270 // Examples: 00271 // 00272 // This instantiates tests from test case StringTest 00273 // each with C-string values of "foo", "bar", and "baz": 00274 // 00275 // const char* strings[] = {"foo", "bar", "baz"}; 00276 // INSTANTIATE_TEST_CASE_P(StringSequence, SrtingTest, ValuesIn(strings)); 00277 // 00278 // This instantiates tests from test case StlStringTest 00279 // each with STL strings with values "a" and "b": 00280 // 00281 // ::std::vector< ::std::string> GetParameterStrings() { 00282 // ::std::vector< ::std::string> v; 00283 // v.push_back("a"); 00284 // v.push_back("b"); 00285 // return v; 00286 // } 00287 // 00288 // INSTANTIATE_TEST_CASE_P(CharSequence, 00289 // StlStringTest, 00290 // ValuesIn(GetParameterStrings())); 00291 // 00292 // 00293 // This will also instantiate tests from CharTest 00294 // each with parameter values 'a' and 'b': 00295 // 00296 // ::std::list<char> GetParameterChars() { 00297 // ::std::list<char> list; 00298 // list.push_back('a'); 00299 // list.push_back('b'); 00300 // return list; 00301 // } 00302 // ::std::list<char> l = GetParameterChars(); 00303 // INSTANTIATE_TEST_CASE_P(CharSequence2, 00304 // CharTest, 00305 // ValuesIn(l.begin(), l.end())); 00306 // 00307 template <typename ForwardIterator> 00308 internal::ParamGenerator< 00309 typename ::testing::internal::IteratorTraits<ForwardIterator>::value_type> 00310 ValuesIn(ForwardIterator begin, ForwardIterator end) { 00311 typedef typename ::testing::internal::IteratorTraits<ForwardIterator> 00312 ::value_type ParamType; 00313 return internal::ParamGenerator<ParamType>( 00314 new internal::ValuesInIteratorRangeGenerator<ParamType>(begin, end)); 00315 } 00316 00317 template <typename T, size_t N> 00318 internal::ParamGenerator<T> ValuesIn(const T (&array)[N]) { 00319 return ValuesIn(array, array + N); 00320 } 00321 00322 template <class Container> 00323 internal::ParamGenerator<typename Container::value_type> ValuesIn( 00324 const Container& container) { 00325 return ValuesIn(container.begin(), container.end()); 00326 } 00327 00328 // Values() allows generating tests from explicitly specified list of 00329 // parameters. 00330 // 00331 // Synopsis: 00332 // Values(T v1, T v2, ..., T vN) 00333 // - returns a generator producing sequences with elements v1, v2, ..., vN. 00334 // 00335 // For example, this instantiates tests from test case BarTest each 00336 // with values "one", "two", and "three": 00337 // 00338 // INSTANTIATE_TEST_CASE_P(NumSequence, BarTest, Values("one", "two", "three")); 00339 // 00340 // This instantiates tests from test case BazTest each with values 1, 2, 3.5. 00341 // The exact type of values will depend on the type of parameter in BazTest. 00342 // 00343 // INSTANTIATE_TEST_CASE_P(FloatingNumbers, BazTest, Values(1, 2, 3.5)); 00344 // 00345 // Currently, Values() supports from 1 to 50 parameters. 00346 // 00347 template <typename T1> 00348 internal::ValueArray1<T1> Values(T1 v1) { 00349 return internal::ValueArray1<T1>(v1); 00350 } 00351 00352 template <typename T1, typename T2> 00353 internal::ValueArray2<T1, T2> Values(T1 v1, T2 v2) { 00354 return internal::ValueArray2<T1, T2>(v1, v2); 00355 } 00356 00357 template <typename T1, typename T2, typename T3> 00358 internal::ValueArray3<T1, T2, T3> Values(T1 v1, T2 v2, T3 v3) { 00359 return internal::ValueArray3<T1, T2, T3>(v1, v2, v3); 00360 } 00361 00362 template <typename T1, typename T2, typename T3, typename T4> 00363 internal::ValueArray4<T1, T2, T3, T4> Values(T1 v1, T2 v2, T3 v3, T4 v4) { 00364 return internal::ValueArray4<T1, T2, T3, T4>(v1, v2, v3, v4); 00365 } 00366 00367 template <typename T1, typename T2, typename T3, typename T4, typename T5> 00368 internal::ValueArray5<T1, T2, T3, T4, T5> Values(T1 v1, T2 v2, T3 v3, T4 v4, 00369 T5 v5) { 00370 return internal::ValueArray5<T1, T2, T3, T4, T5>(v1, v2, v3, v4, v5); 00371 } 00372 00373 template <typename T1, typename T2, typename T3, typename T4, typename T5, 00374 typename T6> 00375 internal::ValueArray6<T1, T2, T3, T4, T5, T6> Values(T1 v1, T2 v2, T3 v3, 00376 T4 v4, T5 v5, T6 v6) { 00377 return internal::ValueArray6<T1, T2, T3, T4, T5, T6>(v1, v2, v3, v4, v5, v6); 00378 } 00379 00380 template <typename T1, typename T2, typename T3, typename T4, typename T5, 00381 typename T6, typename T7> 00382 internal::ValueArray7<T1, T2, T3, T4, T5, T6, T7> Values(T1 v1, T2 v2, T3 v3, 00383 T4 v4, T5 v5, T6 v6, T7 v7) { 00384 return internal::ValueArray7<T1, T2, T3, T4, T5, T6, T7>(v1, v2, v3, v4, v5, 00385 v6, v7); 00386 } 00387 00388 template <typename T1, typename T2, typename T3, typename T4, typename T5, 00389 typename T6, typename T7, typename T8> 00390 internal::ValueArray8<T1, T2, T3, T4, T5, T6, T7, T8> Values(T1 v1, T2 v2, 00391 T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8) { 00392 return internal::ValueArray8<T1, T2, T3, T4, T5, T6, T7, T8>(v1, v2, v3, v4, 00393 v5, v6, v7, v8); 00394 } 00395 00396 template <typename T1, typename T2, typename T3, typename T4, typename T5, 00397 typename T6, typename T7, typename T8, typename T9> 00398 internal::ValueArray9<T1, T2, T3, T4, T5, T6, T7, T8, T9> Values(T1 v1, T2 v2, 00399 T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9) { 00400 return internal::ValueArray9<T1, T2, T3, T4, T5, T6, T7, T8, T9>(v1, v2, v3, 00401 v4, v5, v6, v7, v8, v9); 00402 } 00403 00404 template <typename T1, typename T2, typename T3, typename T4, typename T5, 00405 typename T6, typename T7, typename T8, typename T9, typename T10> 00406 internal::ValueArray10<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> Values(T1 v1, 00407 T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10) { 00408 return internal::ValueArray10<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>(v1, 00409 v2, v3, v4, v5, v6, v7, v8, v9, v10); 00410 } 00411 00412 template <typename T1, typename T2, typename T3, typename T4, typename T5, 00413 typename T6, typename T7, typename T8, typename T9, typename T10, 00414 typename T11> 00415 internal::ValueArray11<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, 00416 T11> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 00417 T10 v10, T11 v11) { 00418 return internal::ValueArray11<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, 00419 T11>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11); 00420 } 00421 00422 template <typename T1, typename T2, typename T3, typename T4, typename T5, 00423 typename T6, typename T7, typename T8, typename T9, typename T10, 00424 typename T11, typename T12> 00425 internal::ValueArray12<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 00426 T12> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 00427 T10 v10, T11 v11, T12 v12) { 00428 return internal::ValueArray12<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 00429 T12>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12); 00430 } 00431 00432 template <typename T1, typename T2, typename T3, typename T4, typename T5, 00433 typename T6, typename T7, typename T8, typename T9, typename T10, 00434 typename T11, typename T12, typename T13> 00435 internal::ValueArray13<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, 00436 T13> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 00437 T10 v10, T11 v11, T12 v12, T13 v13) { 00438 return internal::ValueArray13<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 00439 T12, T13>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13); 00440 } 00441 00442 template <typename T1, typename T2, typename T3, typename T4, typename T5, 00443 typename T6, typename T7, typename T8, typename T9, typename T10, 00444 typename T11, typename T12, typename T13, typename T14> 00445 internal::ValueArray14<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 00446 T14> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 00447 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14) { 00448 return internal::ValueArray14<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 00449 T12, T13, T14>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, 00450 v14); 00451 } 00452 00453 template <typename T1, typename T2, typename T3, typename T4, typename T5, 00454 typename T6, typename T7, typename T8, typename T9, typename T10, 00455 typename T11, typename T12, typename T13, typename T14, typename T15> 00456 internal::ValueArray15<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 00457 T14, T15> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, 00458 T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15) { 00459 return internal::ValueArray15<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 00460 T12, T13, T14, T15>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, 00461 v13, v14, v15); 00462 } 00463 00464 template <typename T1, typename T2, typename T3, typename T4, typename T5, 00465 typename T6, typename T7, typename T8, typename T9, typename T10, 00466 typename T11, typename T12, typename T13, typename T14, typename T15, 00467 typename T16> 00468 internal::ValueArray16<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 00469 T14, T15, T16> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, 00470 T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, 00471 T16 v16) { 00472 return internal::ValueArray16<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 00473 T12, T13, T14, T15, T16>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, 00474 v12, v13, v14, v15, v16); 00475 } 00476 00477 template <typename T1, typename T2, typename T3, typename T4, typename T5, 00478 typename T6, typename T7, typename T8, typename T9, typename T10, 00479 typename T11, typename T12, typename T13, typename T14, typename T15, 00480 typename T16, typename T17> 00481 internal::ValueArray17<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 00482 T14, T15, T16, T17> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, 00483 T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, 00484 T16 v16, T17 v17) { 00485 return internal::ValueArray17<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 00486 T12, T13, T14, T15, T16, T17>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, 00487 v11, v12, v13, v14, v15, v16, v17); 00488 } 00489 00490 template <typename T1, typename T2, typename T3, typename T4, typename T5, 00491 typename T6, typename T7, typename T8, typename T9, typename T10, 00492 typename T11, typename T12, typename T13, typename T14, typename T15, 00493 typename T16, typename T17, typename T18> 00494 internal::ValueArray18<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 00495 T14, T15, T16, T17, T18> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, 00496 T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, 00497 T16 v16, T17 v17, T18 v18) { 00498 return internal::ValueArray18<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 00499 T12, T13, T14, T15, T16, T17, T18>(v1, v2, v3, v4, v5, v6, v7, v8, v9, 00500 v10, v11, v12, v13, v14, v15, v16, v17, v18); 00501 } 00502 00503 template <typename T1, typename T2, typename T3, typename T4, typename T5, 00504 typename T6, typename T7, typename T8, typename T9, typename T10, 00505 typename T11, typename T12, typename T13, typename T14, typename T15, 00506 typename T16, typename T17, typename T18, typename T19> 00507 internal::ValueArray19<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 00508 T14, T15, T16, T17, T18, T19> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, 00509 T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, 00510 T15 v15, T16 v16, T17 v17, T18 v18, T19 v19) { 00511 return internal::ValueArray19<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 00512 T12, T13, T14, T15, T16, T17, T18, T19>(v1, v2, v3, v4, v5, v6, v7, v8, 00513 v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19); 00514 } 00515 00516 template <typename T1, typename T2, typename T3, typename T4, typename T5, 00517 typename T6, typename T7, typename T8, typename T9, typename T10, 00518 typename T11, typename T12, typename T13, typename T14, typename T15, 00519 typename T16, typename T17, typename T18, typename T19, typename T20> 00520 internal::ValueArray20<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 00521 T14, T15, T16, T17, T18, T19, T20> Values(T1 v1, T2 v2, T3 v3, T4 v4, 00522 T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, 00523 T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20) { 00524 return internal::ValueArray20<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 00525 T12, T13, T14, T15, T16, T17, T18, T19, T20>(v1, v2, v3, v4, v5, v6, v7, 00526 v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20); 00527 } 00528 00529 template <typename T1, typename T2, typename T3, typename T4, typename T5, 00530 typename T6, typename T7, typename T8, typename T9, typename T10, 00531 typename T11, typename T12, typename T13, typename T14, typename T15, 00532 typename T16, typename T17, typename T18, typename T19, typename T20, 00533 typename T21> 00534 internal::ValueArray21<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 00535 T14, T15, T16, T17, T18, T19, T20, T21> Values(T1 v1, T2 v2, T3 v3, T4 v4, 00536 T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, 00537 T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21) { 00538 return internal::ValueArray21<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 00539 T12, T13, T14, T15, T16, T17, T18, T19, T20, T21>(v1, v2, v3, v4, v5, v6, 00540 v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21); 00541 } 00542 00543 template <typename T1, typename T2, typename T3, typename T4, typename T5, 00544 typename T6, typename T7, typename T8, typename T9, typename T10, 00545 typename T11, typename T12, typename T13, typename T14, typename T15, 00546 typename T16, typename T17, typename T18, typename T19, typename T20, 00547 typename T21, typename T22> 00548 internal::ValueArray22<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 00549 T14, T15, T16, T17, T18, T19, T20, T21, T22> Values(T1 v1, T2 v2, T3 v3, 00550 T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, 00551 T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, 00552 T21 v21, T22 v22) { 00553 return internal::ValueArray22<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 00554 T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22>(v1, v2, v3, v4, 00555 v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, 00556 v20, v21, v22); 00557 } 00558 00559 template <typename T1, typename T2, typename T3, typename T4, typename T5, 00560 typename T6, typename T7, typename T8, typename T9, typename T10, 00561 typename T11, typename T12, typename T13, typename T14, typename T15, 00562 typename T16, typename T17, typename T18, typename T19, typename T20, 00563 typename T21, typename T22, typename T23> 00564 internal::ValueArray23<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 00565 T14, T15, T16, T17, T18, T19, T20, T21, T22, T23> Values(T1 v1, T2 v2, 00566 T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, 00567 T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, 00568 T21 v21, T22 v22, T23 v23) { 00569 return internal::ValueArray23<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 00570 T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23>(v1, v2, v3, 00571 v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, 00572 v20, v21, v22, v23); 00573 } 00574 00575 template <typename T1, typename T2, typename T3, typename T4, typename T5, 00576 typename T6, typename T7, typename T8, typename T9, typename T10, 00577 typename T11, typename T12, typename T13, typename T14, typename T15, 00578 typename T16, typename T17, typename T18, typename T19, typename T20, 00579 typename T21, typename T22, typename T23, typename T24> 00580 internal::ValueArray24<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 00581 T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24> Values(T1 v1, T2 v2, 00582 T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, 00583 T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, 00584 T21 v21, T22 v22, T23 v23, T24 v24) { 00585 return internal::ValueArray24<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 00586 T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24>(v1, v2, 00587 v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, 00588 v19, v20, v21, v22, v23, v24); 00589 } 00590 00591 template <typename T1, typename T2, typename T3, typename T4, typename T5, 00592 typename T6, typename T7, typename T8, typename T9, typename T10, 00593 typename T11, typename T12, typename T13, typename T14, typename T15, 00594 typename T16, typename T17, typename T18, typename T19, typename T20, 00595 typename T21, typename T22, typename T23, typename T24, typename T25> 00596 internal::ValueArray25<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 00597 T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25> Values(T1 v1, 00598 T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, 00599 T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, 00600 T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25) { 00601 return internal::ValueArray25<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 00602 T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25>(v1, 00603 v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, 00604 v18, v19, v20, v21, v22, v23, v24, v25); 00605 } 00606 00607 template <typename T1, typename T2, typename T3, typename T4, typename T5, 00608 typename T6, typename T7, typename T8, typename T9, typename T10, 00609 typename T11, typename T12, typename T13, typename T14, typename T15, 00610 typename T16, typename T17, typename T18, typename T19, typename T20, 00611 typename T21, typename T22, typename T23, typename T24, typename T25, 00612 typename T26> 00613 internal::ValueArray26<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 00614 T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 00615 T26> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 00616 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 00617 T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 00618 T26 v26) { 00619 return internal::ValueArray26<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 00620 T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 00621 T26>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, 00622 v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26); 00623 } 00624 00625 template <typename T1, typename T2, typename T3, typename T4, typename T5, 00626 typename T6, typename T7, typename T8, typename T9, typename T10, 00627 typename T11, typename T12, typename T13, typename T14, typename T15, 00628 typename T16, typename T17, typename T18, typename T19, typename T20, 00629 typename T21, typename T22, typename T23, typename T24, typename T25, 00630 typename T26, typename T27> 00631 internal::ValueArray27<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 00632 T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, 00633 T27> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 00634 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 00635 T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 00636 T26 v26, T27 v27) { 00637 return internal::ValueArray27<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 00638 T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 00639 T26, T27>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, 00640 v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27); 00641 } 00642 00643 template <typename T1, typename T2, typename T3, typename T4, typename T5, 00644 typename T6, typename T7, typename T8, typename T9, typename T10, 00645 typename T11, typename T12, typename T13, typename T14, typename T15, 00646 typename T16, typename T17, typename T18, typename T19, typename T20, 00647 typename T21, typename T22, typename T23, typename T24, typename T25, 00648 typename T26, typename T27, typename T28> 00649 internal::ValueArray28<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 00650 T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, 00651 T28> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 00652 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 00653 T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 00654 T26 v26, T27 v27, T28 v28) { 00655 return internal::ValueArray28<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 00656 T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 00657 T26, T27, T28>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, 00658 v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, 00659 v28); 00660 } 00661 00662 template <typename T1, typename T2, typename T3, typename T4, typename T5, 00663 typename T6, typename T7, typename T8, typename T9, typename T10, 00664 typename T11, typename T12, typename T13, typename T14, typename T15, 00665 typename T16, typename T17, typename T18, typename T19, typename T20, 00666 typename T21, typename T22, typename T23, typename T24, typename T25, 00667 typename T26, typename T27, typename T28, typename T29> 00668 internal::ValueArray29<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 00669 T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 00670 T29> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 00671 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 00672 T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 00673 T26 v26, T27 v27, T28 v28, T29 v29) { 00674 return internal::ValueArray29<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 00675 T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 00676 T26, T27, T28, T29>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, 00677 v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, 00678 v27, v28, v29); 00679 } 00680 00681 template <typename T1, typename T2, typename T3, typename T4, typename T5, 00682 typename T6, typename T7, typename T8, typename T9, typename T10, 00683 typename T11, typename T12, typename T13, typename T14, typename T15, 00684 typename T16, typename T17, typename T18, typename T19, typename T20, 00685 typename T21, typename T22, typename T23, typename T24, typename T25, 00686 typename T26, typename T27, typename T28, typename T29, typename T30> 00687 internal::ValueArray30<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 00688 T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 00689 T29, T30> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, 00690 T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, 00691 T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, 00692 T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30) { 00693 return internal::ValueArray30<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 00694 T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 00695 T26, T27, T28, T29, T30>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, 00696 v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, 00697 v26, v27, v28, v29, v30); 00698 } 00699 00700 template <typename T1, typename T2, typename T3, typename T4, typename T5, 00701 typename T6, typename T7, typename T8, typename T9, typename T10, 00702 typename T11, typename T12, typename T13, typename T14, typename T15, 00703 typename T16, typename T17, typename T18, typename T19, typename T20, 00704 typename T21, typename T22, typename T23, typename T24, typename T25, 00705 typename T26, typename T27, typename T28, typename T29, typename T30, 00706 typename T31> 00707 internal::ValueArray31<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 00708 T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 00709 T29, T30, T31> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, 00710 T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, 00711 T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, 00712 T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31) { 00713 return internal::ValueArray31<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 00714 T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 00715 T26, T27, T28, T29, T30, T31>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, 00716 v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, 00717 v25, v26, v27, v28, v29, v30, v31); 00718 } 00719 00720 template <typename T1, typename T2, typename T3, typename T4, typename T5, 00721 typename T6, typename T7, typename T8, typename T9, typename T10, 00722 typename T11, typename T12, typename T13, typename T14, typename T15, 00723 typename T16, typename T17, typename T18, typename T19, typename T20, 00724 typename T21, typename T22, typename T23, typename T24, typename T25, 00725 typename T26, typename T27, typename T28, typename T29, typename T30, 00726 typename T31, typename T32> 00727 internal::ValueArray32<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 00728 T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 00729 T29, T30, T31, T32> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, 00730 T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, 00731 T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, 00732 T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, 00733 T32 v32) { 00734 return internal::ValueArray32<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 00735 T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 00736 T26, T27, T28, T29, T30, T31, T32>(v1, v2, v3, v4, v5, v6, v7, v8, v9, 00737 v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, 00738 v24, v25, v26, v27, v28, v29, v30, v31, v32); 00739 } 00740 00741 template <typename T1, typename T2, typename T3, typename T4, typename T5, 00742 typename T6, typename T7, typename T8, typename T9, typename T10, 00743 typename T11, typename T12, typename T13, typename T14, typename T15, 00744 typename T16, typename T17, typename T18, typename T19, typename T20, 00745 typename T21, typename T22, typename T23, typename T24, typename T25, 00746 typename T26, typename T27, typename T28, typename T29, typename T30, 00747 typename T31, typename T32, typename T33> 00748 internal::ValueArray33<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 00749 T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 00750 T29, T30, T31, T32, T33> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, 00751 T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, 00752 T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, 00753 T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, 00754 T32 v32, T33 v33) { 00755 return internal::ValueArray33<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 00756 T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 00757 T26, T27, T28, T29, T30, T31, T32, T33>(v1, v2, v3, v4, v5, v6, v7, v8, 00758 v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, 00759 v24, v25, v26, v27, v28, v29, v30, v31, v32, v33); 00760 } 00761 00762 template <typename T1, typename T2, typename T3, typename T4, typename T5, 00763 typename T6, typename T7, typename T8, typename T9, typename T10, 00764 typename T11, typename T12, typename T13, typename T14, typename T15, 00765 typename T16, typename T17, typename T18, typename T19, typename T20, 00766 typename T21, typename T22, typename T23, typename T24, typename T25, 00767 typename T26, typename T27, typename T28, typename T29, typename T30, 00768 typename T31, typename T32, typename T33, typename T34> 00769 internal::ValueArray34<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 00770 T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 00771 T29, T30, T31, T32, T33, T34> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, 00772 T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, 00773 T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, 00774 T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, 00775 T31 v31, T32 v32, T33 v33, T34 v34) { 00776 return internal::ValueArray34<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 00777 T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 00778 T26, T27, T28, T29, T30, T31, T32, T33, T34>(v1, v2, v3, v4, v5, v6, v7, 00779 v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, 00780 v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34); 00781 } 00782 00783 template <typename T1, typename T2, typename T3, typename T4, typename T5, 00784 typename T6, typename T7, typename T8, typename T9, typename T10, 00785 typename T11, typename T12, typename T13, typename T14, typename T15, 00786 typename T16, typename T17, typename T18, typename T19, typename T20, 00787 typename T21, typename T22, typename T23, typename T24, typename T25, 00788 typename T26, typename T27, typename T28, typename T29, typename T30, 00789 typename T31, typename T32, typename T33, typename T34, typename T35> 00790 internal::ValueArray35<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 00791 T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 00792 T29, T30, T31, T32, T33, T34, T35> Values(T1 v1, T2 v2, T3 v3, T4 v4, 00793 T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, 00794 T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, 00795 T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, 00796 T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35) { 00797 return internal::ValueArray35<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 00798 T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 00799 T26, T27, T28, T29, T30, T31, T32, T33, T34, T35>(v1, v2, v3, v4, v5, v6, 00800 v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, 00801 v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35); 00802 } 00803 00804 template <typename T1, typename T2, typename T3, typename T4, typename T5, 00805 typename T6, typename T7, typename T8, typename T9, typename T10, 00806 typename T11, typename T12, typename T13, typename T14, typename T15, 00807 typename T16, typename T17, typename T18, typename T19, typename T20, 00808 typename T21, typename T22, typename T23, typename T24, typename T25, 00809 typename T26, typename T27, typename T28, typename T29, typename T30, 00810 typename T31, typename T32, typename T33, typename T34, typename T35, 00811 typename T36> 00812 internal::ValueArray36<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 00813 T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 00814 T29, T30, T31, T32, T33, T34, T35, T36> Values(T1 v1, T2 v2, T3 v3, T4 v4, 00815 T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, 00816 T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, 00817 T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, 00818 T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36) { 00819 return internal::ValueArray36<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 00820 T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 00821 T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36>(v1, v2, v3, v4, 00822 v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, 00823 v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, 00824 v34, v35, v36); 00825 } 00826 00827 template <typename T1, typename T2, typename T3, typename T4, typename T5, 00828 typename T6, typename T7, typename T8, typename T9, typename T10, 00829 typename T11, typename T12, typename T13, typename T14, typename T15, 00830 typename T16, typename T17, typename T18, typename T19, typename T20, 00831 typename T21, typename T22, typename T23, typename T24, typename T25, 00832 typename T26, typename T27, typename T28, typename T29, typename T30, 00833 typename T31, typename T32, typename T33, typename T34, typename T35, 00834 typename T36, typename T37> 00835 internal::ValueArray37<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 00836 T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 00837 T29, T30, T31, T32, T33, T34, T35, T36, T37> Values(T1 v1, T2 v2, T3 v3, 00838 T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, 00839 T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, 00840 T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, 00841 T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, 00842 T37 v37) { 00843 return internal::ValueArray37<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 00844 T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 00845 T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37>(v1, v2, v3, 00846 v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, 00847 v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, 00848 v34, v35, v36, v37); 00849 } 00850 00851 template <typename T1, typename T2, typename T3, typename T4, typename T5, 00852 typename T6, typename T7, typename T8, typename T9, typename T10, 00853 typename T11, typename T12, typename T13, typename T14, typename T15, 00854 typename T16, typename T17, typename T18, typename T19, typename T20, 00855 typename T21, typename T22, typename T23, typename T24, typename T25, 00856 typename T26, typename T27, typename T28, typename T29, typename T30, 00857 typename T31, typename T32, typename T33, typename T34, typename T35, 00858 typename T36, typename T37, typename T38> 00859 internal::ValueArray38<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 00860 T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 00861 T29, T30, T31, T32, T33, T34, T35, T36, T37, T38> Values(T1 v1, T2 v2, 00862 T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, 00863 T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, 00864 T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, 00865 T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, 00866 T37 v37, T38 v38) { 00867 return internal::ValueArray38<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 00868 T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 00869 T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38>(v1, v2, 00870 v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, 00871 v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, 00872 v33, v34, v35, v36, v37, v38); 00873 } 00874 00875 template <typename T1, typename T2, typename T3, typename T4, typename T5, 00876 typename T6, typename T7, typename T8, typename T9, typename T10, 00877 typename T11, typename T12, typename T13, typename T14, typename T15, 00878 typename T16, typename T17, typename T18, typename T19, typename T20, 00879 typename T21, typename T22, typename T23, typename T24, typename T25, 00880 typename T26, typename T27, typename T28, typename T29, typename T30, 00881 typename T31, typename T32, typename T33, typename T34, typename T35, 00882 typename T36, typename T37, typename T38, typename T39> 00883 internal::ValueArray39<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 00884 T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 00885 T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39> Values(T1 v1, T2 v2, 00886 T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, 00887 T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, 00888 T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, 00889 T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, 00890 T37 v37, T38 v38, T39 v39) { 00891 return internal::ValueArray39<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 00892 T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 00893 T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39>(v1, 00894 v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, 00895 v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, 00896 v32, v33, v34, v35, v36, v37, v38, v39); 00897 } 00898 00899 template <typename T1, typename T2, typename T3, typename T4, typename T5, 00900 typename T6, typename T7, typename T8, typename T9, typename T10, 00901 typename T11, typename T12, typename T13, typename T14, typename T15, 00902 typename T16, typename T17, typename T18, typename T19, typename T20, 00903 typename T21, typename T22, typename T23, typename T24, typename T25, 00904 typename T26, typename T27, typename T28, typename T29, typename T30, 00905 typename T31, typename T32, typename T33, typename T34, typename T35, 00906 typename T36, typename T37, typename T38, typename T39, typename T40> 00907 internal::ValueArray40<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 00908 T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 00909 T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40> Values(T1 v1, 00910 T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, 00911 T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, 00912 T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, 00913 T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, 00914 T36 v36, T37 v37, T38 v38, T39 v39, T40 v40) { 00915 return internal::ValueArray40<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 00916 T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 00917 T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, 00918 T40>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, 00919 v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, 00920 v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40); 00921 } 00922 00923 template <typename T1, typename T2, typename T3, typename T4, typename T5, 00924 typename T6, typename T7, typename T8, typename T9, typename T10, 00925 typename T11, typename T12, typename T13, typename T14, typename T15, 00926 typename T16, typename T17, typename T18, typename T19, typename T20, 00927 typename T21, typename T22, typename T23, typename T24, typename T25, 00928 typename T26, typename T27, typename T28, typename T29, typename T30, 00929 typename T31, typename T32, typename T33, typename T34, typename T35, 00930 typename T36, typename T37, typename T38, typename T39, typename T40, 00931 typename T41> 00932 internal::ValueArray41<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 00933 T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 00934 T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, 00935 T41> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 00936 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 00937 T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 00938 T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, 00939 T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41) { 00940 return internal::ValueArray41<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 00941 T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 00942 T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, 00943 T40, T41>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, 00944 v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, 00945 v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41); 00946 } 00947 00948 template <typename T1, typename T2, typename T3, typename T4, typename T5, 00949 typename T6, typename T7, typename T8, typename T9, typename T10, 00950 typename T11, typename T12, typename T13, typename T14, typename T15, 00951 typename T16, typename T17, typename T18, typename T19, typename T20, 00952 typename T21, typename T22, typename T23, typename T24, typename T25, 00953 typename T26, typename T27, typename T28, typename T29, typename T30, 00954 typename T31, typename T32, typename T33, typename T34, typename T35, 00955 typename T36, typename T37, typename T38, typename T39, typename T40, 00956 typename T41, typename T42> 00957 internal::ValueArray42<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 00958 T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 00959 T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, 00960 T42> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 00961 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 00962 T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 00963 T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, 00964 T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, 00965 T42 v42) { 00966 return internal::ValueArray42<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 00967 T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 00968 T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, 00969 T40, T41, T42>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, 00970 v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, 00971 v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, 00972 v42); 00973 } 00974 00975 template <typename T1, typename T2, typename T3, typename T4, typename T5, 00976 typename T6, typename T7, typename T8, typename T9, typename T10, 00977 typename T11, typename T12, typename T13, typename T14, typename T15, 00978 typename T16, typename T17, typename T18, typename T19, typename T20, 00979 typename T21, typename T22, typename T23, typename T24, typename T25, 00980 typename T26, typename T27, typename T28, typename T29, typename T30, 00981 typename T31, typename T32, typename T33, typename T34, typename T35, 00982 typename T36, typename T37, typename T38, typename T39, typename T40, 00983 typename T41, typename T42, typename T43> 00984 internal::ValueArray43<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 00985 T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 00986 T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, 00987 T43> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 00988 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 00989 T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 00990 T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, 00991 T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, 00992 T42 v42, T43 v43) { 00993 return internal::ValueArray43<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 00994 T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 00995 T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, 00996 T40, T41, T42, T43>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, 00997 v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, 00998 v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, 00999 v41, v42, v43); 01000 } 01001 01002 template <typename T1, typename T2, typename T3, typename T4, typename T5, 01003 typename T6, typename T7, typename T8, typename T9, typename T10, 01004 typename T11, typename T12, typename T13, typename T14, typename T15, 01005 typename T16, typename T17, typename T18, typename T19, typename T20, 01006 typename T21, typename T22, typename T23, typename T24, typename T25, 01007 typename T26, typename T27, typename T28, typename T29, typename T30, 01008 typename T31, typename T32, typename T33, typename T34, typename T35, 01009 typename T36, typename T37, typename T38, typename T39, typename T40, 01010 typename T41, typename T42, typename T43, typename T44> 01011 internal::ValueArray44<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 01012 T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 01013 T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, 01014 T44> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 01015 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 01016 T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 01017 T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, 01018 T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, 01019 T42 v42, T43 v43, T44 v44) { 01020 return internal::ValueArray44<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 01021 T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 01022 T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, 01023 T40, T41, T42, T43, T44>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, 01024 v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, 01025 v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, 01026 v40, v41, v42, v43, v44); 01027 } 01028 01029 template <typename T1, typename T2, typename T3, typename T4, typename T5, 01030 typename T6, typename T7, typename T8, typename T9, typename T10, 01031 typename T11, typename T12, typename T13, typename T14, typename T15, 01032 typename T16, typename T17, typename T18, typename T19, typename T20, 01033 typename T21, typename T22, typename T23, typename T24, typename T25, 01034 typename T26, typename T27, typename T28, typename T29, typename T30, 01035 typename T31, typename T32, typename T33, typename T34, typename T35, 01036 typename T36, typename T37, typename T38, typename T39, typename T40, 01037 typename T41, typename T42, typename T43, typename T44, typename T45> 01038 internal::ValueArray45<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 01039 T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 01040 T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, 01041 T44, T45> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, 01042 T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, 01043 T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, 01044 T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, 01045 T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, 01046 T41 v41, T42 v42, T43 v43, T44 v44, T45 v45) { 01047 return internal::ValueArray45<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 01048 T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 01049 T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, 01050 T40, T41, T42, T43, T44, T45>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, 01051 v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, 01052 v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, 01053 v39, v40, v41, v42, v43, v44, v45); 01054 } 01055 01056 template <typename T1, typename T2, typename T3, typename T4, typename T5, 01057 typename T6, typename T7, typename T8, typename T9, typename T10, 01058 typename T11, typename T12, typename T13, typename T14, typename T15, 01059 typename T16, typename T17, typename T18, typename T19, typename T20, 01060 typename T21, typename T22, typename T23, typename T24, typename T25, 01061 typename T26, typename T27, typename T28, typename T29, typename T30, 01062 typename T31, typename T32, typename T33, typename T34, typename T35, 01063 typename T36, typename T37, typename T38, typename T39, typename T40, 01064 typename T41, typename T42, typename T43, typename T44, typename T45, 01065 typename T46> 01066 internal::ValueArray46<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 01067 T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 01068 T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, 01069 T44, T45, T46> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, 01070 T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, 01071 T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, 01072 T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, 01073 T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, 01074 T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46) { 01075 return internal::ValueArray46<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 01076 T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 01077 T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, 01078 T40, T41, T42, T43, T44, T45, T46>(v1, v2, v3, v4, v5, v6, v7, v8, v9, 01079 v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, 01080 v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, 01081 v38, v39, v40, v41, v42, v43, v44, v45, v46); 01082 } 01083 01084 template <typename T1, typename T2, typename T3, typename T4, typename T5, 01085 typename T6, typename T7, typename T8, typename T9, typename T10, 01086 typename T11, typename T12, typename T13, typename T14, typename T15, 01087 typename T16, typename T17, typename T18, typename T19, typename T20, 01088 typename T21, typename T22, typename T23, typename T24, typename T25, 01089 typename T26, typename T27, typename T28, typename T29, typename T30, 01090 typename T31, typename T32, typename T33, typename T34, typename T35, 01091 typename T36, typename T37, typename T38, typename T39, typename T40, 01092 typename T41, typename T42, typename T43, typename T44, typename T45, 01093 typename T46, typename T47> 01094 internal::ValueArray47<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 01095 T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 01096 T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, 01097 T44, T45, T46, T47> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, 01098 T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, 01099 T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, 01100 T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, 01101 T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, 01102 T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47) { 01103 return internal::ValueArray47<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 01104 T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 01105 T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, 01106 T40, T41, T42, T43, T44, T45, T46, T47>(v1, v2, v3, v4, v5, v6, v7, v8, 01107 v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, 01108 v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, 01109 v38, v39, v40, v41, v42, v43, v44, v45, v46, v47); 01110 } 01111 01112 template <typename T1, typename T2, typename T3, typename T4, typename T5, 01113 typename T6, typename T7, typename T8, typename T9, typename T10, 01114 typename T11, typename T12, typename T13, typename T14, typename T15, 01115 typename T16, typename T17, typename T18, typename T19, typename T20, 01116 typename T21, typename T22, typename T23, typename T24, typename T25, 01117 typename T26, typename T27, typename T28, typename T29, typename T30, 01118 typename T31, typename T32, typename T33, typename T34, typename T35, 01119 typename T36, typename T37, typename T38, typename T39, typename T40, 01120 typename T41, typename T42, typename T43, typename T44, typename T45, 01121 typename T46, typename T47, typename T48> 01122 internal::ValueArray48<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 01123 T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 01124 T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, 01125 T44, T45, T46, T47, T48> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, 01126 T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, 01127 T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, 01128 T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, 01129 T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, 01130 T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47, 01131 T48 v48) { 01132 return internal::ValueArray48<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 01133 T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 01134 T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, 01135 T40, T41, T42, T43, T44, T45, T46, T47, T48>(v1, v2, v3, v4, v5, v6, v7, 01136 v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, 01137 v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, 01138 v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48); 01139 } 01140 01141 template <typename T1, typename T2, typename T3, typename T4, typename T5, 01142 typename T6, typename T7, typename T8, typename T9, typename T10, 01143 typename T11, typename T12, typename T13, typename T14, typename T15, 01144 typename T16, typename T17, typename T18, typename T19, typename T20, 01145 typename T21, typename T22, typename T23, typename T24, typename T25, 01146 typename T26, typename T27, typename T28, typename T29, typename T30, 01147 typename T31, typename T32, typename T33, typename T34, typename T35, 01148 typename T36, typename T37, typename T38, typename T39, typename T40, 01149 typename T41, typename T42, typename T43, typename T44, typename T45, 01150 typename T46, typename T47, typename T48, typename T49> 01151 internal::ValueArray49<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 01152 T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 01153 T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, 01154 T44, T45, T46, T47, T48, T49> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, 01155 T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, 01156 T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, 01157 T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, 01158 T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, 01159 T39 v39, T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, 01160 T47 v47, T48 v48, T49 v49) { 01161 return internal::ValueArray49<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 01162 T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 01163 T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, 01164 T40, T41, T42, T43, T44, T45, T46, T47, T48, T49>(v1, v2, v3, v4, v5, v6, 01165 v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, 01166 v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, 01167 v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49); 01168 } 01169 01170 template <typename T1, typename T2, typename T3, typename T4, typename T5, 01171 typename T6, typename T7, typename T8, typename T9, typename T10, 01172 typename T11, typename T12, typename T13, typename T14, typename T15, 01173 typename T16, typename T17, typename T18, typename T19, typename T20, 01174 typename T21, typename T22, typename T23, typename T24, typename T25, 01175 typename T26, typename T27, typename T28, typename T29, typename T30, 01176 typename T31, typename T32, typename T33, typename T34, typename T35, 01177 typename T36, typename T37, typename T38, typename T39, typename T40, 01178 typename T41, typename T42, typename T43, typename T44, typename T45, 01179 typename T46, typename T47, typename T48, typename T49, typename T50> 01180 internal::ValueArray50<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 01181 T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 01182 T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, 01183 T44, T45, T46, T47, T48, T49, T50> Values(T1 v1, T2 v2, T3 v3, T4 v4, 01184 T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, 01185 T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, 01186 T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, 01187 T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, 01188 T38 v38, T39 v39, T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, 01189 T46 v46, T47 v47, T48 v48, T49 v49, T50 v50) { 01190 return internal::ValueArray50<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 01191 T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 01192 T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, 01193 T40, T41, T42, T43, T44, T45, T46, T47, T48, T49, T50>(v1, v2, v3, v4, 01194 v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, 01195 v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, 01196 v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, 01197 v48, v49, v50); 01198 } 01199 01200 // Bool() allows generating tests with parameters in a set of (false, true). 01201 // 01202 // Synopsis: 01203 // Bool() 01204 // - returns a generator producing sequences with elements {false, true}. 01205 // 01206 // It is useful when testing code that depends on Boolean flags. Combinations 01207 // of multiple flags can be tested when several Bool()'s are combined using 01208 // Combine() function. 01209 // 01210 // In the following example all tests in the test case FlagDependentTest 01211 // will be instantiated twice with parameters false and true. 01212 // 01213 // class FlagDependentTest : public testing::TestWithParam<bool> { 01214 // virtual void SetUp() { 01215 // external_flag = GetParam(); 01216 // } 01217 // } 01218 // INSTANTIATE_TEST_CASE_P(BoolSequence, FlagDependentTest, Bool()); 01219 // 01220 inline internal::ParamGenerator<bool> Bool() { 01221 return Values(false, true); 01222 } 01223 01224 # if GTEST_HAS_COMBINE 01225 // Combine() allows the user to combine two or more sequences to produce 01226 // values of a Cartesian product of those sequences' elements. 01227 // 01228 // Synopsis: 01229 // Combine(gen1, gen2, ..., genN) 01230 // - returns a generator producing sequences with elements coming from 01231 // the Cartesian product of elements from the sequences generated by 01232 // gen1, gen2, ..., genN. The sequence elements will have a type of 01233 // tuple<T1, T2, ..., TN> where T1, T2, ..., TN are the types 01234 // of elements from sequences produces by gen1, gen2, ..., genN. 01235 // 01236 // Combine can have up to 10 arguments. This number is currently limited 01237 // by the maximum number of elements in the tuple implementation used by Google 01238 // Test. 01239 // 01240 // Example: 01241 // 01242 // This will instantiate tests in test case AnimalTest each one with 01243 // the parameter values tuple("cat", BLACK), tuple("cat", WHITE), 01244 // tuple("dog", BLACK), and tuple("dog", WHITE): 01245 // 01246 // enum Color { BLACK, GRAY, WHITE }; 01247 // class AnimalTest 01248 // : public testing::TestWithParam<tuple<const char*, Color> > {...}; 01249 // 01250 // TEST_P(AnimalTest, AnimalLooksNice) {...} 01251 // 01252 // INSTANTIATE_TEST_CASE_P(AnimalVariations, AnimalTest, 01253 // Combine(Values("cat", "dog"), 01254 // Values(BLACK, WHITE))); 01255 // 01256 // This will instantiate tests in FlagDependentTest with all variations of two 01257 // Boolean flags: 01258 // 01259 // class FlagDependentTest 01260 // : public testing::TestWithParam<tuple<bool, bool> > { 01261 // virtual void SetUp() { 01262 // // Assigns external_flag_1 and external_flag_2 values from the tuple. 01263 // tie(external_flag_1, external_flag_2) = GetParam(); 01264 // } 01265 // }; 01266 // 01267 // TEST_P(FlagDependentTest, TestFeature1) { 01268 // // Test your code using external_flag_1 and external_flag_2 here. 01269 // } 01270 // INSTANTIATE_TEST_CASE_P(TwoBoolSequence, FlagDependentTest, 01271 // Combine(Bool(), Bool())); 01272 // 01273 template <typename Generator1, typename Generator2> 01274 internal::CartesianProductHolder2<Generator1, Generator2> Combine( 01275 const Generator1& g1, const Generator2& g2) { 01276 return internal::CartesianProductHolder2<Generator1, Generator2>( 01277 g1, g2); 01278 } 01279 01280 template <typename Generator1, typename Generator2, typename Generator3> 01281 internal::CartesianProductHolder3<Generator1, Generator2, Generator3> Combine( 01282 const Generator1& g1, const Generator2& g2, const Generator3& g3) { 01283 return internal::CartesianProductHolder3<Generator1, Generator2, Generator3>( 01284 g1, g2, g3); 01285 } 01286 01287 template <typename Generator1, typename Generator2, typename Generator3, 01288 typename Generator4> 01289 internal::CartesianProductHolder4<Generator1, Generator2, Generator3, 01290 Generator4> Combine( 01291 const Generator1& g1, const Generator2& g2, const Generator3& g3, 01292 const Generator4& g4) { 01293 return internal::CartesianProductHolder4<Generator1, Generator2, Generator3, 01294 Generator4>( 01295 g1, g2, g3, g4); 01296 } 01297 01298 template <typename Generator1, typename Generator2, typename Generator3, 01299 typename Generator4, typename Generator5> 01300 internal::CartesianProductHolder5<Generator1, Generator2, Generator3, 01301 Generator4, Generator5> Combine( 01302 const Generator1& g1, const Generator2& g2, const Generator3& g3, 01303 const Generator4& g4, const Generator5& g5) { 01304 return internal::CartesianProductHolder5<Generator1, Generator2, Generator3, 01305 Generator4, Generator5>( 01306 g1, g2, g3, g4, g5); 01307 } 01308 01309 template <typename Generator1, typename Generator2, typename Generator3, 01310 typename Generator4, typename Generator5, typename Generator6> 01311 internal::CartesianProductHolder6<Generator1, Generator2, Generator3, 01312 Generator4, Generator5, Generator6> Combine( 01313 const Generator1& g1, const Generator2& g2, const Generator3& g3, 01314 const Generator4& g4, const Generator5& g5, const Generator6& g6) { 01315 return internal::CartesianProductHolder6<Generator1, Generator2, Generator3, 01316 Generator4, Generator5, Generator6>( 01317 g1, g2, g3, g4, g5, g6); 01318 } 01319 01320 template <typename Generator1, typename Generator2, typename Generator3, 01321 typename Generator4, typename Generator5, typename Generator6, 01322 typename Generator7> 01323 internal::CartesianProductHolder7<Generator1, Generator2, Generator3, 01324 Generator4, Generator5, Generator6, Generator7> Combine( 01325 const Generator1& g1, const Generator2& g2, const Generator3& g3, 01326 const Generator4& g4, const Generator5& g5, const Generator6& g6, 01327 const Generator7& g7) { 01328 return internal::CartesianProductHolder7<Generator1, Generator2, Generator3, 01329 Generator4, Generator5, Generator6, Generator7>( 01330 g1, g2, g3, g4, g5, g6, g7); 01331 } 01332 01333 template <typename Generator1, typename Generator2, typename Generator3, 01334 typename Generator4, typename Generator5, typename Generator6, 01335 typename Generator7, typename Generator8> 01336 internal::CartesianProductHolder8<Generator1, Generator2, Generator3, 01337 Generator4, Generator5, Generator6, Generator7, Generator8> Combine( 01338 const Generator1& g1, const Generator2& g2, const Generator3& g3, 01339 const Generator4& g4, const Generator5& g5, const Generator6& g6, 01340 const Generator7& g7, const Generator8& g8) { 01341 return internal::CartesianProductHolder8<Generator1, Generator2, Generator3, 01342 Generator4, Generator5, Generator6, Generator7, Generator8>( 01343 g1, g2, g3, g4, g5, g6, g7, g8); 01344 } 01345 01346 template <typename Generator1, typename Generator2, typename Generator3, 01347 typename Generator4, typename Generator5, typename Generator6, 01348 typename Generator7, typename Generator8, typename Generator9> 01349 internal::CartesianProductHolder9<Generator1, Generator2, Generator3, 01350 Generator4, Generator5, Generator6, Generator7, Generator8, 01351 Generator9> Combine( 01352 const Generator1& g1, const Generator2& g2, const Generator3& g3, 01353 const Generator4& g4, const Generator5& g5, const Generator6& g6, 01354 const Generator7& g7, const Generator8& g8, const Generator9& g9) { 01355 return internal::CartesianProductHolder9<Generator1, Generator2, Generator3, 01356 Generator4, Generator5, Generator6, Generator7, Generator8, Generator9>( 01357 g1, g2, g3, g4, g5, g6, g7, g8, g9); 01358 } 01359 01360 template <typename Generator1, typename Generator2, typename Generator3, 01361 typename Generator4, typename Generator5, typename Generator6, 01362 typename Generator7, typename Generator8, typename Generator9, 01363 typename Generator10> 01364 internal::CartesianProductHolder10<Generator1, Generator2, Generator3, 01365 Generator4, Generator5, Generator6, Generator7, Generator8, Generator9, 01366 Generator10> Combine( 01367 const Generator1& g1, const Generator2& g2, const Generator3& g3, 01368 const Generator4& g4, const Generator5& g5, const Generator6& g6, 01369 const Generator7& g7, const Generator8& g8, const Generator9& g9, 01370 const Generator10& g10) { 01371 return internal::CartesianProductHolder10<Generator1, Generator2, Generator3, 01372 Generator4, Generator5, Generator6, Generator7, Generator8, Generator9, 01373 Generator10>( 01374 g1, g2, g3, g4, g5, g6, g7, g8, g9, g10); 01375 } 01376 # endif // GTEST_HAS_COMBINE 01377 01378 01379 01380 # define TEST_P(test_case_name, test_name) \ 01381 class GTEST_TEST_CLASS_NAME_(test_case_name, test_name) \ 01382 : public test_case_name { \ 01383 public: \ 01384 GTEST_TEST_CLASS_NAME_(test_case_name, test_name)() {} \ 01385 virtual void TestBody(); \ 01386 private: \ 01387 static int AddToRegistry() { \ 01388 ::testing::UnitTest::GetInstance()->parameterized_test_registry(). \ 01389 GetTestCasePatternHolder<test_case_name>(\ 01390 #test_case_name, __FILE__, __LINE__)->AddTestPattern(\ 01391 #test_case_name, \ 01392 #test_name, \ 01393 new ::testing::internal::TestMetaFactory< \ 01394 GTEST_TEST_CLASS_NAME_(test_case_name, test_name)>()); \ 01395 return 0; \ 01396 } \ 01397 static int gtest_registering_dummy_; \ 01398 GTEST_DISALLOW_COPY_AND_ASSIGN_(\ 01399 GTEST_TEST_CLASS_NAME_(test_case_name, test_name)); \ 01400 }; \ 01401 int GTEST_TEST_CLASS_NAME_(test_case_name, \ 01402 test_name)::gtest_registering_dummy_ = \ 01403 GTEST_TEST_CLASS_NAME_(test_case_name, test_name)::AddToRegistry(); \ 01404 void GTEST_TEST_CLASS_NAME_(test_case_name, test_name)::TestBody() 01405 01406 # define INSTANTIATE_TEST_CASE_P(prefix, test_case_name, generator) \ 01407 ::testing::internal::ParamGenerator<test_case_name::ParamType> \ 01408 gtest_##prefix##test_case_name##_EvalGenerator_() { return generator; } \ 01409 int gtest_##prefix##test_case_name##_dummy_ = \ 01410 ::testing::UnitTest::GetInstance()->parameterized_test_registry(). \ 01411 GetTestCasePatternHolder<test_case_name>(\ 01412 #test_case_name, __FILE__, __LINE__)->AddTestCaseInstantiation(\ 01413 #prefix, \ 01414 >est_##prefix##test_case_name##_EvalGenerator_, \ 01415 __FILE__, __LINE__) 01416 01417 } // namespace testing 01418 01419 #endif // GTEST_HAS_PARAM_TEST 01420 01421 #endif // GTEST_INCLUDE_GTEST_GTEST_PARAM_TEST_H_