gtest-param-test.h revision 13481
113481Sgiacomo.travaglini@arm.com// This file was GENERATED by command: 213481Sgiacomo.travaglini@arm.com// pump.py gtest-param-test.h.pump 313481Sgiacomo.travaglini@arm.com// DO NOT EDIT BY HAND!!! 413481Sgiacomo.travaglini@arm.com 513481Sgiacomo.travaglini@arm.com// Copyright 2008, Google Inc. 613481Sgiacomo.travaglini@arm.com// All rights reserved. 713481Sgiacomo.travaglini@arm.com// 813481Sgiacomo.travaglini@arm.com// Redistribution and use in source and binary forms, with or without 913481Sgiacomo.travaglini@arm.com// modification, are permitted provided that the following conditions are 1013481Sgiacomo.travaglini@arm.com// met: 1113481Sgiacomo.travaglini@arm.com// 1213481Sgiacomo.travaglini@arm.com// * Redistributions of source code must retain the above copyright 1313481Sgiacomo.travaglini@arm.com// notice, this list of conditions and the following disclaimer. 1413481Sgiacomo.travaglini@arm.com// * Redistributions in binary form must reproduce the above 1513481Sgiacomo.travaglini@arm.com// copyright notice, this list of conditions and the following disclaimer 1613481Sgiacomo.travaglini@arm.com// in the documentation and/or other materials provided with the 1713481Sgiacomo.travaglini@arm.com// distribution. 1813481Sgiacomo.travaglini@arm.com// * Neither the name of Google Inc. nor the names of its 1913481Sgiacomo.travaglini@arm.com// contributors may be used to endorse or promote products derived from 2013481Sgiacomo.travaglini@arm.com// this software without specific prior written permission. 2113481Sgiacomo.travaglini@arm.com// 2213481Sgiacomo.travaglini@arm.com// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 2313481Sgiacomo.travaglini@arm.com// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 2413481Sgiacomo.travaglini@arm.com// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 2513481Sgiacomo.travaglini@arm.com// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 2613481Sgiacomo.travaglini@arm.com// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 2713481Sgiacomo.travaglini@arm.com// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 2813481Sgiacomo.travaglini@arm.com// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 2913481Sgiacomo.travaglini@arm.com// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 3013481Sgiacomo.travaglini@arm.com// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 3113481Sgiacomo.travaglini@arm.com// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 3213481Sgiacomo.travaglini@arm.com// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 3313481Sgiacomo.travaglini@arm.com// 3413481Sgiacomo.travaglini@arm.com// Authors: vladl@google.com (Vlad Losev) 3513481Sgiacomo.travaglini@arm.com// 3613481Sgiacomo.travaglini@arm.com// Macros and functions for implementing parameterized tests 3713481Sgiacomo.travaglini@arm.com// in Google C++ Testing Framework (Google Test) 3813481Sgiacomo.travaglini@arm.com// 3913481Sgiacomo.travaglini@arm.com// This file is generated by a SCRIPT. DO NOT EDIT BY HAND! 4013481Sgiacomo.travaglini@arm.com// 4113481Sgiacomo.travaglini@arm.com#ifndef GTEST_INCLUDE_GTEST_GTEST_PARAM_TEST_H_ 4213481Sgiacomo.travaglini@arm.com#define GTEST_INCLUDE_GTEST_GTEST_PARAM_TEST_H_ 4313481Sgiacomo.travaglini@arm.com 4413481Sgiacomo.travaglini@arm.com 4513481Sgiacomo.travaglini@arm.com// Value-parameterized tests allow you to test your code with different 4613481Sgiacomo.travaglini@arm.com// parameters without writing multiple copies of the same test. 4713481Sgiacomo.travaglini@arm.com// 4813481Sgiacomo.travaglini@arm.com// Here is how you use value-parameterized tests: 4913481Sgiacomo.travaglini@arm.com 5013481Sgiacomo.travaglini@arm.com#if 0 5113481Sgiacomo.travaglini@arm.com 5213481Sgiacomo.travaglini@arm.com// To write value-parameterized tests, first you should define a fixture 5313481Sgiacomo.travaglini@arm.com// class. It is usually derived from testing::TestWithParam<T> (see below for 5413481Sgiacomo.travaglini@arm.com// another inheritance scheme that's sometimes useful in more complicated 5513481Sgiacomo.travaglini@arm.com// class hierarchies), where the type of your parameter values. 5613481Sgiacomo.travaglini@arm.com// TestWithParam<T> is itself derived from testing::Test. T can be any 5713481Sgiacomo.travaglini@arm.com// copyable type. If it's a raw pointer, you are responsible for managing the 5813481Sgiacomo.travaglini@arm.com// lifespan of the pointed values. 5913481Sgiacomo.travaglini@arm.com 6013481Sgiacomo.travaglini@arm.comclass FooTest : public ::testing::TestWithParam<const char*> { 6113481Sgiacomo.travaglini@arm.com // You can implement all the usual class fixture members here. 6213481Sgiacomo.travaglini@arm.com}; 6313481Sgiacomo.travaglini@arm.com 6413481Sgiacomo.travaglini@arm.com// Then, use the TEST_P macro to define as many parameterized tests 6513481Sgiacomo.travaglini@arm.com// for this fixture as you want. The _P suffix is for "parameterized" 6613481Sgiacomo.travaglini@arm.com// or "pattern", whichever you prefer to think. 6713481Sgiacomo.travaglini@arm.com 6813481Sgiacomo.travaglini@arm.comTEST_P(FooTest, DoesBlah) { 6913481Sgiacomo.travaglini@arm.com // Inside a test, access the test parameter with the GetParam() method 7013481Sgiacomo.travaglini@arm.com // of the TestWithParam<T> class: 7113481Sgiacomo.travaglini@arm.com EXPECT_TRUE(foo.Blah(GetParam())); 7213481Sgiacomo.travaglini@arm.com ... 7313481Sgiacomo.travaglini@arm.com} 7413481Sgiacomo.travaglini@arm.com 7513481Sgiacomo.travaglini@arm.comTEST_P(FooTest, HasBlahBlah) { 7613481Sgiacomo.travaglini@arm.com ... 7713481Sgiacomo.travaglini@arm.com} 7813481Sgiacomo.travaglini@arm.com 7913481Sgiacomo.travaglini@arm.com// Finally, you can use INSTANTIATE_TEST_CASE_P to instantiate the test 8013481Sgiacomo.travaglini@arm.com// case with any set of parameters you want. Google Test defines a number 8113481Sgiacomo.travaglini@arm.com// of functions for generating test parameters. They return what we call 8213481Sgiacomo.travaglini@arm.com// (surprise!) parameter generators. Here is a summary of them, which 8313481Sgiacomo.travaglini@arm.com// are all in the testing namespace: 8413481Sgiacomo.travaglini@arm.com// 8513481Sgiacomo.travaglini@arm.com// 8613481Sgiacomo.travaglini@arm.com// Range(begin, end [, step]) - Yields values {begin, begin+step, 8713481Sgiacomo.travaglini@arm.com// begin+step+step, ...}. The values do not 8813481Sgiacomo.travaglini@arm.com// include end. step defaults to 1. 8913481Sgiacomo.travaglini@arm.com// Values(v1, v2, ..., vN) - Yields values {v1, v2, ..., vN}. 9013481Sgiacomo.travaglini@arm.com// ValuesIn(container) - Yields values from a C-style array, an STL 9113481Sgiacomo.travaglini@arm.com// ValuesIn(begin,end) container, or an iterator range [begin, end). 9213481Sgiacomo.travaglini@arm.com// Bool() - Yields sequence {false, true}. 9313481Sgiacomo.travaglini@arm.com// Combine(g1, g2, ..., gN) - Yields all combinations (the Cartesian product 9413481Sgiacomo.travaglini@arm.com// for the math savvy) of the values generated 9513481Sgiacomo.travaglini@arm.com// by the N generators. 9613481Sgiacomo.travaglini@arm.com// 9713481Sgiacomo.travaglini@arm.com// For more details, see comments at the definitions of these functions below 9813481Sgiacomo.travaglini@arm.com// in this file. 9913481Sgiacomo.travaglini@arm.com// 10013481Sgiacomo.travaglini@arm.com// The following statement will instantiate tests from the FooTest test case 10113481Sgiacomo.travaglini@arm.com// each with parameter values "meeny", "miny", and "moe". 10213481Sgiacomo.travaglini@arm.com 10313481Sgiacomo.travaglini@arm.comINSTANTIATE_TEST_CASE_P(InstantiationName, 10413481Sgiacomo.travaglini@arm.com FooTest, 10513481Sgiacomo.travaglini@arm.com Values("meeny", "miny", "moe")); 10613481Sgiacomo.travaglini@arm.com 10713481Sgiacomo.travaglini@arm.com// To distinguish different instances of the pattern, (yes, you 10813481Sgiacomo.travaglini@arm.com// can instantiate it more then once) the first argument to the 10913481Sgiacomo.travaglini@arm.com// INSTANTIATE_TEST_CASE_P macro is a prefix that will be added to the 11013481Sgiacomo.travaglini@arm.com// actual test case name. Remember to pick unique prefixes for different 11113481Sgiacomo.travaglini@arm.com// instantiations. The tests from the instantiation above will have 11213481Sgiacomo.travaglini@arm.com// these names: 11313481Sgiacomo.travaglini@arm.com// 11413481Sgiacomo.travaglini@arm.com// * InstantiationName/FooTest.DoesBlah/0 for "meeny" 11513481Sgiacomo.travaglini@arm.com// * InstantiationName/FooTest.DoesBlah/1 for "miny" 11613481Sgiacomo.travaglini@arm.com// * InstantiationName/FooTest.DoesBlah/2 for "moe" 11713481Sgiacomo.travaglini@arm.com// * InstantiationName/FooTest.HasBlahBlah/0 for "meeny" 11813481Sgiacomo.travaglini@arm.com// * InstantiationName/FooTest.HasBlahBlah/1 for "miny" 11913481Sgiacomo.travaglini@arm.com// * InstantiationName/FooTest.HasBlahBlah/2 for "moe" 12013481Sgiacomo.travaglini@arm.com// 12113481Sgiacomo.travaglini@arm.com// You can use these names in --gtest_filter. 12213481Sgiacomo.travaglini@arm.com// 12313481Sgiacomo.travaglini@arm.com// This statement will instantiate all tests from FooTest again, each 12413481Sgiacomo.travaglini@arm.com// with parameter values "cat" and "dog": 12513481Sgiacomo.travaglini@arm.com 12613481Sgiacomo.travaglini@arm.comconst char* pets[] = {"cat", "dog"}; 12713481Sgiacomo.travaglini@arm.comINSTANTIATE_TEST_CASE_P(AnotherInstantiationName, FooTest, ValuesIn(pets)); 12813481Sgiacomo.travaglini@arm.com 12913481Sgiacomo.travaglini@arm.com// The tests from the instantiation above will have these names: 13013481Sgiacomo.travaglini@arm.com// 13113481Sgiacomo.travaglini@arm.com// * AnotherInstantiationName/FooTest.DoesBlah/0 for "cat" 13213481Sgiacomo.travaglini@arm.com// * AnotherInstantiationName/FooTest.DoesBlah/1 for "dog" 13313481Sgiacomo.travaglini@arm.com// * AnotherInstantiationName/FooTest.HasBlahBlah/0 for "cat" 13413481Sgiacomo.travaglini@arm.com// * AnotherInstantiationName/FooTest.HasBlahBlah/1 for "dog" 13513481Sgiacomo.travaglini@arm.com// 13613481Sgiacomo.travaglini@arm.com// Please note that INSTANTIATE_TEST_CASE_P will instantiate all tests 13713481Sgiacomo.travaglini@arm.com// in the given test case, whether their definitions come before or 13813481Sgiacomo.travaglini@arm.com// AFTER the INSTANTIATE_TEST_CASE_P statement. 13913481Sgiacomo.travaglini@arm.com// 14013481Sgiacomo.travaglini@arm.com// Please also note that generator expressions (including parameters to the 14113481Sgiacomo.travaglini@arm.com// generators) are evaluated in InitGoogleTest(), after main() has started. 14213481Sgiacomo.travaglini@arm.com// This allows the user on one hand, to adjust generator parameters in order 14313481Sgiacomo.travaglini@arm.com// to dynamically determine a set of tests to run and on the other hand, 14413481Sgiacomo.travaglini@arm.com// give the user a chance to inspect the generated tests with Google Test 14513481Sgiacomo.travaglini@arm.com// reflection API before RUN_ALL_TESTS() is executed. 14613481Sgiacomo.travaglini@arm.com// 14713481Sgiacomo.travaglini@arm.com// You can see samples/sample7_unittest.cc and samples/sample8_unittest.cc 14813481Sgiacomo.travaglini@arm.com// for more examples. 14913481Sgiacomo.travaglini@arm.com// 15013481Sgiacomo.travaglini@arm.com// In the future, we plan to publish the API for defining new parameter 15113481Sgiacomo.travaglini@arm.com// generators. But for now this interface remains part of the internal 15213481Sgiacomo.travaglini@arm.com// implementation and is subject to change. 15313481Sgiacomo.travaglini@arm.com// 15413481Sgiacomo.travaglini@arm.com// 15513481Sgiacomo.travaglini@arm.com// A parameterized test fixture must be derived from testing::Test and from 15613481Sgiacomo.travaglini@arm.com// testing::WithParamInterface<T>, where T is the type of the parameter 15713481Sgiacomo.travaglini@arm.com// values. Inheriting from TestWithParam<T> satisfies that requirement because 15813481Sgiacomo.travaglini@arm.com// TestWithParam<T> inherits from both Test and WithParamInterface. In more 15913481Sgiacomo.travaglini@arm.com// complicated hierarchies, however, it is occasionally useful to inherit 16013481Sgiacomo.travaglini@arm.com// separately from Test and WithParamInterface. For example: 16113481Sgiacomo.travaglini@arm.com 16213481Sgiacomo.travaglini@arm.comclass BaseTest : public ::testing::Test { 16313481Sgiacomo.travaglini@arm.com // You can inherit all the usual members for a non-parameterized test 16413481Sgiacomo.travaglini@arm.com // fixture here. 16513481Sgiacomo.travaglini@arm.com}; 16613481Sgiacomo.travaglini@arm.com 16713481Sgiacomo.travaglini@arm.comclass DerivedTest : public BaseTest, public ::testing::WithParamInterface<int> { 16813481Sgiacomo.travaglini@arm.com // The usual test fixture members go here too. 16913481Sgiacomo.travaglini@arm.com}; 17013481Sgiacomo.travaglini@arm.com 17113481Sgiacomo.travaglini@arm.comTEST_F(BaseTest, HasFoo) { 17213481Sgiacomo.travaglini@arm.com // This is an ordinary non-parameterized test. 17313481Sgiacomo.travaglini@arm.com} 17413481Sgiacomo.travaglini@arm.com 17513481Sgiacomo.travaglini@arm.comTEST_P(DerivedTest, DoesBlah) { 17613481Sgiacomo.travaglini@arm.com // GetParam works just the same here as if you inherit from TestWithParam. 17713481Sgiacomo.travaglini@arm.com EXPECT_TRUE(foo.Blah(GetParam())); 17813481Sgiacomo.travaglini@arm.com} 17913481Sgiacomo.travaglini@arm.com 18013481Sgiacomo.travaglini@arm.com#endif // 0 18113481Sgiacomo.travaglini@arm.com 18213481Sgiacomo.travaglini@arm.com#include "gtest/internal/gtest-port.h" 18313481Sgiacomo.travaglini@arm.com 18413481Sgiacomo.travaglini@arm.com#if !GTEST_OS_SYMBIAN 18513481Sgiacomo.travaglini@arm.com# include <utility> 18613481Sgiacomo.travaglini@arm.com#endif 18713481Sgiacomo.travaglini@arm.com 18813481Sgiacomo.travaglini@arm.com// scripts/fuse_gtest.py depends on gtest's own header being #included 18913481Sgiacomo.travaglini@arm.com// *unconditionally*. Therefore these #includes cannot be moved 19013481Sgiacomo.travaglini@arm.com// inside #if GTEST_HAS_PARAM_TEST. 19113481Sgiacomo.travaglini@arm.com#include "gtest/internal/gtest-internal.h" 19213481Sgiacomo.travaglini@arm.com#include "gtest/internal/gtest-param-util.h" 19313481Sgiacomo.travaglini@arm.com#include "gtest/internal/gtest-param-util-generated.h" 19413481Sgiacomo.travaglini@arm.com 19513481Sgiacomo.travaglini@arm.com#if GTEST_HAS_PARAM_TEST 19613481Sgiacomo.travaglini@arm.com 19713481Sgiacomo.travaglini@arm.comnamespace testing { 19813481Sgiacomo.travaglini@arm.com 19913481Sgiacomo.travaglini@arm.com// Functions producing parameter generators. 20013481Sgiacomo.travaglini@arm.com// 20113481Sgiacomo.travaglini@arm.com// Google Test uses these generators to produce parameters for value- 20213481Sgiacomo.travaglini@arm.com// parameterized tests. When a parameterized test case is instantiated 20313481Sgiacomo.travaglini@arm.com// with a particular generator, Google Test creates and runs tests 20413481Sgiacomo.travaglini@arm.com// for each element in the sequence produced by the generator. 20513481Sgiacomo.travaglini@arm.com// 20613481Sgiacomo.travaglini@arm.com// In the following sample, tests from test case FooTest are instantiated 20713481Sgiacomo.travaglini@arm.com// each three times with parameter values 3, 5, and 8: 20813481Sgiacomo.travaglini@arm.com// 20913481Sgiacomo.travaglini@arm.com// class FooTest : public TestWithParam<int> { ... }; 21013481Sgiacomo.travaglini@arm.com// 21113481Sgiacomo.travaglini@arm.com// TEST_P(FooTest, TestThis) { 21213481Sgiacomo.travaglini@arm.com// } 21313481Sgiacomo.travaglini@arm.com// TEST_P(FooTest, TestThat) { 21413481Sgiacomo.travaglini@arm.com// } 21513481Sgiacomo.travaglini@arm.com// INSTANTIATE_TEST_CASE_P(TestSequence, FooTest, Values(3, 5, 8)); 21613481Sgiacomo.travaglini@arm.com// 21713481Sgiacomo.travaglini@arm.com 21813481Sgiacomo.travaglini@arm.com// Range() returns generators providing sequences of values in a range. 21913481Sgiacomo.travaglini@arm.com// 22013481Sgiacomo.travaglini@arm.com// Synopsis: 22113481Sgiacomo.travaglini@arm.com// Range(start, end) 22213481Sgiacomo.travaglini@arm.com// - returns a generator producing a sequence of values {start, start+1, 22313481Sgiacomo.travaglini@arm.com// start+2, ..., }. 22413481Sgiacomo.travaglini@arm.com// Range(start, end, step) 22513481Sgiacomo.travaglini@arm.com// - returns a generator producing a sequence of values {start, start+step, 22613481Sgiacomo.travaglini@arm.com// start+step+step, ..., }. 22713481Sgiacomo.travaglini@arm.com// Notes: 22813481Sgiacomo.travaglini@arm.com// * The generated sequences never include end. For example, Range(1, 5) 22913481Sgiacomo.travaglini@arm.com// returns a generator producing a sequence {1, 2, 3, 4}. Range(1, 9, 2) 23013481Sgiacomo.travaglini@arm.com// returns a generator producing {1, 3, 5, 7}. 23113481Sgiacomo.travaglini@arm.com// * start and end must have the same type. That type may be any integral or 23213481Sgiacomo.travaglini@arm.com// floating-point type or a user defined type satisfying these conditions: 23313481Sgiacomo.travaglini@arm.com// * It must be assignable (have operator=() defined). 23413481Sgiacomo.travaglini@arm.com// * It must have operator+() (operator+(int-compatible type) for 23513481Sgiacomo.travaglini@arm.com// two-operand version). 23613481Sgiacomo.travaglini@arm.com// * It must have operator<() defined. 23713481Sgiacomo.travaglini@arm.com// Elements in the resulting sequences will also have that type. 23813481Sgiacomo.travaglini@arm.com// * Condition start < end must be satisfied in order for resulting sequences 23913481Sgiacomo.travaglini@arm.com// to contain any elements. 24013481Sgiacomo.travaglini@arm.com// 24113481Sgiacomo.travaglini@arm.comtemplate <typename T, typename IncrementT> 24213481Sgiacomo.travaglini@arm.cominternal::ParamGenerator<T> Range(T start, T end, IncrementT step) { 24313481Sgiacomo.travaglini@arm.com return internal::ParamGenerator<T>( 24413481Sgiacomo.travaglini@arm.com new internal::RangeGenerator<T, IncrementT>(start, end, step)); 24513481Sgiacomo.travaglini@arm.com} 24613481Sgiacomo.travaglini@arm.com 24713481Sgiacomo.travaglini@arm.comtemplate <typename T> 24813481Sgiacomo.travaglini@arm.cominternal::ParamGenerator<T> Range(T start, T end) { 24913481Sgiacomo.travaglini@arm.com return Range(start, end, 1); 25013481Sgiacomo.travaglini@arm.com} 25113481Sgiacomo.travaglini@arm.com 25213481Sgiacomo.travaglini@arm.com// ValuesIn() function allows generation of tests with parameters coming from 25313481Sgiacomo.travaglini@arm.com// a container. 25413481Sgiacomo.travaglini@arm.com// 25513481Sgiacomo.travaglini@arm.com// Synopsis: 25613481Sgiacomo.travaglini@arm.com// ValuesIn(const T (&array)[N]) 25713481Sgiacomo.travaglini@arm.com// - returns a generator producing sequences with elements from 25813481Sgiacomo.travaglini@arm.com// a C-style array. 25913481Sgiacomo.travaglini@arm.com// ValuesIn(const Container& container) 26013481Sgiacomo.travaglini@arm.com// - returns a generator producing sequences with elements from 26113481Sgiacomo.travaglini@arm.com// an STL-style container. 26213481Sgiacomo.travaglini@arm.com// ValuesIn(Iterator begin, Iterator end) 26313481Sgiacomo.travaglini@arm.com// - returns a generator producing sequences with elements from 26413481Sgiacomo.travaglini@arm.com// a range [begin, end) defined by a pair of STL-style iterators. These 26513481Sgiacomo.travaglini@arm.com// iterators can also be plain C pointers. 26613481Sgiacomo.travaglini@arm.com// 26713481Sgiacomo.travaglini@arm.com// Please note that ValuesIn copies the values from the containers 26813481Sgiacomo.travaglini@arm.com// passed in and keeps them to generate tests in RUN_ALL_TESTS(). 26913481Sgiacomo.travaglini@arm.com// 27013481Sgiacomo.travaglini@arm.com// Examples: 27113481Sgiacomo.travaglini@arm.com// 27213481Sgiacomo.travaglini@arm.com// This instantiates tests from test case StringTest 27313481Sgiacomo.travaglini@arm.com// each with C-string values of "foo", "bar", and "baz": 27413481Sgiacomo.travaglini@arm.com// 27513481Sgiacomo.travaglini@arm.com// const char* strings[] = {"foo", "bar", "baz"}; 27613481Sgiacomo.travaglini@arm.com// INSTANTIATE_TEST_CASE_P(StringSequence, SrtingTest, ValuesIn(strings)); 27713481Sgiacomo.travaglini@arm.com// 27813481Sgiacomo.travaglini@arm.com// This instantiates tests from test case StlStringTest 27913481Sgiacomo.travaglini@arm.com// each with STL strings with values "a" and "b": 28013481Sgiacomo.travaglini@arm.com// 28113481Sgiacomo.travaglini@arm.com// ::std::vector< ::std::string> GetParameterStrings() { 28213481Sgiacomo.travaglini@arm.com// ::std::vector< ::std::string> v; 28313481Sgiacomo.travaglini@arm.com// v.push_back("a"); 28413481Sgiacomo.travaglini@arm.com// v.push_back("b"); 28513481Sgiacomo.travaglini@arm.com// return v; 28613481Sgiacomo.travaglini@arm.com// } 28713481Sgiacomo.travaglini@arm.com// 28813481Sgiacomo.travaglini@arm.com// INSTANTIATE_TEST_CASE_P(CharSequence, 28913481Sgiacomo.travaglini@arm.com// StlStringTest, 29013481Sgiacomo.travaglini@arm.com// ValuesIn(GetParameterStrings())); 29113481Sgiacomo.travaglini@arm.com// 29213481Sgiacomo.travaglini@arm.com// 29313481Sgiacomo.travaglini@arm.com// This will also instantiate tests from CharTest 29413481Sgiacomo.travaglini@arm.com// each with parameter values 'a' and 'b': 29513481Sgiacomo.travaglini@arm.com// 29613481Sgiacomo.travaglini@arm.com// ::std::list<char> GetParameterChars() { 29713481Sgiacomo.travaglini@arm.com// ::std::list<char> list; 29813481Sgiacomo.travaglini@arm.com// list.push_back('a'); 29913481Sgiacomo.travaglini@arm.com// list.push_back('b'); 30013481Sgiacomo.travaglini@arm.com// return list; 30113481Sgiacomo.travaglini@arm.com// } 30213481Sgiacomo.travaglini@arm.com// ::std::list<char> l = GetParameterChars(); 30313481Sgiacomo.travaglini@arm.com// INSTANTIATE_TEST_CASE_P(CharSequence2, 30413481Sgiacomo.travaglini@arm.com// CharTest, 30513481Sgiacomo.travaglini@arm.com// ValuesIn(l.begin(), l.end())); 30613481Sgiacomo.travaglini@arm.com// 30713481Sgiacomo.travaglini@arm.comtemplate <typename ForwardIterator> 30813481Sgiacomo.travaglini@arm.cominternal::ParamGenerator< 30913481Sgiacomo.travaglini@arm.com typename ::testing::internal::IteratorTraits<ForwardIterator>::value_type> 31013481Sgiacomo.travaglini@arm.comValuesIn(ForwardIterator begin, ForwardIterator end) { 31113481Sgiacomo.travaglini@arm.com typedef typename ::testing::internal::IteratorTraits<ForwardIterator> 31213481Sgiacomo.travaglini@arm.com ::value_type ParamType; 31313481Sgiacomo.travaglini@arm.com return internal::ParamGenerator<ParamType>( 31413481Sgiacomo.travaglini@arm.com new internal::ValuesInIteratorRangeGenerator<ParamType>(begin, end)); 31513481Sgiacomo.travaglini@arm.com} 31613481Sgiacomo.travaglini@arm.com 31713481Sgiacomo.travaglini@arm.comtemplate <typename T, size_t N> 31813481Sgiacomo.travaglini@arm.cominternal::ParamGenerator<T> ValuesIn(const T (&array)[N]) { 31913481Sgiacomo.travaglini@arm.com return ValuesIn(array, array + N); 32013481Sgiacomo.travaglini@arm.com} 32113481Sgiacomo.travaglini@arm.com 32213481Sgiacomo.travaglini@arm.comtemplate <class Container> 32313481Sgiacomo.travaglini@arm.cominternal::ParamGenerator<typename Container::value_type> ValuesIn( 32413481Sgiacomo.travaglini@arm.com const Container& container) { 32513481Sgiacomo.travaglini@arm.com return ValuesIn(container.begin(), container.end()); 32613481Sgiacomo.travaglini@arm.com} 32713481Sgiacomo.travaglini@arm.com 32813481Sgiacomo.travaglini@arm.com// Values() allows generating tests from explicitly specified list of 32913481Sgiacomo.travaglini@arm.com// parameters. 33013481Sgiacomo.travaglini@arm.com// 33113481Sgiacomo.travaglini@arm.com// Synopsis: 33213481Sgiacomo.travaglini@arm.com// Values(T v1, T v2, ..., T vN) 33313481Sgiacomo.travaglini@arm.com// - returns a generator producing sequences with elements v1, v2, ..., vN. 33413481Sgiacomo.travaglini@arm.com// 33513481Sgiacomo.travaglini@arm.com// For example, this instantiates tests from test case BarTest each 33613481Sgiacomo.travaglini@arm.com// with values "one", "two", and "three": 33713481Sgiacomo.travaglini@arm.com// 33813481Sgiacomo.travaglini@arm.com// INSTANTIATE_TEST_CASE_P(NumSequence, BarTest, Values("one", "two", "three")); 33913481Sgiacomo.travaglini@arm.com// 34013481Sgiacomo.travaglini@arm.com// This instantiates tests from test case BazTest each with values 1, 2, 3.5. 34113481Sgiacomo.travaglini@arm.com// The exact type of values will depend on the type of parameter in BazTest. 34213481Sgiacomo.travaglini@arm.com// 34313481Sgiacomo.travaglini@arm.com// INSTANTIATE_TEST_CASE_P(FloatingNumbers, BazTest, Values(1, 2, 3.5)); 34413481Sgiacomo.travaglini@arm.com// 34513481Sgiacomo.travaglini@arm.com// Currently, Values() supports from 1 to 50 parameters. 34613481Sgiacomo.travaglini@arm.com// 34713481Sgiacomo.travaglini@arm.comtemplate <typename T1> 34813481Sgiacomo.travaglini@arm.cominternal::ValueArray1<T1> Values(T1 v1) { 34913481Sgiacomo.travaglini@arm.com return internal::ValueArray1<T1>(v1); 35013481Sgiacomo.travaglini@arm.com} 35113481Sgiacomo.travaglini@arm.com 35213481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2> 35313481Sgiacomo.travaglini@arm.cominternal::ValueArray2<T1, T2> Values(T1 v1, T2 v2) { 35413481Sgiacomo.travaglini@arm.com return internal::ValueArray2<T1, T2>(v1, v2); 35513481Sgiacomo.travaglini@arm.com} 35613481Sgiacomo.travaglini@arm.com 35713481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3> 35813481Sgiacomo.travaglini@arm.cominternal::ValueArray3<T1, T2, T3> Values(T1 v1, T2 v2, T3 v3) { 35913481Sgiacomo.travaglini@arm.com return internal::ValueArray3<T1, T2, T3>(v1, v2, v3); 36013481Sgiacomo.travaglini@arm.com} 36113481Sgiacomo.travaglini@arm.com 36213481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4> 36313481Sgiacomo.travaglini@arm.cominternal::ValueArray4<T1, T2, T3, T4> Values(T1 v1, T2 v2, T3 v3, T4 v4) { 36413481Sgiacomo.travaglini@arm.com return internal::ValueArray4<T1, T2, T3, T4>(v1, v2, v3, v4); 36513481Sgiacomo.travaglini@arm.com} 36613481Sgiacomo.travaglini@arm.com 36713481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5> 36813481Sgiacomo.travaglini@arm.cominternal::ValueArray5<T1, T2, T3, T4, T5> Values(T1 v1, T2 v2, T3 v3, T4 v4, 36913481Sgiacomo.travaglini@arm.com T5 v5) { 37013481Sgiacomo.travaglini@arm.com return internal::ValueArray5<T1, T2, T3, T4, T5>(v1, v2, v3, v4, v5); 37113481Sgiacomo.travaglini@arm.com} 37213481Sgiacomo.travaglini@arm.com 37313481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 37413481Sgiacomo.travaglini@arm.com typename T6> 37513481Sgiacomo.travaglini@arm.cominternal::ValueArray6<T1, T2, T3, T4, T5, T6> Values(T1 v1, T2 v2, T3 v3, 37613481Sgiacomo.travaglini@arm.com T4 v4, T5 v5, T6 v6) { 37713481Sgiacomo.travaglini@arm.com return internal::ValueArray6<T1, T2, T3, T4, T5, T6>(v1, v2, v3, v4, v5, v6); 37813481Sgiacomo.travaglini@arm.com} 37913481Sgiacomo.travaglini@arm.com 38013481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 38113481Sgiacomo.travaglini@arm.com typename T6, typename T7> 38213481Sgiacomo.travaglini@arm.cominternal::ValueArray7<T1, T2, T3, T4, T5, T6, T7> Values(T1 v1, T2 v2, T3 v3, 38313481Sgiacomo.travaglini@arm.com T4 v4, T5 v5, T6 v6, T7 v7) { 38413481Sgiacomo.travaglini@arm.com return internal::ValueArray7<T1, T2, T3, T4, T5, T6, T7>(v1, v2, v3, v4, v5, 38513481Sgiacomo.travaglini@arm.com v6, v7); 38613481Sgiacomo.travaglini@arm.com} 38713481Sgiacomo.travaglini@arm.com 38813481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 38913481Sgiacomo.travaglini@arm.com typename T6, typename T7, typename T8> 39013481Sgiacomo.travaglini@arm.cominternal::ValueArray8<T1, T2, T3, T4, T5, T6, T7, T8> Values(T1 v1, T2 v2, 39113481Sgiacomo.travaglini@arm.com T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8) { 39213481Sgiacomo.travaglini@arm.com return internal::ValueArray8<T1, T2, T3, T4, T5, T6, T7, T8>(v1, v2, v3, v4, 39313481Sgiacomo.travaglini@arm.com v5, v6, v7, v8); 39413481Sgiacomo.travaglini@arm.com} 39513481Sgiacomo.travaglini@arm.com 39613481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 39713481Sgiacomo.travaglini@arm.com typename T6, typename T7, typename T8, typename T9> 39813481Sgiacomo.travaglini@arm.cominternal::ValueArray9<T1, T2, T3, T4, T5, T6, T7, T8, T9> Values(T1 v1, T2 v2, 39913481Sgiacomo.travaglini@arm.com T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9) { 40013481Sgiacomo.travaglini@arm.com return internal::ValueArray9<T1, T2, T3, T4, T5, T6, T7, T8, T9>(v1, v2, v3, 40113481Sgiacomo.travaglini@arm.com v4, v5, v6, v7, v8, v9); 40213481Sgiacomo.travaglini@arm.com} 40313481Sgiacomo.travaglini@arm.com 40413481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 40513481Sgiacomo.travaglini@arm.com typename T6, typename T7, typename T8, typename T9, typename T10> 40613481Sgiacomo.travaglini@arm.cominternal::ValueArray10<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> Values(T1 v1, 40713481Sgiacomo.travaglini@arm.com T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10) { 40813481Sgiacomo.travaglini@arm.com return internal::ValueArray10<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>(v1, 40913481Sgiacomo.travaglini@arm.com v2, v3, v4, v5, v6, v7, v8, v9, v10); 41013481Sgiacomo.travaglini@arm.com} 41113481Sgiacomo.travaglini@arm.com 41213481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 41313481Sgiacomo.travaglini@arm.com typename T6, typename T7, typename T8, typename T9, typename T10, 41413481Sgiacomo.travaglini@arm.com typename T11> 41513481Sgiacomo.travaglini@arm.cominternal::ValueArray11<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, 41613481Sgiacomo.travaglini@arm.com T11> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 41713481Sgiacomo.travaglini@arm.com T10 v10, T11 v11) { 41813481Sgiacomo.travaglini@arm.com return internal::ValueArray11<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, 41913481Sgiacomo.travaglini@arm.com T11>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11); 42013481Sgiacomo.travaglini@arm.com} 42113481Sgiacomo.travaglini@arm.com 42213481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 42313481Sgiacomo.travaglini@arm.com typename T6, typename T7, typename T8, typename T9, typename T10, 42413481Sgiacomo.travaglini@arm.com typename T11, typename T12> 42513481Sgiacomo.travaglini@arm.cominternal::ValueArray12<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 42613481Sgiacomo.travaglini@arm.com T12> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 42713481Sgiacomo.travaglini@arm.com T10 v10, T11 v11, T12 v12) { 42813481Sgiacomo.travaglini@arm.com return internal::ValueArray12<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 42913481Sgiacomo.travaglini@arm.com T12>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12); 43013481Sgiacomo.travaglini@arm.com} 43113481Sgiacomo.travaglini@arm.com 43213481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 43313481Sgiacomo.travaglini@arm.com typename T6, typename T7, typename T8, typename T9, typename T10, 43413481Sgiacomo.travaglini@arm.com typename T11, typename T12, typename T13> 43513481Sgiacomo.travaglini@arm.cominternal::ValueArray13<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, 43613481Sgiacomo.travaglini@arm.com T13> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 43713481Sgiacomo.travaglini@arm.com T10 v10, T11 v11, T12 v12, T13 v13) { 43813481Sgiacomo.travaglini@arm.com return internal::ValueArray13<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 43913481Sgiacomo.travaglini@arm.com T12, T13>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13); 44013481Sgiacomo.travaglini@arm.com} 44113481Sgiacomo.travaglini@arm.com 44213481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 44313481Sgiacomo.travaglini@arm.com typename T6, typename T7, typename T8, typename T9, typename T10, 44413481Sgiacomo.travaglini@arm.com typename T11, typename T12, typename T13, typename T14> 44513481Sgiacomo.travaglini@arm.cominternal::ValueArray14<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 44613481Sgiacomo.travaglini@arm.com T14> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 44713481Sgiacomo.travaglini@arm.com T10 v10, T11 v11, T12 v12, T13 v13, T14 v14) { 44813481Sgiacomo.travaglini@arm.com return internal::ValueArray14<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 44913481Sgiacomo.travaglini@arm.com T12, T13, T14>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, 45013481Sgiacomo.travaglini@arm.com v14); 45113481Sgiacomo.travaglini@arm.com} 45213481Sgiacomo.travaglini@arm.com 45313481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 45413481Sgiacomo.travaglini@arm.com typename T6, typename T7, typename T8, typename T9, typename T10, 45513481Sgiacomo.travaglini@arm.com typename T11, typename T12, typename T13, typename T14, typename T15> 45613481Sgiacomo.travaglini@arm.cominternal::ValueArray15<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 45713481Sgiacomo.travaglini@arm.com T14, T15> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, 45813481Sgiacomo.travaglini@arm.com T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15) { 45913481Sgiacomo.travaglini@arm.com return internal::ValueArray15<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 46013481Sgiacomo.travaglini@arm.com T12, T13, T14, T15>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, 46113481Sgiacomo.travaglini@arm.com v13, v14, v15); 46213481Sgiacomo.travaglini@arm.com} 46313481Sgiacomo.travaglini@arm.com 46413481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 46513481Sgiacomo.travaglini@arm.com typename T6, typename T7, typename T8, typename T9, typename T10, 46613481Sgiacomo.travaglini@arm.com typename T11, typename T12, typename T13, typename T14, typename T15, 46713481Sgiacomo.travaglini@arm.com typename T16> 46813481Sgiacomo.travaglini@arm.cominternal::ValueArray16<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 46913481Sgiacomo.travaglini@arm.com T14, T15, T16> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, 47013481Sgiacomo.travaglini@arm.com T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, 47113481Sgiacomo.travaglini@arm.com T16 v16) { 47213481Sgiacomo.travaglini@arm.com return internal::ValueArray16<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 47313481Sgiacomo.travaglini@arm.com T12, T13, T14, T15, T16>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, 47413481Sgiacomo.travaglini@arm.com v12, v13, v14, v15, v16); 47513481Sgiacomo.travaglini@arm.com} 47613481Sgiacomo.travaglini@arm.com 47713481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 47813481Sgiacomo.travaglini@arm.com typename T6, typename T7, typename T8, typename T9, typename T10, 47913481Sgiacomo.travaglini@arm.com typename T11, typename T12, typename T13, typename T14, typename T15, 48013481Sgiacomo.travaglini@arm.com typename T16, typename T17> 48113481Sgiacomo.travaglini@arm.cominternal::ValueArray17<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 48213481Sgiacomo.travaglini@arm.com T14, T15, T16, T17> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, 48313481Sgiacomo.travaglini@arm.com T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, 48413481Sgiacomo.travaglini@arm.com T16 v16, T17 v17) { 48513481Sgiacomo.travaglini@arm.com return internal::ValueArray17<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 48613481Sgiacomo.travaglini@arm.com T12, T13, T14, T15, T16, T17>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, 48713481Sgiacomo.travaglini@arm.com v11, v12, v13, v14, v15, v16, v17); 48813481Sgiacomo.travaglini@arm.com} 48913481Sgiacomo.travaglini@arm.com 49013481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 49113481Sgiacomo.travaglini@arm.com typename T6, typename T7, typename T8, typename T9, typename T10, 49213481Sgiacomo.travaglini@arm.com typename T11, typename T12, typename T13, typename T14, typename T15, 49313481Sgiacomo.travaglini@arm.com typename T16, typename T17, typename T18> 49413481Sgiacomo.travaglini@arm.cominternal::ValueArray18<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 49513481Sgiacomo.travaglini@arm.com T14, T15, T16, T17, T18> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, 49613481Sgiacomo.travaglini@arm.com T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, 49713481Sgiacomo.travaglini@arm.com T16 v16, T17 v17, T18 v18) { 49813481Sgiacomo.travaglini@arm.com return internal::ValueArray18<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 49913481Sgiacomo.travaglini@arm.com T12, T13, T14, T15, T16, T17, T18>(v1, v2, v3, v4, v5, v6, v7, v8, v9, 50013481Sgiacomo.travaglini@arm.com v10, v11, v12, v13, v14, v15, v16, v17, v18); 50113481Sgiacomo.travaglini@arm.com} 50213481Sgiacomo.travaglini@arm.com 50313481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 50413481Sgiacomo.travaglini@arm.com typename T6, typename T7, typename T8, typename T9, typename T10, 50513481Sgiacomo.travaglini@arm.com typename T11, typename T12, typename T13, typename T14, typename T15, 50613481Sgiacomo.travaglini@arm.com typename T16, typename T17, typename T18, typename T19> 50713481Sgiacomo.travaglini@arm.cominternal::ValueArray19<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 50813481Sgiacomo.travaglini@arm.com T14, T15, T16, T17, T18, T19> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, 50913481Sgiacomo.travaglini@arm.com T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, 51013481Sgiacomo.travaglini@arm.com T15 v15, T16 v16, T17 v17, T18 v18, T19 v19) { 51113481Sgiacomo.travaglini@arm.com return internal::ValueArray19<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 51213481Sgiacomo.travaglini@arm.com T12, T13, T14, T15, T16, T17, T18, T19>(v1, v2, v3, v4, v5, v6, v7, v8, 51313481Sgiacomo.travaglini@arm.com v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19); 51413481Sgiacomo.travaglini@arm.com} 51513481Sgiacomo.travaglini@arm.com 51613481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 51713481Sgiacomo.travaglini@arm.com typename T6, typename T7, typename T8, typename T9, typename T10, 51813481Sgiacomo.travaglini@arm.com typename T11, typename T12, typename T13, typename T14, typename T15, 51913481Sgiacomo.travaglini@arm.com typename T16, typename T17, typename T18, typename T19, typename T20> 52013481Sgiacomo.travaglini@arm.cominternal::ValueArray20<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 52113481Sgiacomo.travaglini@arm.com T14, T15, T16, T17, T18, T19, T20> Values(T1 v1, T2 v2, T3 v3, T4 v4, 52213481Sgiacomo.travaglini@arm.com T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, 52313481Sgiacomo.travaglini@arm.com T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20) { 52413481Sgiacomo.travaglini@arm.com return internal::ValueArray20<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 52513481Sgiacomo.travaglini@arm.com T12, T13, T14, T15, T16, T17, T18, T19, T20>(v1, v2, v3, v4, v5, v6, v7, 52613481Sgiacomo.travaglini@arm.com v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20); 52713481Sgiacomo.travaglini@arm.com} 52813481Sgiacomo.travaglini@arm.com 52913481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 53013481Sgiacomo.travaglini@arm.com typename T6, typename T7, typename T8, typename T9, typename T10, 53113481Sgiacomo.travaglini@arm.com typename T11, typename T12, typename T13, typename T14, typename T15, 53213481Sgiacomo.travaglini@arm.com typename T16, typename T17, typename T18, typename T19, typename T20, 53313481Sgiacomo.travaglini@arm.com typename T21> 53413481Sgiacomo.travaglini@arm.cominternal::ValueArray21<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 53513481Sgiacomo.travaglini@arm.com T14, T15, T16, T17, T18, T19, T20, T21> Values(T1 v1, T2 v2, T3 v3, T4 v4, 53613481Sgiacomo.travaglini@arm.com T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, 53713481Sgiacomo.travaglini@arm.com T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21) { 53813481Sgiacomo.travaglini@arm.com return internal::ValueArray21<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 53913481Sgiacomo.travaglini@arm.com T12, T13, T14, T15, T16, T17, T18, T19, T20, T21>(v1, v2, v3, v4, v5, v6, 54013481Sgiacomo.travaglini@arm.com v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21); 54113481Sgiacomo.travaglini@arm.com} 54213481Sgiacomo.travaglini@arm.com 54313481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 54413481Sgiacomo.travaglini@arm.com typename T6, typename T7, typename T8, typename T9, typename T10, 54513481Sgiacomo.travaglini@arm.com typename T11, typename T12, typename T13, typename T14, typename T15, 54613481Sgiacomo.travaglini@arm.com typename T16, typename T17, typename T18, typename T19, typename T20, 54713481Sgiacomo.travaglini@arm.com typename T21, typename T22> 54813481Sgiacomo.travaglini@arm.cominternal::ValueArray22<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 54913481Sgiacomo.travaglini@arm.com T14, T15, T16, T17, T18, T19, T20, T21, T22> Values(T1 v1, T2 v2, T3 v3, 55013481Sgiacomo.travaglini@arm.com T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, 55113481Sgiacomo.travaglini@arm.com T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, 55213481Sgiacomo.travaglini@arm.com T21 v21, T22 v22) { 55313481Sgiacomo.travaglini@arm.com return internal::ValueArray22<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 55413481Sgiacomo.travaglini@arm.com T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22>(v1, v2, v3, v4, 55513481Sgiacomo.travaglini@arm.com v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, 55613481Sgiacomo.travaglini@arm.com v20, v21, v22); 55713481Sgiacomo.travaglini@arm.com} 55813481Sgiacomo.travaglini@arm.com 55913481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 56013481Sgiacomo.travaglini@arm.com typename T6, typename T7, typename T8, typename T9, typename T10, 56113481Sgiacomo.travaglini@arm.com typename T11, typename T12, typename T13, typename T14, typename T15, 56213481Sgiacomo.travaglini@arm.com typename T16, typename T17, typename T18, typename T19, typename T20, 56313481Sgiacomo.travaglini@arm.com typename T21, typename T22, typename T23> 56413481Sgiacomo.travaglini@arm.cominternal::ValueArray23<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 56513481Sgiacomo.travaglini@arm.com T14, T15, T16, T17, T18, T19, T20, T21, T22, T23> Values(T1 v1, T2 v2, 56613481Sgiacomo.travaglini@arm.com T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, 56713481Sgiacomo.travaglini@arm.com T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, 56813481Sgiacomo.travaglini@arm.com T21 v21, T22 v22, T23 v23) { 56913481Sgiacomo.travaglini@arm.com return internal::ValueArray23<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 57013481Sgiacomo.travaglini@arm.com T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23>(v1, v2, v3, 57113481Sgiacomo.travaglini@arm.com v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, 57213481Sgiacomo.travaglini@arm.com v20, v21, v22, v23); 57313481Sgiacomo.travaglini@arm.com} 57413481Sgiacomo.travaglini@arm.com 57513481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 57613481Sgiacomo.travaglini@arm.com typename T6, typename T7, typename T8, typename T9, typename T10, 57713481Sgiacomo.travaglini@arm.com typename T11, typename T12, typename T13, typename T14, typename T15, 57813481Sgiacomo.travaglini@arm.com typename T16, typename T17, typename T18, typename T19, typename T20, 57913481Sgiacomo.travaglini@arm.com typename T21, typename T22, typename T23, typename T24> 58013481Sgiacomo.travaglini@arm.cominternal::ValueArray24<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 58113481Sgiacomo.travaglini@arm.com T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24> Values(T1 v1, T2 v2, 58213481Sgiacomo.travaglini@arm.com T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, 58313481Sgiacomo.travaglini@arm.com T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, 58413481Sgiacomo.travaglini@arm.com T21 v21, T22 v22, T23 v23, T24 v24) { 58513481Sgiacomo.travaglini@arm.com return internal::ValueArray24<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 58613481Sgiacomo.travaglini@arm.com T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24>(v1, v2, 58713481Sgiacomo.travaglini@arm.com v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, 58813481Sgiacomo.travaglini@arm.com v19, v20, v21, v22, v23, v24); 58913481Sgiacomo.travaglini@arm.com} 59013481Sgiacomo.travaglini@arm.com 59113481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 59213481Sgiacomo.travaglini@arm.com typename T6, typename T7, typename T8, typename T9, typename T10, 59313481Sgiacomo.travaglini@arm.com typename T11, typename T12, typename T13, typename T14, typename T15, 59413481Sgiacomo.travaglini@arm.com typename T16, typename T17, typename T18, typename T19, typename T20, 59513481Sgiacomo.travaglini@arm.com typename T21, typename T22, typename T23, typename T24, typename T25> 59613481Sgiacomo.travaglini@arm.cominternal::ValueArray25<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 59713481Sgiacomo.travaglini@arm.com T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25> Values(T1 v1, 59813481Sgiacomo.travaglini@arm.com T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, 59913481Sgiacomo.travaglini@arm.com T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, 60013481Sgiacomo.travaglini@arm.com T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25) { 60113481Sgiacomo.travaglini@arm.com return internal::ValueArray25<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 60213481Sgiacomo.travaglini@arm.com T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25>(v1, 60313481Sgiacomo.travaglini@arm.com v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, 60413481Sgiacomo.travaglini@arm.com v18, v19, v20, v21, v22, v23, v24, v25); 60513481Sgiacomo.travaglini@arm.com} 60613481Sgiacomo.travaglini@arm.com 60713481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 60813481Sgiacomo.travaglini@arm.com typename T6, typename T7, typename T8, typename T9, typename T10, 60913481Sgiacomo.travaglini@arm.com typename T11, typename T12, typename T13, typename T14, typename T15, 61013481Sgiacomo.travaglini@arm.com typename T16, typename T17, typename T18, typename T19, typename T20, 61113481Sgiacomo.travaglini@arm.com typename T21, typename T22, typename T23, typename T24, typename T25, 61213481Sgiacomo.travaglini@arm.com typename T26> 61313481Sgiacomo.travaglini@arm.cominternal::ValueArray26<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 61413481Sgiacomo.travaglini@arm.com T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 61513481Sgiacomo.travaglini@arm.com T26> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 61613481Sgiacomo.travaglini@arm.com T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 61713481Sgiacomo.travaglini@arm.com T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 61813481Sgiacomo.travaglini@arm.com T26 v26) { 61913481Sgiacomo.travaglini@arm.com return internal::ValueArray26<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 62013481Sgiacomo.travaglini@arm.com T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 62113481Sgiacomo.travaglini@arm.com T26>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, 62213481Sgiacomo.travaglini@arm.com v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26); 62313481Sgiacomo.travaglini@arm.com} 62413481Sgiacomo.travaglini@arm.com 62513481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 62613481Sgiacomo.travaglini@arm.com typename T6, typename T7, typename T8, typename T9, typename T10, 62713481Sgiacomo.travaglini@arm.com typename T11, typename T12, typename T13, typename T14, typename T15, 62813481Sgiacomo.travaglini@arm.com typename T16, typename T17, typename T18, typename T19, typename T20, 62913481Sgiacomo.travaglini@arm.com typename T21, typename T22, typename T23, typename T24, typename T25, 63013481Sgiacomo.travaglini@arm.com typename T26, typename T27> 63113481Sgiacomo.travaglini@arm.cominternal::ValueArray27<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 63213481Sgiacomo.travaglini@arm.com T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, 63313481Sgiacomo.travaglini@arm.com T27> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 63413481Sgiacomo.travaglini@arm.com T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 63513481Sgiacomo.travaglini@arm.com T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 63613481Sgiacomo.travaglini@arm.com T26 v26, T27 v27) { 63713481Sgiacomo.travaglini@arm.com return internal::ValueArray27<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 63813481Sgiacomo.travaglini@arm.com T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 63913481Sgiacomo.travaglini@arm.com T26, T27>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, 64013481Sgiacomo.travaglini@arm.com v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27); 64113481Sgiacomo.travaglini@arm.com} 64213481Sgiacomo.travaglini@arm.com 64313481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 64413481Sgiacomo.travaglini@arm.com typename T6, typename T7, typename T8, typename T9, typename T10, 64513481Sgiacomo.travaglini@arm.com typename T11, typename T12, typename T13, typename T14, typename T15, 64613481Sgiacomo.travaglini@arm.com typename T16, typename T17, typename T18, typename T19, typename T20, 64713481Sgiacomo.travaglini@arm.com typename T21, typename T22, typename T23, typename T24, typename T25, 64813481Sgiacomo.travaglini@arm.com typename T26, typename T27, typename T28> 64913481Sgiacomo.travaglini@arm.cominternal::ValueArray28<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 65013481Sgiacomo.travaglini@arm.com T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, 65113481Sgiacomo.travaglini@arm.com T28> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 65213481Sgiacomo.travaglini@arm.com T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 65313481Sgiacomo.travaglini@arm.com T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 65413481Sgiacomo.travaglini@arm.com T26 v26, T27 v27, T28 v28) { 65513481Sgiacomo.travaglini@arm.com return internal::ValueArray28<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 65613481Sgiacomo.travaglini@arm.com T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 65713481Sgiacomo.travaglini@arm.com T26, T27, T28>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, 65813481Sgiacomo.travaglini@arm.com v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, 65913481Sgiacomo.travaglini@arm.com v28); 66013481Sgiacomo.travaglini@arm.com} 66113481Sgiacomo.travaglini@arm.com 66213481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 66313481Sgiacomo.travaglini@arm.com typename T6, typename T7, typename T8, typename T9, typename T10, 66413481Sgiacomo.travaglini@arm.com typename T11, typename T12, typename T13, typename T14, typename T15, 66513481Sgiacomo.travaglini@arm.com typename T16, typename T17, typename T18, typename T19, typename T20, 66613481Sgiacomo.travaglini@arm.com typename T21, typename T22, typename T23, typename T24, typename T25, 66713481Sgiacomo.travaglini@arm.com typename T26, typename T27, typename T28, typename T29> 66813481Sgiacomo.travaglini@arm.cominternal::ValueArray29<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 66913481Sgiacomo.travaglini@arm.com T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 67013481Sgiacomo.travaglini@arm.com T29> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 67113481Sgiacomo.travaglini@arm.com T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 67213481Sgiacomo.travaglini@arm.com T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 67313481Sgiacomo.travaglini@arm.com T26 v26, T27 v27, T28 v28, T29 v29) { 67413481Sgiacomo.travaglini@arm.com return internal::ValueArray29<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 67513481Sgiacomo.travaglini@arm.com T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 67613481Sgiacomo.travaglini@arm.com T26, T27, T28, T29>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, 67713481Sgiacomo.travaglini@arm.com v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, 67813481Sgiacomo.travaglini@arm.com v27, v28, v29); 67913481Sgiacomo.travaglini@arm.com} 68013481Sgiacomo.travaglini@arm.com 68113481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 68213481Sgiacomo.travaglini@arm.com typename T6, typename T7, typename T8, typename T9, typename T10, 68313481Sgiacomo.travaglini@arm.com typename T11, typename T12, typename T13, typename T14, typename T15, 68413481Sgiacomo.travaglini@arm.com typename T16, typename T17, typename T18, typename T19, typename T20, 68513481Sgiacomo.travaglini@arm.com typename T21, typename T22, typename T23, typename T24, typename T25, 68613481Sgiacomo.travaglini@arm.com typename T26, typename T27, typename T28, typename T29, typename T30> 68713481Sgiacomo.travaglini@arm.cominternal::ValueArray30<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 68813481Sgiacomo.travaglini@arm.com T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 68913481Sgiacomo.travaglini@arm.com T29, T30> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, 69013481Sgiacomo.travaglini@arm.com T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, 69113481Sgiacomo.travaglini@arm.com T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, 69213481Sgiacomo.travaglini@arm.com T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30) { 69313481Sgiacomo.travaglini@arm.com return internal::ValueArray30<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 69413481Sgiacomo.travaglini@arm.com T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 69513481Sgiacomo.travaglini@arm.com T26, T27, T28, T29, T30>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, 69613481Sgiacomo.travaglini@arm.com v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, 69713481Sgiacomo.travaglini@arm.com v26, v27, v28, v29, v30); 69813481Sgiacomo.travaglini@arm.com} 69913481Sgiacomo.travaglini@arm.com 70013481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 70113481Sgiacomo.travaglini@arm.com typename T6, typename T7, typename T8, typename T9, typename T10, 70213481Sgiacomo.travaglini@arm.com typename T11, typename T12, typename T13, typename T14, typename T15, 70313481Sgiacomo.travaglini@arm.com typename T16, typename T17, typename T18, typename T19, typename T20, 70413481Sgiacomo.travaglini@arm.com typename T21, typename T22, typename T23, typename T24, typename T25, 70513481Sgiacomo.travaglini@arm.com typename T26, typename T27, typename T28, typename T29, typename T30, 70613481Sgiacomo.travaglini@arm.com typename T31> 70713481Sgiacomo.travaglini@arm.cominternal::ValueArray31<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 70813481Sgiacomo.travaglini@arm.com T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 70913481Sgiacomo.travaglini@arm.com T29, T30, T31> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, 71013481Sgiacomo.travaglini@arm.com T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, 71113481Sgiacomo.travaglini@arm.com T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, 71213481Sgiacomo.travaglini@arm.com T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31) { 71313481Sgiacomo.travaglini@arm.com return internal::ValueArray31<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 71413481Sgiacomo.travaglini@arm.com T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 71513481Sgiacomo.travaglini@arm.com T26, T27, T28, T29, T30, T31>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, 71613481Sgiacomo.travaglini@arm.com v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, 71713481Sgiacomo.travaglini@arm.com v25, v26, v27, v28, v29, v30, v31); 71813481Sgiacomo.travaglini@arm.com} 71913481Sgiacomo.travaglini@arm.com 72013481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 72113481Sgiacomo.travaglini@arm.com typename T6, typename T7, typename T8, typename T9, typename T10, 72213481Sgiacomo.travaglini@arm.com typename T11, typename T12, typename T13, typename T14, typename T15, 72313481Sgiacomo.travaglini@arm.com typename T16, typename T17, typename T18, typename T19, typename T20, 72413481Sgiacomo.travaglini@arm.com typename T21, typename T22, typename T23, typename T24, typename T25, 72513481Sgiacomo.travaglini@arm.com typename T26, typename T27, typename T28, typename T29, typename T30, 72613481Sgiacomo.travaglini@arm.com typename T31, typename T32> 72713481Sgiacomo.travaglini@arm.cominternal::ValueArray32<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 72813481Sgiacomo.travaglini@arm.com T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 72913481Sgiacomo.travaglini@arm.com T29, T30, T31, T32> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, 73013481Sgiacomo.travaglini@arm.com T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, 73113481Sgiacomo.travaglini@arm.com T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, 73213481Sgiacomo.travaglini@arm.com T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, 73313481Sgiacomo.travaglini@arm.com T32 v32) { 73413481Sgiacomo.travaglini@arm.com return internal::ValueArray32<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 73513481Sgiacomo.travaglini@arm.com T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 73613481Sgiacomo.travaglini@arm.com T26, T27, T28, T29, T30, T31, T32>(v1, v2, v3, v4, v5, v6, v7, v8, v9, 73713481Sgiacomo.travaglini@arm.com v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, 73813481Sgiacomo.travaglini@arm.com v24, v25, v26, v27, v28, v29, v30, v31, v32); 73913481Sgiacomo.travaglini@arm.com} 74013481Sgiacomo.travaglini@arm.com 74113481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 74213481Sgiacomo.travaglini@arm.com typename T6, typename T7, typename T8, typename T9, typename T10, 74313481Sgiacomo.travaglini@arm.com typename T11, typename T12, typename T13, typename T14, typename T15, 74413481Sgiacomo.travaglini@arm.com typename T16, typename T17, typename T18, typename T19, typename T20, 74513481Sgiacomo.travaglini@arm.com typename T21, typename T22, typename T23, typename T24, typename T25, 74613481Sgiacomo.travaglini@arm.com typename T26, typename T27, typename T28, typename T29, typename T30, 74713481Sgiacomo.travaglini@arm.com typename T31, typename T32, typename T33> 74813481Sgiacomo.travaglini@arm.cominternal::ValueArray33<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 74913481Sgiacomo.travaglini@arm.com T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 75013481Sgiacomo.travaglini@arm.com T29, T30, T31, T32, T33> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, 75113481Sgiacomo.travaglini@arm.com T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, 75213481Sgiacomo.travaglini@arm.com T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, 75313481Sgiacomo.travaglini@arm.com T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, 75413481Sgiacomo.travaglini@arm.com T32 v32, T33 v33) { 75513481Sgiacomo.travaglini@arm.com return internal::ValueArray33<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 75613481Sgiacomo.travaglini@arm.com T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 75713481Sgiacomo.travaglini@arm.com T26, T27, T28, T29, T30, T31, T32, T33>(v1, v2, v3, v4, v5, v6, v7, v8, 75813481Sgiacomo.travaglini@arm.com v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, 75913481Sgiacomo.travaglini@arm.com v24, v25, v26, v27, v28, v29, v30, v31, v32, v33); 76013481Sgiacomo.travaglini@arm.com} 76113481Sgiacomo.travaglini@arm.com 76213481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 76313481Sgiacomo.travaglini@arm.com typename T6, typename T7, typename T8, typename T9, typename T10, 76413481Sgiacomo.travaglini@arm.com typename T11, typename T12, typename T13, typename T14, typename T15, 76513481Sgiacomo.travaglini@arm.com typename T16, typename T17, typename T18, typename T19, typename T20, 76613481Sgiacomo.travaglini@arm.com typename T21, typename T22, typename T23, typename T24, typename T25, 76713481Sgiacomo.travaglini@arm.com typename T26, typename T27, typename T28, typename T29, typename T30, 76813481Sgiacomo.travaglini@arm.com typename T31, typename T32, typename T33, typename T34> 76913481Sgiacomo.travaglini@arm.cominternal::ValueArray34<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 77013481Sgiacomo.travaglini@arm.com T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 77113481Sgiacomo.travaglini@arm.com T29, T30, T31, T32, T33, T34> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, 77213481Sgiacomo.travaglini@arm.com T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, 77313481Sgiacomo.travaglini@arm.com T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, 77413481Sgiacomo.travaglini@arm.com T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, 77513481Sgiacomo.travaglini@arm.com T31 v31, T32 v32, T33 v33, T34 v34) { 77613481Sgiacomo.travaglini@arm.com return internal::ValueArray34<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 77713481Sgiacomo.travaglini@arm.com T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 77813481Sgiacomo.travaglini@arm.com T26, T27, T28, T29, T30, T31, T32, T33, T34>(v1, v2, v3, v4, v5, v6, v7, 77913481Sgiacomo.travaglini@arm.com v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, 78013481Sgiacomo.travaglini@arm.com v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34); 78113481Sgiacomo.travaglini@arm.com} 78213481Sgiacomo.travaglini@arm.com 78313481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 78413481Sgiacomo.travaglini@arm.com typename T6, typename T7, typename T8, typename T9, typename T10, 78513481Sgiacomo.travaglini@arm.com typename T11, typename T12, typename T13, typename T14, typename T15, 78613481Sgiacomo.travaglini@arm.com typename T16, typename T17, typename T18, typename T19, typename T20, 78713481Sgiacomo.travaglini@arm.com typename T21, typename T22, typename T23, typename T24, typename T25, 78813481Sgiacomo.travaglini@arm.com typename T26, typename T27, typename T28, typename T29, typename T30, 78913481Sgiacomo.travaglini@arm.com typename T31, typename T32, typename T33, typename T34, typename T35> 79013481Sgiacomo.travaglini@arm.cominternal::ValueArray35<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 79113481Sgiacomo.travaglini@arm.com T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 79213481Sgiacomo.travaglini@arm.com T29, T30, T31, T32, T33, T34, T35> Values(T1 v1, T2 v2, T3 v3, T4 v4, 79313481Sgiacomo.travaglini@arm.com T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, 79413481Sgiacomo.travaglini@arm.com T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, 79513481Sgiacomo.travaglini@arm.com T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, 79613481Sgiacomo.travaglini@arm.com T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35) { 79713481Sgiacomo.travaglini@arm.com return internal::ValueArray35<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 79813481Sgiacomo.travaglini@arm.com T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 79913481Sgiacomo.travaglini@arm.com T26, T27, T28, T29, T30, T31, T32, T33, T34, T35>(v1, v2, v3, v4, v5, v6, 80013481Sgiacomo.travaglini@arm.com v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, 80113481Sgiacomo.travaglini@arm.com v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35); 80213481Sgiacomo.travaglini@arm.com} 80313481Sgiacomo.travaglini@arm.com 80413481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 80513481Sgiacomo.travaglini@arm.com typename T6, typename T7, typename T8, typename T9, typename T10, 80613481Sgiacomo.travaglini@arm.com typename T11, typename T12, typename T13, typename T14, typename T15, 80713481Sgiacomo.travaglini@arm.com typename T16, typename T17, typename T18, typename T19, typename T20, 80813481Sgiacomo.travaglini@arm.com typename T21, typename T22, typename T23, typename T24, typename T25, 80913481Sgiacomo.travaglini@arm.com typename T26, typename T27, typename T28, typename T29, typename T30, 81013481Sgiacomo.travaglini@arm.com typename T31, typename T32, typename T33, typename T34, typename T35, 81113481Sgiacomo.travaglini@arm.com typename T36> 81213481Sgiacomo.travaglini@arm.cominternal::ValueArray36<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 81313481Sgiacomo.travaglini@arm.com T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 81413481Sgiacomo.travaglini@arm.com T29, T30, T31, T32, T33, T34, T35, T36> Values(T1 v1, T2 v2, T3 v3, T4 v4, 81513481Sgiacomo.travaglini@arm.com T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, 81613481Sgiacomo.travaglini@arm.com T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, 81713481Sgiacomo.travaglini@arm.com T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, 81813481Sgiacomo.travaglini@arm.com T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36) { 81913481Sgiacomo.travaglini@arm.com return internal::ValueArray36<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 82013481Sgiacomo.travaglini@arm.com T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 82113481Sgiacomo.travaglini@arm.com T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36>(v1, v2, v3, v4, 82213481Sgiacomo.travaglini@arm.com v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, 82313481Sgiacomo.travaglini@arm.com v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, 82413481Sgiacomo.travaglini@arm.com v34, v35, v36); 82513481Sgiacomo.travaglini@arm.com} 82613481Sgiacomo.travaglini@arm.com 82713481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 82813481Sgiacomo.travaglini@arm.com typename T6, typename T7, typename T8, typename T9, typename T10, 82913481Sgiacomo.travaglini@arm.com typename T11, typename T12, typename T13, typename T14, typename T15, 83013481Sgiacomo.travaglini@arm.com typename T16, typename T17, typename T18, typename T19, typename T20, 83113481Sgiacomo.travaglini@arm.com typename T21, typename T22, typename T23, typename T24, typename T25, 83213481Sgiacomo.travaglini@arm.com typename T26, typename T27, typename T28, typename T29, typename T30, 83313481Sgiacomo.travaglini@arm.com typename T31, typename T32, typename T33, typename T34, typename T35, 83413481Sgiacomo.travaglini@arm.com typename T36, typename T37> 83513481Sgiacomo.travaglini@arm.cominternal::ValueArray37<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 83613481Sgiacomo.travaglini@arm.com T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 83713481Sgiacomo.travaglini@arm.com T29, T30, T31, T32, T33, T34, T35, T36, T37> Values(T1 v1, T2 v2, T3 v3, 83813481Sgiacomo.travaglini@arm.com T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, 83913481Sgiacomo.travaglini@arm.com T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, 84013481Sgiacomo.travaglini@arm.com T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, 84113481Sgiacomo.travaglini@arm.com T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, 84213481Sgiacomo.travaglini@arm.com T37 v37) { 84313481Sgiacomo.travaglini@arm.com return internal::ValueArray37<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 84413481Sgiacomo.travaglini@arm.com T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 84513481Sgiacomo.travaglini@arm.com T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37>(v1, v2, v3, 84613481Sgiacomo.travaglini@arm.com v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, 84713481Sgiacomo.travaglini@arm.com v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, 84813481Sgiacomo.travaglini@arm.com v34, v35, v36, v37); 84913481Sgiacomo.travaglini@arm.com} 85013481Sgiacomo.travaglini@arm.com 85113481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 85213481Sgiacomo.travaglini@arm.com typename T6, typename T7, typename T8, typename T9, typename T10, 85313481Sgiacomo.travaglini@arm.com typename T11, typename T12, typename T13, typename T14, typename T15, 85413481Sgiacomo.travaglini@arm.com typename T16, typename T17, typename T18, typename T19, typename T20, 85513481Sgiacomo.travaglini@arm.com typename T21, typename T22, typename T23, typename T24, typename T25, 85613481Sgiacomo.travaglini@arm.com typename T26, typename T27, typename T28, typename T29, typename T30, 85713481Sgiacomo.travaglini@arm.com typename T31, typename T32, typename T33, typename T34, typename T35, 85813481Sgiacomo.travaglini@arm.com typename T36, typename T37, typename T38> 85913481Sgiacomo.travaglini@arm.cominternal::ValueArray38<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 86013481Sgiacomo.travaglini@arm.com T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 86113481Sgiacomo.travaglini@arm.com T29, T30, T31, T32, T33, T34, T35, T36, T37, T38> Values(T1 v1, T2 v2, 86213481Sgiacomo.travaglini@arm.com T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, 86313481Sgiacomo.travaglini@arm.com T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, 86413481Sgiacomo.travaglini@arm.com T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, 86513481Sgiacomo.travaglini@arm.com T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, 86613481Sgiacomo.travaglini@arm.com T37 v37, T38 v38) { 86713481Sgiacomo.travaglini@arm.com return internal::ValueArray38<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 86813481Sgiacomo.travaglini@arm.com T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 86913481Sgiacomo.travaglini@arm.com T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38>(v1, v2, 87013481Sgiacomo.travaglini@arm.com v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, 87113481Sgiacomo.travaglini@arm.com v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, 87213481Sgiacomo.travaglini@arm.com v33, v34, v35, v36, v37, v38); 87313481Sgiacomo.travaglini@arm.com} 87413481Sgiacomo.travaglini@arm.com 87513481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 87613481Sgiacomo.travaglini@arm.com typename T6, typename T7, typename T8, typename T9, typename T10, 87713481Sgiacomo.travaglini@arm.com typename T11, typename T12, typename T13, typename T14, typename T15, 87813481Sgiacomo.travaglini@arm.com typename T16, typename T17, typename T18, typename T19, typename T20, 87913481Sgiacomo.travaglini@arm.com typename T21, typename T22, typename T23, typename T24, typename T25, 88013481Sgiacomo.travaglini@arm.com typename T26, typename T27, typename T28, typename T29, typename T30, 88113481Sgiacomo.travaglini@arm.com typename T31, typename T32, typename T33, typename T34, typename T35, 88213481Sgiacomo.travaglini@arm.com typename T36, typename T37, typename T38, typename T39> 88313481Sgiacomo.travaglini@arm.cominternal::ValueArray39<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 88413481Sgiacomo.travaglini@arm.com T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 88513481Sgiacomo.travaglini@arm.com T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39> Values(T1 v1, T2 v2, 88613481Sgiacomo.travaglini@arm.com T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, 88713481Sgiacomo.travaglini@arm.com T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, 88813481Sgiacomo.travaglini@arm.com T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, 88913481Sgiacomo.travaglini@arm.com T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, 89013481Sgiacomo.travaglini@arm.com T37 v37, T38 v38, T39 v39) { 89113481Sgiacomo.travaglini@arm.com return internal::ValueArray39<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 89213481Sgiacomo.travaglini@arm.com T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 89313481Sgiacomo.travaglini@arm.com T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39>(v1, 89413481Sgiacomo.travaglini@arm.com v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, 89513481Sgiacomo.travaglini@arm.com v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, 89613481Sgiacomo.travaglini@arm.com v32, v33, v34, v35, v36, v37, v38, v39); 89713481Sgiacomo.travaglini@arm.com} 89813481Sgiacomo.travaglini@arm.com 89913481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 90013481Sgiacomo.travaglini@arm.com typename T6, typename T7, typename T8, typename T9, typename T10, 90113481Sgiacomo.travaglini@arm.com typename T11, typename T12, typename T13, typename T14, typename T15, 90213481Sgiacomo.travaglini@arm.com typename T16, typename T17, typename T18, typename T19, typename T20, 90313481Sgiacomo.travaglini@arm.com typename T21, typename T22, typename T23, typename T24, typename T25, 90413481Sgiacomo.travaglini@arm.com typename T26, typename T27, typename T28, typename T29, typename T30, 90513481Sgiacomo.travaglini@arm.com typename T31, typename T32, typename T33, typename T34, typename T35, 90613481Sgiacomo.travaglini@arm.com typename T36, typename T37, typename T38, typename T39, typename T40> 90713481Sgiacomo.travaglini@arm.cominternal::ValueArray40<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 90813481Sgiacomo.travaglini@arm.com T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 90913481Sgiacomo.travaglini@arm.com T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40> Values(T1 v1, 91013481Sgiacomo.travaglini@arm.com T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, 91113481Sgiacomo.travaglini@arm.com T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, 91213481Sgiacomo.travaglini@arm.com T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, 91313481Sgiacomo.travaglini@arm.com T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, 91413481Sgiacomo.travaglini@arm.com T36 v36, T37 v37, T38 v38, T39 v39, T40 v40) { 91513481Sgiacomo.travaglini@arm.com return internal::ValueArray40<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 91613481Sgiacomo.travaglini@arm.com T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 91713481Sgiacomo.travaglini@arm.com T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, 91813481Sgiacomo.travaglini@arm.com T40>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, 91913481Sgiacomo.travaglini@arm.com v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, 92013481Sgiacomo.travaglini@arm.com v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40); 92113481Sgiacomo.travaglini@arm.com} 92213481Sgiacomo.travaglini@arm.com 92313481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 92413481Sgiacomo.travaglini@arm.com typename T6, typename T7, typename T8, typename T9, typename T10, 92513481Sgiacomo.travaglini@arm.com typename T11, typename T12, typename T13, typename T14, typename T15, 92613481Sgiacomo.travaglini@arm.com typename T16, typename T17, typename T18, typename T19, typename T20, 92713481Sgiacomo.travaglini@arm.com typename T21, typename T22, typename T23, typename T24, typename T25, 92813481Sgiacomo.travaglini@arm.com typename T26, typename T27, typename T28, typename T29, typename T30, 92913481Sgiacomo.travaglini@arm.com typename T31, typename T32, typename T33, typename T34, typename T35, 93013481Sgiacomo.travaglini@arm.com typename T36, typename T37, typename T38, typename T39, typename T40, 93113481Sgiacomo.travaglini@arm.com typename T41> 93213481Sgiacomo.travaglini@arm.cominternal::ValueArray41<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 93313481Sgiacomo.travaglini@arm.com T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 93413481Sgiacomo.travaglini@arm.com T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, 93513481Sgiacomo.travaglini@arm.com T41> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 93613481Sgiacomo.travaglini@arm.com T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 93713481Sgiacomo.travaglini@arm.com T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 93813481Sgiacomo.travaglini@arm.com T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, 93913481Sgiacomo.travaglini@arm.com T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41) { 94013481Sgiacomo.travaglini@arm.com return internal::ValueArray41<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 94113481Sgiacomo.travaglini@arm.com T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 94213481Sgiacomo.travaglini@arm.com T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, 94313481Sgiacomo.travaglini@arm.com T40, T41>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, 94413481Sgiacomo.travaglini@arm.com v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, 94513481Sgiacomo.travaglini@arm.com v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41); 94613481Sgiacomo.travaglini@arm.com} 94713481Sgiacomo.travaglini@arm.com 94813481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 94913481Sgiacomo.travaglini@arm.com typename T6, typename T7, typename T8, typename T9, typename T10, 95013481Sgiacomo.travaglini@arm.com typename T11, typename T12, typename T13, typename T14, typename T15, 95113481Sgiacomo.travaglini@arm.com typename T16, typename T17, typename T18, typename T19, typename T20, 95213481Sgiacomo.travaglini@arm.com typename T21, typename T22, typename T23, typename T24, typename T25, 95313481Sgiacomo.travaglini@arm.com typename T26, typename T27, typename T28, typename T29, typename T30, 95413481Sgiacomo.travaglini@arm.com typename T31, typename T32, typename T33, typename T34, typename T35, 95513481Sgiacomo.travaglini@arm.com typename T36, typename T37, typename T38, typename T39, typename T40, 95613481Sgiacomo.travaglini@arm.com typename T41, typename T42> 95713481Sgiacomo.travaglini@arm.cominternal::ValueArray42<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 95813481Sgiacomo.travaglini@arm.com T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 95913481Sgiacomo.travaglini@arm.com T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, 96013481Sgiacomo.travaglini@arm.com T42> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 96113481Sgiacomo.travaglini@arm.com T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 96213481Sgiacomo.travaglini@arm.com T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 96313481Sgiacomo.travaglini@arm.com T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, 96413481Sgiacomo.travaglini@arm.com T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, 96513481Sgiacomo.travaglini@arm.com T42 v42) { 96613481Sgiacomo.travaglini@arm.com return internal::ValueArray42<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 96713481Sgiacomo.travaglini@arm.com T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 96813481Sgiacomo.travaglini@arm.com T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, 96913481Sgiacomo.travaglini@arm.com T40, T41, T42>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, 97013481Sgiacomo.travaglini@arm.com v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, 97113481Sgiacomo.travaglini@arm.com v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, 97213481Sgiacomo.travaglini@arm.com v42); 97313481Sgiacomo.travaglini@arm.com} 97413481Sgiacomo.travaglini@arm.com 97513481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 97613481Sgiacomo.travaglini@arm.com typename T6, typename T7, typename T8, typename T9, typename T10, 97713481Sgiacomo.travaglini@arm.com typename T11, typename T12, typename T13, typename T14, typename T15, 97813481Sgiacomo.travaglini@arm.com typename T16, typename T17, typename T18, typename T19, typename T20, 97913481Sgiacomo.travaglini@arm.com typename T21, typename T22, typename T23, typename T24, typename T25, 98013481Sgiacomo.travaglini@arm.com typename T26, typename T27, typename T28, typename T29, typename T30, 98113481Sgiacomo.travaglini@arm.com typename T31, typename T32, typename T33, typename T34, typename T35, 98213481Sgiacomo.travaglini@arm.com typename T36, typename T37, typename T38, typename T39, typename T40, 98313481Sgiacomo.travaglini@arm.com typename T41, typename T42, typename T43> 98413481Sgiacomo.travaglini@arm.cominternal::ValueArray43<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 98513481Sgiacomo.travaglini@arm.com T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 98613481Sgiacomo.travaglini@arm.com T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, 98713481Sgiacomo.travaglini@arm.com T43> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 98813481Sgiacomo.travaglini@arm.com T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 98913481Sgiacomo.travaglini@arm.com T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 99013481Sgiacomo.travaglini@arm.com T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, 99113481Sgiacomo.travaglini@arm.com T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, 99213481Sgiacomo.travaglini@arm.com T42 v42, T43 v43) { 99313481Sgiacomo.travaglini@arm.com return internal::ValueArray43<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 99413481Sgiacomo.travaglini@arm.com T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 99513481Sgiacomo.travaglini@arm.com T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, 99613481Sgiacomo.travaglini@arm.com T40, T41, T42, T43>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, 99713481Sgiacomo.travaglini@arm.com v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, 99813481Sgiacomo.travaglini@arm.com v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, 99913481Sgiacomo.travaglini@arm.com v41, v42, v43); 100013481Sgiacomo.travaglini@arm.com} 100113481Sgiacomo.travaglini@arm.com 100213481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 100313481Sgiacomo.travaglini@arm.com typename T6, typename T7, typename T8, typename T9, typename T10, 100413481Sgiacomo.travaglini@arm.com typename T11, typename T12, typename T13, typename T14, typename T15, 100513481Sgiacomo.travaglini@arm.com typename T16, typename T17, typename T18, typename T19, typename T20, 100613481Sgiacomo.travaglini@arm.com typename T21, typename T22, typename T23, typename T24, typename T25, 100713481Sgiacomo.travaglini@arm.com typename T26, typename T27, typename T28, typename T29, typename T30, 100813481Sgiacomo.travaglini@arm.com typename T31, typename T32, typename T33, typename T34, typename T35, 100913481Sgiacomo.travaglini@arm.com typename T36, typename T37, typename T38, typename T39, typename T40, 101013481Sgiacomo.travaglini@arm.com typename T41, typename T42, typename T43, typename T44> 101113481Sgiacomo.travaglini@arm.cominternal::ValueArray44<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 101213481Sgiacomo.travaglini@arm.com T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 101313481Sgiacomo.travaglini@arm.com T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, 101413481Sgiacomo.travaglini@arm.com T44> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 101513481Sgiacomo.travaglini@arm.com T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 101613481Sgiacomo.travaglini@arm.com T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 101713481Sgiacomo.travaglini@arm.com T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, 101813481Sgiacomo.travaglini@arm.com T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, 101913481Sgiacomo.travaglini@arm.com T42 v42, T43 v43, T44 v44) { 102013481Sgiacomo.travaglini@arm.com return internal::ValueArray44<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 102113481Sgiacomo.travaglini@arm.com T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 102213481Sgiacomo.travaglini@arm.com T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, 102313481Sgiacomo.travaglini@arm.com T40, T41, T42, T43, T44>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, 102413481Sgiacomo.travaglini@arm.com v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, 102513481Sgiacomo.travaglini@arm.com v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, 102613481Sgiacomo.travaglini@arm.com v40, v41, v42, v43, v44); 102713481Sgiacomo.travaglini@arm.com} 102813481Sgiacomo.travaglini@arm.com 102913481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 103013481Sgiacomo.travaglini@arm.com typename T6, typename T7, typename T8, typename T9, typename T10, 103113481Sgiacomo.travaglini@arm.com typename T11, typename T12, typename T13, typename T14, typename T15, 103213481Sgiacomo.travaglini@arm.com typename T16, typename T17, typename T18, typename T19, typename T20, 103313481Sgiacomo.travaglini@arm.com typename T21, typename T22, typename T23, typename T24, typename T25, 103413481Sgiacomo.travaglini@arm.com typename T26, typename T27, typename T28, typename T29, typename T30, 103513481Sgiacomo.travaglini@arm.com typename T31, typename T32, typename T33, typename T34, typename T35, 103613481Sgiacomo.travaglini@arm.com typename T36, typename T37, typename T38, typename T39, typename T40, 103713481Sgiacomo.travaglini@arm.com typename T41, typename T42, typename T43, typename T44, typename T45> 103813481Sgiacomo.travaglini@arm.cominternal::ValueArray45<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 103913481Sgiacomo.travaglini@arm.com T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 104013481Sgiacomo.travaglini@arm.com T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, 104113481Sgiacomo.travaglini@arm.com T44, T45> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, 104213481Sgiacomo.travaglini@arm.com T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, 104313481Sgiacomo.travaglini@arm.com T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, 104413481Sgiacomo.travaglini@arm.com T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, 104513481Sgiacomo.travaglini@arm.com T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, 104613481Sgiacomo.travaglini@arm.com T41 v41, T42 v42, T43 v43, T44 v44, T45 v45) { 104713481Sgiacomo.travaglini@arm.com return internal::ValueArray45<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 104813481Sgiacomo.travaglini@arm.com T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 104913481Sgiacomo.travaglini@arm.com T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, 105013481Sgiacomo.travaglini@arm.com T40, T41, T42, T43, T44, T45>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, 105113481Sgiacomo.travaglini@arm.com v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, 105213481Sgiacomo.travaglini@arm.com v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, 105313481Sgiacomo.travaglini@arm.com v39, v40, v41, v42, v43, v44, v45); 105413481Sgiacomo.travaglini@arm.com} 105513481Sgiacomo.travaglini@arm.com 105613481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 105713481Sgiacomo.travaglini@arm.com typename T6, typename T7, typename T8, typename T9, typename T10, 105813481Sgiacomo.travaglini@arm.com typename T11, typename T12, typename T13, typename T14, typename T15, 105913481Sgiacomo.travaglini@arm.com typename T16, typename T17, typename T18, typename T19, typename T20, 106013481Sgiacomo.travaglini@arm.com typename T21, typename T22, typename T23, typename T24, typename T25, 106113481Sgiacomo.travaglini@arm.com typename T26, typename T27, typename T28, typename T29, typename T30, 106213481Sgiacomo.travaglini@arm.com typename T31, typename T32, typename T33, typename T34, typename T35, 106313481Sgiacomo.travaglini@arm.com typename T36, typename T37, typename T38, typename T39, typename T40, 106413481Sgiacomo.travaglini@arm.com typename T41, typename T42, typename T43, typename T44, typename T45, 106513481Sgiacomo.travaglini@arm.com typename T46> 106613481Sgiacomo.travaglini@arm.cominternal::ValueArray46<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 106713481Sgiacomo.travaglini@arm.com T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 106813481Sgiacomo.travaglini@arm.com T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, 106913481Sgiacomo.travaglini@arm.com T44, T45, T46> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, 107013481Sgiacomo.travaglini@arm.com T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, 107113481Sgiacomo.travaglini@arm.com T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, 107213481Sgiacomo.travaglini@arm.com T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, 107313481Sgiacomo.travaglini@arm.com T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, 107413481Sgiacomo.travaglini@arm.com T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46) { 107513481Sgiacomo.travaglini@arm.com return internal::ValueArray46<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 107613481Sgiacomo.travaglini@arm.com T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 107713481Sgiacomo.travaglini@arm.com T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, 107813481Sgiacomo.travaglini@arm.com T40, T41, T42, T43, T44, T45, T46>(v1, v2, v3, v4, v5, v6, v7, v8, v9, 107913481Sgiacomo.travaglini@arm.com v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, 108013481Sgiacomo.travaglini@arm.com v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, 108113481Sgiacomo.travaglini@arm.com v38, v39, v40, v41, v42, v43, v44, v45, v46); 108213481Sgiacomo.travaglini@arm.com} 108313481Sgiacomo.travaglini@arm.com 108413481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 108513481Sgiacomo.travaglini@arm.com typename T6, typename T7, typename T8, typename T9, typename T10, 108613481Sgiacomo.travaglini@arm.com typename T11, typename T12, typename T13, typename T14, typename T15, 108713481Sgiacomo.travaglini@arm.com typename T16, typename T17, typename T18, typename T19, typename T20, 108813481Sgiacomo.travaglini@arm.com typename T21, typename T22, typename T23, typename T24, typename T25, 108913481Sgiacomo.travaglini@arm.com typename T26, typename T27, typename T28, typename T29, typename T30, 109013481Sgiacomo.travaglini@arm.com typename T31, typename T32, typename T33, typename T34, typename T35, 109113481Sgiacomo.travaglini@arm.com typename T36, typename T37, typename T38, typename T39, typename T40, 109213481Sgiacomo.travaglini@arm.com typename T41, typename T42, typename T43, typename T44, typename T45, 109313481Sgiacomo.travaglini@arm.com typename T46, typename T47> 109413481Sgiacomo.travaglini@arm.cominternal::ValueArray47<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 109513481Sgiacomo.travaglini@arm.com T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 109613481Sgiacomo.travaglini@arm.com T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, 109713481Sgiacomo.travaglini@arm.com T44, T45, T46, T47> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, 109813481Sgiacomo.travaglini@arm.com T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, 109913481Sgiacomo.travaglini@arm.com T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, 110013481Sgiacomo.travaglini@arm.com T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, 110113481Sgiacomo.travaglini@arm.com T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, 110213481Sgiacomo.travaglini@arm.com T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47) { 110313481Sgiacomo.travaglini@arm.com return internal::ValueArray47<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 110413481Sgiacomo.travaglini@arm.com T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 110513481Sgiacomo.travaglini@arm.com T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, 110613481Sgiacomo.travaglini@arm.com T40, T41, T42, T43, T44, T45, T46, T47>(v1, v2, v3, v4, v5, v6, v7, v8, 110713481Sgiacomo.travaglini@arm.com v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, 110813481Sgiacomo.travaglini@arm.com v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, 110913481Sgiacomo.travaglini@arm.com v38, v39, v40, v41, v42, v43, v44, v45, v46, v47); 111013481Sgiacomo.travaglini@arm.com} 111113481Sgiacomo.travaglini@arm.com 111213481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 111313481Sgiacomo.travaglini@arm.com typename T6, typename T7, typename T8, typename T9, typename T10, 111413481Sgiacomo.travaglini@arm.com typename T11, typename T12, typename T13, typename T14, typename T15, 111513481Sgiacomo.travaglini@arm.com typename T16, typename T17, typename T18, typename T19, typename T20, 111613481Sgiacomo.travaglini@arm.com typename T21, typename T22, typename T23, typename T24, typename T25, 111713481Sgiacomo.travaglini@arm.com typename T26, typename T27, typename T28, typename T29, typename T30, 111813481Sgiacomo.travaglini@arm.com typename T31, typename T32, typename T33, typename T34, typename T35, 111913481Sgiacomo.travaglini@arm.com typename T36, typename T37, typename T38, typename T39, typename T40, 112013481Sgiacomo.travaglini@arm.com typename T41, typename T42, typename T43, typename T44, typename T45, 112113481Sgiacomo.travaglini@arm.com typename T46, typename T47, typename T48> 112213481Sgiacomo.travaglini@arm.cominternal::ValueArray48<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 112313481Sgiacomo.travaglini@arm.com T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 112413481Sgiacomo.travaglini@arm.com T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, 112513481Sgiacomo.travaglini@arm.com T44, T45, T46, T47, T48> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, 112613481Sgiacomo.travaglini@arm.com T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, 112713481Sgiacomo.travaglini@arm.com T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, 112813481Sgiacomo.travaglini@arm.com T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, 112913481Sgiacomo.travaglini@arm.com T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, 113013481Sgiacomo.travaglini@arm.com T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47, 113113481Sgiacomo.travaglini@arm.com T48 v48) { 113213481Sgiacomo.travaglini@arm.com return internal::ValueArray48<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 113313481Sgiacomo.travaglini@arm.com T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 113413481Sgiacomo.travaglini@arm.com T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, 113513481Sgiacomo.travaglini@arm.com T40, T41, T42, T43, T44, T45, T46, T47, T48>(v1, v2, v3, v4, v5, v6, v7, 113613481Sgiacomo.travaglini@arm.com v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, 113713481Sgiacomo.travaglini@arm.com v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, 113813481Sgiacomo.travaglini@arm.com v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48); 113913481Sgiacomo.travaglini@arm.com} 114013481Sgiacomo.travaglini@arm.com 114113481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 114213481Sgiacomo.travaglini@arm.com typename T6, typename T7, typename T8, typename T9, typename T10, 114313481Sgiacomo.travaglini@arm.com typename T11, typename T12, typename T13, typename T14, typename T15, 114413481Sgiacomo.travaglini@arm.com typename T16, typename T17, typename T18, typename T19, typename T20, 114513481Sgiacomo.travaglini@arm.com typename T21, typename T22, typename T23, typename T24, typename T25, 114613481Sgiacomo.travaglini@arm.com typename T26, typename T27, typename T28, typename T29, typename T30, 114713481Sgiacomo.travaglini@arm.com typename T31, typename T32, typename T33, typename T34, typename T35, 114813481Sgiacomo.travaglini@arm.com typename T36, typename T37, typename T38, typename T39, typename T40, 114913481Sgiacomo.travaglini@arm.com typename T41, typename T42, typename T43, typename T44, typename T45, 115013481Sgiacomo.travaglini@arm.com typename T46, typename T47, typename T48, typename T49> 115113481Sgiacomo.travaglini@arm.cominternal::ValueArray49<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 115213481Sgiacomo.travaglini@arm.com T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 115313481Sgiacomo.travaglini@arm.com T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, 115413481Sgiacomo.travaglini@arm.com T44, T45, T46, T47, T48, T49> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, 115513481Sgiacomo.travaglini@arm.com T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, 115613481Sgiacomo.travaglini@arm.com T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, 115713481Sgiacomo.travaglini@arm.com T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, 115813481Sgiacomo.travaglini@arm.com T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, 115913481Sgiacomo.travaglini@arm.com T39 v39, T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, 116013481Sgiacomo.travaglini@arm.com T47 v47, T48 v48, T49 v49) { 116113481Sgiacomo.travaglini@arm.com return internal::ValueArray49<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 116213481Sgiacomo.travaglini@arm.com T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 116313481Sgiacomo.travaglini@arm.com T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, 116413481Sgiacomo.travaglini@arm.com T40, T41, T42, T43, T44, T45, T46, T47, T48, T49>(v1, v2, v3, v4, v5, v6, 116513481Sgiacomo.travaglini@arm.com v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, 116613481Sgiacomo.travaglini@arm.com v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, 116713481Sgiacomo.travaglini@arm.com v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49); 116813481Sgiacomo.travaglini@arm.com} 116913481Sgiacomo.travaglini@arm.com 117013481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 117113481Sgiacomo.travaglini@arm.com typename T6, typename T7, typename T8, typename T9, typename T10, 117213481Sgiacomo.travaglini@arm.com typename T11, typename T12, typename T13, typename T14, typename T15, 117313481Sgiacomo.travaglini@arm.com typename T16, typename T17, typename T18, typename T19, typename T20, 117413481Sgiacomo.travaglini@arm.com typename T21, typename T22, typename T23, typename T24, typename T25, 117513481Sgiacomo.travaglini@arm.com typename T26, typename T27, typename T28, typename T29, typename T30, 117613481Sgiacomo.travaglini@arm.com typename T31, typename T32, typename T33, typename T34, typename T35, 117713481Sgiacomo.travaglini@arm.com typename T36, typename T37, typename T38, typename T39, typename T40, 117813481Sgiacomo.travaglini@arm.com typename T41, typename T42, typename T43, typename T44, typename T45, 117913481Sgiacomo.travaglini@arm.com typename T46, typename T47, typename T48, typename T49, typename T50> 118013481Sgiacomo.travaglini@arm.cominternal::ValueArray50<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 118113481Sgiacomo.travaglini@arm.com T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 118213481Sgiacomo.travaglini@arm.com T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, 118313481Sgiacomo.travaglini@arm.com T44, T45, T46, T47, T48, T49, T50> Values(T1 v1, T2 v2, T3 v3, T4 v4, 118413481Sgiacomo.travaglini@arm.com T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, 118513481Sgiacomo.travaglini@arm.com T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, 118613481Sgiacomo.travaglini@arm.com T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, 118713481Sgiacomo.travaglini@arm.com T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, 118813481Sgiacomo.travaglini@arm.com T38 v38, T39 v39, T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, 118913481Sgiacomo.travaglini@arm.com T46 v46, T47 v47, T48 v48, T49 v49, T50 v50) { 119013481Sgiacomo.travaglini@arm.com return internal::ValueArray50<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 119113481Sgiacomo.travaglini@arm.com T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 119213481Sgiacomo.travaglini@arm.com T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, 119313481Sgiacomo.travaglini@arm.com T40, T41, T42, T43, T44, T45, T46, T47, T48, T49, T50>(v1, v2, v3, v4, 119413481Sgiacomo.travaglini@arm.com v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, 119513481Sgiacomo.travaglini@arm.com v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, 119613481Sgiacomo.travaglini@arm.com v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, 119713481Sgiacomo.travaglini@arm.com v48, v49, v50); 119813481Sgiacomo.travaglini@arm.com} 119913481Sgiacomo.travaglini@arm.com 120013481Sgiacomo.travaglini@arm.com// Bool() allows generating tests with parameters in a set of (false, true). 120113481Sgiacomo.travaglini@arm.com// 120213481Sgiacomo.travaglini@arm.com// Synopsis: 120313481Sgiacomo.travaglini@arm.com// Bool() 120413481Sgiacomo.travaglini@arm.com// - returns a generator producing sequences with elements {false, true}. 120513481Sgiacomo.travaglini@arm.com// 120613481Sgiacomo.travaglini@arm.com// It is useful when testing code that depends on Boolean flags. Combinations 120713481Sgiacomo.travaglini@arm.com// of multiple flags can be tested when several Bool()'s are combined using 120813481Sgiacomo.travaglini@arm.com// Combine() function. 120913481Sgiacomo.travaglini@arm.com// 121013481Sgiacomo.travaglini@arm.com// In the following example all tests in the test case FlagDependentTest 121113481Sgiacomo.travaglini@arm.com// will be instantiated twice with parameters false and true. 121213481Sgiacomo.travaglini@arm.com// 121313481Sgiacomo.travaglini@arm.com// class FlagDependentTest : public testing::TestWithParam<bool> { 121413481Sgiacomo.travaglini@arm.com// virtual void SetUp() { 121513481Sgiacomo.travaglini@arm.com// external_flag = GetParam(); 121613481Sgiacomo.travaglini@arm.com// } 121713481Sgiacomo.travaglini@arm.com// } 121813481Sgiacomo.travaglini@arm.com// INSTANTIATE_TEST_CASE_P(BoolSequence, FlagDependentTest, Bool()); 121913481Sgiacomo.travaglini@arm.com// 122013481Sgiacomo.travaglini@arm.cominline internal::ParamGenerator<bool> Bool() { 122113481Sgiacomo.travaglini@arm.com return Values(false, true); 122213481Sgiacomo.travaglini@arm.com} 122313481Sgiacomo.travaglini@arm.com 122413481Sgiacomo.travaglini@arm.com# if GTEST_HAS_COMBINE 122513481Sgiacomo.travaglini@arm.com// Combine() allows the user to combine two or more sequences to produce 122613481Sgiacomo.travaglini@arm.com// values of a Cartesian product of those sequences' elements. 122713481Sgiacomo.travaglini@arm.com// 122813481Sgiacomo.travaglini@arm.com// Synopsis: 122913481Sgiacomo.travaglini@arm.com// Combine(gen1, gen2, ..., genN) 123013481Sgiacomo.travaglini@arm.com// - returns a generator producing sequences with elements coming from 123113481Sgiacomo.travaglini@arm.com// the Cartesian product of elements from the sequences generated by 123213481Sgiacomo.travaglini@arm.com// gen1, gen2, ..., genN. The sequence elements will have a type of 123313481Sgiacomo.travaglini@arm.com// tuple<T1, T2, ..., TN> where T1, T2, ..., TN are the types 123413481Sgiacomo.travaglini@arm.com// of elements from sequences produces by gen1, gen2, ..., genN. 123513481Sgiacomo.travaglini@arm.com// 123613481Sgiacomo.travaglini@arm.com// Combine can have up to 10 arguments. This number is currently limited 123713481Sgiacomo.travaglini@arm.com// by the maximum number of elements in the tuple implementation used by Google 123813481Sgiacomo.travaglini@arm.com// Test. 123913481Sgiacomo.travaglini@arm.com// 124013481Sgiacomo.travaglini@arm.com// Example: 124113481Sgiacomo.travaglini@arm.com// 124213481Sgiacomo.travaglini@arm.com// This will instantiate tests in test case AnimalTest each one with 124313481Sgiacomo.travaglini@arm.com// the parameter values tuple("cat", BLACK), tuple("cat", WHITE), 124413481Sgiacomo.travaglini@arm.com// tuple("dog", BLACK), and tuple("dog", WHITE): 124513481Sgiacomo.travaglini@arm.com// 124613481Sgiacomo.travaglini@arm.com// enum Color { BLACK, GRAY, WHITE }; 124713481Sgiacomo.travaglini@arm.com// class AnimalTest 124813481Sgiacomo.travaglini@arm.com// : public testing::TestWithParam<tuple<const char*, Color> > {...}; 124913481Sgiacomo.travaglini@arm.com// 125013481Sgiacomo.travaglini@arm.com// TEST_P(AnimalTest, AnimalLooksNice) {...} 125113481Sgiacomo.travaglini@arm.com// 125213481Sgiacomo.travaglini@arm.com// INSTANTIATE_TEST_CASE_P(AnimalVariations, AnimalTest, 125313481Sgiacomo.travaglini@arm.com// Combine(Values("cat", "dog"), 125413481Sgiacomo.travaglini@arm.com// Values(BLACK, WHITE))); 125513481Sgiacomo.travaglini@arm.com// 125613481Sgiacomo.travaglini@arm.com// This will instantiate tests in FlagDependentTest with all variations of two 125713481Sgiacomo.travaglini@arm.com// Boolean flags: 125813481Sgiacomo.travaglini@arm.com// 125913481Sgiacomo.travaglini@arm.com// class FlagDependentTest 126013481Sgiacomo.travaglini@arm.com// : public testing::TestWithParam<tuple<bool, bool> > { 126113481Sgiacomo.travaglini@arm.com// virtual void SetUp() { 126213481Sgiacomo.travaglini@arm.com// // Assigns external_flag_1 and external_flag_2 values from the tuple. 126313481Sgiacomo.travaglini@arm.com// tie(external_flag_1, external_flag_2) = GetParam(); 126413481Sgiacomo.travaglini@arm.com// } 126513481Sgiacomo.travaglini@arm.com// }; 126613481Sgiacomo.travaglini@arm.com// 126713481Sgiacomo.travaglini@arm.com// TEST_P(FlagDependentTest, TestFeature1) { 126813481Sgiacomo.travaglini@arm.com// // Test your code using external_flag_1 and external_flag_2 here. 126913481Sgiacomo.travaglini@arm.com// } 127013481Sgiacomo.travaglini@arm.com// INSTANTIATE_TEST_CASE_P(TwoBoolSequence, FlagDependentTest, 127113481Sgiacomo.travaglini@arm.com// Combine(Bool(), Bool())); 127213481Sgiacomo.travaglini@arm.com// 127313481Sgiacomo.travaglini@arm.comtemplate <typename Generator1, typename Generator2> 127413481Sgiacomo.travaglini@arm.cominternal::CartesianProductHolder2<Generator1, Generator2> Combine( 127513481Sgiacomo.travaglini@arm.com const Generator1& g1, const Generator2& g2) { 127613481Sgiacomo.travaglini@arm.com return internal::CartesianProductHolder2<Generator1, Generator2>( 127713481Sgiacomo.travaglini@arm.com g1, g2); 127813481Sgiacomo.travaglini@arm.com} 127913481Sgiacomo.travaglini@arm.com 128013481Sgiacomo.travaglini@arm.comtemplate <typename Generator1, typename Generator2, typename Generator3> 128113481Sgiacomo.travaglini@arm.cominternal::CartesianProductHolder3<Generator1, Generator2, Generator3> Combine( 128213481Sgiacomo.travaglini@arm.com const Generator1& g1, const Generator2& g2, const Generator3& g3) { 128313481Sgiacomo.travaglini@arm.com return internal::CartesianProductHolder3<Generator1, Generator2, Generator3>( 128413481Sgiacomo.travaglini@arm.com g1, g2, g3); 128513481Sgiacomo.travaglini@arm.com} 128613481Sgiacomo.travaglini@arm.com 128713481Sgiacomo.travaglini@arm.comtemplate <typename Generator1, typename Generator2, typename Generator3, 128813481Sgiacomo.travaglini@arm.com typename Generator4> 128913481Sgiacomo.travaglini@arm.cominternal::CartesianProductHolder4<Generator1, Generator2, Generator3, 129013481Sgiacomo.travaglini@arm.com Generator4> Combine( 129113481Sgiacomo.travaglini@arm.com const Generator1& g1, const Generator2& g2, const Generator3& g3, 129213481Sgiacomo.travaglini@arm.com const Generator4& g4) { 129313481Sgiacomo.travaglini@arm.com return internal::CartesianProductHolder4<Generator1, Generator2, Generator3, 129413481Sgiacomo.travaglini@arm.com Generator4>( 129513481Sgiacomo.travaglini@arm.com g1, g2, g3, g4); 129613481Sgiacomo.travaglini@arm.com} 129713481Sgiacomo.travaglini@arm.com 129813481Sgiacomo.travaglini@arm.comtemplate <typename Generator1, typename Generator2, typename Generator3, 129913481Sgiacomo.travaglini@arm.com typename Generator4, typename Generator5> 130013481Sgiacomo.travaglini@arm.cominternal::CartesianProductHolder5<Generator1, Generator2, Generator3, 130113481Sgiacomo.travaglini@arm.com Generator4, Generator5> Combine( 130213481Sgiacomo.travaglini@arm.com const Generator1& g1, const Generator2& g2, const Generator3& g3, 130313481Sgiacomo.travaglini@arm.com const Generator4& g4, const Generator5& g5) { 130413481Sgiacomo.travaglini@arm.com return internal::CartesianProductHolder5<Generator1, Generator2, Generator3, 130513481Sgiacomo.travaglini@arm.com Generator4, Generator5>( 130613481Sgiacomo.travaglini@arm.com g1, g2, g3, g4, g5); 130713481Sgiacomo.travaglini@arm.com} 130813481Sgiacomo.travaglini@arm.com 130913481Sgiacomo.travaglini@arm.comtemplate <typename Generator1, typename Generator2, typename Generator3, 131013481Sgiacomo.travaglini@arm.com typename Generator4, typename Generator5, typename Generator6> 131113481Sgiacomo.travaglini@arm.cominternal::CartesianProductHolder6<Generator1, Generator2, Generator3, 131213481Sgiacomo.travaglini@arm.com Generator4, Generator5, Generator6> Combine( 131313481Sgiacomo.travaglini@arm.com const Generator1& g1, const Generator2& g2, const Generator3& g3, 131413481Sgiacomo.travaglini@arm.com const Generator4& g4, const Generator5& g5, const Generator6& g6) { 131513481Sgiacomo.travaglini@arm.com return internal::CartesianProductHolder6<Generator1, Generator2, Generator3, 131613481Sgiacomo.travaglini@arm.com Generator4, Generator5, Generator6>( 131713481Sgiacomo.travaglini@arm.com g1, g2, g3, g4, g5, g6); 131813481Sgiacomo.travaglini@arm.com} 131913481Sgiacomo.travaglini@arm.com 132013481Sgiacomo.travaglini@arm.comtemplate <typename Generator1, typename Generator2, typename Generator3, 132113481Sgiacomo.travaglini@arm.com typename Generator4, typename Generator5, typename Generator6, 132213481Sgiacomo.travaglini@arm.com typename Generator7> 132313481Sgiacomo.travaglini@arm.cominternal::CartesianProductHolder7<Generator1, Generator2, Generator3, 132413481Sgiacomo.travaglini@arm.com Generator4, Generator5, Generator6, Generator7> Combine( 132513481Sgiacomo.travaglini@arm.com const Generator1& g1, const Generator2& g2, const Generator3& g3, 132613481Sgiacomo.travaglini@arm.com const Generator4& g4, const Generator5& g5, const Generator6& g6, 132713481Sgiacomo.travaglini@arm.com const Generator7& g7) { 132813481Sgiacomo.travaglini@arm.com return internal::CartesianProductHolder7<Generator1, Generator2, Generator3, 132913481Sgiacomo.travaglini@arm.com Generator4, Generator5, Generator6, Generator7>( 133013481Sgiacomo.travaglini@arm.com g1, g2, g3, g4, g5, g6, g7); 133113481Sgiacomo.travaglini@arm.com} 133213481Sgiacomo.travaglini@arm.com 133313481Sgiacomo.travaglini@arm.comtemplate <typename Generator1, typename Generator2, typename Generator3, 133413481Sgiacomo.travaglini@arm.com typename Generator4, typename Generator5, typename Generator6, 133513481Sgiacomo.travaglini@arm.com typename Generator7, typename Generator8> 133613481Sgiacomo.travaglini@arm.cominternal::CartesianProductHolder8<Generator1, Generator2, Generator3, 133713481Sgiacomo.travaglini@arm.com Generator4, Generator5, Generator6, Generator7, Generator8> Combine( 133813481Sgiacomo.travaglini@arm.com const Generator1& g1, const Generator2& g2, const Generator3& g3, 133913481Sgiacomo.travaglini@arm.com const Generator4& g4, const Generator5& g5, const Generator6& g6, 134013481Sgiacomo.travaglini@arm.com const Generator7& g7, const Generator8& g8) { 134113481Sgiacomo.travaglini@arm.com return internal::CartesianProductHolder8<Generator1, Generator2, Generator3, 134213481Sgiacomo.travaglini@arm.com Generator4, Generator5, Generator6, Generator7, Generator8>( 134313481Sgiacomo.travaglini@arm.com g1, g2, g3, g4, g5, g6, g7, g8); 134413481Sgiacomo.travaglini@arm.com} 134513481Sgiacomo.travaglini@arm.com 134613481Sgiacomo.travaglini@arm.comtemplate <typename Generator1, typename Generator2, typename Generator3, 134713481Sgiacomo.travaglini@arm.com typename Generator4, typename Generator5, typename Generator6, 134813481Sgiacomo.travaglini@arm.com typename Generator7, typename Generator8, typename Generator9> 134913481Sgiacomo.travaglini@arm.cominternal::CartesianProductHolder9<Generator1, Generator2, Generator3, 135013481Sgiacomo.travaglini@arm.com Generator4, Generator5, Generator6, Generator7, Generator8, 135113481Sgiacomo.travaglini@arm.com Generator9> Combine( 135213481Sgiacomo.travaglini@arm.com const Generator1& g1, const Generator2& g2, const Generator3& g3, 135313481Sgiacomo.travaglini@arm.com const Generator4& g4, const Generator5& g5, const Generator6& g6, 135413481Sgiacomo.travaglini@arm.com const Generator7& g7, const Generator8& g8, const Generator9& g9) { 135513481Sgiacomo.travaglini@arm.com return internal::CartesianProductHolder9<Generator1, Generator2, Generator3, 135613481Sgiacomo.travaglini@arm.com Generator4, Generator5, Generator6, Generator7, Generator8, Generator9>( 135713481Sgiacomo.travaglini@arm.com g1, g2, g3, g4, g5, g6, g7, g8, g9); 135813481Sgiacomo.travaglini@arm.com} 135913481Sgiacomo.travaglini@arm.com 136013481Sgiacomo.travaglini@arm.comtemplate <typename Generator1, typename Generator2, typename Generator3, 136113481Sgiacomo.travaglini@arm.com typename Generator4, typename Generator5, typename Generator6, 136213481Sgiacomo.travaglini@arm.com typename Generator7, typename Generator8, typename Generator9, 136313481Sgiacomo.travaglini@arm.com typename Generator10> 136413481Sgiacomo.travaglini@arm.cominternal::CartesianProductHolder10<Generator1, Generator2, Generator3, 136513481Sgiacomo.travaglini@arm.com Generator4, Generator5, Generator6, Generator7, Generator8, Generator9, 136613481Sgiacomo.travaglini@arm.com Generator10> Combine( 136713481Sgiacomo.travaglini@arm.com const Generator1& g1, const Generator2& g2, const Generator3& g3, 136813481Sgiacomo.travaglini@arm.com const Generator4& g4, const Generator5& g5, const Generator6& g6, 136913481Sgiacomo.travaglini@arm.com const Generator7& g7, const Generator8& g8, const Generator9& g9, 137013481Sgiacomo.travaglini@arm.com const Generator10& g10) { 137113481Sgiacomo.travaglini@arm.com return internal::CartesianProductHolder10<Generator1, Generator2, Generator3, 137213481Sgiacomo.travaglini@arm.com Generator4, Generator5, Generator6, Generator7, Generator8, Generator9, 137313481Sgiacomo.travaglini@arm.com Generator10>( 137413481Sgiacomo.travaglini@arm.com g1, g2, g3, g4, g5, g6, g7, g8, g9, g10); 137513481Sgiacomo.travaglini@arm.com} 137613481Sgiacomo.travaglini@arm.com# endif // GTEST_HAS_COMBINE 137713481Sgiacomo.travaglini@arm.com 137813481Sgiacomo.travaglini@arm.com 137913481Sgiacomo.travaglini@arm.com 138013481Sgiacomo.travaglini@arm.com# define TEST_P(test_case_name, test_name) \ 138113481Sgiacomo.travaglini@arm.com class GTEST_TEST_CLASS_NAME_(test_case_name, test_name) \ 138213481Sgiacomo.travaglini@arm.com : public test_case_name { \ 138313481Sgiacomo.travaglini@arm.com public: \ 138413481Sgiacomo.travaglini@arm.com GTEST_TEST_CLASS_NAME_(test_case_name, test_name)() {} \ 138513481Sgiacomo.travaglini@arm.com virtual void TestBody(); \ 138613481Sgiacomo.travaglini@arm.com private: \ 138713481Sgiacomo.travaglini@arm.com static int AddToRegistry() { \ 138813481Sgiacomo.travaglini@arm.com ::testing::UnitTest::GetInstance()->parameterized_test_registry(). \ 138913481Sgiacomo.travaglini@arm.com GetTestCasePatternHolder<test_case_name>(\ 139013481Sgiacomo.travaglini@arm.com #test_case_name, \ 139113481Sgiacomo.travaglini@arm.com ::testing::internal::CodeLocation(\ 139213481Sgiacomo.travaglini@arm.com __FILE__, __LINE__))->AddTestPattern(\ 139313481Sgiacomo.travaglini@arm.com #test_case_name, \ 139413481Sgiacomo.travaglini@arm.com #test_name, \ 139513481Sgiacomo.travaglini@arm.com new ::testing::internal::TestMetaFactory< \ 139613481Sgiacomo.travaglini@arm.com GTEST_TEST_CLASS_NAME_(\ 139713481Sgiacomo.travaglini@arm.com test_case_name, test_name)>()); \ 139813481Sgiacomo.travaglini@arm.com return 0; \ 139913481Sgiacomo.travaglini@arm.com } \ 140013481Sgiacomo.travaglini@arm.com static int gtest_registering_dummy_ GTEST_ATTRIBUTE_UNUSED_; \ 140113481Sgiacomo.travaglini@arm.com GTEST_DISALLOW_COPY_AND_ASSIGN_(\ 140213481Sgiacomo.travaglini@arm.com GTEST_TEST_CLASS_NAME_(test_case_name, test_name)); \ 140313481Sgiacomo.travaglini@arm.com }; \ 140413481Sgiacomo.travaglini@arm.com int GTEST_TEST_CLASS_NAME_(test_case_name, \ 140513481Sgiacomo.travaglini@arm.com test_name)::gtest_registering_dummy_ = \ 140613481Sgiacomo.travaglini@arm.com GTEST_TEST_CLASS_NAME_(test_case_name, test_name)::AddToRegistry(); \ 140713481Sgiacomo.travaglini@arm.com void GTEST_TEST_CLASS_NAME_(test_case_name, test_name)::TestBody() 140813481Sgiacomo.travaglini@arm.com 140913481Sgiacomo.travaglini@arm.com// The optional last argument to INSTANTIATE_TEST_CASE_P allows the user 141013481Sgiacomo.travaglini@arm.com// to specify a function or functor that generates custom test name suffixes 141113481Sgiacomo.travaglini@arm.com// based on the test parameters. The function should accept one argument of 141213481Sgiacomo.travaglini@arm.com// type testing::TestParamInfo<class ParamType>, and return std::string. 141313481Sgiacomo.travaglini@arm.com// 141413481Sgiacomo.travaglini@arm.com// testing::PrintToStringParamName is a builtin test suffix generator that 141513481Sgiacomo.travaglini@arm.com// returns the value of testing::PrintToString(GetParam()). It does not work 141613481Sgiacomo.travaglini@arm.com// for std::string or C strings. 141713481Sgiacomo.travaglini@arm.com// 141813481Sgiacomo.travaglini@arm.com// Note: test names must be non-empty, unique, and may only contain ASCII 141913481Sgiacomo.travaglini@arm.com// alphanumeric characters or underscore. 142013481Sgiacomo.travaglini@arm.com 142113481Sgiacomo.travaglini@arm.com# define INSTANTIATE_TEST_CASE_P(prefix, test_case_name, generator, ...) \ 142213481Sgiacomo.travaglini@arm.com ::testing::internal::ParamGenerator<test_case_name::ParamType> \ 142313481Sgiacomo.travaglini@arm.com gtest_##prefix##test_case_name##_EvalGenerator_() { return generator; } \ 142413481Sgiacomo.travaglini@arm.com ::std::string gtest_##prefix##test_case_name##_EvalGenerateName_( \ 142513481Sgiacomo.travaglini@arm.com const ::testing::TestParamInfo<test_case_name::ParamType>& info) { \ 142613481Sgiacomo.travaglini@arm.com return ::testing::internal::GetParamNameGen<test_case_name::ParamType> \ 142713481Sgiacomo.travaglini@arm.com (__VA_ARGS__)(info); \ 142813481Sgiacomo.travaglini@arm.com } \ 142913481Sgiacomo.travaglini@arm.com int gtest_##prefix##test_case_name##_dummy_ GTEST_ATTRIBUTE_UNUSED_ = \ 143013481Sgiacomo.travaglini@arm.com ::testing::UnitTest::GetInstance()->parameterized_test_registry(). \ 143113481Sgiacomo.travaglini@arm.com GetTestCasePatternHolder<test_case_name>(\ 143213481Sgiacomo.travaglini@arm.com #test_case_name, \ 143313481Sgiacomo.travaglini@arm.com ::testing::internal::CodeLocation(\ 143413481Sgiacomo.travaglini@arm.com __FILE__, __LINE__))->AddTestCaseInstantiation(\ 143513481Sgiacomo.travaglini@arm.com #prefix, \ 143613481Sgiacomo.travaglini@arm.com >est_##prefix##test_case_name##_EvalGenerator_, \ 143713481Sgiacomo.travaglini@arm.com >est_##prefix##test_case_name##_EvalGenerateName_, \ 143813481Sgiacomo.travaglini@arm.com __FILE__, __LINE__) 143913481Sgiacomo.travaglini@arm.com 144013481Sgiacomo.travaglini@arm.com} // namespace testing 144113481Sgiacomo.travaglini@arm.com 144213481Sgiacomo.travaglini@arm.com#endif // GTEST_HAS_PARAM_TEST 144313481Sgiacomo.travaglini@arm.com 144413481Sgiacomo.travaglini@arm.com#endif // GTEST_INCLUDE_GTEST_GTEST_PARAM_TEST_H_ 1445