113481Sgiacomo.travaglini@arm.com// This file was GENERATED by command: 213481Sgiacomo.travaglini@arm.com// pump.py gtest-param-util-generated.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// Author: vladl@google.com (Vlad Losev) 3513481Sgiacomo.travaglini@arm.com 3613481Sgiacomo.travaglini@arm.com// Type and function utilities for implementing parameterized tests. 3713481Sgiacomo.travaglini@arm.com// This file is generated by a SCRIPT. DO NOT EDIT BY HAND! 3813481Sgiacomo.travaglini@arm.com// 3913481Sgiacomo.travaglini@arm.com// Currently Google Test supports at most 50 arguments in Values, 4013481Sgiacomo.travaglini@arm.com// and at most 10 arguments in Combine. Please contact 4113481Sgiacomo.travaglini@arm.com// googletestframework@googlegroups.com if you need more. 4213481Sgiacomo.travaglini@arm.com// Please note that the number of arguments to Combine is limited 4313481Sgiacomo.travaglini@arm.com// by the maximum arity of the implementation of tuple which is 4413481Sgiacomo.travaglini@arm.com// currently set at 10. 4513481Sgiacomo.travaglini@arm.com 4613481Sgiacomo.travaglini@arm.com#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_GENERATED_H_ 4713481Sgiacomo.travaglini@arm.com#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_GENERATED_H_ 4813481Sgiacomo.travaglini@arm.com 4913481Sgiacomo.travaglini@arm.com// scripts/fuse_gtest.py depends on gtest's own header being #included 5013481Sgiacomo.travaglini@arm.com// *unconditionally*. Therefore these #includes cannot be moved 5113481Sgiacomo.travaglini@arm.com// inside #if GTEST_HAS_PARAM_TEST. 5213481Sgiacomo.travaglini@arm.com#include "gtest/internal/gtest-param-util.h" 5313481Sgiacomo.travaglini@arm.com#include "gtest/internal/gtest-port.h" 5413481Sgiacomo.travaglini@arm.com 5513481Sgiacomo.travaglini@arm.com#if GTEST_HAS_PARAM_TEST 5613481Sgiacomo.travaglini@arm.com 5713481Sgiacomo.travaglini@arm.comnamespace testing { 5813481Sgiacomo.travaglini@arm.com 5913481Sgiacomo.travaglini@arm.com// Forward declarations of ValuesIn(), which is implemented in 6013481Sgiacomo.travaglini@arm.com// include/gtest/gtest-param-test.h. 6113481Sgiacomo.travaglini@arm.comtemplate <typename ForwardIterator> 6213481Sgiacomo.travaglini@arm.cominternal::ParamGenerator< 6313481Sgiacomo.travaglini@arm.com typename ::testing::internal::IteratorTraits<ForwardIterator>::value_type> 6413481Sgiacomo.travaglini@arm.comValuesIn(ForwardIterator begin, ForwardIterator end); 6513481Sgiacomo.travaglini@arm.com 6613481Sgiacomo.travaglini@arm.comtemplate <typename T, size_t N> 6713481Sgiacomo.travaglini@arm.cominternal::ParamGenerator<T> ValuesIn(const T (&array)[N]); 6813481Sgiacomo.travaglini@arm.com 6913481Sgiacomo.travaglini@arm.comtemplate <class Container> 7013481Sgiacomo.travaglini@arm.cominternal::ParamGenerator<typename Container::value_type> ValuesIn( 7113481Sgiacomo.travaglini@arm.com const Container& container); 7213481Sgiacomo.travaglini@arm.com 7313481Sgiacomo.travaglini@arm.comnamespace internal { 7413481Sgiacomo.travaglini@arm.com 7513481Sgiacomo.travaglini@arm.com// Used in the Values() function to provide polymorphic capabilities. 7613481Sgiacomo.travaglini@arm.comtemplate <typename T1> 7713481Sgiacomo.travaglini@arm.comclass ValueArray1 { 7813481Sgiacomo.travaglini@arm.com public: 7913481Sgiacomo.travaglini@arm.com explicit ValueArray1(T1 v1) : v1_(v1) {} 8013481Sgiacomo.travaglini@arm.com 8113481Sgiacomo.travaglini@arm.com template <typename T> 8213481Sgiacomo.travaglini@arm.com operator ParamGenerator<T>() const { 8313481Sgiacomo.travaglini@arm.com const T array[] = {static_cast<T>(v1_)}; 8413481Sgiacomo.travaglini@arm.com return ValuesIn(array); 8513481Sgiacomo.travaglini@arm.com } 8613481Sgiacomo.travaglini@arm.com 8713481Sgiacomo.travaglini@arm.com private: 8813481Sgiacomo.travaglini@arm.com // No implementation - assignment is unsupported. 8913481Sgiacomo.travaglini@arm.com void operator=(const ValueArray1& other); 9013481Sgiacomo.travaglini@arm.com 9113481Sgiacomo.travaglini@arm.com const T1 v1_; 9213481Sgiacomo.travaglini@arm.com}; 9313481Sgiacomo.travaglini@arm.com 9413481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2> 9513481Sgiacomo.travaglini@arm.comclass ValueArray2 { 9613481Sgiacomo.travaglini@arm.com public: 9713481Sgiacomo.travaglini@arm.com ValueArray2(T1 v1, T2 v2) : v1_(v1), v2_(v2) {} 9813481Sgiacomo.travaglini@arm.com 9913481Sgiacomo.travaglini@arm.com template <typename T> 10013481Sgiacomo.travaglini@arm.com operator ParamGenerator<T>() const { 10113481Sgiacomo.travaglini@arm.com const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_)}; 10213481Sgiacomo.travaglini@arm.com return ValuesIn(array); 10313481Sgiacomo.travaglini@arm.com } 10413481Sgiacomo.travaglini@arm.com 10513481Sgiacomo.travaglini@arm.com private: 10613481Sgiacomo.travaglini@arm.com // No implementation - assignment is unsupported. 10713481Sgiacomo.travaglini@arm.com void operator=(const ValueArray2& other); 10813481Sgiacomo.travaglini@arm.com 10913481Sgiacomo.travaglini@arm.com const T1 v1_; 11013481Sgiacomo.travaglini@arm.com const T2 v2_; 11113481Sgiacomo.travaglini@arm.com}; 11213481Sgiacomo.travaglini@arm.com 11313481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3> 11413481Sgiacomo.travaglini@arm.comclass ValueArray3 { 11513481Sgiacomo.travaglini@arm.com public: 11613481Sgiacomo.travaglini@arm.com ValueArray3(T1 v1, T2 v2, T3 v3) : v1_(v1), v2_(v2), v3_(v3) {} 11713481Sgiacomo.travaglini@arm.com 11813481Sgiacomo.travaglini@arm.com template <typename T> 11913481Sgiacomo.travaglini@arm.com operator ParamGenerator<T>() const { 12013481Sgiacomo.travaglini@arm.com const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 12113481Sgiacomo.travaglini@arm.com static_cast<T>(v3_)}; 12213481Sgiacomo.travaglini@arm.com return ValuesIn(array); 12313481Sgiacomo.travaglini@arm.com } 12413481Sgiacomo.travaglini@arm.com 12513481Sgiacomo.travaglini@arm.com private: 12613481Sgiacomo.travaglini@arm.com // No implementation - assignment is unsupported. 12713481Sgiacomo.travaglini@arm.com void operator=(const ValueArray3& other); 12813481Sgiacomo.travaglini@arm.com 12913481Sgiacomo.travaglini@arm.com const T1 v1_; 13013481Sgiacomo.travaglini@arm.com const T2 v2_; 13113481Sgiacomo.travaglini@arm.com const T3 v3_; 13213481Sgiacomo.travaglini@arm.com}; 13313481Sgiacomo.travaglini@arm.com 13413481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4> 13513481Sgiacomo.travaglini@arm.comclass ValueArray4 { 13613481Sgiacomo.travaglini@arm.com public: 13713481Sgiacomo.travaglini@arm.com ValueArray4(T1 v1, T2 v2, T3 v3, T4 v4) : v1_(v1), v2_(v2), v3_(v3), 13813481Sgiacomo.travaglini@arm.com v4_(v4) {} 13913481Sgiacomo.travaglini@arm.com 14013481Sgiacomo.travaglini@arm.com template <typename T> 14113481Sgiacomo.travaglini@arm.com operator ParamGenerator<T>() const { 14213481Sgiacomo.travaglini@arm.com const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 14313481Sgiacomo.travaglini@arm.com static_cast<T>(v3_), static_cast<T>(v4_)}; 14413481Sgiacomo.travaglini@arm.com return ValuesIn(array); 14513481Sgiacomo.travaglini@arm.com } 14613481Sgiacomo.travaglini@arm.com 14713481Sgiacomo.travaglini@arm.com private: 14813481Sgiacomo.travaglini@arm.com // No implementation - assignment is unsupported. 14913481Sgiacomo.travaglini@arm.com void operator=(const ValueArray4& other); 15013481Sgiacomo.travaglini@arm.com 15113481Sgiacomo.travaglini@arm.com const T1 v1_; 15213481Sgiacomo.travaglini@arm.com const T2 v2_; 15313481Sgiacomo.travaglini@arm.com const T3 v3_; 15413481Sgiacomo.travaglini@arm.com const T4 v4_; 15513481Sgiacomo.travaglini@arm.com}; 15613481Sgiacomo.travaglini@arm.com 15713481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5> 15813481Sgiacomo.travaglini@arm.comclass ValueArray5 { 15913481Sgiacomo.travaglini@arm.com public: 16013481Sgiacomo.travaglini@arm.com ValueArray5(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5) : v1_(v1), v2_(v2), v3_(v3), 16113481Sgiacomo.travaglini@arm.com v4_(v4), v5_(v5) {} 16213481Sgiacomo.travaglini@arm.com 16313481Sgiacomo.travaglini@arm.com template <typename T> 16413481Sgiacomo.travaglini@arm.com operator ParamGenerator<T>() const { 16513481Sgiacomo.travaglini@arm.com const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 16613481Sgiacomo.travaglini@arm.com static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_)}; 16713481Sgiacomo.travaglini@arm.com return ValuesIn(array); 16813481Sgiacomo.travaglini@arm.com } 16913481Sgiacomo.travaglini@arm.com 17013481Sgiacomo.travaglini@arm.com private: 17113481Sgiacomo.travaglini@arm.com // No implementation - assignment is unsupported. 17213481Sgiacomo.travaglini@arm.com void operator=(const ValueArray5& other); 17313481Sgiacomo.travaglini@arm.com 17413481Sgiacomo.travaglini@arm.com const T1 v1_; 17513481Sgiacomo.travaglini@arm.com const T2 v2_; 17613481Sgiacomo.travaglini@arm.com const T3 v3_; 17713481Sgiacomo.travaglini@arm.com const T4 v4_; 17813481Sgiacomo.travaglini@arm.com const T5 v5_; 17913481Sgiacomo.travaglini@arm.com}; 18013481Sgiacomo.travaglini@arm.com 18113481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 18213481Sgiacomo.travaglini@arm.com typename T6> 18313481Sgiacomo.travaglini@arm.comclass ValueArray6 { 18413481Sgiacomo.travaglini@arm.com public: 18513481Sgiacomo.travaglini@arm.com ValueArray6(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6) : v1_(v1), v2_(v2), 18613481Sgiacomo.travaglini@arm.com v3_(v3), v4_(v4), v5_(v5), v6_(v6) {} 18713481Sgiacomo.travaglini@arm.com 18813481Sgiacomo.travaglini@arm.com template <typename T> 18913481Sgiacomo.travaglini@arm.com operator ParamGenerator<T>() const { 19013481Sgiacomo.travaglini@arm.com const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 19113481Sgiacomo.travaglini@arm.com static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 19213481Sgiacomo.travaglini@arm.com static_cast<T>(v6_)}; 19313481Sgiacomo.travaglini@arm.com return ValuesIn(array); 19413481Sgiacomo.travaglini@arm.com } 19513481Sgiacomo.travaglini@arm.com 19613481Sgiacomo.travaglini@arm.com private: 19713481Sgiacomo.travaglini@arm.com // No implementation - assignment is unsupported. 19813481Sgiacomo.travaglini@arm.com void operator=(const ValueArray6& other); 19913481Sgiacomo.travaglini@arm.com 20013481Sgiacomo.travaglini@arm.com const T1 v1_; 20113481Sgiacomo.travaglini@arm.com const T2 v2_; 20213481Sgiacomo.travaglini@arm.com const T3 v3_; 20313481Sgiacomo.travaglini@arm.com const T4 v4_; 20413481Sgiacomo.travaglini@arm.com const T5 v5_; 20513481Sgiacomo.travaglini@arm.com const T6 v6_; 20613481Sgiacomo.travaglini@arm.com}; 20713481Sgiacomo.travaglini@arm.com 20813481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 20913481Sgiacomo.travaglini@arm.com typename T6, typename T7> 21013481Sgiacomo.travaglini@arm.comclass ValueArray7 { 21113481Sgiacomo.travaglini@arm.com public: 21213481Sgiacomo.travaglini@arm.com ValueArray7(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7) : v1_(v1), 21313481Sgiacomo.travaglini@arm.com v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7) {} 21413481Sgiacomo.travaglini@arm.com 21513481Sgiacomo.travaglini@arm.com template <typename T> 21613481Sgiacomo.travaglini@arm.com operator ParamGenerator<T>() const { 21713481Sgiacomo.travaglini@arm.com const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 21813481Sgiacomo.travaglini@arm.com static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 21913481Sgiacomo.travaglini@arm.com static_cast<T>(v6_), static_cast<T>(v7_)}; 22013481Sgiacomo.travaglini@arm.com return ValuesIn(array); 22113481Sgiacomo.travaglini@arm.com } 22213481Sgiacomo.travaglini@arm.com 22313481Sgiacomo.travaglini@arm.com private: 22413481Sgiacomo.travaglini@arm.com // No implementation - assignment is unsupported. 22513481Sgiacomo.travaglini@arm.com void operator=(const ValueArray7& other); 22613481Sgiacomo.travaglini@arm.com 22713481Sgiacomo.travaglini@arm.com const T1 v1_; 22813481Sgiacomo.travaglini@arm.com const T2 v2_; 22913481Sgiacomo.travaglini@arm.com const T3 v3_; 23013481Sgiacomo.travaglini@arm.com const T4 v4_; 23113481Sgiacomo.travaglini@arm.com const T5 v5_; 23213481Sgiacomo.travaglini@arm.com const T6 v6_; 23313481Sgiacomo.travaglini@arm.com const T7 v7_; 23413481Sgiacomo.travaglini@arm.com}; 23513481Sgiacomo.travaglini@arm.com 23613481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 23713481Sgiacomo.travaglini@arm.com typename T6, typename T7, typename T8> 23813481Sgiacomo.travaglini@arm.comclass ValueArray8 { 23913481Sgiacomo.travaglini@arm.com public: 24013481Sgiacomo.travaglini@arm.com ValueArray8(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, 24113481Sgiacomo.travaglini@arm.com T8 v8) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), 24213481Sgiacomo.travaglini@arm.com v8_(v8) {} 24313481Sgiacomo.travaglini@arm.com 24413481Sgiacomo.travaglini@arm.com template <typename T> 24513481Sgiacomo.travaglini@arm.com operator ParamGenerator<T>() const { 24613481Sgiacomo.travaglini@arm.com const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 24713481Sgiacomo.travaglini@arm.com static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 24813481Sgiacomo.travaglini@arm.com static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_)}; 24913481Sgiacomo.travaglini@arm.com return ValuesIn(array); 25013481Sgiacomo.travaglini@arm.com } 25113481Sgiacomo.travaglini@arm.com 25213481Sgiacomo.travaglini@arm.com private: 25313481Sgiacomo.travaglini@arm.com // No implementation - assignment is unsupported. 25413481Sgiacomo.travaglini@arm.com void operator=(const ValueArray8& other); 25513481Sgiacomo.travaglini@arm.com 25613481Sgiacomo.travaglini@arm.com const T1 v1_; 25713481Sgiacomo.travaglini@arm.com const T2 v2_; 25813481Sgiacomo.travaglini@arm.com const T3 v3_; 25913481Sgiacomo.travaglini@arm.com const T4 v4_; 26013481Sgiacomo.travaglini@arm.com const T5 v5_; 26113481Sgiacomo.travaglini@arm.com const T6 v6_; 26213481Sgiacomo.travaglini@arm.com const T7 v7_; 26313481Sgiacomo.travaglini@arm.com const T8 v8_; 26413481Sgiacomo.travaglini@arm.com}; 26513481Sgiacomo.travaglini@arm.com 26613481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 26713481Sgiacomo.travaglini@arm.com typename T6, typename T7, typename T8, typename T9> 26813481Sgiacomo.travaglini@arm.comclass ValueArray9 { 26913481Sgiacomo.travaglini@arm.com public: 27013481Sgiacomo.travaglini@arm.com ValueArray9(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, 27113481Sgiacomo.travaglini@arm.com T9 v9) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), 27213481Sgiacomo.travaglini@arm.com v8_(v8), v9_(v9) {} 27313481Sgiacomo.travaglini@arm.com 27413481Sgiacomo.travaglini@arm.com template <typename T> 27513481Sgiacomo.travaglini@arm.com operator ParamGenerator<T>() const { 27613481Sgiacomo.travaglini@arm.com const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 27713481Sgiacomo.travaglini@arm.com static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 27813481Sgiacomo.travaglini@arm.com static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 27913481Sgiacomo.travaglini@arm.com static_cast<T>(v9_)}; 28013481Sgiacomo.travaglini@arm.com return ValuesIn(array); 28113481Sgiacomo.travaglini@arm.com } 28213481Sgiacomo.travaglini@arm.com 28313481Sgiacomo.travaglini@arm.com private: 28413481Sgiacomo.travaglini@arm.com // No implementation - assignment is unsupported. 28513481Sgiacomo.travaglini@arm.com void operator=(const ValueArray9& other); 28613481Sgiacomo.travaglini@arm.com 28713481Sgiacomo.travaglini@arm.com const T1 v1_; 28813481Sgiacomo.travaglini@arm.com const T2 v2_; 28913481Sgiacomo.travaglini@arm.com const T3 v3_; 29013481Sgiacomo.travaglini@arm.com const T4 v4_; 29113481Sgiacomo.travaglini@arm.com const T5 v5_; 29213481Sgiacomo.travaglini@arm.com const T6 v6_; 29313481Sgiacomo.travaglini@arm.com const T7 v7_; 29413481Sgiacomo.travaglini@arm.com const T8 v8_; 29513481Sgiacomo.travaglini@arm.com const T9 v9_; 29613481Sgiacomo.travaglini@arm.com}; 29713481Sgiacomo.travaglini@arm.com 29813481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 29913481Sgiacomo.travaglini@arm.com typename T6, typename T7, typename T8, typename T9, typename T10> 30013481Sgiacomo.travaglini@arm.comclass ValueArray10 { 30113481Sgiacomo.travaglini@arm.com public: 30213481Sgiacomo.travaglini@arm.com ValueArray10(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 30313481Sgiacomo.travaglini@arm.com T10 v10) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), 30413481Sgiacomo.travaglini@arm.com v8_(v8), v9_(v9), v10_(v10) {} 30513481Sgiacomo.travaglini@arm.com 30613481Sgiacomo.travaglini@arm.com template <typename T> 30713481Sgiacomo.travaglini@arm.com operator ParamGenerator<T>() const { 30813481Sgiacomo.travaglini@arm.com const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 30913481Sgiacomo.travaglini@arm.com static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 31013481Sgiacomo.travaglini@arm.com static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 31113481Sgiacomo.travaglini@arm.com static_cast<T>(v9_), static_cast<T>(v10_)}; 31213481Sgiacomo.travaglini@arm.com return ValuesIn(array); 31313481Sgiacomo.travaglini@arm.com } 31413481Sgiacomo.travaglini@arm.com 31513481Sgiacomo.travaglini@arm.com private: 31613481Sgiacomo.travaglini@arm.com // No implementation - assignment is unsupported. 31713481Sgiacomo.travaglini@arm.com void operator=(const ValueArray10& other); 31813481Sgiacomo.travaglini@arm.com 31913481Sgiacomo.travaglini@arm.com const T1 v1_; 32013481Sgiacomo.travaglini@arm.com const T2 v2_; 32113481Sgiacomo.travaglini@arm.com const T3 v3_; 32213481Sgiacomo.travaglini@arm.com const T4 v4_; 32313481Sgiacomo.travaglini@arm.com const T5 v5_; 32413481Sgiacomo.travaglini@arm.com const T6 v6_; 32513481Sgiacomo.travaglini@arm.com const T7 v7_; 32613481Sgiacomo.travaglini@arm.com const T8 v8_; 32713481Sgiacomo.travaglini@arm.com const T9 v9_; 32813481Sgiacomo.travaglini@arm.com const T10 v10_; 32913481Sgiacomo.travaglini@arm.com}; 33013481Sgiacomo.travaglini@arm.com 33113481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 33213481Sgiacomo.travaglini@arm.com typename T6, typename T7, typename T8, typename T9, typename T10, 33313481Sgiacomo.travaglini@arm.com typename T11> 33413481Sgiacomo.travaglini@arm.comclass ValueArray11 { 33513481Sgiacomo.travaglini@arm.com public: 33613481Sgiacomo.travaglini@arm.com ValueArray11(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 33713481Sgiacomo.travaglini@arm.com T10 v10, T11 v11) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), 33813481Sgiacomo.travaglini@arm.com v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11) {} 33913481Sgiacomo.travaglini@arm.com 34013481Sgiacomo.travaglini@arm.com template <typename T> 34113481Sgiacomo.travaglini@arm.com operator ParamGenerator<T>() const { 34213481Sgiacomo.travaglini@arm.com const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 34313481Sgiacomo.travaglini@arm.com static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 34413481Sgiacomo.travaglini@arm.com static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 34513481Sgiacomo.travaglini@arm.com static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_)}; 34613481Sgiacomo.travaglini@arm.com return ValuesIn(array); 34713481Sgiacomo.travaglini@arm.com } 34813481Sgiacomo.travaglini@arm.com 34913481Sgiacomo.travaglini@arm.com private: 35013481Sgiacomo.travaglini@arm.com // No implementation - assignment is unsupported. 35113481Sgiacomo.travaglini@arm.com void operator=(const ValueArray11& other); 35213481Sgiacomo.travaglini@arm.com 35313481Sgiacomo.travaglini@arm.com const T1 v1_; 35413481Sgiacomo.travaglini@arm.com const T2 v2_; 35513481Sgiacomo.travaglini@arm.com const T3 v3_; 35613481Sgiacomo.travaglini@arm.com const T4 v4_; 35713481Sgiacomo.travaglini@arm.com const T5 v5_; 35813481Sgiacomo.travaglini@arm.com const T6 v6_; 35913481Sgiacomo.travaglini@arm.com const T7 v7_; 36013481Sgiacomo.travaglini@arm.com const T8 v8_; 36113481Sgiacomo.travaglini@arm.com const T9 v9_; 36213481Sgiacomo.travaglini@arm.com const T10 v10_; 36313481Sgiacomo.travaglini@arm.com const T11 v11_; 36413481Sgiacomo.travaglini@arm.com}; 36513481Sgiacomo.travaglini@arm.com 36613481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 36713481Sgiacomo.travaglini@arm.com typename T6, typename T7, typename T8, typename T9, typename T10, 36813481Sgiacomo.travaglini@arm.com typename T11, typename T12> 36913481Sgiacomo.travaglini@arm.comclass ValueArray12 { 37013481Sgiacomo.travaglini@arm.com public: 37113481Sgiacomo.travaglini@arm.com ValueArray12(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 37213481Sgiacomo.travaglini@arm.com T10 v10, T11 v11, T12 v12) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), 37313481Sgiacomo.travaglini@arm.com v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12) {} 37413481Sgiacomo.travaglini@arm.com 37513481Sgiacomo.travaglini@arm.com template <typename T> 37613481Sgiacomo.travaglini@arm.com operator ParamGenerator<T>() const { 37713481Sgiacomo.travaglini@arm.com const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 37813481Sgiacomo.travaglini@arm.com static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 37913481Sgiacomo.travaglini@arm.com static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 38013481Sgiacomo.travaglini@arm.com static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), 38113481Sgiacomo.travaglini@arm.com static_cast<T>(v12_)}; 38213481Sgiacomo.travaglini@arm.com return ValuesIn(array); 38313481Sgiacomo.travaglini@arm.com } 38413481Sgiacomo.travaglini@arm.com 38513481Sgiacomo.travaglini@arm.com private: 38613481Sgiacomo.travaglini@arm.com // No implementation - assignment is unsupported. 38713481Sgiacomo.travaglini@arm.com void operator=(const ValueArray12& other); 38813481Sgiacomo.travaglini@arm.com 38913481Sgiacomo.travaglini@arm.com const T1 v1_; 39013481Sgiacomo.travaglini@arm.com const T2 v2_; 39113481Sgiacomo.travaglini@arm.com const T3 v3_; 39213481Sgiacomo.travaglini@arm.com const T4 v4_; 39313481Sgiacomo.travaglini@arm.com const T5 v5_; 39413481Sgiacomo.travaglini@arm.com const T6 v6_; 39513481Sgiacomo.travaglini@arm.com const T7 v7_; 39613481Sgiacomo.travaglini@arm.com const T8 v8_; 39713481Sgiacomo.travaglini@arm.com const T9 v9_; 39813481Sgiacomo.travaglini@arm.com const T10 v10_; 39913481Sgiacomo.travaglini@arm.com const T11 v11_; 40013481Sgiacomo.travaglini@arm.com const T12 v12_; 40113481Sgiacomo.travaglini@arm.com}; 40213481Sgiacomo.travaglini@arm.com 40313481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 40413481Sgiacomo.travaglini@arm.com typename T6, typename T7, typename T8, typename T9, typename T10, 40513481Sgiacomo.travaglini@arm.com typename T11, typename T12, typename T13> 40613481Sgiacomo.travaglini@arm.comclass ValueArray13 { 40713481Sgiacomo.travaglini@arm.com public: 40813481Sgiacomo.travaglini@arm.com ValueArray13(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 40913481Sgiacomo.travaglini@arm.com T10 v10, T11 v11, T12 v12, T13 v13) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), 41013481Sgiacomo.travaglini@arm.com v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), 41113481Sgiacomo.travaglini@arm.com v12_(v12), v13_(v13) {} 41213481Sgiacomo.travaglini@arm.com 41313481Sgiacomo.travaglini@arm.com template <typename T> 41413481Sgiacomo.travaglini@arm.com operator ParamGenerator<T>() const { 41513481Sgiacomo.travaglini@arm.com const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 41613481Sgiacomo.travaglini@arm.com static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 41713481Sgiacomo.travaglini@arm.com static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 41813481Sgiacomo.travaglini@arm.com static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), 41913481Sgiacomo.travaglini@arm.com static_cast<T>(v12_), static_cast<T>(v13_)}; 42013481Sgiacomo.travaglini@arm.com return ValuesIn(array); 42113481Sgiacomo.travaglini@arm.com } 42213481Sgiacomo.travaglini@arm.com 42313481Sgiacomo.travaglini@arm.com private: 42413481Sgiacomo.travaglini@arm.com // No implementation - assignment is unsupported. 42513481Sgiacomo.travaglini@arm.com void operator=(const ValueArray13& other); 42613481Sgiacomo.travaglini@arm.com 42713481Sgiacomo.travaglini@arm.com const T1 v1_; 42813481Sgiacomo.travaglini@arm.com const T2 v2_; 42913481Sgiacomo.travaglini@arm.com const T3 v3_; 43013481Sgiacomo.travaglini@arm.com const T4 v4_; 43113481Sgiacomo.travaglini@arm.com const T5 v5_; 43213481Sgiacomo.travaglini@arm.com const T6 v6_; 43313481Sgiacomo.travaglini@arm.com const T7 v7_; 43413481Sgiacomo.travaglini@arm.com const T8 v8_; 43513481Sgiacomo.travaglini@arm.com const T9 v9_; 43613481Sgiacomo.travaglini@arm.com const T10 v10_; 43713481Sgiacomo.travaglini@arm.com const T11 v11_; 43813481Sgiacomo.travaglini@arm.com const T12 v12_; 43913481Sgiacomo.travaglini@arm.com const T13 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.comclass ValueArray14 { 44613481Sgiacomo.travaglini@arm.com public: 44713481Sgiacomo.travaglini@arm.com ValueArray14(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 44813481Sgiacomo.travaglini@arm.com T10 v10, T11 v11, T12 v12, T13 v13, T14 v14) : v1_(v1), v2_(v2), v3_(v3), 44913481Sgiacomo.travaglini@arm.com v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), 45013481Sgiacomo.travaglini@arm.com v11_(v11), v12_(v12), v13_(v13), v14_(v14) {} 45113481Sgiacomo.travaglini@arm.com 45213481Sgiacomo.travaglini@arm.com template <typename T> 45313481Sgiacomo.travaglini@arm.com operator ParamGenerator<T>() const { 45413481Sgiacomo.travaglini@arm.com const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 45513481Sgiacomo.travaglini@arm.com static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 45613481Sgiacomo.travaglini@arm.com static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 45713481Sgiacomo.travaglini@arm.com static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), 45813481Sgiacomo.travaglini@arm.com static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_)}; 45913481Sgiacomo.travaglini@arm.com return ValuesIn(array); 46013481Sgiacomo.travaglini@arm.com } 46113481Sgiacomo.travaglini@arm.com 46213481Sgiacomo.travaglini@arm.com private: 46313481Sgiacomo.travaglini@arm.com // No implementation - assignment is unsupported. 46413481Sgiacomo.travaglini@arm.com void operator=(const ValueArray14& other); 46513481Sgiacomo.travaglini@arm.com 46613481Sgiacomo.travaglini@arm.com const T1 v1_; 46713481Sgiacomo.travaglini@arm.com const T2 v2_; 46813481Sgiacomo.travaglini@arm.com const T3 v3_; 46913481Sgiacomo.travaglini@arm.com const T4 v4_; 47013481Sgiacomo.travaglini@arm.com const T5 v5_; 47113481Sgiacomo.travaglini@arm.com const T6 v6_; 47213481Sgiacomo.travaglini@arm.com const T7 v7_; 47313481Sgiacomo.travaglini@arm.com const T8 v8_; 47413481Sgiacomo.travaglini@arm.com const T9 v9_; 47513481Sgiacomo.travaglini@arm.com const T10 v10_; 47613481Sgiacomo.travaglini@arm.com const T11 v11_; 47713481Sgiacomo.travaglini@arm.com const T12 v12_; 47813481Sgiacomo.travaglini@arm.com const T13 v13_; 47913481Sgiacomo.travaglini@arm.com const T14 v14_; 48013481Sgiacomo.travaglini@arm.com}; 48113481Sgiacomo.travaglini@arm.com 48213481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 48313481Sgiacomo.travaglini@arm.com typename T6, typename T7, typename T8, typename T9, typename T10, 48413481Sgiacomo.travaglini@arm.com typename T11, typename T12, typename T13, typename T14, typename T15> 48513481Sgiacomo.travaglini@arm.comclass ValueArray15 { 48613481Sgiacomo.travaglini@arm.com public: 48713481Sgiacomo.travaglini@arm.com ValueArray15(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 48813481Sgiacomo.travaglini@arm.com T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15) : v1_(v1), v2_(v2), 48913481Sgiacomo.travaglini@arm.com v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), 49013481Sgiacomo.travaglini@arm.com v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15) {} 49113481Sgiacomo.travaglini@arm.com 49213481Sgiacomo.travaglini@arm.com template <typename T> 49313481Sgiacomo.travaglini@arm.com operator ParamGenerator<T>() const { 49413481Sgiacomo.travaglini@arm.com const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 49513481Sgiacomo.travaglini@arm.com static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 49613481Sgiacomo.travaglini@arm.com static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 49713481Sgiacomo.travaglini@arm.com static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), 49813481Sgiacomo.travaglini@arm.com static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), 49913481Sgiacomo.travaglini@arm.com static_cast<T>(v15_)}; 50013481Sgiacomo.travaglini@arm.com return ValuesIn(array); 50113481Sgiacomo.travaglini@arm.com } 50213481Sgiacomo.travaglini@arm.com 50313481Sgiacomo.travaglini@arm.com private: 50413481Sgiacomo.travaglini@arm.com // No implementation - assignment is unsupported. 50513481Sgiacomo.travaglini@arm.com void operator=(const ValueArray15& other); 50613481Sgiacomo.travaglini@arm.com 50713481Sgiacomo.travaglini@arm.com const T1 v1_; 50813481Sgiacomo.travaglini@arm.com const T2 v2_; 50913481Sgiacomo.travaglini@arm.com const T3 v3_; 51013481Sgiacomo.travaglini@arm.com const T4 v4_; 51113481Sgiacomo.travaglini@arm.com const T5 v5_; 51213481Sgiacomo.travaglini@arm.com const T6 v6_; 51313481Sgiacomo.travaglini@arm.com const T7 v7_; 51413481Sgiacomo.travaglini@arm.com const T8 v8_; 51513481Sgiacomo.travaglini@arm.com const T9 v9_; 51613481Sgiacomo.travaglini@arm.com const T10 v10_; 51713481Sgiacomo.travaglini@arm.com const T11 v11_; 51813481Sgiacomo.travaglini@arm.com const T12 v12_; 51913481Sgiacomo.travaglini@arm.com const T13 v13_; 52013481Sgiacomo.travaglini@arm.com const T14 v14_; 52113481Sgiacomo.travaglini@arm.com const T15 v15_; 52213481Sgiacomo.travaglini@arm.com}; 52313481Sgiacomo.travaglini@arm.com 52413481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 52513481Sgiacomo.travaglini@arm.com typename T6, typename T7, typename T8, typename T9, typename T10, 52613481Sgiacomo.travaglini@arm.com typename T11, typename T12, typename T13, typename T14, typename T15, 52713481Sgiacomo.travaglini@arm.com typename T16> 52813481Sgiacomo.travaglini@arm.comclass ValueArray16 { 52913481Sgiacomo.travaglini@arm.com public: 53013481Sgiacomo.travaglini@arm.com ValueArray16(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 53113481Sgiacomo.travaglini@arm.com T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16) : v1_(v1), 53213481Sgiacomo.travaglini@arm.com v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), 53313481Sgiacomo.travaglini@arm.com v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), 53413481Sgiacomo.travaglini@arm.com v16_(v16) {} 53513481Sgiacomo.travaglini@arm.com 53613481Sgiacomo.travaglini@arm.com template <typename T> 53713481Sgiacomo.travaglini@arm.com operator ParamGenerator<T>() const { 53813481Sgiacomo.travaglini@arm.com const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 53913481Sgiacomo.travaglini@arm.com static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 54013481Sgiacomo.travaglini@arm.com static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 54113481Sgiacomo.travaglini@arm.com static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), 54213481Sgiacomo.travaglini@arm.com static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), 54313481Sgiacomo.travaglini@arm.com static_cast<T>(v15_), static_cast<T>(v16_)}; 54413481Sgiacomo.travaglini@arm.com return ValuesIn(array); 54513481Sgiacomo.travaglini@arm.com } 54613481Sgiacomo.travaglini@arm.com 54713481Sgiacomo.travaglini@arm.com private: 54813481Sgiacomo.travaglini@arm.com // No implementation - assignment is unsupported. 54913481Sgiacomo.travaglini@arm.com void operator=(const ValueArray16& other); 55013481Sgiacomo.travaglini@arm.com 55113481Sgiacomo.travaglini@arm.com const T1 v1_; 55213481Sgiacomo.travaglini@arm.com const T2 v2_; 55313481Sgiacomo.travaglini@arm.com const T3 v3_; 55413481Sgiacomo.travaglini@arm.com const T4 v4_; 55513481Sgiacomo.travaglini@arm.com const T5 v5_; 55613481Sgiacomo.travaglini@arm.com const T6 v6_; 55713481Sgiacomo.travaglini@arm.com const T7 v7_; 55813481Sgiacomo.travaglini@arm.com const T8 v8_; 55913481Sgiacomo.travaglini@arm.com const T9 v9_; 56013481Sgiacomo.travaglini@arm.com const T10 v10_; 56113481Sgiacomo.travaglini@arm.com const T11 v11_; 56213481Sgiacomo.travaglini@arm.com const T12 v12_; 56313481Sgiacomo.travaglini@arm.com const T13 v13_; 56413481Sgiacomo.travaglini@arm.com const T14 v14_; 56513481Sgiacomo.travaglini@arm.com const T15 v15_; 56613481Sgiacomo.travaglini@arm.com const T16 v16_; 56713481Sgiacomo.travaglini@arm.com}; 56813481Sgiacomo.travaglini@arm.com 56913481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 57013481Sgiacomo.travaglini@arm.com typename T6, typename T7, typename T8, typename T9, typename T10, 57113481Sgiacomo.travaglini@arm.com typename T11, typename T12, typename T13, typename T14, typename T15, 57213481Sgiacomo.travaglini@arm.com typename T16, typename T17> 57313481Sgiacomo.travaglini@arm.comclass ValueArray17 { 57413481Sgiacomo.travaglini@arm.com public: 57513481Sgiacomo.travaglini@arm.com ValueArray17(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 57613481Sgiacomo.travaglini@arm.com T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, 57713481Sgiacomo.travaglini@arm.com T17 v17) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), 57813481Sgiacomo.travaglini@arm.com v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), 57913481Sgiacomo.travaglini@arm.com v15_(v15), v16_(v16), v17_(v17) {} 58013481Sgiacomo.travaglini@arm.com 58113481Sgiacomo.travaglini@arm.com template <typename T> 58213481Sgiacomo.travaglini@arm.com operator ParamGenerator<T>() const { 58313481Sgiacomo.travaglini@arm.com const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 58413481Sgiacomo.travaglini@arm.com static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 58513481Sgiacomo.travaglini@arm.com static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 58613481Sgiacomo.travaglini@arm.com static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), 58713481Sgiacomo.travaglini@arm.com static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), 58813481Sgiacomo.travaglini@arm.com static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_)}; 58913481Sgiacomo.travaglini@arm.com return ValuesIn(array); 59013481Sgiacomo.travaglini@arm.com } 59113481Sgiacomo.travaglini@arm.com 59213481Sgiacomo.travaglini@arm.com private: 59313481Sgiacomo.travaglini@arm.com // No implementation - assignment is unsupported. 59413481Sgiacomo.travaglini@arm.com void operator=(const ValueArray17& other); 59513481Sgiacomo.travaglini@arm.com 59613481Sgiacomo.travaglini@arm.com const T1 v1_; 59713481Sgiacomo.travaglini@arm.com const T2 v2_; 59813481Sgiacomo.travaglini@arm.com const T3 v3_; 59913481Sgiacomo.travaglini@arm.com const T4 v4_; 60013481Sgiacomo.travaglini@arm.com const T5 v5_; 60113481Sgiacomo.travaglini@arm.com const T6 v6_; 60213481Sgiacomo.travaglini@arm.com const T7 v7_; 60313481Sgiacomo.travaglini@arm.com const T8 v8_; 60413481Sgiacomo.travaglini@arm.com const T9 v9_; 60513481Sgiacomo.travaglini@arm.com const T10 v10_; 60613481Sgiacomo.travaglini@arm.com const T11 v11_; 60713481Sgiacomo.travaglini@arm.com const T12 v12_; 60813481Sgiacomo.travaglini@arm.com const T13 v13_; 60913481Sgiacomo.travaglini@arm.com const T14 v14_; 61013481Sgiacomo.travaglini@arm.com const T15 v15_; 61113481Sgiacomo.travaglini@arm.com const T16 v16_; 61213481Sgiacomo.travaglini@arm.com const T17 v17_; 61313481Sgiacomo.travaglini@arm.com}; 61413481Sgiacomo.travaglini@arm.com 61513481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 61613481Sgiacomo.travaglini@arm.com typename T6, typename T7, typename T8, typename T9, typename T10, 61713481Sgiacomo.travaglini@arm.com typename T11, typename T12, typename T13, typename T14, typename T15, 61813481Sgiacomo.travaglini@arm.com typename T16, typename T17, typename T18> 61913481Sgiacomo.travaglini@arm.comclass ValueArray18 { 62013481Sgiacomo.travaglini@arm.com public: 62113481Sgiacomo.travaglini@arm.com ValueArray18(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 62213481Sgiacomo.travaglini@arm.com T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 62313481Sgiacomo.travaglini@arm.com T18 v18) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), 62413481Sgiacomo.travaglini@arm.com v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), 62513481Sgiacomo.travaglini@arm.com v15_(v15), v16_(v16), v17_(v17), v18_(v18) {} 62613481Sgiacomo.travaglini@arm.com 62713481Sgiacomo.travaglini@arm.com template <typename T> 62813481Sgiacomo.travaglini@arm.com operator ParamGenerator<T>() const { 62913481Sgiacomo.travaglini@arm.com const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 63013481Sgiacomo.travaglini@arm.com static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 63113481Sgiacomo.travaglini@arm.com static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 63213481Sgiacomo.travaglini@arm.com static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), 63313481Sgiacomo.travaglini@arm.com static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), 63413481Sgiacomo.travaglini@arm.com static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), 63513481Sgiacomo.travaglini@arm.com static_cast<T>(v18_)}; 63613481Sgiacomo.travaglini@arm.com return ValuesIn(array); 63713481Sgiacomo.travaglini@arm.com } 63813481Sgiacomo.travaglini@arm.com 63913481Sgiacomo.travaglini@arm.com private: 64013481Sgiacomo.travaglini@arm.com // No implementation - assignment is unsupported. 64113481Sgiacomo.travaglini@arm.com void operator=(const ValueArray18& other); 64213481Sgiacomo.travaglini@arm.com 64313481Sgiacomo.travaglini@arm.com const T1 v1_; 64413481Sgiacomo.travaglini@arm.com const T2 v2_; 64513481Sgiacomo.travaglini@arm.com const T3 v3_; 64613481Sgiacomo.travaglini@arm.com const T4 v4_; 64713481Sgiacomo.travaglini@arm.com const T5 v5_; 64813481Sgiacomo.travaglini@arm.com const T6 v6_; 64913481Sgiacomo.travaglini@arm.com const T7 v7_; 65013481Sgiacomo.travaglini@arm.com const T8 v8_; 65113481Sgiacomo.travaglini@arm.com const T9 v9_; 65213481Sgiacomo.travaglini@arm.com const T10 v10_; 65313481Sgiacomo.travaglini@arm.com const T11 v11_; 65413481Sgiacomo.travaglini@arm.com const T12 v12_; 65513481Sgiacomo.travaglini@arm.com const T13 v13_; 65613481Sgiacomo.travaglini@arm.com const T14 v14_; 65713481Sgiacomo.travaglini@arm.com const T15 v15_; 65813481Sgiacomo.travaglini@arm.com const T16 v16_; 65913481Sgiacomo.travaglini@arm.com const T17 v17_; 66013481Sgiacomo.travaglini@arm.com const T18 v18_; 66113481Sgiacomo.travaglini@arm.com}; 66213481Sgiacomo.travaglini@arm.com 66313481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 66413481Sgiacomo.travaglini@arm.com typename T6, typename T7, typename T8, typename T9, typename T10, 66513481Sgiacomo.travaglini@arm.com typename T11, typename T12, typename T13, typename T14, typename T15, 66613481Sgiacomo.travaglini@arm.com typename T16, typename T17, typename T18, typename T19> 66713481Sgiacomo.travaglini@arm.comclass ValueArray19 { 66813481Sgiacomo.travaglini@arm.com public: 66913481Sgiacomo.travaglini@arm.com ValueArray19(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 67013481Sgiacomo.travaglini@arm.com T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 67113481Sgiacomo.travaglini@arm.com T18 v18, T19 v19) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), 67213481Sgiacomo.travaglini@arm.com v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), 67313481Sgiacomo.travaglini@arm.com v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19) {} 67413481Sgiacomo.travaglini@arm.com 67513481Sgiacomo.travaglini@arm.com template <typename T> 67613481Sgiacomo.travaglini@arm.com operator ParamGenerator<T>() const { 67713481Sgiacomo.travaglini@arm.com const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 67813481Sgiacomo.travaglini@arm.com static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 67913481Sgiacomo.travaglini@arm.com static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 68013481Sgiacomo.travaglini@arm.com static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), 68113481Sgiacomo.travaglini@arm.com static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), 68213481Sgiacomo.travaglini@arm.com static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), 68313481Sgiacomo.travaglini@arm.com static_cast<T>(v18_), static_cast<T>(v19_)}; 68413481Sgiacomo.travaglini@arm.com return ValuesIn(array); 68513481Sgiacomo.travaglini@arm.com } 68613481Sgiacomo.travaglini@arm.com 68713481Sgiacomo.travaglini@arm.com private: 68813481Sgiacomo.travaglini@arm.com // No implementation - assignment is unsupported. 68913481Sgiacomo.travaglini@arm.com void operator=(const ValueArray19& other); 69013481Sgiacomo.travaglini@arm.com 69113481Sgiacomo.travaglini@arm.com const T1 v1_; 69213481Sgiacomo.travaglini@arm.com const T2 v2_; 69313481Sgiacomo.travaglini@arm.com const T3 v3_; 69413481Sgiacomo.travaglini@arm.com const T4 v4_; 69513481Sgiacomo.travaglini@arm.com const T5 v5_; 69613481Sgiacomo.travaglini@arm.com const T6 v6_; 69713481Sgiacomo.travaglini@arm.com const T7 v7_; 69813481Sgiacomo.travaglini@arm.com const T8 v8_; 69913481Sgiacomo.travaglini@arm.com const T9 v9_; 70013481Sgiacomo.travaglini@arm.com const T10 v10_; 70113481Sgiacomo.travaglini@arm.com const T11 v11_; 70213481Sgiacomo.travaglini@arm.com const T12 v12_; 70313481Sgiacomo.travaglini@arm.com const T13 v13_; 70413481Sgiacomo.travaglini@arm.com const T14 v14_; 70513481Sgiacomo.travaglini@arm.com const T15 v15_; 70613481Sgiacomo.travaglini@arm.com const T16 v16_; 70713481Sgiacomo.travaglini@arm.com const T17 v17_; 70813481Sgiacomo.travaglini@arm.com const T18 v18_; 70913481Sgiacomo.travaglini@arm.com const T19 v19_; 71013481Sgiacomo.travaglini@arm.com}; 71113481Sgiacomo.travaglini@arm.com 71213481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 71313481Sgiacomo.travaglini@arm.com typename T6, typename T7, typename T8, typename T9, typename T10, 71413481Sgiacomo.travaglini@arm.com typename T11, typename T12, typename T13, typename T14, typename T15, 71513481Sgiacomo.travaglini@arm.com typename T16, typename T17, typename T18, typename T19, typename T20> 71613481Sgiacomo.travaglini@arm.comclass ValueArray20 { 71713481Sgiacomo.travaglini@arm.com public: 71813481Sgiacomo.travaglini@arm.com ValueArray20(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 71913481Sgiacomo.travaglini@arm.com T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 72013481Sgiacomo.travaglini@arm.com T18 v18, T19 v19, T20 v20) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), 72113481Sgiacomo.travaglini@arm.com v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), 72213481Sgiacomo.travaglini@arm.com v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18), 72313481Sgiacomo.travaglini@arm.com v19_(v19), v20_(v20) {} 72413481Sgiacomo.travaglini@arm.com 72513481Sgiacomo.travaglini@arm.com template <typename T> 72613481Sgiacomo.travaglini@arm.com operator ParamGenerator<T>() const { 72713481Sgiacomo.travaglini@arm.com const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 72813481Sgiacomo.travaglini@arm.com static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 72913481Sgiacomo.travaglini@arm.com static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 73013481Sgiacomo.travaglini@arm.com static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), 73113481Sgiacomo.travaglini@arm.com static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), 73213481Sgiacomo.travaglini@arm.com static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), 73313481Sgiacomo.travaglini@arm.com static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_)}; 73413481Sgiacomo.travaglini@arm.com return ValuesIn(array); 73513481Sgiacomo.travaglini@arm.com } 73613481Sgiacomo.travaglini@arm.com 73713481Sgiacomo.travaglini@arm.com private: 73813481Sgiacomo.travaglini@arm.com // No implementation - assignment is unsupported. 73913481Sgiacomo.travaglini@arm.com void operator=(const ValueArray20& other); 74013481Sgiacomo.travaglini@arm.com 74113481Sgiacomo.travaglini@arm.com const T1 v1_; 74213481Sgiacomo.travaglini@arm.com const T2 v2_; 74313481Sgiacomo.travaglini@arm.com const T3 v3_; 74413481Sgiacomo.travaglini@arm.com const T4 v4_; 74513481Sgiacomo.travaglini@arm.com const T5 v5_; 74613481Sgiacomo.travaglini@arm.com const T6 v6_; 74713481Sgiacomo.travaglini@arm.com const T7 v7_; 74813481Sgiacomo.travaglini@arm.com const T8 v8_; 74913481Sgiacomo.travaglini@arm.com const T9 v9_; 75013481Sgiacomo.travaglini@arm.com const T10 v10_; 75113481Sgiacomo.travaglini@arm.com const T11 v11_; 75213481Sgiacomo.travaglini@arm.com const T12 v12_; 75313481Sgiacomo.travaglini@arm.com const T13 v13_; 75413481Sgiacomo.travaglini@arm.com const T14 v14_; 75513481Sgiacomo.travaglini@arm.com const T15 v15_; 75613481Sgiacomo.travaglini@arm.com const T16 v16_; 75713481Sgiacomo.travaglini@arm.com const T17 v17_; 75813481Sgiacomo.travaglini@arm.com const T18 v18_; 75913481Sgiacomo.travaglini@arm.com const T19 v19_; 76013481Sgiacomo.travaglini@arm.com const T20 v20_; 76113481Sgiacomo.travaglini@arm.com}; 76213481Sgiacomo.travaglini@arm.com 76313481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 76413481Sgiacomo.travaglini@arm.com typename T6, typename T7, typename T8, typename T9, typename T10, 76513481Sgiacomo.travaglini@arm.com typename T11, typename T12, typename T13, typename T14, typename T15, 76613481Sgiacomo.travaglini@arm.com typename T16, typename T17, typename T18, typename T19, typename T20, 76713481Sgiacomo.travaglini@arm.com typename T21> 76813481Sgiacomo.travaglini@arm.comclass ValueArray21 { 76913481Sgiacomo.travaglini@arm.com public: 77013481Sgiacomo.travaglini@arm.com ValueArray21(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 77113481Sgiacomo.travaglini@arm.com T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 77213481Sgiacomo.travaglini@arm.com T18 v18, T19 v19, T20 v20, T21 v21) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), 77313481Sgiacomo.travaglini@arm.com v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), 77413481Sgiacomo.travaglini@arm.com v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17), 77513481Sgiacomo.travaglini@arm.com v18_(v18), v19_(v19), v20_(v20), v21_(v21) {} 77613481Sgiacomo.travaglini@arm.com 77713481Sgiacomo.travaglini@arm.com template <typename T> 77813481Sgiacomo.travaglini@arm.com operator ParamGenerator<T>() const { 77913481Sgiacomo.travaglini@arm.com const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 78013481Sgiacomo.travaglini@arm.com static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 78113481Sgiacomo.travaglini@arm.com static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 78213481Sgiacomo.travaglini@arm.com static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), 78313481Sgiacomo.travaglini@arm.com static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), 78413481Sgiacomo.travaglini@arm.com static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), 78513481Sgiacomo.travaglini@arm.com static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), 78613481Sgiacomo.travaglini@arm.com static_cast<T>(v21_)}; 78713481Sgiacomo.travaglini@arm.com return ValuesIn(array); 78813481Sgiacomo.travaglini@arm.com } 78913481Sgiacomo.travaglini@arm.com 79013481Sgiacomo.travaglini@arm.com private: 79113481Sgiacomo.travaglini@arm.com // No implementation - assignment is unsupported. 79213481Sgiacomo.travaglini@arm.com void operator=(const ValueArray21& other); 79313481Sgiacomo.travaglini@arm.com 79413481Sgiacomo.travaglini@arm.com const T1 v1_; 79513481Sgiacomo.travaglini@arm.com const T2 v2_; 79613481Sgiacomo.travaglini@arm.com const T3 v3_; 79713481Sgiacomo.travaglini@arm.com const T4 v4_; 79813481Sgiacomo.travaglini@arm.com const T5 v5_; 79913481Sgiacomo.travaglini@arm.com const T6 v6_; 80013481Sgiacomo.travaglini@arm.com const T7 v7_; 80113481Sgiacomo.travaglini@arm.com const T8 v8_; 80213481Sgiacomo.travaglini@arm.com const T9 v9_; 80313481Sgiacomo.travaglini@arm.com const T10 v10_; 80413481Sgiacomo.travaglini@arm.com const T11 v11_; 80513481Sgiacomo.travaglini@arm.com const T12 v12_; 80613481Sgiacomo.travaglini@arm.com const T13 v13_; 80713481Sgiacomo.travaglini@arm.com const T14 v14_; 80813481Sgiacomo.travaglini@arm.com const T15 v15_; 80913481Sgiacomo.travaglini@arm.com const T16 v16_; 81013481Sgiacomo.travaglini@arm.com const T17 v17_; 81113481Sgiacomo.travaglini@arm.com const T18 v18_; 81213481Sgiacomo.travaglini@arm.com const T19 v19_; 81313481Sgiacomo.travaglini@arm.com const T20 v20_; 81413481Sgiacomo.travaglini@arm.com const T21 v21_; 81513481Sgiacomo.travaglini@arm.com}; 81613481Sgiacomo.travaglini@arm.com 81713481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 81813481Sgiacomo.travaglini@arm.com typename T6, typename T7, typename T8, typename T9, typename T10, 81913481Sgiacomo.travaglini@arm.com typename T11, typename T12, typename T13, typename T14, typename T15, 82013481Sgiacomo.travaglini@arm.com typename T16, typename T17, typename T18, typename T19, typename T20, 82113481Sgiacomo.travaglini@arm.com typename T21, typename T22> 82213481Sgiacomo.travaglini@arm.comclass ValueArray22 { 82313481Sgiacomo.travaglini@arm.com public: 82413481Sgiacomo.travaglini@arm.com ValueArray22(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 82513481Sgiacomo.travaglini@arm.com T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 82613481Sgiacomo.travaglini@arm.com T18 v18, T19 v19, T20 v20, T21 v21, T22 v22) : v1_(v1), v2_(v2), v3_(v3), 82713481Sgiacomo.travaglini@arm.com v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), 82813481Sgiacomo.travaglini@arm.com v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), 82913481Sgiacomo.travaglini@arm.com v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22) {} 83013481Sgiacomo.travaglini@arm.com 83113481Sgiacomo.travaglini@arm.com template <typename T> 83213481Sgiacomo.travaglini@arm.com operator ParamGenerator<T>() const { 83313481Sgiacomo.travaglini@arm.com const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 83413481Sgiacomo.travaglini@arm.com static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 83513481Sgiacomo.travaglini@arm.com static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 83613481Sgiacomo.travaglini@arm.com static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), 83713481Sgiacomo.travaglini@arm.com static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), 83813481Sgiacomo.travaglini@arm.com static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), 83913481Sgiacomo.travaglini@arm.com static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), 84013481Sgiacomo.travaglini@arm.com static_cast<T>(v21_), static_cast<T>(v22_)}; 84113481Sgiacomo.travaglini@arm.com return ValuesIn(array); 84213481Sgiacomo.travaglini@arm.com } 84313481Sgiacomo.travaglini@arm.com 84413481Sgiacomo.travaglini@arm.com private: 84513481Sgiacomo.travaglini@arm.com // No implementation - assignment is unsupported. 84613481Sgiacomo.travaglini@arm.com void operator=(const ValueArray22& other); 84713481Sgiacomo.travaglini@arm.com 84813481Sgiacomo.travaglini@arm.com const T1 v1_; 84913481Sgiacomo.travaglini@arm.com const T2 v2_; 85013481Sgiacomo.travaglini@arm.com const T3 v3_; 85113481Sgiacomo.travaglini@arm.com const T4 v4_; 85213481Sgiacomo.travaglini@arm.com const T5 v5_; 85313481Sgiacomo.travaglini@arm.com const T6 v6_; 85413481Sgiacomo.travaglini@arm.com const T7 v7_; 85513481Sgiacomo.travaglini@arm.com const T8 v8_; 85613481Sgiacomo.travaglini@arm.com const T9 v9_; 85713481Sgiacomo.travaglini@arm.com const T10 v10_; 85813481Sgiacomo.travaglini@arm.com const T11 v11_; 85913481Sgiacomo.travaglini@arm.com const T12 v12_; 86013481Sgiacomo.travaglini@arm.com const T13 v13_; 86113481Sgiacomo.travaglini@arm.com const T14 v14_; 86213481Sgiacomo.travaglini@arm.com const T15 v15_; 86313481Sgiacomo.travaglini@arm.com const T16 v16_; 86413481Sgiacomo.travaglini@arm.com const T17 v17_; 86513481Sgiacomo.travaglini@arm.com const T18 v18_; 86613481Sgiacomo.travaglini@arm.com const T19 v19_; 86713481Sgiacomo.travaglini@arm.com const T20 v20_; 86813481Sgiacomo.travaglini@arm.com const T21 v21_; 86913481Sgiacomo.travaglini@arm.com const T22 v22_; 87013481Sgiacomo.travaglini@arm.com}; 87113481Sgiacomo.travaglini@arm.com 87213481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 87313481Sgiacomo.travaglini@arm.com typename T6, typename T7, typename T8, typename T9, typename T10, 87413481Sgiacomo.travaglini@arm.com typename T11, typename T12, typename T13, typename T14, typename T15, 87513481Sgiacomo.travaglini@arm.com typename T16, typename T17, typename T18, typename T19, typename T20, 87613481Sgiacomo.travaglini@arm.com typename T21, typename T22, typename T23> 87713481Sgiacomo.travaglini@arm.comclass ValueArray23 { 87813481Sgiacomo.travaglini@arm.com public: 87913481Sgiacomo.travaglini@arm.com ValueArray23(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 88013481Sgiacomo.travaglini@arm.com T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 88113481Sgiacomo.travaglini@arm.com T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23) : v1_(v1), v2_(v2), 88213481Sgiacomo.travaglini@arm.com v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), 88313481Sgiacomo.travaglini@arm.com v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), 88413481Sgiacomo.travaglini@arm.com v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), 88513481Sgiacomo.travaglini@arm.com v23_(v23) {} 88613481Sgiacomo.travaglini@arm.com 88713481Sgiacomo.travaglini@arm.com template <typename T> 88813481Sgiacomo.travaglini@arm.com operator ParamGenerator<T>() const { 88913481Sgiacomo.travaglini@arm.com const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 89013481Sgiacomo.travaglini@arm.com static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 89113481Sgiacomo.travaglini@arm.com static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 89213481Sgiacomo.travaglini@arm.com static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), 89313481Sgiacomo.travaglini@arm.com static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), 89413481Sgiacomo.travaglini@arm.com static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), 89513481Sgiacomo.travaglini@arm.com static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), 89613481Sgiacomo.travaglini@arm.com static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_)}; 89713481Sgiacomo.travaglini@arm.com return ValuesIn(array); 89813481Sgiacomo.travaglini@arm.com } 89913481Sgiacomo.travaglini@arm.com 90013481Sgiacomo.travaglini@arm.com private: 90113481Sgiacomo.travaglini@arm.com // No implementation - assignment is unsupported. 90213481Sgiacomo.travaglini@arm.com void operator=(const ValueArray23& other); 90313481Sgiacomo.travaglini@arm.com 90413481Sgiacomo.travaglini@arm.com const T1 v1_; 90513481Sgiacomo.travaglini@arm.com const T2 v2_; 90613481Sgiacomo.travaglini@arm.com const T3 v3_; 90713481Sgiacomo.travaglini@arm.com const T4 v4_; 90813481Sgiacomo.travaglini@arm.com const T5 v5_; 90913481Sgiacomo.travaglini@arm.com const T6 v6_; 91013481Sgiacomo.travaglini@arm.com const T7 v7_; 91113481Sgiacomo.travaglini@arm.com const T8 v8_; 91213481Sgiacomo.travaglini@arm.com const T9 v9_; 91313481Sgiacomo.travaglini@arm.com const T10 v10_; 91413481Sgiacomo.travaglini@arm.com const T11 v11_; 91513481Sgiacomo.travaglini@arm.com const T12 v12_; 91613481Sgiacomo.travaglini@arm.com const T13 v13_; 91713481Sgiacomo.travaglini@arm.com const T14 v14_; 91813481Sgiacomo.travaglini@arm.com const T15 v15_; 91913481Sgiacomo.travaglini@arm.com const T16 v16_; 92013481Sgiacomo.travaglini@arm.com const T17 v17_; 92113481Sgiacomo.travaglini@arm.com const T18 v18_; 92213481Sgiacomo.travaglini@arm.com const T19 v19_; 92313481Sgiacomo.travaglini@arm.com const T20 v20_; 92413481Sgiacomo.travaglini@arm.com const T21 v21_; 92513481Sgiacomo.travaglini@arm.com const T22 v22_; 92613481Sgiacomo.travaglini@arm.com const T23 v23_; 92713481Sgiacomo.travaglini@arm.com}; 92813481Sgiacomo.travaglini@arm.com 92913481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 93013481Sgiacomo.travaglini@arm.com typename T6, typename T7, typename T8, typename T9, typename T10, 93113481Sgiacomo.travaglini@arm.com typename T11, typename T12, typename T13, typename T14, typename T15, 93213481Sgiacomo.travaglini@arm.com typename T16, typename T17, typename T18, typename T19, typename T20, 93313481Sgiacomo.travaglini@arm.com typename T21, typename T22, typename T23, typename T24> 93413481Sgiacomo.travaglini@arm.comclass ValueArray24 { 93513481Sgiacomo.travaglini@arm.com public: 93613481Sgiacomo.travaglini@arm.com ValueArray24(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 93713481Sgiacomo.travaglini@arm.com T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 93813481Sgiacomo.travaglini@arm.com T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24) : v1_(v1), 93913481Sgiacomo.travaglini@arm.com v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), 94013481Sgiacomo.travaglini@arm.com v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), 94113481Sgiacomo.travaglini@arm.com v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), 94213481Sgiacomo.travaglini@arm.com v22_(v22), v23_(v23), v24_(v24) {} 94313481Sgiacomo.travaglini@arm.com 94413481Sgiacomo.travaglini@arm.com template <typename T> 94513481Sgiacomo.travaglini@arm.com operator ParamGenerator<T>() const { 94613481Sgiacomo.travaglini@arm.com const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 94713481Sgiacomo.travaglini@arm.com static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 94813481Sgiacomo.travaglini@arm.com static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 94913481Sgiacomo.travaglini@arm.com static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), 95013481Sgiacomo.travaglini@arm.com static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), 95113481Sgiacomo.travaglini@arm.com static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), 95213481Sgiacomo.travaglini@arm.com static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), 95313481Sgiacomo.travaglini@arm.com static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), 95413481Sgiacomo.travaglini@arm.com static_cast<T>(v24_)}; 95513481Sgiacomo.travaglini@arm.com return ValuesIn(array); 95613481Sgiacomo.travaglini@arm.com } 95713481Sgiacomo.travaglini@arm.com 95813481Sgiacomo.travaglini@arm.com private: 95913481Sgiacomo.travaglini@arm.com // No implementation - assignment is unsupported. 96013481Sgiacomo.travaglini@arm.com void operator=(const ValueArray24& other); 96113481Sgiacomo.travaglini@arm.com 96213481Sgiacomo.travaglini@arm.com const T1 v1_; 96313481Sgiacomo.travaglini@arm.com const T2 v2_; 96413481Sgiacomo.travaglini@arm.com const T3 v3_; 96513481Sgiacomo.travaglini@arm.com const T4 v4_; 96613481Sgiacomo.travaglini@arm.com const T5 v5_; 96713481Sgiacomo.travaglini@arm.com const T6 v6_; 96813481Sgiacomo.travaglini@arm.com const T7 v7_; 96913481Sgiacomo.travaglini@arm.com const T8 v8_; 97013481Sgiacomo.travaglini@arm.com const T9 v9_; 97113481Sgiacomo.travaglini@arm.com const T10 v10_; 97213481Sgiacomo.travaglini@arm.com const T11 v11_; 97313481Sgiacomo.travaglini@arm.com const T12 v12_; 97413481Sgiacomo.travaglini@arm.com const T13 v13_; 97513481Sgiacomo.travaglini@arm.com const T14 v14_; 97613481Sgiacomo.travaglini@arm.com const T15 v15_; 97713481Sgiacomo.travaglini@arm.com const T16 v16_; 97813481Sgiacomo.travaglini@arm.com const T17 v17_; 97913481Sgiacomo.travaglini@arm.com const T18 v18_; 98013481Sgiacomo.travaglini@arm.com const T19 v19_; 98113481Sgiacomo.travaglini@arm.com const T20 v20_; 98213481Sgiacomo.travaglini@arm.com const T21 v21_; 98313481Sgiacomo.travaglini@arm.com const T22 v22_; 98413481Sgiacomo.travaglini@arm.com const T23 v23_; 98513481Sgiacomo.travaglini@arm.com const T24 v24_; 98613481Sgiacomo.travaglini@arm.com}; 98713481Sgiacomo.travaglini@arm.com 98813481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 98913481Sgiacomo.travaglini@arm.com typename T6, typename T7, typename T8, typename T9, typename T10, 99013481Sgiacomo.travaglini@arm.com typename T11, typename T12, typename T13, typename T14, typename T15, 99113481Sgiacomo.travaglini@arm.com typename T16, typename T17, typename T18, typename T19, typename T20, 99213481Sgiacomo.travaglini@arm.com typename T21, typename T22, typename T23, typename T24, typename T25> 99313481Sgiacomo.travaglini@arm.comclass ValueArray25 { 99413481Sgiacomo.travaglini@arm.com public: 99513481Sgiacomo.travaglini@arm.com ValueArray25(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 99613481Sgiacomo.travaglini@arm.com T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 99713481Sgiacomo.travaglini@arm.com T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, 99813481Sgiacomo.travaglini@arm.com T25 v25) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), 99913481Sgiacomo.travaglini@arm.com v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), 100013481Sgiacomo.travaglini@arm.com v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), 100113481Sgiacomo.travaglini@arm.com v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25) {} 100213481Sgiacomo.travaglini@arm.com 100313481Sgiacomo.travaglini@arm.com template <typename T> 100413481Sgiacomo.travaglini@arm.com operator ParamGenerator<T>() const { 100513481Sgiacomo.travaglini@arm.com const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 100613481Sgiacomo.travaglini@arm.com static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 100713481Sgiacomo.travaglini@arm.com static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 100813481Sgiacomo.travaglini@arm.com static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), 100913481Sgiacomo.travaglini@arm.com static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), 101013481Sgiacomo.travaglini@arm.com static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), 101113481Sgiacomo.travaglini@arm.com static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), 101213481Sgiacomo.travaglini@arm.com static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), 101313481Sgiacomo.travaglini@arm.com static_cast<T>(v24_), static_cast<T>(v25_)}; 101413481Sgiacomo.travaglini@arm.com return ValuesIn(array); 101513481Sgiacomo.travaglini@arm.com } 101613481Sgiacomo.travaglini@arm.com 101713481Sgiacomo.travaglini@arm.com private: 101813481Sgiacomo.travaglini@arm.com // No implementation - assignment is unsupported. 101913481Sgiacomo.travaglini@arm.com void operator=(const ValueArray25& other); 102013481Sgiacomo.travaglini@arm.com 102113481Sgiacomo.travaglini@arm.com const T1 v1_; 102213481Sgiacomo.travaglini@arm.com const T2 v2_; 102313481Sgiacomo.travaglini@arm.com const T3 v3_; 102413481Sgiacomo.travaglini@arm.com const T4 v4_; 102513481Sgiacomo.travaglini@arm.com const T5 v5_; 102613481Sgiacomo.travaglini@arm.com const T6 v6_; 102713481Sgiacomo.travaglini@arm.com const T7 v7_; 102813481Sgiacomo.travaglini@arm.com const T8 v8_; 102913481Sgiacomo.travaglini@arm.com const T9 v9_; 103013481Sgiacomo.travaglini@arm.com const T10 v10_; 103113481Sgiacomo.travaglini@arm.com const T11 v11_; 103213481Sgiacomo.travaglini@arm.com const T12 v12_; 103313481Sgiacomo.travaglini@arm.com const T13 v13_; 103413481Sgiacomo.travaglini@arm.com const T14 v14_; 103513481Sgiacomo.travaglini@arm.com const T15 v15_; 103613481Sgiacomo.travaglini@arm.com const T16 v16_; 103713481Sgiacomo.travaglini@arm.com const T17 v17_; 103813481Sgiacomo.travaglini@arm.com const T18 v18_; 103913481Sgiacomo.travaglini@arm.com const T19 v19_; 104013481Sgiacomo.travaglini@arm.com const T20 v20_; 104113481Sgiacomo.travaglini@arm.com const T21 v21_; 104213481Sgiacomo.travaglini@arm.com const T22 v22_; 104313481Sgiacomo.travaglini@arm.com const T23 v23_; 104413481Sgiacomo.travaglini@arm.com const T24 v24_; 104513481Sgiacomo.travaglini@arm.com const T25 v25_; 104613481Sgiacomo.travaglini@arm.com}; 104713481Sgiacomo.travaglini@arm.com 104813481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 104913481Sgiacomo.travaglini@arm.com typename T6, typename T7, typename T8, typename T9, typename T10, 105013481Sgiacomo.travaglini@arm.com typename T11, typename T12, typename T13, typename T14, typename T15, 105113481Sgiacomo.travaglini@arm.com typename T16, typename T17, typename T18, typename T19, typename T20, 105213481Sgiacomo.travaglini@arm.com typename T21, typename T22, typename T23, typename T24, typename T25, 105313481Sgiacomo.travaglini@arm.com typename T26> 105413481Sgiacomo.travaglini@arm.comclass ValueArray26 { 105513481Sgiacomo.travaglini@arm.com public: 105613481Sgiacomo.travaglini@arm.com ValueArray26(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 105713481Sgiacomo.travaglini@arm.com T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 105813481Sgiacomo.travaglini@arm.com T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 105913481Sgiacomo.travaglini@arm.com T26 v26) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), 106013481Sgiacomo.travaglini@arm.com v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), 106113481Sgiacomo.travaglini@arm.com v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), 106213481Sgiacomo.travaglini@arm.com v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26) {} 106313481Sgiacomo.travaglini@arm.com 106413481Sgiacomo.travaglini@arm.com template <typename T> 106513481Sgiacomo.travaglini@arm.com operator ParamGenerator<T>() const { 106613481Sgiacomo.travaglini@arm.com const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 106713481Sgiacomo.travaglini@arm.com static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 106813481Sgiacomo.travaglini@arm.com static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 106913481Sgiacomo.travaglini@arm.com static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), 107013481Sgiacomo.travaglini@arm.com static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), 107113481Sgiacomo.travaglini@arm.com static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), 107213481Sgiacomo.travaglini@arm.com static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), 107313481Sgiacomo.travaglini@arm.com static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), 107413481Sgiacomo.travaglini@arm.com static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_)}; 107513481Sgiacomo.travaglini@arm.com return ValuesIn(array); 107613481Sgiacomo.travaglini@arm.com } 107713481Sgiacomo.travaglini@arm.com 107813481Sgiacomo.travaglini@arm.com private: 107913481Sgiacomo.travaglini@arm.com // No implementation - assignment is unsupported. 108013481Sgiacomo.travaglini@arm.com void operator=(const ValueArray26& other); 108113481Sgiacomo.travaglini@arm.com 108213481Sgiacomo.travaglini@arm.com const T1 v1_; 108313481Sgiacomo.travaglini@arm.com const T2 v2_; 108413481Sgiacomo.travaglini@arm.com const T3 v3_; 108513481Sgiacomo.travaglini@arm.com const T4 v4_; 108613481Sgiacomo.travaglini@arm.com const T5 v5_; 108713481Sgiacomo.travaglini@arm.com const T6 v6_; 108813481Sgiacomo.travaglini@arm.com const T7 v7_; 108913481Sgiacomo.travaglini@arm.com const T8 v8_; 109013481Sgiacomo.travaglini@arm.com const T9 v9_; 109113481Sgiacomo.travaglini@arm.com const T10 v10_; 109213481Sgiacomo.travaglini@arm.com const T11 v11_; 109313481Sgiacomo.travaglini@arm.com const T12 v12_; 109413481Sgiacomo.travaglini@arm.com const T13 v13_; 109513481Sgiacomo.travaglini@arm.com const T14 v14_; 109613481Sgiacomo.travaglini@arm.com const T15 v15_; 109713481Sgiacomo.travaglini@arm.com const T16 v16_; 109813481Sgiacomo.travaglini@arm.com const T17 v17_; 109913481Sgiacomo.travaglini@arm.com const T18 v18_; 110013481Sgiacomo.travaglini@arm.com const T19 v19_; 110113481Sgiacomo.travaglini@arm.com const T20 v20_; 110213481Sgiacomo.travaglini@arm.com const T21 v21_; 110313481Sgiacomo.travaglini@arm.com const T22 v22_; 110413481Sgiacomo.travaglini@arm.com const T23 v23_; 110513481Sgiacomo.travaglini@arm.com const T24 v24_; 110613481Sgiacomo.travaglini@arm.com const T25 v25_; 110713481Sgiacomo.travaglini@arm.com const T26 v26_; 110813481Sgiacomo.travaglini@arm.com}; 110913481Sgiacomo.travaglini@arm.com 111013481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 111113481Sgiacomo.travaglini@arm.com typename T6, typename T7, typename T8, typename T9, typename T10, 111213481Sgiacomo.travaglini@arm.com typename T11, typename T12, typename T13, typename T14, typename T15, 111313481Sgiacomo.travaglini@arm.com typename T16, typename T17, typename T18, typename T19, typename T20, 111413481Sgiacomo.travaglini@arm.com typename T21, typename T22, typename T23, typename T24, typename T25, 111513481Sgiacomo.travaglini@arm.com typename T26, typename T27> 111613481Sgiacomo.travaglini@arm.comclass ValueArray27 { 111713481Sgiacomo.travaglini@arm.com public: 111813481Sgiacomo.travaglini@arm.com ValueArray27(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 111913481Sgiacomo.travaglini@arm.com T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 112013481Sgiacomo.travaglini@arm.com T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 112113481Sgiacomo.travaglini@arm.com T26 v26, T27 v27) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), 112213481Sgiacomo.travaglini@arm.com v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), 112313481Sgiacomo.travaglini@arm.com v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), 112413481Sgiacomo.travaglini@arm.com v20_(v20), v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), 112513481Sgiacomo.travaglini@arm.com v26_(v26), v27_(v27) {} 112613481Sgiacomo.travaglini@arm.com 112713481Sgiacomo.travaglini@arm.com template <typename T> 112813481Sgiacomo.travaglini@arm.com operator ParamGenerator<T>() const { 112913481Sgiacomo.travaglini@arm.com const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 113013481Sgiacomo.travaglini@arm.com static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 113113481Sgiacomo.travaglini@arm.com static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 113213481Sgiacomo.travaglini@arm.com static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), 113313481Sgiacomo.travaglini@arm.com static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), 113413481Sgiacomo.travaglini@arm.com static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), 113513481Sgiacomo.travaglini@arm.com static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), 113613481Sgiacomo.travaglini@arm.com static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), 113713481Sgiacomo.travaglini@arm.com static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_), 113813481Sgiacomo.travaglini@arm.com static_cast<T>(v27_)}; 113913481Sgiacomo.travaglini@arm.com return ValuesIn(array); 114013481Sgiacomo.travaglini@arm.com } 114113481Sgiacomo.travaglini@arm.com 114213481Sgiacomo.travaglini@arm.com private: 114313481Sgiacomo.travaglini@arm.com // No implementation - assignment is unsupported. 114413481Sgiacomo.travaglini@arm.com void operator=(const ValueArray27& other); 114513481Sgiacomo.travaglini@arm.com 114613481Sgiacomo.travaglini@arm.com const T1 v1_; 114713481Sgiacomo.travaglini@arm.com const T2 v2_; 114813481Sgiacomo.travaglini@arm.com const T3 v3_; 114913481Sgiacomo.travaglini@arm.com const T4 v4_; 115013481Sgiacomo.travaglini@arm.com const T5 v5_; 115113481Sgiacomo.travaglini@arm.com const T6 v6_; 115213481Sgiacomo.travaglini@arm.com const T7 v7_; 115313481Sgiacomo.travaglini@arm.com const T8 v8_; 115413481Sgiacomo.travaglini@arm.com const T9 v9_; 115513481Sgiacomo.travaglini@arm.com const T10 v10_; 115613481Sgiacomo.travaglini@arm.com const T11 v11_; 115713481Sgiacomo.travaglini@arm.com const T12 v12_; 115813481Sgiacomo.travaglini@arm.com const T13 v13_; 115913481Sgiacomo.travaglini@arm.com const T14 v14_; 116013481Sgiacomo.travaglini@arm.com const T15 v15_; 116113481Sgiacomo.travaglini@arm.com const T16 v16_; 116213481Sgiacomo.travaglini@arm.com const T17 v17_; 116313481Sgiacomo.travaglini@arm.com const T18 v18_; 116413481Sgiacomo.travaglini@arm.com const T19 v19_; 116513481Sgiacomo.travaglini@arm.com const T20 v20_; 116613481Sgiacomo.travaglini@arm.com const T21 v21_; 116713481Sgiacomo.travaglini@arm.com const T22 v22_; 116813481Sgiacomo.travaglini@arm.com const T23 v23_; 116913481Sgiacomo.travaglini@arm.com const T24 v24_; 117013481Sgiacomo.travaglini@arm.com const T25 v25_; 117113481Sgiacomo.travaglini@arm.com const T26 v26_; 117213481Sgiacomo.travaglini@arm.com const T27 v27_; 117313481Sgiacomo.travaglini@arm.com}; 117413481Sgiacomo.travaglini@arm.com 117513481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 117613481Sgiacomo.travaglini@arm.com typename T6, typename T7, typename T8, typename T9, typename T10, 117713481Sgiacomo.travaglini@arm.com typename T11, typename T12, typename T13, typename T14, typename T15, 117813481Sgiacomo.travaglini@arm.com typename T16, typename T17, typename T18, typename T19, typename T20, 117913481Sgiacomo.travaglini@arm.com typename T21, typename T22, typename T23, typename T24, typename T25, 118013481Sgiacomo.travaglini@arm.com typename T26, typename T27, typename T28> 118113481Sgiacomo.travaglini@arm.comclass ValueArray28 { 118213481Sgiacomo.travaglini@arm.com public: 118313481Sgiacomo.travaglini@arm.com ValueArray28(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 118413481Sgiacomo.travaglini@arm.com T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 118513481Sgiacomo.travaglini@arm.com T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 118613481Sgiacomo.travaglini@arm.com T26 v26, T27 v27, T28 v28) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), 118713481Sgiacomo.travaglini@arm.com v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), 118813481Sgiacomo.travaglini@arm.com v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18), 118913481Sgiacomo.travaglini@arm.com v19_(v19), v20_(v20), v21_(v21), v22_(v22), v23_(v23), v24_(v24), 119013481Sgiacomo.travaglini@arm.com v25_(v25), v26_(v26), v27_(v27), v28_(v28) {} 119113481Sgiacomo.travaglini@arm.com 119213481Sgiacomo.travaglini@arm.com template <typename T> 119313481Sgiacomo.travaglini@arm.com operator ParamGenerator<T>() const { 119413481Sgiacomo.travaglini@arm.com const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 119513481Sgiacomo.travaglini@arm.com static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 119613481Sgiacomo.travaglini@arm.com static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 119713481Sgiacomo.travaglini@arm.com static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), 119813481Sgiacomo.travaglini@arm.com static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), 119913481Sgiacomo.travaglini@arm.com static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), 120013481Sgiacomo.travaglini@arm.com static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), 120113481Sgiacomo.travaglini@arm.com static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), 120213481Sgiacomo.travaglini@arm.com static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_), 120313481Sgiacomo.travaglini@arm.com static_cast<T>(v27_), static_cast<T>(v28_)}; 120413481Sgiacomo.travaglini@arm.com return ValuesIn(array); 120513481Sgiacomo.travaglini@arm.com } 120613481Sgiacomo.travaglini@arm.com 120713481Sgiacomo.travaglini@arm.com private: 120813481Sgiacomo.travaglini@arm.com // No implementation - assignment is unsupported. 120913481Sgiacomo.travaglini@arm.com void operator=(const ValueArray28& other); 121013481Sgiacomo.travaglini@arm.com 121113481Sgiacomo.travaglini@arm.com const T1 v1_; 121213481Sgiacomo.travaglini@arm.com const T2 v2_; 121313481Sgiacomo.travaglini@arm.com const T3 v3_; 121413481Sgiacomo.travaglini@arm.com const T4 v4_; 121513481Sgiacomo.travaglini@arm.com const T5 v5_; 121613481Sgiacomo.travaglini@arm.com const T6 v6_; 121713481Sgiacomo.travaglini@arm.com const T7 v7_; 121813481Sgiacomo.travaglini@arm.com const T8 v8_; 121913481Sgiacomo.travaglini@arm.com const T9 v9_; 122013481Sgiacomo.travaglini@arm.com const T10 v10_; 122113481Sgiacomo.travaglini@arm.com const T11 v11_; 122213481Sgiacomo.travaglini@arm.com const T12 v12_; 122313481Sgiacomo.travaglini@arm.com const T13 v13_; 122413481Sgiacomo.travaglini@arm.com const T14 v14_; 122513481Sgiacomo.travaglini@arm.com const T15 v15_; 122613481Sgiacomo.travaglini@arm.com const T16 v16_; 122713481Sgiacomo.travaglini@arm.com const T17 v17_; 122813481Sgiacomo.travaglini@arm.com const T18 v18_; 122913481Sgiacomo.travaglini@arm.com const T19 v19_; 123013481Sgiacomo.travaglini@arm.com const T20 v20_; 123113481Sgiacomo.travaglini@arm.com const T21 v21_; 123213481Sgiacomo.travaglini@arm.com const T22 v22_; 123313481Sgiacomo.travaglini@arm.com const T23 v23_; 123413481Sgiacomo.travaglini@arm.com const T24 v24_; 123513481Sgiacomo.travaglini@arm.com const T25 v25_; 123613481Sgiacomo.travaglini@arm.com const T26 v26_; 123713481Sgiacomo.travaglini@arm.com const T27 v27_; 123813481Sgiacomo.travaglini@arm.com const T28 v28_; 123913481Sgiacomo.travaglini@arm.com}; 124013481Sgiacomo.travaglini@arm.com 124113481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 124213481Sgiacomo.travaglini@arm.com typename T6, typename T7, typename T8, typename T9, typename T10, 124313481Sgiacomo.travaglini@arm.com typename T11, typename T12, typename T13, typename T14, typename T15, 124413481Sgiacomo.travaglini@arm.com typename T16, typename T17, typename T18, typename T19, typename T20, 124513481Sgiacomo.travaglini@arm.com typename T21, typename T22, typename T23, typename T24, typename T25, 124613481Sgiacomo.travaglini@arm.com typename T26, typename T27, typename T28, typename T29> 124713481Sgiacomo.travaglini@arm.comclass ValueArray29 { 124813481Sgiacomo.travaglini@arm.com public: 124913481Sgiacomo.travaglini@arm.com ValueArray29(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 125013481Sgiacomo.travaglini@arm.com T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 125113481Sgiacomo.travaglini@arm.com T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 125213481Sgiacomo.travaglini@arm.com T26 v26, T27 v27, T28 v28, T29 v29) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), 125313481Sgiacomo.travaglini@arm.com v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), 125413481Sgiacomo.travaglini@arm.com v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17), 125513481Sgiacomo.travaglini@arm.com v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), v23_(v23), 125613481Sgiacomo.travaglini@arm.com v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28), v29_(v29) {} 125713481Sgiacomo.travaglini@arm.com 125813481Sgiacomo.travaglini@arm.com template <typename T> 125913481Sgiacomo.travaglini@arm.com operator ParamGenerator<T>() const { 126013481Sgiacomo.travaglini@arm.com const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 126113481Sgiacomo.travaglini@arm.com static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 126213481Sgiacomo.travaglini@arm.com static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 126313481Sgiacomo.travaglini@arm.com static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), 126413481Sgiacomo.travaglini@arm.com static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), 126513481Sgiacomo.travaglini@arm.com static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), 126613481Sgiacomo.travaglini@arm.com static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), 126713481Sgiacomo.travaglini@arm.com static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), 126813481Sgiacomo.travaglini@arm.com static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_), 126913481Sgiacomo.travaglini@arm.com static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_)}; 127013481Sgiacomo.travaglini@arm.com return ValuesIn(array); 127113481Sgiacomo.travaglini@arm.com } 127213481Sgiacomo.travaglini@arm.com 127313481Sgiacomo.travaglini@arm.com private: 127413481Sgiacomo.travaglini@arm.com // No implementation - assignment is unsupported. 127513481Sgiacomo.travaglini@arm.com void operator=(const ValueArray29& other); 127613481Sgiacomo.travaglini@arm.com 127713481Sgiacomo.travaglini@arm.com const T1 v1_; 127813481Sgiacomo.travaglini@arm.com const T2 v2_; 127913481Sgiacomo.travaglini@arm.com const T3 v3_; 128013481Sgiacomo.travaglini@arm.com const T4 v4_; 128113481Sgiacomo.travaglini@arm.com const T5 v5_; 128213481Sgiacomo.travaglini@arm.com const T6 v6_; 128313481Sgiacomo.travaglini@arm.com const T7 v7_; 128413481Sgiacomo.travaglini@arm.com const T8 v8_; 128513481Sgiacomo.travaglini@arm.com const T9 v9_; 128613481Sgiacomo.travaglini@arm.com const T10 v10_; 128713481Sgiacomo.travaglini@arm.com const T11 v11_; 128813481Sgiacomo.travaglini@arm.com const T12 v12_; 128913481Sgiacomo.travaglini@arm.com const T13 v13_; 129013481Sgiacomo.travaglini@arm.com const T14 v14_; 129113481Sgiacomo.travaglini@arm.com const T15 v15_; 129213481Sgiacomo.travaglini@arm.com const T16 v16_; 129313481Sgiacomo.travaglini@arm.com const T17 v17_; 129413481Sgiacomo.travaglini@arm.com const T18 v18_; 129513481Sgiacomo.travaglini@arm.com const T19 v19_; 129613481Sgiacomo.travaglini@arm.com const T20 v20_; 129713481Sgiacomo.travaglini@arm.com const T21 v21_; 129813481Sgiacomo.travaglini@arm.com const T22 v22_; 129913481Sgiacomo.travaglini@arm.com const T23 v23_; 130013481Sgiacomo.travaglini@arm.com const T24 v24_; 130113481Sgiacomo.travaglini@arm.com const T25 v25_; 130213481Sgiacomo.travaglini@arm.com const T26 v26_; 130313481Sgiacomo.travaglini@arm.com const T27 v27_; 130413481Sgiacomo.travaglini@arm.com const T28 v28_; 130513481Sgiacomo.travaglini@arm.com const T29 v29_; 130613481Sgiacomo.travaglini@arm.com}; 130713481Sgiacomo.travaglini@arm.com 130813481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 130913481Sgiacomo.travaglini@arm.com typename T6, typename T7, typename T8, typename T9, typename T10, 131013481Sgiacomo.travaglini@arm.com typename T11, typename T12, typename T13, typename T14, typename T15, 131113481Sgiacomo.travaglini@arm.com typename T16, typename T17, typename T18, typename T19, typename T20, 131213481Sgiacomo.travaglini@arm.com typename T21, typename T22, typename T23, typename T24, typename T25, 131313481Sgiacomo.travaglini@arm.com typename T26, typename T27, typename T28, typename T29, typename T30> 131413481Sgiacomo.travaglini@arm.comclass ValueArray30 { 131513481Sgiacomo.travaglini@arm.com public: 131613481Sgiacomo.travaglini@arm.com ValueArray30(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 131713481Sgiacomo.travaglini@arm.com T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 131813481Sgiacomo.travaglini@arm.com T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 131913481Sgiacomo.travaglini@arm.com T26 v26, T27 v27, T28 v28, T29 v29, T30 v30) : v1_(v1), v2_(v2), v3_(v3), 132013481Sgiacomo.travaglini@arm.com v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), 132113481Sgiacomo.travaglini@arm.com v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), 132213481Sgiacomo.travaglini@arm.com v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), 132313481Sgiacomo.travaglini@arm.com v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28), 132413481Sgiacomo.travaglini@arm.com v29_(v29), v30_(v30) {} 132513481Sgiacomo.travaglini@arm.com 132613481Sgiacomo.travaglini@arm.com template <typename T> 132713481Sgiacomo.travaglini@arm.com operator ParamGenerator<T>() const { 132813481Sgiacomo.travaglini@arm.com const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 132913481Sgiacomo.travaglini@arm.com static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 133013481Sgiacomo.travaglini@arm.com static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 133113481Sgiacomo.travaglini@arm.com static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), 133213481Sgiacomo.travaglini@arm.com static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), 133313481Sgiacomo.travaglini@arm.com static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), 133413481Sgiacomo.travaglini@arm.com static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), 133513481Sgiacomo.travaglini@arm.com static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), 133613481Sgiacomo.travaglini@arm.com static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_), 133713481Sgiacomo.travaglini@arm.com static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_), 133813481Sgiacomo.travaglini@arm.com static_cast<T>(v30_)}; 133913481Sgiacomo.travaglini@arm.com return ValuesIn(array); 134013481Sgiacomo.travaglini@arm.com } 134113481Sgiacomo.travaglini@arm.com 134213481Sgiacomo.travaglini@arm.com private: 134313481Sgiacomo.travaglini@arm.com // No implementation - assignment is unsupported. 134413481Sgiacomo.travaglini@arm.com void operator=(const ValueArray30& other); 134513481Sgiacomo.travaglini@arm.com 134613481Sgiacomo.travaglini@arm.com const T1 v1_; 134713481Sgiacomo.travaglini@arm.com const T2 v2_; 134813481Sgiacomo.travaglini@arm.com const T3 v3_; 134913481Sgiacomo.travaglini@arm.com const T4 v4_; 135013481Sgiacomo.travaglini@arm.com const T5 v5_; 135113481Sgiacomo.travaglini@arm.com const T6 v6_; 135213481Sgiacomo.travaglini@arm.com const T7 v7_; 135313481Sgiacomo.travaglini@arm.com const T8 v8_; 135413481Sgiacomo.travaglini@arm.com const T9 v9_; 135513481Sgiacomo.travaglini@arm.com const T10 v10_; 135613481Sgiacomo.travaglini@arm.com const T11 v11_; 135713481Sgiacomo.travaglini@arm.com const T12 v12_; 135813481Sgiacomo.travaglini@arm.com const T13 v13_; 135913481Sgiacomo.travaglini@arm.com const T14 v14_; 136013481Sgiacomo.travaglini@arm.com const T15 v15_; 136113481Sgiacomo.travaglini@arm.com const T16 v16_; 136213481Sgiacomo.travaglini@arm.com const T17 v17_; 136313481Sgiacomo.travaglini@arm.com const T18 v18_; 136413481Sgiacomo.travaglini@arm.com const T19 v19_; 136513481Sgiacomo.travaglini@arm.com const T20 v20_; 136613481Sgiacomo.travaglini@arm.com const T21 v21_; 136713481Sgiacomo.travaglini@arm.com const T22 v22_; 136813481Sgiacomo.travaglini@arm.com const T23 v23_; 136913481Sgiacomo.travaglini@arm.com const T24 v24_; 137013481Sgiacomo.travaglini@arm.com const T25 v25_; 137113481Sgiacomo.travaglini@arm.com const T26 v26_; 137213481Sgiacomo.travaglini@arm.com const T27 v27_; 137313481Sgiacomo.travaglini@arm.com const T28 v28_; 137413481Sgiacomo.travaglini@arm.com const T29 v29_; 137513481Sgiacomo.travaglini@arm.com const T30 v30_; 137613481Sgiacomo.travaglini@arm.com}; 137713481Sgiacomo.travaglini@arm.com 137813481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 137913481Sgiacomo.travaglini@arm.com typename T6, typename T7, typename T8, typename T9, typename T10, 138013481Sgiacomo.travaglini@arm.com typename T11, typename T12, typename T13, typename T14, typename T15, 138113481Sgiacomo.travaglini@arm.com typename T16, typename T17, typename T18, typename T19, typename T20, 138213481Sgiacomo.travaglini@arm.com typename T21, typename T22, typename T23, typename T24, typename T25, 138313481Sgiacomo.travaglini@arm.com typename T26, typename T27, typename T28, typename T29, typename T30, 138413481Sgiacomo.travaglini@arm.com typename T31> 138513481Sgiacomo.travaglini@arm.comclass ValueArray31 { 138613481Sgiacomo.travaglini@arm.com public: 138713481Sgiacomo.travaglini@arm.com ValueArray31(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 138813481Sgiacomo.travaglini@arm.com T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 138913481Sgiacomo.travaglini@arm.com T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 139013481Sgiacomo.travaglini@arm.com T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31) : v1_(v1), v2_(v2), 139113481Sgiacomo.travaglini@arm.com v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), 139213481Sgiacomo.travaglini@arm.com v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), 139313481Sgiacomo.travaglini@arm.com v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), 139413481Sgiacomo.travaglini@arm.com v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28), 139513481Sgiacomo.travaglini@arm.com v29_(v29), v30_(v30), v31_(v31) {} 139613481Sgiacomo.travaglini@arm.com 139713481Sgiacomo.travaglini@arm.com template <typename T> 139813481Sgiacomo.travaglini@arm.com operator ParamGenerator<T>() const { 139913481Sgiacomo.travaglini@arm.com const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 140013481Sgiacomo.travaglini@arm.com static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 140113481Sgiacomo.travaglini@arm.com static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 140213481Sgiacomo.travaglini@arm.com static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), 140313481Sgiacomo.travaglini@arm.com static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), 140413481Sgiacomo.travaglini@arm.com static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), 140513481Sgiacomo.travaglini@arm.com static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), 140613481Sgiacomo.travaglini@arm.com static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), 140713481Sgiacomo.travaglini@arm.com static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_), 140813481Sgiacomo.travaglini@arm.com static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_), 140913481Sgiacomo.travaglini@arm.com static_cast<T>(v30_), static_cast<T>(v31_)}; 141013481Sgiacomo.travaglini@arm.com return ValuesIn(array); 141113481Sgiacomo.travaglini@arm.com } 141213481Sgiacomo.travaglini@arm.com 141313481Sgiacomo.travaglini@arm.com private: 141413481Sgiacomo.travaglini@arm.com // No implementation - assignment is unsupported. 141513481Sgiacomo.travaglini@arm.com void operator=(const ValueArray31& other); 141613481Sgiacomo.travaglini@arm.com 141713481Sgiacomo.travaglini@arm.com const T1 v1_; 141813481Sgiacomo.travaglini@arm.com const T2 v2_; 141913481Sgiacomo.travaglini@arm.com const T3 v3_; 142013481Sgiacomo.travaglini@arm.com const T4 v4_; 142113481Sgiacomo.travaglini@arm.com const T5 v5_; 142213481Sgiacomo.travaglini@arm.com const T6 v6_; 142313481Sgiacomo.travaglini@arm.com const T7 v7_; 142413481Sgiacomo.travaglini@arm.com const T8 v8_; 142513481Sgiacomo.travaglini@arm.com const T9 v9_; 142613481Sgiacomo.travaglini@arm.com const T10 v10_; 142713481Sgiacomo.travaglini@arm.com const T11 v11_; 142813481Sgiacomo.travaglini@arm.com const T12 v12_; 142913481Sgiacomo.travaglini@arm.com const T13 v13_; 143013481Sgiacomo.travaglini@arm.com const T14 v14_; 143113481Sgiacomo.travaglini@arm.com const T15 v15_; 143213481Sgiacomo.travaglini@arm.com const T16 v16_; 143313481Sgiacomo.travaglini@arm.com const T17 v17_; 143413481Sgiacomo.travaglini@arm.com const T18 v18_; 143513481Sgiacomo.travaglini@arm.com const T19 v19_; 143613481Sgiacomo.travaglini@arm.com const T20 v20_; 143713481Sgiacomo.travaglini@arm.com const T21 v21_; 143813481Sgiacomo.travaglini@arm.com const T22 v22_; 143913481Sgiacomo.travaglini@arm.com const T23 v23_; 144013481Sgiacomo.travaglini@arm.com const T24 v24_; 144113481Sgiacomo.travaglini@arm.com const T25 v25_; 144213481Sgiacomo.travaglini@arm.com const T26 v26_; 144313481Sgiacomo.travaglini@arm.com const T27 v27_; 144413481Sgiacomo.travaglini@arm.com const T28 v28_; 144513481Sgiacomo.travaglini@arm.com const T29 v29_; 144613481Sgiacomo.travaglini@arm.com const T30 v30_; 144713481Sgiacomo.travaglini@arm.com const T31 v31_; 144813481Sgiacomo.travaglini@arm.com}; 144913481Sgiacomo.travaglini@arm.com 145013481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 145113481Sgiacomo.travaglini@arm.com typename T6, typename T7, typename T8, typename T9, typename T10, 145213481Sgiacomo.travaglini@arm.com typename T11, typename T12, typename T13, typename T14, typename T15, 145313481Sgiacomo.travaglini@arm.com typename T16, typename T17, typename T18, typename T19, typename T20, 145413481Sgiacomo.travaglini@arm.com typename T21, typename T22, typename T23, typename T24, typename T25, 145513481Sgiacomo.travaglini@arm.com typename T26, typename T27, typename T28, typename T29, typename T30, 145613481Sgiacomo.travaglini@arm.com typename T31, typename T32> 145713481Sgiacomo.travaglini@arm.comclass ValueArray32 { 145813481Sgiacomo.travaglini@arm.com public: 145913481Sgiacomo.travaglini@arm.com ValueArray32(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 146013481Sgiacomo.travaglini@arm.com T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 146113481Sgiacomo.travaglini@arm.com T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 146213481Sgiacomo.travaglini@arm.com T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32) : v1_(v1), 146313481Sgiacomo.travaglini@arm.com v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), 146413481Sgiacomo.travaglini@arm.com v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), 146513481Sgiacomo.travaglini@arm.com v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), 146613481Sgiacomo.travaglini@arm.com v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), 146713481Sgiacomo.travaglini@arm.com v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32) {} 146813481Sgiacomo.travaglini@arm.com 146913481Sgiacomo.travaglini@arm.com template <typename T> 147013481Sgiacomo.travaglini@arm.com operator ParamGenerator<T>() const { 147113481Sgiacomo.travaglini@arm.com const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 147213481Sgiacomo.travaglini@arm.com static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 147313481Sgiacomo.travaglini@arm.com static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 147413481Sgiacomo.travaglini@arm.com static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), 147513481Sgiacomo.travaglini@arm.com static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), 147613481Sgiacomo.travaglini@arm.com static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), 147713481Sgiacomo.travaglini@arm.com static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), 147813481Sgiacomo.travaglini@arm.com static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), 147913481Sgiacomo.travaglini@arm.com static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_), 148013481Sgiacomo.travaglini@arm.com static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_), 148113481Sgiacomo.travaglini@arm.com static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_)}; 148213481Sgiacomo.travaglini@arm.com return ValuesIn(array); 148313481Sgiacomo.travaglini@arm.com } 148413481Sgiacomo.travaglini@arm.com 148513481Sgiacomo.travaglini@arm.com private: 148613481Sgiacomo.travaglini@arm.com // No implementation - assignment is unsupported. 148713481Sgiacomo.travaglini@arm.com void operator=(const ValueArray32& other); 148813481Sgiacomo.travaglini@arm.com 148913481Sgiacomo.travaglini@arm.com const T1 v1_; 149013481Sgiacomo.travaglini@arm.com const T2 v2_; 149113481Sgiacomo.travaglini@arm.com const T3 v3_; 149213481Sgiacomo.travaglini@arm.com const T4 v4_; 149313481Sgiacomo.travaglini@arm.com const T5 v5_; 149413481Sgiacomo.travaglini@arm.com const T6 v6_; 149513481Sgiacomo.travaglini@arm.com const T7 v7_; 149613481Sgiacomo.travaglini@arm.com const T8 v8_; 149713481Sgiacomo.travaglini@arm.com const T9 v9_; 149813481Sgiacomo.travaglini@arm.com const T10 v10_; 149913481Sgiacomo.travaglini@arm.com const T11 v11_; 150013481Sgiacomo.travaglini@arm.com const T12 v12_; 150113481Sgiacomo.travaglini@arm.com const T13 v13_; 150213481Sgiacomo.travaglini@arm.com const T14 v14_; 150313481Sgiacomo.travaglini@arm.com const T15 v15_; 150413481Sgiacomo.travaglini@arm.com const T16 v16_; 150513481Sgiacomo.travaglini@arm.com const T17 v17_; 150613481Sgiacomo.travaglini@arm.com const T18 v18_; 150713481Sgiacomo.travaglini@arm.com const T19 v19_; 150813481Sgiacomo.travaglini@arm.com const T20 v20_; 150913481Sgiacomo.travaglini@arm.com const T21 v21_; 151013481Sgiacomo.travaglini@arm.com const T22 v22_; 151113481Sgiacomo.travaglini@arm.com const T23 v23_; 151213481Sgiacomo.travaglini@arm.com const T24 v24_; 151313481Sgiacomo.travaglini@arm.com const T25 v25_; 151413481Sgiacomo.travaglini@arm.com const T26 v26_; 151513481Sgiacomo.travaglini@arm.com const T27 v27_; 151613481Sgiacomo.travaglini@arm.com const T28 v28_; 151713481Sgiacomo.travaglini@arm.com const T29 v29_; 151813481Sgiacomo.travaglini@arm.com const T30 v30_; 151913481Sgiacomo.travaglini@arm.com const T31 v31_; 152013481Sgiacomo.travaglini@arm.com const T32 v32_; 152113481Sgiacomo.travaglini@arm.com}; 152213481Sgiacomo.travaglini@arm.com 152313481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 152413481Sgiacomo.travaglini@arm.com typename T6, typename T7, typename T8, typename T9, typename T10, 152513481Sgiacomo.travaglini@arm.com typename T11, typename T12, typename T13, typename T14, typename T15, 152613481Sgiacomo.travaglini@arm.com typename T16, typename T17, typename T18, typename T19, typename T20, 152713481Sgiacomo.travaglini@arm.com typename T21, typename T22, typename T23, typename T24, typename T25, 152813481Sgiacomo.travaglini@arm.com typename T26, typename T27, typename T28, typename T29, typename T30, 152913481Sgiacomo.travaglini@arm.com typename T31, typename T32, typename T33> 153013481Sgiacomo.travaglini@arm.comclass ValueArray33 { 153113481Sgiacomo.travaglini@arm.com public: 153213481Sgiacomo.travaglini@arm.com ValueArray33(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 153313481Sgiacomo.travaglini@arm.com T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 153413481Sgiacomo.travaglini@arm.com T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 153513481Sgiacomo.travaglini@arm.com T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, 153613481Sgiacomo.travaglini@arm.com T33 v33) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), 153713481Sgiacomo.travaglini@arm.com v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), 153813481Sgiacomo.travaglini@arm.com v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), 153913481Sgiacomo.travaglini@arm.com v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26), 154013481Sgiacomo.travaglini@arm.com v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32), 154113481Sgiacomo.travaglini@arm.com v33_(v33) {} 154213481Sgiacomo.travaglini@arm.com 154313481Sgiacomo.travaglini@arm.com template <typename T> 154413481Sgiacomo.travaglini@arm.com operator ParamGenerator<T>() const { 154513481Sgiacomo.travaglini@arm.com const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 154613481Sgiacomo.travaglini@arm.com static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 154713481Sgiacomo.travaglini@arm.com static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 154813481Sgiacomo.travaglini@arm.com static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), 154913481Sgiacomo.travaglini@arm.com static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), 155013481Sgiacomo.travaglini@arm.com static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), 155113481Sgiacomo.travaglini@arm.com static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), 155213481Sgiacomo.travaglini@arm.com static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), 155313481Sgiacomo.travaglini@arm.com static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_), 155413481Sgiacomo.travaglini@arm.com static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_), 155513481Sgiacomo.travaglini@arm.com static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_), 155613481Sgiacomo.travaglini@arm.com static_cast<T>(v33_)}; 155713481Sgiacomo.travaglini@arm.com return ValuesIn(array); 155813481Sgiacomo.travaglini@arm.com } 155913481Sgiacomo.travaglini@arm.com 156013481Sgiacomo.travaglini@arm.com private: 156113481Sgiacomo.travaglini@arm.com // No implementation - assignment is unsupported. 156213481Sgiacomo.travaglini@arm.com void operator=(const ValueArray33& other); 156313481Sgiacomo.travaglini@arm.com 156413481Sgiacomo.travaglini@arm.com const T1 v1_; 156513481Sgiacomo.travaglini@arm.com const T2 v2_; 156613481Sgiacomo.travaglini@arm.com const T3 v3_; 156713481Sgiacomo.travaglini@arm.com const T4 v4_; 156813481Sgiacomo.travaglini@arm.com const T5 v5_; 156913481Sgiacomo.travaglini@arm.com const T6 v6_; 157013481Sgiacomo.travaglini@arm.com const T7 v7_; 157113481Sgiacomo.travaglini@arm.com const T8 v8_; 157213481Sgiacomo.travaglini@arm.com const T9 v9_; 157313481Sgiacomo.travaglini@arm.com const T10 v10_; 157413481Sgiacomo.travaglini@arm.com const T11 v11_; 157513481Sgiacomo.travaglini@arm.com const T12 v12_; 157613481Sgiacomo.travaglini@arm.com const T13 v13_; 157713481Sgiacomo.travaglini@arm.com const T14 v14_; 157813481Sgiacomo.travaglini@arm.com const T15 v15_; 157913481Sgiacomo.travaglini@arm.com const T16 v16_; 158013481Sgiacomo.travaglini@arm.com const T17 v17_; 158113481Sgiacomo.travaglini@arm.com const T18 v18_; 158213481Sgiacomo.travaglini@arm.com const T19 v19_; 158313481Sgiacomo.travaglini@arm.com const T20 v20_; 158413481Sgiacomo.travaglini@arm.com const T21 v21_; 158513481Sgiacomo.travaglini@arm.com const T22 v22_; 158613481Sgiacomo.travaglini@arm.com const T23 v23_; 158713481Sgiacomo.travaglini@arm.com const T24 v24_; 158813481Sgiacomo.travaglini@arm.com const T25 v25_; 158913481Sgiacomo.travaglini@arm.com const T26 v26_; 159013481Sgiacomo.travaglini@arm.com const T27 v27_; 159113481Sgiacomo.travaglini@arm.com const T28 v28_; 159213481Sgiacomo.travaglini@arm.com const T29 v29_; 159313481Sgiacomo.travaglini@arm.com const T30 v30_; 159413481Sgiacomo.travaglini@arm.com const T31 v31_; 159513481Sgiacomo.travaglini@arm.com const T32 v32_; 159613481Sgiacomo.travaglini@arm.com const T33 v33_; 159713481Sgiacomo.travaglini@arm.com}; 159813481Sgiacomo.travaglini@arm.com 159913481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 160013481Sgiacomo.travaglini@arm.com typename T6, typename T7, typename T8, typename T9, typename T10, 160113481Sgiacomo.travaglini@arm.com typename T11, typename T12, typename T13, typename T14, typename T15, 160213481Sgiacomo.travaglini@arm.com typename T16, typename T17, typename T18, typename T19, typename T20, 160313481Sgiacomo.travaglini@arm.com typename T21, typename T22, typename T23, typename T24, typename T25, 160413481Sgiacomo.travaglini@arm.com typename T26, typename T27, typename T28, typename T29, typename T30, 160513481Sgiacomo.travaglini@arm.com typename T31, typename T32, typename T33, typename T34> 160613481Sgiacomo.travaglini@arm.comclass ValueArray34 { 160713481Sgiacomo.travaglini@arm.com public: 160813481Sgiacomo.travaglini@arm.com ValueArray34(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 160913481Sgiacomo.travaglini@arm.com T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 161013481Sgiacomo.travaglini@arm.com T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 161113481Sgiacomo.travaglini@arm.com T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, 161213481Sgiacomo.travaglini@arm.com T34 v34) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), 161313481Sgiacomo.travaglini@arm.com v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), 161413481Sgiacomo.travaglini@arm.com v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), 161513481Sgiacomo.travaglini@arm.com v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26), 161613481Sgiacomo.travaglini@arm.com v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32), 161713481Sgiacomo.travaglini@arm.com v33_(v33), v34_(v34) {} 161813481Sgiacomo.travaglini@arm.com 161913481Sgiacomo.travaglini@arm.com template <typename T> 162013481Sgiacomo.travaglini@arm.com operator ParamGenerator<T>() const { 162113481Sgiacomo.travaglini@arm.com const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 162213481Sgiacomo.travaglini@arm.com static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 162313481Sgiacomo.travaglini@arm.com static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 162413481Sgiacomo.travaglini@arm.com static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), 162513481Sgiacomo.travaglini@arm.com static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), 162613481Sgiacomo.travaglini@arm.com static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), 162713481Sgiacomo.travaglini@arm.com static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), 162813481Sgiacomo.travaglini@arm.com static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), 162913481Sgiacomo.travaglini@arm.com static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_), 163013481Sgiacomo.travaglini@arm.com static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_), 163113481Sgiacomo.travaglini@arm.com static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_), 163213481Sgiacomo.travaglini@arm.com static_cast<T>(v33_), static_cast<T>(v34_)}; 163313481Sgiacomo.travaglini@arm.com return ValuesIn(array); 163413481Sgiacomo.travaglini@arm.com } 163513481Sgiacomo.travaglini@arm.com 163613481Sgiacomo.travaglini@arm.com private: 163713481Sgiacomo.travaglini@arm.com // No implementation - assignment is unsupported. 163813481Sgiacomo.travaglini@arm.com void operator=(const ValueArray34& other); 163913481Sgiacomo.travaglini@arm.com 164013481Sgiacomo.travaglini@arm.com const T1 v1_; 164113481Sgiacomo.travaglini@arm.com const T2 v2_; 164213481Sgiacomo.travaglini@arm.com const T3 v3_; 164313481Sgiacomo.travaglini@arm.com const T4 v4_; 164413481Sgiacomo.travaglini@arm.com const T5 v5_; 164513481Sgiacomo.travaglini@arm.com const T6 v6_; 164613481Sgiacomo.travaglini@arm.com const T7 v7_; 164713481Sgiacomo.travaglini@arm.com const T8 v8_; 164813481Sgiacomo.travaglini@arm.com const T9 v9_; 164913481Sgiacomo.travaglini@arm.com const T10 v10_; 165013481Sgiacomo.travaglini@arm.com const T11 v11_; 165113481Sgiacomo.travaglini@arm.com const T12 v12_; 165213481Sgiacomo.travaglini@arm.com const T13 v13_; 165313481Sgiacomo.travaglini@arm.com const T14 v14_; 165413481Sgiacomo.travaglini@arm.com const T15 v15_; 165513481Sgiacomo.travaglini@arm.com const T16 v16_; 165613481Sgiacomo.travaglini@arm.com const T17 v17_; 165713481Sgiacomo.travaglini@arm.com const T18 v18_; 165813481Sgiacomo.travaglini@arm.com const T19 v19_; 165913481Sgiacomo.travaglini@arm.com const T20 v20_; 166013481Sgiacomo.travaglini@arm.com const T21 v21_; 166113481Sgiacomo.travaglini@arm.com const T22 v22_; 166213481Sgiacomo.travaglini@arm.com const T23 v23_; 166313481Sgiacomo.travaglini@arm.com const T24 v24_; 166413481Sgiacomo.travaglini@arm.com const T25 v25_; 166513481Sgiacomo.travaglini@arm.com const T26 v26_; 166613481Sgiacomo.travaglini@arm.com const T27 v27_; 166713481Sgiacomo.travaglini@arm.com const T28 v28_; 166813481Sgiacomo.travaglini@arm.com const T29 v29_; 166913481Sgiacomo.travaglini@arm.com const T30 v30_; 167013481Sgiacomo.travaglini@arm.com const T31 v31_; 167113481Sgiacomo.travaglini@arm.com const T32 v32_; 167213481Sgiacomo.travaglini@arm.com const T33 v33_; 167313481Sgiacomo.travaglini@arm.com const T34 v34_; 167413481Sgiacomo.travaglini@arm.com}; 167513481Sgiacomo.travaglini@arm.com 167613481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 167713481Sgiacomo.travaglini@arm.com typename T6, typename T7, typename T8, typename T9, typename T10, 167813481Sgiacomo.travaglini@arm.com typename T11, typename T12, typename T13, typename T14, typename T15, 167913481Sgiacomo.travaglini@arm.com typename T16, typename T17, typename T18, typename T19, typename T20, 168013481Sgiacomo.travaglini@arm.com typename T21, typename T22, typename T23, typename T24, typename T25, 168113481Sgiacomo.travaglini@arm.com typename T26, typename T27, typename T28, typename T29, typename T30, 168213481Sgiacomo.travaglini@arm.com typename T31, typename T32, typename T33, typename T34, typename T35> 168313481Sgiacomo.travaglini@arm.comclass ValueArray35 { 168413481Sgiacomo.travaglini@arm.com public: 168513481Sgiacomo.travaglini@arm.com ValueArray35(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 168613481Sgiacomo.travaglini@arm.com T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 168713481Sgiacomo.travaglini@arm.com T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 168813481Sgiacomo.travaglini@arm.com T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, 168913481Sgiacomo.travaglini@arm.com T34 v34, T35 v35) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), 169013481Sgiacomo.travaglini@arm.com v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), 169113481Sgiacomo.travaglini@arm.com v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), 169213481Sgiacomo.travaglini@arm.com v20_(v20), v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), 169313481Sgiacomo.travaglini@arm.com v26_(v26), v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), 169413481Sgiacomo.travaglini@arm.com v32_(v32), v33_(v33), v34_(v34), v35_(v35) {} 169513481Sgiacomo.travaglini@arm.com 169613481Sgiacomo.travaglini@arm.com template <typename T> 169713481Sgiacomo.travaglini@arm.com operator ParamGenerator<T>() const { 169813481Sgiacomo.travaglini@arm.com const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 169913481Sgiacomo.travaglini@arm.com static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 170013481Sgiacomo.travaglini@arm.com static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 170113481Sgiacomo.travaglini@arm.com static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), 170213481Sgiacomo.travaglini@arm.com static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), 170313481Sgiacomo.travaglini@arm.com static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), 170413481Sgiacomo.travaglini@arm.com static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), 170513481Sgiacomo.travaglini@arm.com static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), 170613481Sgiacomo.travaglini@arm.com static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_), 170713481Sgiacomo.travaglini@arm.com static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_), 170813481Sgiacomo.travaglini@arm.com static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_), 170913481Sgiacomo.travaglini@arm.com static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_)}; 171013481Sgiacomo.travaglini@arm.com return ValuesIn(array); 171113481Sgiacomo.travaglini@arm.com } 171213481Sgiacomo.travaglini@arm.com 171313481Sgiacomo.travaglini@arm.com private: 171413481Sgiacomo.travaglini@arm.com // No implementation - assignment is unsupported. 171513481Sgiacomo.travaglini@arm.com void operator=(const ValueArray35& other); 171613481Sgiacomo.travaglini@arm.com 171713481Sgiacomo.travaglini@arm.com const T1 v1_; 171813481Sgiacomo.travaglini@arm.com const T2 v2_; 171913481Sgiacomo.travaglini@arm.com const T3 v3_; 172013481Sgiacomo.travaglini@arm.com const T4 v4_; 172113481Sgiacomo.travaglini@arm.com const T5 v5_; 172213481Sgiacomo.travaglini@arm.com const T6 v6_; 172313481Sgiacomo.travaglini@arm.com const T7 v7_; 172413481Sgiacomo.travaglini@arm.com const T8 v8_; 172513481Sgiacomo.travaglini@arm.com const T9 v9_; 172613481Sgiacomo.travaglini@arm.com const T10 v10_; 172713481Sgiacomo.travaglini@arm.com const T11 v11_; 172813481Sgiacomo.travaglini@arm.com const T12 v12_; 172913481Sgiacomo.travaglini@arm.com const T13 v13_; 173013481Sgiacomo.travaglini@arm.com const T14 v14_; 173113481Sgiacomo.travaglini@arm.com const T15 v15_; 173213481Sgiacomo.travaglini@arm.com const T16 v16_; 173313481Sgiacomo.travaglini@arm.com const T17 v17_; 173413481Sgiacomo.travaglini@arm.com const T18 v18_; 173513481Sgiacomo.travaglini@arm.com const T19 v19_; 173613481Sgiacomo.travaglini@arm.com const T20 v20_; 173713481Sgiacomo.travaglini@arm.com const T21 v21_; 173813481Sgiacomo.travaglini@arm.com const T22 v22_; 173913481Sgiacomo.travaglini@arm.com const T23 v23_; 174013481Sgiacomo.travaglini@arm.com const T24 v24_; 174113481Sgiacomo.travaglini@arm.com const T25 v25_; 174213481Sgiacomo.travaglini@arm.com const T26 v26_; 174313481Sgiacomo.travaglini@arm.com const T27 v27_; 174413481Sgiacomo.travaglini@arm.com const T28 v28_; 174513481Sgiacomo.travaglini@arm.com const T29 v29_; 174613481Sgiacomo.travaglini@arm.com const T30 v30_; 174713481Sgiacomo.travaglini@arm.com const T31 v31_; 174813481Sgiacomo.travaglini@arm.com const T32 v32_; 174913481Sgiacomo.travaglini@arm.com const T33 v33_; 175013481Sgiacomo.travaglini@arm.com const T34 v34_; 175113481Sgiacomo.travaglini@arm.com const T35 v35_; 175213481Sgiacomo.travaglini@arm.com}; 175313481Sgiacomo.travaglini@arm.com 175413481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 175513481Sgiacomo.travaglini@arm.com typename T6, typename T7, typename T8, typename T9, typename T10, 175613481Sgiacomo.travaglini@arm.com typename T11, typename T12, typename T13, typename T14, typename T15, 175713481Sgiacomo.travaglini@arm.com typename T16, typename T17, typename T18, typename T19, typename T20, 175813481Sgiacomo.travaglini@arm.com typename T21, typename T22, typename T23, typename T24, typename T25, 175913481Sgiacomo.travaglini@arm.com typename T26, typename T27, typename T28, typename T29, typename T30, 176013481Sgiacomo.travaglini@arm.com typename T31, typename T32, typename T33, typename T34, typename T35, 176113481Sgiacomo.travaglini@arm.com typename T36> 176213481Sgiacomo.travaglini@arm.comclass ValueArray36 { 176313481Sgiacomo.travaglini@arm.com public: 176413481Sgiacomo.travaglini@arm.com ValueArray36(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 176513481Sgiacomo.travaglini@arm.com T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 176613481Sgiacomo.travaglini@arm.com T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 176713481Sgiacomo.travaglini@arm.com T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, 176813481Sgiacomo.travaglini@arm.com T34 v34, T35 v35, T36 v36) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), 176913481Sgiacomo.travaglini@arm.com v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), 177013481Sgiacomo.travaglini@arm.com v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18), 177113481Sgiacomo.travaglini@arm.com v19_(v19), v20_(v20), v21_(v21), v22_(v22), v23_(v23), v24_(v24), 177213481Sgiacomo.travaglini@arm.com v25_(v25), v26_(v26), v27_(v27), v28_(v28), v29_(v29), v30_(v30), 177313481Sgiacomo.travaglini@arm.com v31_(v31), v32_(v32), v33_(v33), v34_(v34), v35_(v35), v36_(v36) {} 177413481Sgiacomo.travaglini@arm.com 177513481Sgiacomo.travaglini@arm.com template <typename T> 177613481Sgiacomo.travaglini@arm.com operator ParamGenerator<T>() const { 177713481Sgiacomo.travaglini@arm.com const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 177813481Sgiacomo.travaglini@arm.com static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 177913481Sgiacomo.travaglini@arm.com static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 178013481Sgiacomo.travaglini@arm.com static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), 178113481Sgiacomo.travaglini@arm.com static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), 178213481Sgiacomo.travaglini@arm.com static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), 178313481Sgiacomo.travaglini@arm.com static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), 178413481Sgiacomo.travaglini@arm.com static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), 178513481Sgiacomo.travaglini@arm.com static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_), 178613481Sgiacomo.travaglini@arm.com static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_), 178713481Sgiacomo.travaglini@arm.com static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_), 178813481Sgiacomo.travaglini@arm.com static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_), 178913481Sgiacomo.travaglini@arm.com static_cast<T>(v36_)}; 179013481Sgiacomo.travaglini@arm.com return ValuesIn(array); 179113481Sgiacomo.travaglini@arm.com } 179213481Sgiacomo.travaglini@arm.com 179313481Sgiacomo.travaglini@arm.com private: 179413481Sgiacomo.travaglini@arm.com // No implementation - assignment is unsupported. 179513481Sgiacomo.travaglini@arm.com void operator=(const ValueArray36& other); 179613481Sgiacomo.travaglini@arm.com 179713481Sgiacomo.travaglini@arm.com const T1 v1_; 179813481Sgiacomo.travaglini@arm.com const T2 v2_; 179913481Sgiacomo.travaglini@arm.com const T3 v3_; 180013481Sgiacomo.travaglini@arm.com const T4 v4_; 180113481Sgiacomo.travaglini@arm.com const T5 v5_; 180213481Sgiacomo.travaglini@arm.com const T6 v6_; 180313481Sgiacomo.travaglini@arm.com const T7 v7_; 180413481Sgiacomo.travaglini@arm.com const T8 v8_; 180513481Sgiacomo.travaglini@arm.com const T9 v9_; 180613481Sgiacomo.travaglini@arm.com const T10 v10_; 180713481Sgiacomo.travaglini@arm.com const T11 v11_; 180813481Sgiacomo.travaglini@arm.com const T12 v12_; 180913481Sgiacomo.travaglini@arm.com const T13 v13_; 181013481Sgiacomo.travaglini@arm.com const T14 v14_; 181113481Sgiacomo.travaglini@arm.com const T15 v15_; 181213481Sgiacomo.travaglini@arm.com const T16 v16_; 181313481Sgiacomo.travaglini@arm.com const T17 v17_; 181413481Sgiacomo.travaglini@arm.com const T18 v18_; 181513481Sgiacomo.travaglini@arm.com const T19 v19_; 181613481Sgiacomo.travaglini@arm.com const T20 v20_; 181713481Sgiacomo.travaglini@arm.com const T21 v21_; 181813481Sgiacomo.travaglini@arm.com const T22 v22_; 181913481Sgiacomo.travaglini@arm.com const T23 v23_; 182013481Sgiacomo.travaglini@arm.com const T24 v24_; 182113481Sgiacomo.travaglini@arm.com const T25 v25_; 182213481Sgiacomo.travaglini@arm.com const T26 v26_; 182313481Sgiacomo.travaglini@arm.com const T27 v27_; 182413481Sgiacomo.travaglini@arm.com const T28 v28_; 182513481Sgiacomo.travaglini@arm.com const T29 v29_; 182613481Sgiacomo.travaglini@arm.com const T30 v30_; 182713481Sgiacomo.travaglini@arm.com const T31 v31_; 182813481Sgiacomo.travaglini@arm.com const T32 v32_; 182913481Sgiacomo.travaglini@arm.com const T33 v33_; 183013481Sgiacomo.travaglini@arm.com const T34 v34_; 183113481Sgiacomo.travaglini@arm.com const T35 v35_; 183213481Sgiacomo.travaglini@arm.com const T36 v36_; 183313481Sgiacomo.travaglini@arm.com}; 183413481Sgiacomo.travaglini@arm.com 183513481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 183613481Sgiacomo.travaglini@arm.com typename T6, typename T7, typename T8, typename T9, typename T10, 183713481Sgiacomo.travaglini@arm.com typename T11, typename T12, typename T13, typename T14, typename T15, 183813481Sgiacomo.travaglini@arm.com typename T16, typename T17, typename T18, typename T19, typename T20, 183913481Sgiacomo.travaglini@arm.com typename T21, typename T22, typename T23, typename T24, typename T25, 184013481Sgiacomo.travaglini@arm.com typename T26, typename T27, typename T28, typename T29, typename T30, 184113481Sgiacomo.travaglini@arm.com typename T31, typename T32, typename T33, typename T34, typename T35, 184213481Sgiacomo.travaglini@arm.com typename T36, typename T37> 184313481Sgiacomo.travaglini@arm.comclass ValueArray37 { 184413481Sgiacomo.travaglini@arm.com public: 184513481Sgiacomo.travaglini@arm.com ValueArray37(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 184613481Sgiacomo.travaglini@arm.com T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 184713481Sgiacomo.travaglini@arm.com T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 184813481Sgiacomo.travaglini@arm.com T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, 184913481Sgiacomo.travaglini@arm.com T34 v34, T35 v35, T36 v36, T37 v37) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), 185013481Sgiacomo.travaglini@arm.com v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), 185113481Sgiacomo.travaglini@arm.com v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17), 185213481Sgiacomo.travaglini@arm.com v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), v23_(v23), 185313481Sgiacomo.travaglini@arm.com v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28), v29_(v29), 185413481Sgiacomo.travaglini@arm.com v30_(v30), v31_(v31), v32_(v32), v33_(v33), v34_(v34), v35_(v35), 185513481Sgiacomo.travaglini@arm.com v36_(v36), v37_(v37) {} 185613481Sgiacomo.travaglini@arm.com 185713481Sgiacomo.travaglini@arm.com template <typename T> 185813481Sgiacomo.travaglini@arm.com operator ParamGenerator<T>() const { 185913481Sgiacomo.travaglini@arm.com const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 186013481Sgiacomo.travaglini@arm.com static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 186113481Sgiacomo.travaglini@arm.com static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 186213481Sgiacomo.travaglini@arm.com static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), 186313481Sgiacomo.travaglini@arm.com static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), 186413481Sgiacomo.travaglini@arm.com static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), 186513481Sgiacomo.travaglini@arm.com static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), 186613481Sgiacomo.travaglini@arm.com static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), 186713481Sgiacomo.travaglini@arm.com static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_), 186813481Sgiacomo.travaglini@arm.com static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_), 186913481Sgiacomo.travaglini@arm.com static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_), 187013481Sgiacomo.travaglini@arm.com static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_), 187113481Sgiacomo.travaglini@arm.com static_cast<T>(v36_), static_cast<T>(v37_)}; 187213481Sgiacomo.travaglini@arm.com return ValuesIn(array); 187313481Sgiacomo.travaglini@arm.com } 187413481Sgiacomo.travaglini@arm.com 187513481Sgiacomo.travaglini@arm.com private: 187613481Sgiacomo.travaglini@arm.com // No implementation - assignment is unsupported. 187713481Sgiacomo.travaglini@arm.com void operator=(const ValueArray37& other); 187813481Sgiacomo.travaglini@arm.com 187913481Sgiacomo.travaglini@arm.com const T1 v1_; 188013481Sgiacomo.travaglini@arm.com const T2 v2_; 188113481Sgiacomo.travaglini@arm.com const T3 v3_; 188213481Sgiacomo.travaglini@arm.com const T4 v4_; 188313481Sgiacomo.travaglini@arm.com const T5 v5_; 188413481Sgiacomo.travaglini@arm.com const T6 v6_; 188513481Sgiacomo.travaglini@arm.com const T7 v7_; 188613481Sgiacomo.travaglini@arm.com const T8 v8_; 188713481Sgiacomo.travaglini@arm.com const T9 v9_; 188813481Sgiacomo.travaglini@arm.com const T10 v10_; 188913481Sgiacomo.travaglini@arm.com const T11 v11_; 189013481Sgiacomo.travaglini@arm.com const T12 v12_; 189113481Sgiacomo.travaglini@arm.com const T13 v13_; 189213481Sgiacomo.travaglini@arm.com const T14 v14_; 189313481Sgiacomo.travaglini@arm.com const T15 v15_; 189413481Sgiacomo.travaglini@arm.com const T16 v16_; 189513481Sgiacomo.travaglini@arm.com const T17 v17_; 189613481Sgiacomo.travaglini@arm.com const T18 v18_; 189713481Sgiacomo.travaglini@arm.com const T19 v19_; 189813481Sgiacomo.travaglini@arm.com const T20 v20_; 189913481Sgiacomo.travaglini@arm.com const T21 v21_; 190013481Sgiacomo.travaglini@arm.com const T22 v22_; 190113481Sgiacomo.travaglini@arm.com const T23 v23_; 190213481Sgiacomo.travaglini@arm.com const T24 v24_; 190313481Sgiacomo.travaglini@arm.com const T25 v25_; 190413481Sgiacomo.travaglini@arm.com const T26 v26_; 190513481Sgiacomo.travaglini@arm.com const T27 v27_; 190613481Sgiacomo.travaglini@arm.com const T28 v28_; 190713481Sgiacomo.travaglini@arm.com const T29 v29_; 190813481Sgiacomo.travaglini@arm.com const T30 v30_; 190913481Sgiacomo.travaglini@arm.com const T31 v31_; 191013481Sgiacomo.travaglini@arm.com const T32 v32_; 191113481Sgiacomo.travaglini@arm.com const T33 v33_; 191213481Sgiacomo.travaglini@arm.com const T34 v34_; 191313481Sgiacomo.travaglini@arm.com const T35 v35_; 191413481Sgiacomo.travaglini@arm.com const T36 v36_; 191513481Sgiacomo.travaglini@arm.com const T37 v37_; 191613481Sgiacomo.travaglini@arm.com}; 191713481Sgiacomo.travaglini@arm.com 191813481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 191913481Sgiacomo.travaglini@arm.com typename T6, typename T7, typename T8, typename T9, typename T10, 192013481Sgiacomo.travaglini@arm.com typename T11, typename T12, typename T13, typename T14, typename T15, 192113481Sgiacomo.travaglini@arm.com typename T16, typename T17, typename T18, typename T19, typename T20, 192213481Sgiacomo.travaglini@arm.com typename T21, typename T22, typename T23, typename T24, typename T25, 192313481Sgiacomo.travaglini@arm.com typename T26, typename T27, typename T28, typename T29, typename T30, 192413481Sgiacomo.travaglini@arm.com typename T31, typename T32, typename T33, typename T34, typename T35, 192513481Sgiacomo.travaglini@arm.com typename T36, typename T37, typename T38> 192613481Sgiacomo.travaglini@arm.comclass ValueArray38 { 192713481Sgiacomo.travaglini@arm.com public: 192813481Sgiacomo.travaglini@arm.com ValueArray38(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 192913481Sgiacomo.travaglini@arm.com T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 193013481Sgiacomo.travaglini@arm.com T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 193113481Sgiacomo.travaglini@arm.com T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, 193213481Sgiacomo.travaglini@arm.com T34 v34, T35 v35, T36 v36, T37 v37, T38 v38) : v1_(v1), v2_(v2), v3_(v3), 193313481Sgiacomo.travaglini@arm.com v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), 193413481Sgiacomo.travaglini@arm.com v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), 193513481Sgiacomo.travaglini@arm.com v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), 193613481Sgiacomo.travaglini@arm.com v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28), 193713481Sgiacomo.travaglini@arm.com v29_(v29), v30_(v30), v31_(v31), v32_(v32), v33_(v33), v34_(v34), 193813481Sgiacomo.travaglini@arm.com v35_(v35), v36_(v36), v37_(v37), v38_(v38) {} 193913481Sgiacomo.travaglini@arm.com 194013481Sgiacomo.travaglini@arm.com template <typename T> 194113481Sgiacomo.travaglini@arm.com operator ParamGenerator<T>() const { 194213481Sgiacomo.travaglini@arm.com const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 194313481Sgiacomo.travaglini@arm.com static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 194413481Sgiacomo.travaglini@arm.com static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 194513481Sgiacomo.travaglini@arm.com static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), 194613481Sgiacomo.travaglini@arm.com static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), 194713481Sgiacomo.travaglini@arm.com static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), 194813481Sgiacomo.travaglini@arm.com static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), 194913481Sgiacomo.travaglini@arm.com static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), 195013481Sgiacomo.travaglini@arm.com static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_), 195113481Sgiacomo.travaglini@arm.com static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_), 195213481Sgiacomo.travaglini@arm.com static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_), 195313481Sgiacomo.travaglini@arm.com static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_), 195413481Sgiacomo.travaglini@arm.com static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_)}; 195513481Sgiacomo.travaglini@arm.com return ValuesIn(array); 195613481Sgiacomo.travaglini@arm.com } 195713481Sgiacomo.travaglini@arm.com 195813481Sgiacomo.travaglini@arm.com private: 195913481Sgiacomo.travaglini@arm.com // No implementation - assignment is unsupported. 196013481Sgiacomo.travaglini@arm.com void operator=(const ValueArray38& other); 196113481Sgiacomo.travaglini@arm.com 196213481Sgiacomo.travaglini@arm.com const T1 v1_; 196313481Sgiacomo.travaglini@arm.com const T2 v2_; 196413481Sgiacomo.travaglini@arm.com const T3 v3_; 196513481Sgiacomo.travaglini@arm.com const T4 v4_; 196613481Sgiacomo.travaglini@arm.com const T5 v5_; 196713481Sgiacomo.travaglini@arm.com const T6 v6_; 196813481Sgiacomo.travaglini@arm.com const T7 v7_; 196913481Sgiacomo.travaglini@arm.com const T8 v8_; 197013481Sgiacomo.travaglini@arm.com const T9 v9_; 197113481Sgiacomo.travaglini@arm.com const T10 v10_; 197213481Sgiacomo.travaglini@arm.com const T11 v11_; 197313481Sgiacomo.travaglini@arm.com const T12 v12_; 197413481Sgiacomo.travaglini@arm.com const T13 v13_; 197513481Sgiacomo.travaglini@arm.com const T14 v14_; 197613481Sgiacomo.travaglini@arm.com const T15 v15_; 197713481Sgiacomo.travaglini@arm.com const T16 v16_; 197813481Sgiacomo.travaglini@arm.com const T17 v17_; 197913481Sgiacomo.travaglini@arm.com const T18 v18_; 198013481Sgiacomo.travaglini@arm.com const T19 v19_; 198113481Sgiacomo.travaglini@arm.com const T20 v20_; 198213481Sgiacomo.travaglini@arm.com const T21 v21_; 198313481Sgiacomo.travaglini@arm.com const T22 v22_; 198413481Sgiacomo.travaglini@arm.com const T23 v23_; 198513481Sgiacomo.travaglini@arm.com const T24 v24_; 198613481Sgiacomo.travaglini@arm.com const T25 v25_; 198713481Sgiacomo.travaglini@arm.com const T26 v26_; 198813481Sgiacomo.travaglini@arm.com const T27 v27_; 198913481Sgiacomo.travaglini@arm.com const T28 v28_; 199013481Sgiacomo.travaglini@arm.com const T29 v29_; 199113481Sgiacomo.travaglini@arm.com const T30 v30_; 199213481Sgiacomo.travaglini@arm.com const T31 v31_; 199313481Sgiacomo.travaglini@arm.com const T32 v32_; 199413481Sgiacomo.travaglini@arm.com const T33 v33_; 199513481Sgiacomo.travaglini@arm.com const T34 v34_; 199613481Sgiacomo.travaglini@arm.com const T35 v35_; 199713481Sgiacomo.travaglini@arm.com const T36 v36_; 199813481Sgiacomo.travaglini@arm.com const T37 v37_; 199913481Sgiacomo.travaglini@arm.com const T38 v38_; 200013481Sgiacomo.travaglini@arm.com}; 200113481Sgiacomo.travaglini@arm.com 200213481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 200313481Sgiacomo.travaglini@arm.com typename T6, typename T7, typename T8, typename T9, typename T10, 200413481Sgiacomo.travaglini@arm.com typename T11, typename T12, typename T13, typename T14, typename T15, 200513481Sgiacomo.travaglini@arm.com typename T16, typename T17, typename T18, typename T19, typename T20, 200613481Sgiacomo.travaglini@arm.com typename T21, typename T22, typename T23, typename T24, typename T25, 200713481Sgiacomo.travaglini@arm.com typename T26, typename T27, typename T28, typename T29, typename T30, 200813481Sgiacomo.travaglini@arm.com typename T31, typename T32, typename T33, typename T34, typename T35, 200913481Sgiacomo.travaglini@arm.com typename T36, typename T37, typename T38, typename T39> 201013481Sgiacomo.travaglini@arm.comclass ValueArray39 { 201113481Sgiacomo.travaglini@arm.com public: 201213481Sgiacomo.travaglini@arm.com ValueArray39(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 201313481Sgiacomo.travaglini@arm.com T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 201413481Sgiacomo.travaglini@arm.com T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 201513481Sgiacomo.travaglini@arm.com T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, 201613481Sgiacomo.travaglini@arm.com T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39) : v1_(v1), v2_(v2), 201713481Sgiacomo.travaglini@arm.com v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), 201813481Sgiacomo.travaglini@arm.com v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), 201913481Sgiacomo.travaglini@arm.com v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), 202013481Sgiacomo.travaglini@arm.com v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28), 202113481Sgiacomo.travaglini@arm.com v29_(v29), v30_(v30), v31_(v31), v32_(v32), v33_(v33), v34_(v34), 202213481Sgiacomo.travaglini@arm.com v35_(v35), v36_(v36), v37_(v37), v38_(v38), v39_(v39) {} 202313481Sgiacomo.travaglini@arm.com 202413481Sgiacomo.travaglini@arm.com template <typename T> 202513481Sgiacomo.travaglini@arm.com operator ParamGenerator<T>() const { 202613481Sgiacomo.travaglini@arm.com const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 202713481Sgiacomo.travaglini@arm.com static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 202813481Sgiacomo.travaglini@arm.com static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 202913481Sgiacomo.travaglini@arm.com static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), 203013481Sgiacomo.travaglini@arm.com static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), 203113481Sgiacomo.travaglini@arm.com static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), 203213481Sgiacomo.travaglini@arm.com static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), 203313481Sgiacomo.travaglini@arm.com static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), 203413481Sgiacomo.travaglini@arm.com static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_), 203513481Sgiacomo.travaglini@arm.com static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_), 203613481Sgiacomo.travaglini@arm.com static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_), 203713481Sgiacomo.travaglini@arm.com static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_), 203813481Sgiacomo.travaglini@arm.com static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_), 203913481Sgiacomo.travaglini@arm.com static_cast<T>(v39_)}; 204013481Sgiacomo.travaglini@arm.com return ValuesIn(array); 204113481Sgiacomo.travaglini@arm.com } 204213481Sgiacomo.travaglini@arm.com 204313481Sgiacomo.travaglini@arm.com private: 204413481Sgiacomo.travaglini@arm.com // No implementation - assignment is unsupported. 204513481Sgiacomo.travaglini@arm.com void operator=(const ValueArray39& other); 204613481Sgiacomo.travaglini@arm.com 204713481Sgiacomo.travaglini@arm.com const T1 v1_; 204813481Sgiacomo.travaglini@arm.com const T2 v2_; 204913481Sgiacomo.travaglini@arm.com const T3 v3_; 205013481Sgiacomo.travaglini@arm.com const T4 v4_; 205113481Sgiacomo.travaglini@arm.com const T5 v5_; 205213481Sgiacomo.travaglini@arm.com const T6 v6_; 205313481Sgiacomo.travaglini@arm.com const T7 v7_; 205413481Sgiacomo.travaglini@arm.com const T8 v8_; 205513481Sgiacomo.travaglini@arm.com const T9 v9_; 205613481Sgiacomo.travaglini@arm.com const T10 v10_; 205713481Sgiacomo.travaglini@arm.com const T11 v11_; 205813481Sgiacomo.travaglini@arm.com const T12 v12_; 205913481Sgiacomo.travaglini@arm.com const T13 v13_; 206013481Sgiacomo.travaglini@arm.com const T14 v14_; 206113481Sgiacomo.travaglini@arm.com const T15 v15_; 206213481Sgiacomo.travaglini@arm.com const T16 v16_; 206313481Sgiacomo.travaglini@arm.com const T17 v17_; 206413481Sgiacomo.travaglini@arm.com const T18 v18_; 206513481Sgiacomo.travaglini@arm.com const T19 v19_; 206613481Sgiacomo.travaglini@arm.com const T20 v20_; 206713481Sgiacomo.travaglini@arm.com const T21 v21_; 206813481Sgiacomo.travaglini@arm.com const T22 v22_; 206913481Sgiacomo.travaglini@arm.com const T23 v23_; 207013481Sgiacomo.travaglini@arm.com const T24 v24_; 207113481Sgiacomo.travaglini@arm.com const T25 v25_; 207213481Sgiacomo.travaglini@arm.com const T26 v26_; 207313481Sgiacomo.travaglini@arm.com const T27 v27_; 207413481Sgiacomo.travaglini@arm.com const T28 v28_; 207513481Sgiacomo.travaglini@arm.com const T29 v29_; 207613481Sgiacomo.travaglini@arm.com const T30 v30_; 207713481Sgiacomo.travaglini@arm.com const T31 v31_; 207813481Sgiacomo.travaglini@arm.com const T32 v32_; 207913481Sgiacomo.travaglini@arm.com const T33 v33_; 208013481Sgiacomo.travaglini@arm.com const T34 v34_; 208113481Sgiacomo.travaglini@arm.com const T35 v35_; 208213481Sgiacomo.travaglini@arm.com const T36 v36_; 208313481Sgiacomo.travaglini@arm.com const T37 v37_; 208413481Sgiacomo.travaglini@arm.com const T38 v38_; 208513481Sgiacomo.travaglini@arm.com const T39 v39_; 208613481Sgiacomo.travaglini@arm.com}; 208713481Sgiacomo.travaglini@arm.com 208813481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 208913481Sgiacomo.travaglini@arm.com typename T6, typename T7, typename T8, typename T9, typename T10, 209013481Sgiacomo.travaglini@arm.com typename T11, typename T12, typename T13, typename T14, typename T15, 209113481Sgiacomo.travaglini@arm.com typename T16, typename T17, typename T18, typename T19, typename T20, 209213481Sgiacomo.travaglini@arm.com typename T21, typename T22, typename T23, typename T24, typename T25, 209313481Sgiacomo.travaglini@arm.com typename T26, typename T27, typename T28, typename T29, typename T30, 209413481Sgiacomo.travaglini@arm.com typename T31, typename T32, typename T33, typename T34, typename T35, 209513481Sgiacomo.travaglini@arm.com typename T36, typename T37, typename T38, typename T39, typename T40> 209613481Sgiacomo.travaglini@arm.comclass ValueArray40 { 209713481Sgiacomo.travaglini@arm.com public: 209813481Sgiacomo.travaglini@arm.com ValueArray40(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 209913481Sgiacomo.travaglini@arm.com T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 210013481Sgiacomo.travaglini@arm.com T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 210113481Sgiacomo.travaglini@arm.com T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, 210213481Sgiacomo.travaglini@arm.com T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40) : v1_(v1), 210313481Sgiacomo.travaglini@arm.com v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), 210413481Sgiacomo.travaglini@arm.com v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), 210513481Sgiacomo.travaglini@arm.com v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), 210613481Sgiacomo.travaglini@arm.com v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), 210713481Sgiacomo.travaglini@arm.com v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32), v33_(v33), 210813481Sgiacomo.travaglini@arm.com v34_(v34), v35_(v35), v36_(v36), v37_(v37), v38_(v38), v39_(v39), 210913481Sgiacomo.travaglini@arm.com v40_(v40) {} 211013481Sgiacomo.travaglini@arm.com 211113481Sgiacomo.travaglini@arm.com template <typename T> 211213481Sgiacomo.travaglini@arm.com operator ParamGenerator<T>() const { 211313481Sgiacomo.travaglini@arm.com const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 211413481Sgiacomo.travaglini@arm.com static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 211513481Sgiacomo.travaglini@arm.com static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 211613481Sgiacomo.travaglini@arm.com static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), 211713481Sgiacomo.travaglini@arm.com static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), 211813481Sgiacomo.travaglini@arm.com static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), 211913481Sgiacomo.travaglini@arm.com static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), 212013481Sgiacomo.travaglini@arm.com static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), 212113481Sgiacomo.travaglini@arm.com static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_), 212213481Sgiacomo.travaglini@arm.com static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_), 212313481Sgiacomo.travaglini@arm.com static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_), 212413481Sgiacomo.travaglini@arm.com static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_), 212513481Sgiacomo.travaglini@arm.com static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_), 212613481Sgiacomo.travaglini@arm.com static_cast<T>(v39_), static_cast<T>(v40_)}; 212713481Sgiacomo.travaglini@arm.com return ValuesIn(array); 212813481Sgiacomo.travaglini@arm.com } 212913481Sgiacomo.travaglini@arm.com 213013481Sgiacomo.travaglini@arm.com private: 213113481Sgiacomo.travaglini@arm.com // No implementation - assignment is unsupported. 213213481Sgiacomo.travaglini@arm.com void operator=(const ValueArray40& other); 213313481Sgiacomo.travaglini@arm.com 213413481Sgiacomo.travaglini@arm.com const T1 v1_; 213513481Sgiacomo.travaglini@arm.com const T2 v2_; 213613481Sgiacomo.travaglini@arm.com const T3 v3_; 213713481Sgiacomo.travaglini@arm.com const T4 v4_; 213813481Sgiacomo.travaglini@arm.com const T5 v5_; 213913481Sgiacomo.travaglini@arm.com const T6 v6_; 214013481Sgiacomo.travaglini@arm.com const T7 v7_; 214113481Sgiacomo.travaglini@arm.com const T8 v8_; 214213481Sgiacomo.travaglini@arm.com const T9 v9_; 214313481Sgiacomo.travaglini@arm.com const T10 v10_; 214413481Sgiacomo.travaglini@arm.com const T11 v11_; 214513481Sgiacomo.travaglini@arm.com const T12 v12_; 214613481Sgiacomo.travaglini@arm.com const T13 v13_; 214713481Sgiacomo.travaglini@arm.com const T14 v14_; 214813481Sgiacomo.travaglini@arm.com const T15 v15_; 214913481Sgiacomo.travaglini@arm.com const T16 v16_; 215013481Sgiacomo.travaglini@arm.com const T17 v17_; 215113481Sgiacomo.travaglini@arm.com const T18 v18_; 215213481Sgiacomo.travaglini@arm.com const T19 v19_; 215313481Sgiacomo.travaglini@arm.com const T20 v20_; 215413481Sgiacomo.travaglini@arm.com const T21 v21_; 215513481Sgiacomo.travaglini@arm.com const T22 v22_; 215613481Sgiacomo.travaglini@arm.com const T23 v23_; 215713481Sgiacomo.travaglini@arm.com const T24 v24_; 215813481Sgiacomo.travaglini@arm.com const T25 v25_; 215913481Sgiacomo.travaglini@arm.com const T26 v26_; 216013481Sgiacomo.travaglini@arm.com const T27 v27_; 216113481Sgiacomo.travaglini@arm.com const T28 v28_; 216213481Sgiacomo.travaglini@arm.com const T29 v29_; 216313481Sgiacomo.travaglini@arm.com const T30 v30_; 216413481Sgiacomo.travaglini@arm.com const T31 v31_; 216513481Sgiacomo.travaglini@arm.com const T32 v32_; 216613481Sgiacomo.travaglini@arm.com const T33 v33_; 216713481Sgiacomo.travaglini@arm.com const T34 v34_; 216813481Sgiacomo.travaglini@arm.com const T35 v35_; 216913481Sgiacomo.travaglini@arm.com const T36 v36_; 217013481Sgiacomo.travaglini@arm.com const T37 v37_; 217113481Sgiacomo.travaglini@arm.com const T38 v38_; 217213481Sgiacomo.travaglini@arm.com const T39 v39_; 217313481Sgiacomo.travaglini@arm.com const T40 v40_; 217413481Sgiacomo.travaglini@arm.com}; 217513481Sgiacomo.travaglini@arm.com 217613481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 217713481Sgiacomo.travaglini@arm.com typename T6, typename T7, typename T8, typename T9, typename T10, 217813481Sgiacomo.travaglini@arm.com typename T11, typename T12, typename T13, typename T14, typename T15, 217913481Sgiacomo.travaglini@arm.com typename T16, typename T17, typename T18, typename T19, typename T20, 218013481Sgiacomo.travaglini@arm.com typename T21, typename T22, typename T23, typename T24, typename T25, 218113481Sgiacomo.travaglini@arm.com typename T26, typename T27, typename T28, typename T29, typename T30, 218213481Sgiacomo.travaglini@arm.com typename T31, typename T32, typename T33, typename T34, typename T35, 218313481Sgiacomo.travaglini@arm.com typename T36, typename T37, typename T38, typename T39, typename T40, 218413481Sgiacomo.travaglini@arm.com typename T41> 218513481Sgiacomo.travaglini@arm.comclass ValueArray41 { 218613481Sgiacomo.travaglini@arm.com public: 218713481Sgiacomo.travaglini@arm.com ValueArray41(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 218813481Sgiacomo.travaglini@arm.com T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 218913481Sgiacomo.travaglini@arm.com T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 219013481Sgiacomo.travaglini@arm.com T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, 219113481Sgiacomo.travaglini@arm.com T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, 219213481Sgiacomo.travaglini@arm.com T41 v41) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), 219313481Sgiacomo.travaglini@arm.com v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), 219413481Sgiacomo.travaglini@arm.com v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), 219513481Sgiacomo.travaglini@arm.com v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26), 219613481Sgiacomo.travaglini@arm.com v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32), 219713481Sgiacomo.travaglini@arm.com v33_(v33), v34_(v34), v35_(v35), v36_(v36), v37_(v37), v38_(v38), 219813481Sgiacomo.travaglini@arm.com v39_(v39), v40_(v40), v41_(v41) {} 219913481Sgiacomo.travaglini@arm.com 220013481Sgiacomo.travaglini@arm.com template <typename T> 220113481Sgiacomo.travaglini@arm.com operator ParamGenerator<T>() const { 220213481Sgiacomo.travaglini@arm.com const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 220313481Sgiacomo.travaglini@arm.com static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 220413481Sgiacomo.travaglini@arm.com static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 220513481Sgiacomo.travaglini@arm.com static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), 220613481Sgiacomo.travaglini@arm.com static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), 220713481Sgiacomo.travaglini@arm.com static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), 220813481Sgiacomo.travaglini@arm.com static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), 220913481Sgiacomo.travaglini@arm.com static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), 221013481Sgiacomo.travaglini@arm.com static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_), 221113481Sgiacomo.travaglini@arm.com static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_), 221213481Sgiacomo.travaglini@arm.com static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_), 221313481Sgiacomo.travaglini@arm.com static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_), 221413481Sgiacomo.travaglini@arm.com static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_), 221513481Sgiacomo.travaglini@arm.com static_cast<T>(v39_), static_cast<T>(v40_), static_cast<T>(v41_)}; 221613481Sgiacomo.travaglini@arm.com return ValuesIn(array); 221713481Sgiacomo.travaglini@arm.com } 221813481Sgiacomo.travaglini@arm.com 221913481Sgiacomo.travaglini@arm.com private: 222013481Sgiacomo.travaglini@arm.com // No implementation - assignment is unsupported. 222113481Sgiacomo.travaglini@arm.com void operator=(const ValueArray41& other); 222213481Sgiacomo.travaglini@arm.com 222313481Sgiacomo.travaglini@arm.com const T1 v1_; 222413481Sgiacomo.travaglini@arm.com const T2 v2_; 222513481Sgiacomo.travaglini@arm.com const T3 v3_; 222613481Sgiacomo.travaglini@arm.com const T4 v4_; 222713481Sgiacomo.travaglini@arm.com const T5 v5_; 222813481Sgiacomo.travaglini@arm.com const T6 v6_; 222913481Sgiacomo.travaglini@arm.com const T7 v7_; 223013481Sgiacomo.travaglini@arm.com const T8 v8_; 223113481Sgiacomo.travaglini@arm.com const T9 v9_; 223213481Sgiacomo.travaglini@arm.com const T10 v10_; 223313481Sgiacomo.travaglini@arm.com const T11 v11_; 223413481Sgiacomo.travaglini@arm.com const T12 v12_; 223513481Sgiacomo.travaglini@arm.com const T13 v13_; 223613481Sgiacomo.travaglini@arm.com const T14 v14_; 223713481Sgiacomo.travaglini@arm.com const T15 v15_; 223813481Sgiacomo.travaglini@arm.com const T16 v16_; 223913481Sgiacomo.travaglini@arm.com const T17 v17_; 224013481Sgiacomo.travaglini@arm.com const T18 v18_; 224113481Sgiacomo.travaglini@arm.com const T19 v19_; 224213481Sgiacomo.travaglini@arm.com const T20 v20_; 224313481Sgiacomo.travaglini@arm.com const T21 v21_; 224413481Sgiacomo.travaglini@arm.com const T22 v22_; 224513481Sgiacomo.travaglini@arm.com const T23 v23_; 224613481Sgiacomo.travaglini@arm.com const T24 v24_; 224713481Sgiacomo.travaglini@arm.com const T25 v25_; 224813481Sgiacomo.travaglini@arm.com const T26 v26_; 224913481Sgiacomo.travaglini@arm.com const T27 v27_; 225013481Sgiacomo.travaglini@arm.com const T28 v28_; 225113481Sgiacomo.travaglini@arm.com const T29 v29_; 225213481Sgiacomo.travaglini@arm.com const T30 v30_; 225313481Sgiacomo.travaglini@arm.com const T31 v31_; 225413481Sgiacomo.travaglini@arm.com const T32 v32_; 225513481Sgiacomo.travaglini@arm.com const T33 v33_; 225613481Sgiacomo.travaglini@arm.com const T34 v34_; 225713481Sgiacomo.travaglini@arm.com const T35 v35_; 225813481Sgiacomo.travaglini@arm.com const T36 v36_; 225913481Sgiacomo.travaglini@arm.com const T37 v37_; 226013481Sgiacomo.travaglini@arm.com const T38 v38_; 226113481Sgiacomo.travaglini@arm.com const T39 v39_; 226213481Sgiacomo.travaglini@arm.com const T40 v40_; 226313481Sgiacomo.travaglini@arm.com const T41 v41_; 226413481Sgiacomo.travaglini@arm.com}; 226513481Sgiacomo.travaglini@arm.com 226613481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 226713481Sgiacomo.travaglini@arm.com typename T6, typename T7, typename T8, typename T9, typename T10, 226813481Sgiacomo.travaglini@arm.com typename T11, typename T12, typename T13, typename T14, typename T15, 226913481Sgiacomo.travaglini@arm.com typename T16, typename T17, typename T18, typename T19, typename T20, 227013481Sgiacomo.travaglini@arm.com typename T21, typename T22, typename T23, typename T24, typename T25, 227113481Sgiacomo.travaglini@arm.com typename T26, typename T27, typename T28, typename T29, typename T30, 227213481Sgiacomo.travaglini@arm.com typename T31, typename T32, typename T33, typename T34, typename T35, 227313481Sgiacomo.travaglini@arm.com typename T36, typename T37, typename T38, typename T39, typename T40, 227413481Sgiacomo.travaglini@arm.com typename T41, typename T42> 227513481Sgiacomo.travaglini@arm.comclass ValueArray42 { 227613481Sgiacomo.travaglini@arm.com public: 227713481Sgiacomo.travaglini@arm.com ValueArray42(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 227813481Sgiacomo.travaglini@arm.com T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 227913481Sgiacomo.travaglini@arm.com T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 228013481Sgiacomo.travaglini@arm.com T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, 228113481Sgiacomo.travaglini@arm.com T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, 228213481Sgiacomo.travaglini@arm.com T42 v42) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), 228313481Sgiacomo.travaglini@arm.com v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), 228413481Sgiacomo.travaglini@arm.com v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), 228513481Sgiacomo.travaglini@arm.com v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26), 228613481Sgiacomo.travaglini@arm.com v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32), 228713481Sgiacomo.travaglini@arm.com v33_(v33), v34_(v34), v35_(v35), v36_(v36), v37_(v37), v38_(v38), 228813481Sgiacomo.travaglini@arm.com v39_(v39), v40_(v40), v41_(v41), v42_(v42) {} 228913481Sgiacomo.travaglini@arm.com 229013481Sgiacomo.travaglini@arm.com template <typename T> 229113481Sgiacomo.travaglini@arm.com operator ParamGenerator<T>() const { 229213481Sgiacomo.travaglini@arm.com const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 229313481Sgiacomo.travaglini@arm.com static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 229413481Sgiacomo.travaglini@arm.com static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 229513481Sgiacomo.travaglini@arm.com static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), 229613481Sgiacomo.travaglini@arm.com static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), 229713481Sgiacomo.travaglini@arm.com static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), 229813481Sgiacomo.travaglini@arm.com static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), 229913481Sgiacomo.travaglini@arm.com static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), 230013481Sgiacomo.travaglini@arm.com static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_), 230113481Sgiacomo.travaglini@arm.com static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_), 230213481Sgiacomo.travaglini@arm.com static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_), 230313481Sgiacomo.travaglini@arm.com static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_), 230413481Sgiacomo.travaglini@arm.com static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_), 230513481Sgiacomo.travaglini@arm.com static_cast<T>(v39_), static_cast<T>(v40_), static_cast<T>(v41_), 230613481Sgiacomo.travaglini@arm.com static_cast<T>(v42_)}; 230713481Sgiacomo.travaglini@arm.com return ValuesIn(array); 230813481Sgiacomo.travaglini@arm.com } 230913481Sgiacomo.travaglini@arm.com 231013481Sgiacomo.travaglini@arm.com private: 231113481Sgiacomo.travaglini@arm.com // No implementation - assignment is unsupported. 231213481Sgiacomo.travaglini@arm.com void operator=(const ValueArray42& other); 231313481Sgiacomo.travaglini@arm.com 231413481Sgiacomo.travaglini@arm.com const T1 v1_; 231513481Sgiacomo.travaglini@arm.com const T2 v2_; 231613481Sgiacomo.travaglini@arm.com const T3 v3_; 231713481Sgiacomo.travaglini@arm.com const T4 v4_; 231813481Sgiacomo.travaglini@arm.com const T5 v5_; 231913481Sgiacomo.travaglini@arm.com const T6 v6_; 232013481Sgiacomo.travaglini@arm.com const T7 v7_; 232113481Sgiacomo.travaglini@arm.com const T8 v8_; 232213481Sgiacomo.travaglini@arm.com const T9 v9_; 232313481Sgiacomo.travaglini@arm.com const T10 v10_; 232413481Sgiacomo.travaglini@arm.com const T11 v11_; 232513481Sgiacomo.travaglini@arm.com const T12 v12_; 232613481Sgiacomo.travaglini@arm.com const T13 v13_; 232713481Sgiacomo.travaglini@arm.com const T14 v14_; 232813481Sgiacomo.travaglini@arm.com const T15 v15_; 232913481Sgiacomo.travaglini@arm.com const T16 v16_; 233013481Sgiacomo.travaglini@arm.com const T17 v17_; 233113481Sgiacomo.travaglini@arm.com const T18 v18_; 233213481Sgiacomo.travaglini@arm.com const T19 v19_; 233313481Sgiacomo.travaglini@arm.com const T20 v20_; 233413481Sgiacomo.travaglini@arm.com const T21 v21_; 233513481Sgiacomo.travaglini@arm.com const T22 v22_; 233613481Sgiacomo.travaglini@arm.com const T23 v23_; 233713481Sgiacomo.travaglini@arm.com const T24 v24_; 233813481Sgiacomo.travaglini@arm.com const T25 v25_; 233913481Sgiacomo.travaglini@arm.com const T26 v26_; 234013481Sgiacomo.travaglini@arm.com const T27 v27_; 234113481Sgiacomo.travaglini@arm.com const T28 v28_; 234213481Sgiacomo.travaglini@arm.com const T29 v29_; 234313481Sgiacomo.travaglini@arm.com const T30 v30_; 234413481Sgiacomo.travaglini@arm.com const T31 v31_; 234513481Sgiacomo.travaglini@arm.com const T32 v32_; 234613481Sgiacomo.travaglini@arm.com const T33 v33_; 234713481Sgiacomo.travaglini@arm.com const T34 v34_; 234813481Sgiacomo.travaglini@arm.com const T35 v35_; 234913481Sgiacomo.travaglini@arm.com const T36 v36_; 235013481Sgiacomo.travaglini@arm.com const T37 v37_; 235113481Sgiacomo.travaglini@arm.com const T38 v38_; 235213481Sgiacomo.travaglini@arm.com const T39 v39_; 235313481Sgiacomo.travaglini@arm.com const T40 v40_; 235413481Sgiacomo.travaglini@arm.com const T41 v41_; 235513481Sgiacomo.travaglini@arm.com const T42 v42_; 235613481Sgiacomo.travaglini@arm.com}; 235713481Sgiacomo.travaglini@arm.com 235813481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 235913481Sgiacomo.travaglini@arm.com typename T6, typename T7, typename T8, typename T9, typename T10, 236013481Sgiacomo.travaglini@arm.com typename T11, typename T12, typename T13, typename T14, typename T15, 236113481Sgiacomo.travaglini@arm.com typename T16, typename T17, typename T18, typename T19, typename T20, 236213481Sgiacomo.travaglini@arm.com typename T21, typename T22, typename T23, typename T24, typename T25, 236313481Sgiacomo.travaglini@arm.com typename T26, typename T27, typename T28, typename T29, typename T30, 236413481Sgiacomo.travaglini@arm.com typename T31, typename T32, typename T33, typename T34, typename T35, 236513481Sgiacomo.travaglini@arm.com typename T36, typename T37, typename T38, typename T39, typename T40, 236613481Sgiacomo.travaglini@arm.com typename T41, typename T42, typename T43> 236713481Sgiacomo.travaglini@arm.comclass ValueArray43 { 236813481Sgiacomo.travaglini@arm.com public: 236913481Sgiacomo.travaglini@arm.com ValueArray43(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 237013481Sgiacomo.travaglini@arm.com T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 237113481Sgiacomo.travaglini@arm.com T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 237213481Sgiacomo.travaglini@arm.com T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, 237313481Sgiacomo.travaglini@arm.com T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, 237413481Sgiacomo.travaglini@arm.com T42 v42, T43 v43) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), 237513481Sgiacomo.travaglini@arm.com v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), 237613481Sgiacomo.travaglini@arm.com v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), 237713481Sgiacomo.travaglini@arm.com v20_(v20), v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), 237813481Sgiacomo.travaglini@arm.com v26_(v26), v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), 237913481Sgiacomo.travaglini@arm.com v32_(v32), v33_(v33), v34_(v34), v35_(v35), v36_(v36), v37_(v37), 238013481Sgiacomo.travaglini@arm.com v38_(v38), v39_(v39), v40_(v40), v41_(v41), v42_(v42), v43_(v43) {} 238113481Sgiacomo.travaglini@arm.com 238213481Sgiacomo.travaglini@arm.com template <typename T> 238313481Sgiacomo.travaglini@arm.com operator ParamGenerator<T>() const { 238413481Sgiacomo.travaglini@arm.com const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 238513481Sgiacomo.travaglini@arm.com static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 238613481Sgiacomo.travaglini@arm.com static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 238713481Sgiacomo.travaglini@arm.com static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), 238813481Sgiacomo.travaglini@arm.com static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), 238913481Sgiacomo.travaglini@arm.com static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), 239013481Sgiacomo.travaglini@arm.com static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), 239113481Sgiacomo.travaglini@arm.com static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), 239213481Sgiacomo.travaglini@arm.com static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_), 239313481Sgiacomo.travaglini@arm.com static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_), 239413481Sgiacomo.travaglini@arm.com static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_), 239513481Sgiacomo.travaglini@arm.com static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_), 239613481Sgiacomo.travaglini@arm.com static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_), 239713481Sgiacomo.travaglini@arm.com static_cast<T>(v39_), static_cast<T>(v40_), static_cast<T>(v41_), 239813481Sgiacomo.travaglini@arm.com static_cast<T>(v42_), static_cast<T>(v43_)}; 239913481Sgiacomo.travaglini@arm.com return ValuesIn(array); 240013481Sgiacomo.travaglini@arm.com } 240113481Sgiacomo.travaglini@arm.com 240213481Sgiacomo.travaglini@arm.com private: 240313481Sgiacomo.travaglini@arm.com // No implementation - assignment is unsupported. 240413481Sgiacomo.travaglini@arm.com void operator=(const ValueArray43& other); 240513481Sgiacomo.travaglini@arm.com 240613481Sgiacomo.travaglini@arm.com const T1 v1_; 240713481Sgiacomo.travaglini@arm.com const T2 v2_; 240813481Sgiacomo.travaglini@arm.com const T3 v3_; 240913481Sgiacomo.travaglini@arm.com const T4 v4_; 241013481Sgiacomo.travaglini@arm.com const T5 v5_; 241113481Sgiacomo.travaglini@arm.com const T6 v6_; 241213481Sgiacomo.travaglini@arm.com const T7 v7_; 241313481Sgiacomo.travaglini@arm.com const T8 v8_; 241413481Sgiacomo.travaglini@arm.com const T9 v9_; 241513481Sgiacomo.travaglini@arm.com const T10 v10_; 241613481Sgiacomo.travaglini@arm.com const T11 v11_; 241713481Sgiacomo.travaglini@arm.com const T12 v12_; 241813481Sgiacomo.travaglini@arm.com const T13 v13_; 241913481Sgiacomo.travaglini@arm.com const T14 v14_; 242013481Sgiacomo.travaglini@arm.com const T15 v15_; 242113481Sgiacomo.travaglini@arm.com const T16 v16_; 242213481Sgiacomo.travaglini@arm.com const T17 v17_; 242313481Sgiacomo.travaglini@arm.com const T18 v18_; 242413481Sgiacomo.travaglini@arm.com const T19 v19_; 242513481Sgiacomo.travaglini@arm.com const T20 v20_; 242613481Sgiacomo.travaglini@arm.com const T21 v21_; 242713481Sgiacomo.travaglini@arm.com const T22 v22_; 242813481Sgiacomo.travaglini@arm.com const T23 v23_; 242913481Sgiacomo.travaglini@arm.com const T24 v24_; 243013481Sgiacomo.travaglini@arm.com const T25 v25_; 243113481Sgiacomo.travaglini@arm.com const T26 v26_; 243213481Sgiacomo.travaglini@arm.com const T27 v27_; 243313481Sgiacomo.travaglini@arm.com const T28 v28_; 243413481Sgiacomo.travaglini@arm.com const T29 v29_; 243513481Sgiacomo.travaglini@arm.com const T30 v30_; 243613481Sgiacomo.travaglini@arm.com const T31 v31_; 243713481Sgiacomo.travaglini@arm.com const T32 v32_; 243813481Sgiacomo.travaglini@arm.com const T33 v33_; 243913481Sgiacomo.travaglini@arm.com const T34 v34_; 244013481Sgiacomo.travaglini@arm.com const T35 v35_; 244113481Sgiacomo.travaglini@arm.com const T36 v36_; 244213481Sgiacomo.travaglini@arm.com const T37 v37_; 244313481Sgiacomo.travaglini@arm.com const T38 v38_; 244413481Sgiacomo.travaglini@arm.com const T39 v39_; 244513481Sgiacomo.travaglini@arm.com const T40 v40_; 244613481Sgiacomo.travaglini@arm.com const T41 v41_; 244713481Sgiacomo.travaglini@arm.com const T42 v42_; 244813481Sgiacomo.travaglini@arm.com const T43 v43_; 244913481Sgiacomo.travaglini@arm.com}; 245013481Sgiacomo.travaglini@arm.com 245113481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 245213481Sgiacomo.travaglini@arm.com typename T6, typename T7, typename T8, typename T9, typename T10, 245313481Sgiacomo.travaglini@arm.com typename T11, typename T12, typename T13, typename T14, typename T15, 245413481Sgiacomo.travaglini@arm.com typename T16, typename T17, typename T18, typename T19, typename T20, 245513481Sgiacomo.travaglini@arm.com typename T21, typename T22, typename T23, typename T24, typename T25, 245613481Sgiacomo.travaglini@arm.com typename T26, typename T27, typename T28, typename T29, typename T30, 245713481Sgiacomo.travaglini@arm.com typename T31, typename T32, typename T33, typename T34, typename T35, 245813481Sgiacomo.travaglini@arm.com typename T36, typename T37, typename T38, typename T39, typename T40, 245913481Sgiacomo.travaglini@arm.com typename T41, typename T42, typename T43, typename T44> 246013481Sgiacomo.travaglini@arm.comclass ValueArray44 { 246113481Sgiacomo.travaglini@arm.com public: 246213481Sgiacomo.travaglini@arm.com ValueArray44(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 246313481Sgiacomo.travaglini@arm.com T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 246413481Sgiacomo.travaglini@arm.com T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 246513481Sgiacomo.travaglini@arm.com T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, 246613481Sgiacomo.travaglini@arm.com T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, 246713481Sgiacomo.travaglini@arm.com T42 v42, T43 v43, T44 v44) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), 246813481Sgiacomo.travaglini@arm.com v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), 246913481Sgiacomo.travaglini@arm.com v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18), 247013481Sgiacomo.travaglini@arm.com v19_(v19), v20_(v20), v21_(v21), v22_(v22), v23_(v23), v24_(v24), 247113481Sgiacomo.travaglini@arm.com v25_(v25), v26_(v26), v27_(v27), v28_(v28), v29_(v29), v30_(v30), 247213481Sgiacomo.travaglini@arm.com v31_(v31), v32_(v32), v33_(v33), v34_(v34), v35_(v35), v36_(v36), 247313481Sgiacomo.travaglini@arm.com v37_(v37), v38_(v38), v39_(v39), v40_(v40), v41_(v41), v42_(v42), 247413481Sgiacomo.travaglini@arm.com v43_(v43), v44_(v44) {} 247513481Sgiacomo.travaglini@arm.com 247613481Sgiacomo.travaglini@arm.com template <typename T> 247713481Sgiacomo.travaglini@arm.com operator ParamGenerator<T>() const { 247813481Sgiacomo.travaglini@arm.com const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 247913481Sgiacomo.travaglini@arm.com static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 248013481Sgiacomo.travaglini@arm.com static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 248113481Sgiacomo.travaglini@arm.com static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), 248213481Sgiacomo.travaglini@arm.com static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), 248313481Sgiacomo.travaglini@arm.com static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), 248413481Sgiacomo.travaglini@arm.com static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), 248513481Sgiacomo.travaglini@arm.com static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), 248613481Sgiacomo.travaglini@arm.com static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_), 248713481Sgiacomo.travaglini@arm.com static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_), 248813481Sgiacomo.travaglini@arm.com static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_), 248913481Sgiacomo.travaglini@arm.com static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_), 249013481Sgiacomo.travaglini@arm.com static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_), 249113481Sgiacomo.travaglini@arm.com static_cast<T>(v39_), static_cast<T>(v40_), static_cast<T>(v41_), 249213481Sgiacomo.travaglini@arm.com static_cast<T>(v42_), static_cast<T>(v43_), static_cast<T>(v44_)}; 249313481Sgiacomo.travaglini@arm.com return ValuesIn(array); 249413481Sgiacomo.travaglini@arm.com } 249513481Sgiacomo.travaglini@arm.com 249613481Sgiacomo.travaglini@arm.com private: 249713481Sgiacomo.travaglini@arm.com // No implementation - assignment is unsupported. 249813481Sgiacomo.travaglini@arm.com void operator=(const ValueArray44& other); 249913481Sgiacomo.travaglini@arm.com 250013481Sgiacomo.travaglini@arm.com const T1 v1_; 250113481Sgiacomo.travaglini@arm.com const T2 v2_; 250213481Sgiacomo.travaglini@arm.com const T3 v3_; 250313481Sgiacomo.travaglini@arm.com const T4 v4_; 250413481Sgiacomo.travaglini@arm.com const T5 v5_; 250513481Sgiacomo.travaglini@arm.com const T6 v6_; 250613481Sgiacomo.travaglini@arm.com const T7 v7_; 250713481Sgiacomo.travaglini@arm.com const T8 v8_; 250813481Sgiacomo.travaglini@arm.com const T9 v9_; 250913481Sgiacomo.travaglini@arm.com const T10 v10_; 251013481Sgiacomo.travaglini@arm.com const T11 v11_; 251113481Sgiacomo.travaglini@arm.com const T12 v12_; 251213481Sgiacomo.travaglini@arm.com const T13 v13_; 251313481Sgiacomo.travaglini@arm.com const T14 v14_; 251413481Sgiacomo.travaglini@arm.com const T15 v15_; 251513481Sgiacomo.travaglini@arm.com const T16 v16_; 251613481Sgiacomo.travaglini@arm.com const T17 v17_; 251713481Sgiacomo.travaglini@arm.com const T18 v18_; 251813481Sgiacomo.travaglini@arm.com const T19 v19_; 251913481Sgiacomo.travaglini@arm.com const T20 v20_; 252013481Sgiacomo.travaglini@arm.com const T21 v21_; 252113481Sgiacomo.travaglini@arm.com const T22 v22_; 252213481Sgiacomo.travaglini@arm.com const T23 v23_; 252313481Sgiacomo.travaglini@arm.com const T24 v24_; 252413481Sgiacomo.travaglini@arm.com const T25 v25_; 252513481Sgiacomo.travaglini@arm.com const T26 v26_; 252613481Sgiacomo.travaglini@arm.com const T27 v27_; 252713481Sgiacomo.travaglini@arm.com const T28 v28_; 252813481Sgiacomo.travaglini@arm.com const T29 v29_; 252913481Sgiacomo.travaglini@arm.com const T30 v30_; 253013481Sgiacomo.travaglini@arm.com const T31 v31_; 253113481Sgiacomo.travaglini@arm.com const T32 v32_; 253213481Sgiacomo.travaglini@arm.com const T33 v33_; 253313481Sgiacomo.travaglini@arm.com const T34 v34_; 253413481Sgiacomo.travaglini@arm.com const T35 v35_; 253513481Sgiacomo.travaglini@arm.com const T36 v36_; 253613481Sgiacomo.travaglini@arm.com const T37 v37_; 253713481Sgiacomo.travaglini@arm.com const T38 v38_; 253813481Sgiacomo.travaglini@arm.com const T39 v39_; 253913481Sgiacomo.travaglini@arm.com const T40 v40_; 254013481Sgiacomo.travaglini@arm.com const T41 v41_; 254113481Sgiacomo.travaglini@arm.com const T42 v42_; 254213481Sgiacomo.travaglini@arm.com const T43 v43_; 254313481Sgiacomo.travaglini@arm.com const T44 v44_; 254413481Sgiacomo.travaglini@arm.com}; 254513481Sgiacomo.travaglini@arm.com 254613481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 254713481Sgiacomo.travaglini@arm.com typename T6, typename T7, typename T8, typename T9, typename T10, 254813481Sgiacomo.travaglini@arm.com typename T11, typename T12, typename T13, typename T14, typename T15, 254913481Sgiacomo.travaglini@arm.com typename T16, typename T17, typename T18, typename T19, typename T20, 255013481Sgiacomo.travaglini@arm.com typename T21, typename T22, typename T23, typename T24, typename T25, 255113481Sgiacomo.travaglini@arm.com typename T26, typename T27, typename T28, typename T29, typename T30, 255213481Sgiacomo.travaglini@arm.com typename T31, typename T32, typename T33, typename T34, typename T35, 255313481Sgiacomo.travaglini@arm.com typename T36, typename T37, typename T38, typename T39, typename T40, 255413481Sgiacomo.travaglini@arm.com typename T41, typename T42, typename T43, typename T44, typename T45> 255513481Sgiacomo.travaglini@arm.comclass ValueArray45 { 255613481Sgiacomo.travaglini@arm.com public: 255713481Sgiacomo.travaglini@arm.com ValueArray45(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 255813481Sgiacomo.travaglini@arm.com T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 255913481Sgiacomo.travaglini@arm.com T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 256013481Sgiacomo.travaglini@arm.com T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, 256113481Sgiacomo.travaglini@arm.com T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, 256213481Sgiacomo.travaglini@arm.com T42 v42, T43 v43, T44 v44, T45 v45) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), 256313481Sgiacomo.travaglini@arm.com v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), 256413481Sgiacomo.travaglini@arm.com v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17), 256513481Sgiacomo.travaglini@arm.com v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), v23_(v23), 256613481Sgiacomo.travaglini@arm.com v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28), v29_(v29), 256713481Sgiacomo.travaglini@arm.com v30_(v30), v31_(v31), v32_(v32), v33_(v33), v34_(v34), v35_(v35), 256813481Sgiacomo.travaglini@arm.com v36_(v36), v37_(v37), v38_(v38), v39_(v39), v40_(v40), v41_(v41), 256913481Sgiacomo.travaglini@arm.com v42_(v42), v43_(v43), v44_(v44), v45_(v45) {} 257013481Sgiacomo.travaglini@arm.com 257113481Sgiacomo.travaglini@arm.com template <typename T> 257213481Sgiacomo.travaglini@arm.com operator ParamGenerator<T>() const { 257313481Sgiacomo.travaglini@arm.com const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 257413481Sgiacomo.travaglini@arm.com static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 257513481Sgiacomo.travaglini@arm.com static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 257613481Sgiacomo.travaglini@arm.com static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), 257713481Sgiacomo.travaglini@arm.com static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), 257813481Sgiacomo.travaglini@arm.com static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), 257913481Sgiacomo.travaglini@arm.com static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), 258013481Sgiacomo.travaglini@arm.com static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), 258113481Sgiacomo.travaglini@arm.com static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_), 258213481Sgiacomo.travaglini@arm.com static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_), 258313481Sgiacomo.travaglini@arm.com static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_), 258413481Sgiacomo.travaglini@arm.com static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_), 258513481Sgiacomo.travaglini@arm.com static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_), 258613481Sgiacomo.travaglini@arm.com static_cast<T>(v39_), static_cast<T>(v40_), static_cast<T>(v41_), 258713481Sgiacomo.travaglini@arm.com static_cast<T>(v42_), static_cast<T>(v43_), static_cast<T>(v44_), 258813481Sgiacomo.travaglini@arm.com static_cast<T>(v45_)}; 258913481Sgiacomo.travaglini@arm.com return ValuesIn(array); 259013481Sgiacomo.travaglini@arm.com } 259113481Sgiacomo.travaglini@arm.com 259213481Sgiacomo.travaglini@arm.com private: 259313481Sgiacomo.travaglini@arm.com // No implementation - assignment is unsupported. 259413481Sgiacomo.travaglini@arm.com void operator=(const ValueArray45& other); 259513481Sgiacomo.travaglini@arm.com 259613481Sgiacomo.travaglini@arm.com const T1 v1_; 259713481Sgiacomo.travaglini@arm.com const T2 v2_; 259813481Sgiacomo.travaglini@arm.com const T3 v3_; 259913481Sgiacomo.travaglini@arm.com const T4 v4_; 260013481Sgiacomo.travaglini@arm.com const T5 v5_; 260113481Sgiacomo.travaglini@arm.com const T6 v6_; 260213481Sgiacomo.travaglini@arm.com const T7 v7_; 260313481Sgiacomo.travaglini@arm.com const T8 v8_; 260413481Sgiacomo.travaglini@arm.com const T9 v9_; 260513481Sgiacomo.travaglini@arm.com const T10 v10_; 260613481Sgiacomo.travaglini@arm.com const T11 v11_; 260713481Sgiacomo.travaglini@arm.com const T12 v12_; 260813481Sgiacomo.travaglini@arm.com const T13 v13_; 260913481Sgiacomo.travaglini@arm.com const T14 v14_; 261013481Sgiacomo.travaglini@arm.com const T15 v15_; 261113481Sgiacomo.travaglini@arm.com const T16 v16_; 261213481Sgiacomo.travaglini@arm.com const T17 v17_; 261313481Sgiacomo.travaglini@arm.com const T18 v18_; 261413481Sgiacomo.travaglini@arm.com const T19 v19_; 261513481Sgiacomo.travaglini@arm.com const T20 v20_; 261613481Sgiacomo.travaglini@arm.com const T21 v21_; 261713481Sgiacomo.travaglini@arm.com const T22 v22_; 261813481Sgiacomo.travaglini@arm.com const T23 v23_; 261913481Sgiacomo.travaglini@arm.com const T24 v24_; 262013481Sgiacomo.travaglini@arm.com const T25 v25_; 262113481Sgiacomo.travaglini@arm.com const T26 v26_; 262213481Sgiacomo.travaglini@arm.com const T27 v27_; 262313481Sgiacomo.travaglini@arm.com const T28 v28_; 262413481Sgiacomo.travaglini@arm.com const T29 v29_; 262513481Sgiacomo.travaglini@arm.com const T30 v30_; 262613481Sgiacomo.travaglini@arm.com const T31 v31_; 262713481Sgiacomo.travaglini@arm.com const T32 v32_; 262813481Sgiacomo.travaglini@arm.com const T33 v33_; 262913481Sgiacomo.travaglini@arm.com const T34 v34_; 263013481Sgiacomo.travaglini@arm.com const T35 v35_; 263113481Sgiacomo.travaglini@arm.com const T36 v36_; 263213481Sgiacomo.travaglini@arm.com const T37 v37_; 263313481Sgiacomo.travaglini@arm.com const T38 v38_; 263413481Sgiacomo.travaglini@arm.com const T39 v39_; 263513481Sgiacomo.travaglini@arm.com const T40 v40_; 263613481Sgiacomo.travaglini@arm.com const T41 v41_; 263713481Sgiacomo.travaglini@arm.com const T42 v42_; 263813481Sgiacomo.travaglini@arm.com const T43 v43_; 263913481Sgiacomo.travaglini@arm.com const T44 v44_; 264013481Sgiacomo.travaglini@arm.com const T45 v45_; 264113481Sgiacomo.travaglini@arm.com}; 264213481Sgiacomo.travaglini@arm.com 264313481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 264413481Sgiacomo.travaglini@arm.com typename T6, typename T7, typename T8, typename T9, typename T10, 264513481Sgiacomo.travaglini@arm.com typename T11, typename T12, typename T13, typename T14, typename T15, 264613481Sgiacomo.travaglini@arm.com typename T16, typename T17, typename T18, typename T19, typename T20, 264713481Sgiacomo.travaglini@arm.com typename T21, typename T22, typename T23, typename T24, typename T25, 264813481Sgiacomo.travaglini@arm.com typename T26, typename T27, typename T28, typename T29, typename T30, 264913481Sgiacomo.travaglini@arm.com typename T31, typename T32, typename T33, typename T34, typename T35, 265013481Sgiacomo.travaglini@arm.com typename T36, typename T37, typename T38, typename T39, typename T40, 265113481Sgiacomo.travaglini@arm.com typename T41, typename T42, typename T43, typename T44, typename T45, 265213481Sgiacomo.travaglini@arm.com typename T46> 265313481Sgiacomo.travaglini@arm.comclass ValueArray46 { 265413481Sgiacomo.travaglini@arm.com public: 265513481Sgiacomo.travaglini@arm.com ValueArray46(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 265613481Sgiacomo.travaglini@arm.com T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 265713481Sgiacomo.travaglini@arm.com T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 265813481Sgiacomo.travaglini@arm.com T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, 265913481Sgiacomo.travaglini@arm.com T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, 266013481Sgiacomo.travaglini@arm.com T42 v42, T43 v43, T44 v44, T45 v45, T46 v46) : v1_(v1), v2_(v2), v3_(v3), 266113481Sgiacomo.travaglini@arm.com v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), 266213481Sgiacomo.travaglini@arm.com v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), 266313481Sgiacomo.travaglini@arm.com v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), 266413481Sgiacomo.travaglini@arm.com v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28), 266513481Sgiacomo.travaglini@arm.com v29_(v29), v30_(v30), v31_(v31), v32_(v32), v33_(v33), v34_(v34), 266613481Sgiacomo.travaglini@arm.com v35_(v35), v36_(v36), v37_(v37), v38_(v38), v39_(v39), v40_(v40), 266713481Sgiacomo.travaglini@arm.com v41_(v41), v42_(v42), v43_(v43), v44_(v44), v45_(v45), v46_(v46) {} 266813481Sgiacomo.travaglini@arm.com 266913481Sgiacomo.travaglini@arm.com template <typename T> 267013481Sgiacomo.travaglini@arm.com operator ParamGenerator<T>() const { 267113481Sgiacomo.travaglini@arm.com const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 267213481Sgiacomo.travaglini@arm.com static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 267313481Sgiacomo.travaglini@arm.com static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 267413481Sgiacomo.travaglini@arm.com static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), 267513481Sgiacomo.travaglini@arm.com static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), 267613481Sgiacomo.travaglini@arm.com static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), 267713481Sgiacomo.travaglini@arm.com static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), 267813481Sgiacomo.travaglini@arm.com static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), 267913481Sgiacomo.travaglini@arm.com static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_), 268013481Sgiacomo.travaglini@arm.com static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_), 268113481Sgiacomo.travaglini@arm.com static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_), 268213481Sgiacomo.travaglini@arm.com static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_), 268313481Sgiacomo.travaglini@arm.com static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_), 268413481Sgiacomo.travaglini@arm.com static_cast<T>(v39_), static_cast<T>(v40_), static_cast<T>(v41_), 268513481Sgiacomo.travaglini@arm.com static_cast<T>(v42_), static_cast<T>(v43_), static_cast<T>(v44_), 268613481Sgiacomo.travaglini@arm.com static_cast<T>(v45_), static_cast<T>(v46_)}; 268713481Sgiacomo.travaglini@arm.com return ValuesIn(array); 268813481Sgiacomo.travaglini@arm.com } 268913481Sgiacomo.travaglini@arm.com 269013481Sgiacomo.travaglini@arm.com private: 269113481Sgiacomo.travaglini@arm.com // No implementation - assignment is unsupported. 269213481Sgiacomo.travaglini@arm.com void operator=(const ValueArray46& other); 269313481Sgiacomo.travaglini@arm.com 269413481Sgiacomo.travaglini@arm.com const T1 v1_; 269513481Sgiacomo.travaglini@arm.com const T2 v2_; 269613481Sgiacomo.travaglini@arm.com const T3 v3_; 269713481Sgiacomo.travaglini@arm.com const T4 v4_; 269813481Sgiacomo.travaglini@arm.com const T5 v5_; 269913481Sgiacomo.travaglini@arm.com const T6 v6_; 270013481Sgiacomo.travaglini@arm.com const T7 v7_; 270113481Sgiacomo.travaglini@arm.com const T8 v8_; 270213481Sgiacomo.travaglini@arm.com const T9 v9_; 270313481Sgiacomo.travaglini@arm.com const T10 v10_; 270413481Sgiacomo.travaglini@arm.com const T11 v11_; 270513481Sgiacomo.travaglini@arm.com const T12 v12_; 270613481Sgiacomo.travaglini@arm.com const T13 v13_; 270713481Sgiacomo.travaglini@arm.com const T14 v14_; 270813481Sgiacomo.travaglini@arm.com const T15 v15_; 270913481Sgiacomo.travaglini@arm.com const T16 v16_; 271013481Sgiacomo.travaglini@arm.com const T17 v17_; 271113481Sgiacomo.travaglini@arm.com const T18 v18_; 271213481Sgiacomo.travaglini@arm.com const T19 v19_; 271313481Sgiacomo.travaglini@arm.com const T20 v20_; 271413481Sgiacomo.travaglini@arm.com const T21 v21_; 271513481Sgiacomo.travaglini@arm.com const T22 v22_; 271613481Sgiacomo.travaglini@arm.com const T23 v23_; 271713481Sgiacomo.travaglini@arm.com const T24 v24_; 271813481Sgiacomo.travaglini@arm.com const T25 v25_; 271913481Sgiacomo.travaglini@arm.com const T26 v26_; 272013481Sgiacomo.travaglini@arm.com const T27 v27_; 272113481Sgiacomo.travaglini@arm.com const T28 v28_; 272213481Sgiacomo.travaglini@arm.com const T29 v29_; 272313481Sgiacomo.travaglini@arm.com const T30 v30_; 272413481Sgiacomo.travaglini@arm.com const T31 v31_; 272513481Sgiacomo.travaglini@arm.com const T32 v32_; 272613481Sgiacomo.travaglini@arm.com const T33 v33_; 272713481Sgiacomo.travaglini@arm.com const T34 v34_; 272813481Sgiacomo.travaglini@arm.com const T35 v35_; 272913481Sgiacomo.travaglini@arm.com const T36 v36_; 273013481Sgiacomo.travaglini@arm.com const T37 v37_; 273113481Sgiacomo.travaglini@arm.com const T38 v38_; 273213481Sgiacomo.travaglini@arm.com const T39 v39_; 273313481Sgiacomo.travaglini@arm.com const T40 v40_; 273413481Sgiacomo.travaglini@arm.com const T41 v41_; 273513481Sgiacomo.travaglini@arm.com const T42 v42_; 273613481Sgiacomo.travaglini@arm.com const T43 v43_; 273713481Sgiacomo.travaglini@arm.com const T44 v44_; 273813481Sgiacomo.travaglini@arm.com const T45 v45_; 273913481Sgiacomo.travaglini@arm.com const T46 v46_; 274013481Sgiacomo.travaglini@arm.com}; 274113481Sgiacomo.travaglini@arm.com 274213481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 274313481Sgiacomo.travaglini@arm.com typename T6, typename T7, typename T8, typename T9, typename T10, 274413481Sgiacomo.travaglini@arm.com typename T11, typename T12, typename T13, typename T14, typename T15, 274513481Sgiacomo.travaglini@arm.com typename T16, typename T17, typename T18, typename T19, typename T20, 274613481Sgiacomo.travaglini@arm.com typename T21, typename T22, typename T23, typename T24, typename T25, 274713481Sgiacomo.travaglini@arm.com typename T26, typename T27, typename T28, typename T29, typename T30, 274813481Sgiacomo.travaglini@arm.com typename T31, typename T32, typename T33, typename T34, typename T35, 274913481Sgiacomo.travaglini@arm.com typename T36, typename T37, typename T38, typename T39, typename T40, 275013481Sgiacomo.travaglini@arm.com typename T41, typename T42, typename T43, typename T44, typename T45, 275113481Sgiacomo.travaglini@arm.com typename T46, typename T47> 275213481Sgiacomo.travaglini@arm.comclass ValueArray47 { 275313481Sgiacomo.travaglini@arm.com public: 275413481Sgiacomo.travaglini@arm.com ValueArray47(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 275513481Sgiacomo.travaglini@arm.com T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 275613481Sgiacomo.travaglini@arm.com T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 275713481Sgiacomo.travaglini@arm.com T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, 275813481Sgiacomo.travaglini@arm.com T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, 275913481Sgiacomo.travaglini@arm.com T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47) : v1_(v1), v2_(v2), 276013481Sgiacomo.travaglini@arm.com v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), 276113481Sgiacomo.travaglini@arm.com v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), 276213481Sgiacomo.travaglini@arm.com v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), 276313481Sgiacomo.travaglini@arm.com v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28), 276413481Sgiacomo.travaglini@arm.com v29_(v29), v30_(v30), v31_(v31), v32_(v32), v33_(v33), v34_(v34), 276513481Sgiacomo.travaglini@arm.com v35_(v35), v36_(v36), v37_(v37), v38_(v38), v39_(v39), v40_(v40), 276613481Sgiacomo.travaglini@arm.com v41_(v41), v42_(v42), v43_(v43), v44_(v44), v45_(v45), v46_(v46), 276713481Sgiacomo.travaglini@arm.com v47_(v47) {} 276813481Sgiacomo.travaglini@arm.com 276913481Sgiacomo.travaglini@arm.com template <typename T> 277013481Sgiacomo.travaglini@arm.com operator ParamGenerator<T>() const { 277113481Sgiacomo.travaglini@arm.com const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 277213481Sgiacomo.travaglini@arm.com static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 277313481Sgiacomo.travaglini@arm.com static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 277413481Sgiacomo.travaglini@arm.com static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), 277513481Sgiacomo.travaglini@arm.com static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), 277613481Sgiacomo.travaglini@arm.com static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), 277713481Sgiacomo.travaglini@arm.com static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), 277813481Sgiacomo.travaglini@arm.com static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), 277913481Sgiacomo.travaglini@arm.com static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_), 278013481Sgiacomo.travaglini@arm.com static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_), 278113481Sgiacomo.travaglini@arm.com static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_), 278213481Sgiacomo.travaglini@arm.com static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_), 278313481Sgiacomo.travaglini@arm.com static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_), 278413481Sgiacomo.travaglini@arm.com static_cast<T>(v39_), static_cast<T>(v40_), static_cast<T>(v41_), 278513481Sgiacomo.travaglini@arm.com static_cast<T>(v42_), static_cast<T>(v43_), static_cast<T>(v44_), 278613481Sgiacomo.travaglini@arm.com static_cast<T>(v45_), static_cast<T>(v46_), static_cast<T>(v47_)}; 278713481Sgiacomo.travaglini@arm.com return ValuesIn(array); 278813481Sgiacomo.travaglini@arm.com } 278913481Sgiacomo.travaglini@arm.com 279013481Sgiacomo.travaglini@arm.com private: 279113481Sgiacomo.travaglini@arm.com // No implementation - assignment is unsupported. 279213481Sgiacomo.travaglini@arm.com void operator=(const ValueArray47& other); 279313481Sgiacomo.travaglini@arm.com 279413481Sgiacomo.travaglini@arm.com const T1 v1_; 279513481Sgiacomo.travaglini@arm.com const T2 v2_; 279613481Sgiacomo.travaglini@arm.com const T3 v3_; 279713481Sgiacomo.travaglini@arm.com const T4 v4_; 279813481Sgiacomo.travaglini@arm.com const T5 v5_; 279913481Sgiacomo.travaglini@arm.com const T6 v6_; 280013481Sgiacomo.travaglini@arm.com const T7 v7_; 280113481Sgiacomo.travaglini@arm.com const T8 v8_; 280213481Sgiacomo.travaglini@arm.com const T9 v9_; 280313481Sgiacomo.travaglini@arm.com const T10 v10_; 280413481Sgiacomo.travaglini@arm.com const T11 v11_; 280513481Sgiacomo.travaglini@arm.com const T12 v12_; 280613481Sgiacomo.travaglini@arm.com const T13 v13_; 280713481Sgiacomo.travaglini@arm.com const T14 v14_; 280813481Sgiacomo.travaglini@arm.com const T15 v15_; 280913481Sgiacomo.travaglini@arm.com const T16 v16_; 281013481Sgiacomo.travaglini@arm.com const T17 v17_; 281113481Sgiacomo.travaglini@arm.com const T18 v18_; 281213481Sgiacomo.travaglini@arm.com const T19 v19_; 281313481Sgiacomo.travaglini@arm.com const T20 v20_; 281413481Sgiacomo.travaglini@arm.com const T21 v21_; 281513481Sgiacomo.travaglini@arm.com const T22 v22_; 281613481Sgiacomo.travaglini@arm.com const T23 v23_; 281713481Sgiacomo.travaglini@arm.com const T24 v24_; 281813481Sgiacomo.travaglini@arm.com const T25 v25_; 281913481Sgiacomo.travaglini@arm.com const T26 v26_; 282013481Sgiacomo.travaglini@arm.com const T27 v27_; 282113481Sgiacomo.travaglini@arm.com const T28 v28_; 282213481Sgiacomo.travaglini@arm.com const T29 v29_; 282313481Sgiacomo.travaglini@arm.com const T30 v30_; 282413481Sgiacomo.travaglini@arm.com const T31 v31_; 282513481Sgiacomo.travaglini@arm.com const T32 v32_; 282613481Sgiacomo.travaglini@arm.com const T33 v33_; 282713481Sgiacomo.travaglini@arm.com const T34 v34_; 282813481Sgiacomo.travaglini@arm.com const T35 v35_; 282913481Sgiacomo.travaglini@arm.com const T36 v36_; 283013481Sgiacomo.travaglini@arm.com const T37 v37_; 283113481Sgiacomo.travaglini@arm.com const T38 v38_; 283213481Sgiacomo.travaglini@arm.com const T39 v39_; 283313481Sgiacomo.travaglini@arm.com const T40 v40_; 283413481Sgiacomo.travaglini@arm.com const T41 v41_; 283513481Sgiacomo.travaglini@arm.com const T42 v42_; 283613481Sgiacomo.travaglini@arm.com const T43 v43_; 283713481Sgiacomo.travaglini@arm.com const T44 v44_; 283813481Sgiacomo.travaglini@arm.com const T45 v45_; 283913481Sgiacomo.travaglini@arm.com const T46 v46_; 284013481Sgiacomo.travaglini@arm.com const T47 v47_; 284113481Sgiacomo.travaglini@arm.com}; 284213481Sgiacomo.travaglini@arm.com 284313481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 284413481Sgiacomo.travaglini@arm.com typename T6, typename T7, typename T8, typename T9, typename T10, 284513481Sgiacomo.travaglini@arm.com typename T11, typename T12, typename T13, typename T14, typename T15, 284613481Sgiacomo.travaglini@arm.com typename T16, typename T17, typename T18, typename T19, typename T20, 284713481Sgiacomo.travaglini@arm.com typename T21, typename T22, typename T23, typename T24, typename T25, 284813481Sgiacomo.travaglini@arm.com typename T26, typename T27, typename T28, typename T29, typename T30, 284913481Sgiacomo.travaglini@arm.com typename T31, typename T32, typename T33, typename T34, typename T35, 285013481Sgiacomo.travaglini@arm.com typename T36, typename T37, typename T38, typename T39, typename T40, 285113481Sgiacomo.travaglini@arm.com typename T41, typename T42, typename T43, typename T44, typename T45, 285213481Sgiacomo.travaglini@arm.com typename T46, typename T47, typename T48> 285313481Sgiacomo.travaglini@arm.comclass ValueArray48 { 285413481Sgiacomo.travaglini@arm.com public: 285513481Sgiacomo.travaglini@arm.com ValueArray48(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 285613481Sgiacomo.travaglini@arm.com T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 285713481Sgiacomo.travaglini@arm.com T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 285813481Sgiacomo.travaglini@arm.com T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, 285913481Sgiacomo.travaglini@arm.com T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, 286013481Sgiacomo.travaglini@arm.com T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47, T48 v48) : v1_(v1), 286113481Sgiacomo.travaglini@arm.com v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), 286213481Sgiacomo.travaglini@arm.com v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), 286313481Sgiacomo.travaglini@arm.com v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), 286413481Sgiacomo.travaglini@arm.com v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), 286513481Sgiacomo.travaglini@arm.com v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32), v33_(v33), 286613481Sgiacomo.travaglini@arm.com v34_(v34), v35_(v35), v36_(v36), v37_(v37), v38_(v38), v39_(v39), 286713481Sgiacomo.travaglini@arm.com v40_(v40), v41_(v41), v42_(v42), v43_(v43), v44_(v44), v45_(v45), 286813481Sgiacomo.travaglini@arm.com v46_(v46), v47_(v47), v48_(v48) {} 286913481Sgiacomo.travaglini@arm.com 287013481Sgiacomo.travaglini@arm.com template <typename T> 287113481Sgiacomo.travaglini@arm.com operator ParamGenerator<T>() const { 287213481Sgiacomo.travaglini@arm.com const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 287313481Sgiacomo.travaglini@arm.com static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 287413481Sgiacomo.travaglini@arm.com static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 287513481Sgiacomo.travaglini@arm.com static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), 287613481Sgiacomo.travaglini@arm.com static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), 287713481Sgiacomo.travaglini@arm.com static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), 287813481Sgiacomo.travaglini@arm.com static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), 287913481Sgiacomo.travaglini@arm.com static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), 288013481Sgiacomo.travaglini@arm.com static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_), 288113481Sgiacomo.travaglini@arm.com static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_), 288213481Sgiacomo.travaglini@arm.com static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_), 288313481Sgiacomo.travaglini@arm.com static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_), 288413481Sgiacomo.travaglini@arm.com static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_), 288513481Sgiacomo.travaglini@arm.com static_cast<T>(v39_), static_cast<T>(v40_), static_cast<T>(v41_), 288613481Sgiacomo.travaglini@arm.com static_cast<T>(v42_), static_cast<T>(v43_), static_cast<T>(v44_), 288713481Sgiacomo.travaglini@arm.com static_cast<T>(v45_), static_cast<T>(v46_), static_cast<T>(v47_), 288813481Sgiacomo.travaglini@arm.com static_cast<T>(v48_)}; 288913481Sgiacomo.travaglini@arm.com return ValuesIn(array); 289013481Sgiacomo.travaglini@arm.com } 289113481Sgiacomo.travaglini@arm.com 289213481Sgiacomo.travaglini@arm.com private: 289313481Sgiacomo.travaglini@arm.com // No implementation - assignment is unsupported. 289413481Sgiacomo.travaglini@arm.com void operator=(const ValueArray48& other); 289513481Sgiacomo.travaglini@arm.com 289613481Sgiacomo.travaglini@arm.com const T1 v1_; 289713481Sgiacomo.travaglini@arm.com const T2 v2_; 289813481Sgiacomo.travaglini@arm.com const T3 v3_; 289913481Sgiacomo.travaglini@arm.com const T4 v4_; 290013481Sgiacomo.travaglini@arm.com const T5 v5_; 290113481Sgiacomo.travaglini@arm.com const T6 v6_; 290213481Sgiacomo.travaglini@arm.com const T7 v7_; 290313481Sgiacomo.travaglini@arm.com const T8 v8_; 290413481Sgiacomo.travaglini@arm.com const T9 v9_; 290513481Sgiacomo.travaglini@arm.com const T10 v10_; 290613481Sgiacomo.travaglini@arm.com const T11 v11_; 290713481Sgiacomo.travaglini@arm.com const T12 v12_; 290813481Sgiacomo.travaglini@arm.com const T13 v13_; 290913481Sgiacomo.travaglini@arm.com const T14 v14_; 291013481Sgiacomo.travaglini@arm.com const T15 v15_; 291113481Sgiacomo.travaglini@arm.com const T16 v16_; 291213481Sgiacomo.travaglini@arm.com const T17 v17_; 291313481Sgiacomo.travaglini@arm.com const T18 v18_; 291413481Sgiacomo.travaglini@arm.com const T19 v19_; 291513481Sgiacomo.travaglini@arm.com const T20 v20_; 291613481Sgiacomo.travaglini@arm.com const T21 v21_; 291713481Sgiacomo.travaglini@arm.com const T22 v22_; 291813481Sgiacomo.travaglini@arm.com const T23 v23_; 291913481Sgiacomo.travaglini@arm.com const T24 v24_; 292013481Sgiacomo.travaglini@arm.com const T25 v25_; 292113481Sgiacomo.travaglini@arm.com const T26 v26_; 292213481Sgiacomo.travaglini@arm.com const T27 v27_; 292313481Sgiacomo.travaglini@arm.com const T28 v28_; 292413481Sgiacomo.travaglini@arm.com const T29 v29_; 292513481Sgiacomo.travaglini@arm.com const T30 v30_; 292613481Sgiacomo.travaglini@arm.com const T31 v31_; 292713481Sgiacomo.travaglini@arm.com const T32 v32_; 292813481Sgiacomo.travaglini@arm.com const T33 v33_; 292913481Sgiacomo.travaglini@arm.com const T34 v34_; 293013481Sgiacomo.travaglini@arm.com const T35 v35_; 293113481Sgiacomo.travaglini@arm.com const T36 v36_; 293213481Sgiacomo.travaglini@arm.com const T37 v37_; 293313481Sgiacomo.travaglini@arm.com const T38 v38_; 293413481Sgiacomo.travaglini@arm.com const T39 v39_; 293513481Sgiacomo.travaglini@arm.com const T40 v40_; 293613481Sgiacomo.travaglini@arm.com const T41 v41_; 293713481Sgiacomo.travaglini@arm.com const T42 v42_; 293813481Sgiacomo.travaglini@arm.com const T43 v43_; 293913481Sgiacomo.travaglini@arm.com const T44 v44_; 294013481Sgiacomo.travaglini@arm.com const T45 v45_; 294113481Sgiacomo.travaglini@arm.com const T46 v46_; 294213481Sgiacomo.travaglini@arm.com const T47 v47_; 294313481Sgiacomo.travaglini@arm.com const T48 v48_; 294413481Sgiacomo.travaglini@arm.com}; 294513481Sgiacomo.travaglini@arm.com 294613481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 294713481Sgiacomo.travaglini@arm.com typename T6, typename T7, typename T8, typename T9, typename T10, 294813481Sgiacomo.travaglini@arm.com typename T11, typename T12, typename T13, typename T14, typename T15, 294913481Sgiacomo.travaglini@arm.com typename T16, typename T17, typename T18, typename T19, typename T20, 295013481Sgiacomo.travaglini@arm.com typename T21, typename T22, typename T23, typename T24, typename T25, 295113481Sgiacomo.travaglini@arm.com typename T26, typename T27, typename T28, typename T29, typename T30, 295213481Sgiacomo.travaglini@arm.com typename T31, typename T32, typename T33, typename T34, typename T35, 295313481Sgiacomo.travaglini@arm.com typename T36, typename T37, typename T38, typename T39, typename T40, 295413481Sgiacomo.travaglini@arm.com typename T41, typename T42, typename T43, typename T44, typename T45, 295513481Sgiacomo.travaglini@arm.com typename T46, typename T47, typename T48, typename T49> 295613481Sgiacomo.travaglini@arm.comclass ValueArray49 { 295713481Sgiacomo.travaglini@arm.com public: 295813481Sgiacomo.travaglini@arm.com ValueArray49(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 295913481Sgiacomo.travaglini@arm.com T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 296013481Sgiacomo.travaglini@arm.com T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 296113481Sgiacomo.travaglini@arm.com T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, 296213481Sgiacomo.travaglini@arm.com T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, 296313481Sgiacomo.travaglini@arm.com T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47, T48 v48, 296413481Sgiacomo.travaglini@arm.com T49 v49) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), 296513481Sgiacomo.travaglini@arm.com v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), 296613481Sgiacomo.travaglini@arm.com v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), 296713481Sgiacomo.travaglini@arm.com v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26), 296813481Sgiacomo.travaglini@arm.com v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32), 296913481Sgiacomo.travaglini@arm.com v33_(v33), v34_(v34), v35_(v35), v36_(v36), v37_(v37), v38_(v38), 297013481Sgiacomo.travaglini@arm.com v39_(v39), v40_(v40), v41_(v41), v42_(v42), v43_(v43), v44_(v44), 297113481Sgiacomo.travaglini@arm.com v45_(v45), v46_(v46), v47_(v47), v48_(v48), v49_(v49) {} 297213481Sgiacomo.travaglini@arm.com 297313481Sgiacomo.travaglini@arm.com template <typename T> 297413481Sgiacomo.travaglini@arm.com operator ParamGenerator<T>() const { 297513481Sgiacomo.travaglini@arm.com const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 297613481Sgiacomo.travaglini@arm.com static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 297713481Sgiacomo.travaglini@arm.com static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 297813481Sgiacomo.travaglini@arm.com static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), 297913481Sgiacomo.travaglini@arm.com static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), 298013481Sgiacomo.travaglini@arm.com static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), 298113481Sgiacomo.travaglini@arm.com static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), 298213481Sgiacomo.travaglini@arm.com static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), 298313481Sgiacomo.travaglini@arm.com static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_), 298413481Sgiacomo.travaglini@arm.com static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_), 298513481Sgiacomo.travaglini@arm.com static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_), 298613481Sgiacomo.travaglini@arm.com static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_), 298713481Sgiacomo.travaglini@arm.com static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_), 298813481Sgiacomo.travaglini@arm.com static_cast<T>(v39_), static_cast<T>(v40_), static_cast<T>(v41_), 298913481Sgiacomo.travaglini@arm.com static_cast<T>(v42_), static_cast<T>(v43_), static_cast<T>(v44_), 299013481Sgiacomo.travaglini@arm.com static_cast<T>(v45_), static_cast<T>(v46_), static_cast<T>(v47_), 299113481Sgiacomo.travaglini@arm.com static_cast<T>(v48_), static_cast<T>(v49_)}; 299213481Sgiacomo.travaglini@arm.com return ValuesIn(array); 299313481Sgiacomo.travaglini@arm.com } 299413481Sgiacomo.travaglini@arm.com 299513481Sgiacomo.travaglini@arm.com private: 299613481Sgiacomo.travaglini@arm.com // No implementation - assignment is unsupported. 299713481Sgiacomo.travaglini@arm.com void operator=(const ValueArray49& other); 299813481Sgiacomo.travaglini@arm.com 299913481Sgiacomo.travaglini@arm.com const T1 v1_; 300013481Sgiacomo.travaglini@arm.com const T2 v2_; 300113481Sgiacomo.travaglini@arm.com const T3 v3_; 300213481Sgiacomo.travaglini@arm.com const T4 v4_; 300313481Sgiacomo.travaglini@arm.com const T5 v5_; 300413481Sgiacomo.travaglini@arm.com const T6 v6_; 300513481Sgiacomo.travaglini@arm.com const T7 v7_; 300613481Sgiacomo.travaglini@arm.com const T8 v8_; 300713481Sgiacomo.travaglini@arm.com const T9 v9_; 300813481Sgiacomo.travaglini@arm.com const T10 v10_; 300913481Sgiacomo.travaglini@arm.com const T11 v11_; 301013481Sgiacomo.travaglini@arm.com const T12 v12_; 301113481Sgiacomo.travaglini@arm.com const T13 v13_; 301213481Sgiacomo.travaglini@arm.com const T14 v14_; 301313481Sgiacomo.travaglini@arm.com const T15 v15_; 301413481Sgiacomo.travaglini@arm.com const T16 v16_; 301513481Sgiacomo.travaglini@arm.com const T17 v17_; 301613481Sgiacomo.travaglini@arm.com const T18 v18_; 301713481Sgiacomo.travaglini@arm.com const T19 v19_; 301813481Sgiacomo.travaglini@arm.com const T20 v20_; 301913481Sgiacomo.travaglini@arm.com const T21 v21_; 302013481Sgiacomo.travaglini@arm.com const T22 v22_; 302113481Sgiacomo.travaglini@arm.com const T23 v23_; 302213481Sgiacomo.travaglini@arm.com const T24 v24_; 302313481Sgiacomo.travaglini@arm.com const T25 v25_; 302413481Sgiacomo.travaglini@arm.com const T26 v26_; 302513481Sgiacomo.travaglini@arm.com const T27 v27_; 302613481Sgiacomo.travaglini@arm.com const T28 v28_; 302713481Sgiacomo.travaglini@arm.com const T29 v29_; 302813481Sgiacomo.travaglini@arm.com const T30 v30_; 302913481Sgiacomo.travaglini@arm.com const T31 v31_; 303013481Sgiacomo.travaglini@arm.com const T32 v32_; 303113481Sgiacomo.travaglini@arm.com const T33 v33_; 303213481Sgiacomo.travaglini@arm.com const T34 v34_; 303313481Sgiacomo.travaglini@arm.com const T35 v35_; 303413481Sgiacomo.travaglini@arm.com const T36 v36_; 303513481Sgiacomo.travaglini@arm.com const T37 v37_; 303613481Sgiacomo.travaglini@arm.com const T38 v38_; 303713481Sgiacomo.travaglini@arm.com const T39 v39_; 303813481Sgiacomo.travaglini@arm.com const T40 v40_; 303913481Sgiacomo.travaglini@arm.com const T41 v41_; 304013481Sgiacomo.travaglini@arm.com const T42 v42_; 304113481Sgiacomo.travaglini@arm.com const T43 v43_; 304213481Sgiacomo.travaglini@arm.com const T44 v44_; 304313481Sgiacomo.travaglini@arm.com const T45 v45_; 304413481Sgiacomo.travaglini@arm.com const T46 v46_; 304513481Sgiacomo.travaglini@arm.com const T47 v47_; 304613481Sgiacomo.travaglini@arm.com const T48 v48_; 304713481Sgiacomo.travaglini@arm.com const T49 v49_; 304813481Sgiacomo.travaglini@arm.com}; 304913481Sgiacomo.travaglini@arm.com 305013481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 305113481Sgiacomo.travaglini@arm.com typename T6, typename T7, typename T8, typename T9, typename T10, 305213481Sgiacomo.travaglini@arm.com typename T11, typename T12, typename T13, typename T14, typename T15, 305313481Sgiacomo.travaglini@arm.com typename T16, typename T17, typename T18, typename T19, typename T20, 305413481Sgiacomo.travaglini@arm.com typename T21, typename T22, typename T23, typename T24, typename T25, 305513481Sgiacomo.travaglini@arm.com typename T26, typename T27, typename T28, typename T29, typename T30, 305613481Sgiacomo.travaglini@arm.com typename T31, typename T32, typename T33, typename T34, typename T35, 305713481Sgiacomo.travaglini@arm.com typename T36, typename T37, typename T38, typename T39, typename T40, 305813481Sgiacomo.travaglini@arm.com typename T41, typename T42, typename T43, typename T44, typename T45, 305913481Sgiacomo.travaglini@arm.com typename T46, typename T47, typename T48, typename T49, typename T50> 306013481Sgiacomo.travaglini@arm.comclass ValueArray50 { 306113481Sgiacomo.travaglini@arm.com public: 306213481Sgiacomo.travaglini@arm.com ValueArray50(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 306313481Sgiacomo.travaglini@arm.com T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 306413481Sgiacomo.travaglini@arm.com T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 306513481Sgiacomo.travaglini@arm.com T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, 306613481Sgiacomo.travaglini@arm.com T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, 306713481Sgiacomo.travaglini@arm.com T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47, T48 v48, T49 v49, 306813481Sgiacomo.travaglini@arm.com T50 v50) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), 306913481Sgiacomo.travaglini@arm.com v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), 307013481Sgiacomo.travaglini@arm.com v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), 307113481Sgiacomo.travaglini@arm.com v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26), 307213481Sgiacomo.travaglini@arm.com v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32), 307313481Sgiacomo.travaglini@arm.com v33_(v33), v34_(v34), v35_(v35), v36_(v36), v37_(v37), v38_(v38), 307413481Sgiacomo.travaglini@arm.com v39_(v39), v40_(v40), v41_(v41), v42_(v42), v43_(v43), v44_(v44), 307513481Sgiacomo.travaglini@arm.com v45_(v45), v46_(v46), v47_(v47), v48_(v48), v49_(v49), v50_(v50) {} 307613481Sgiacomo.travaglini@arm.com 307713481Sgiacomo.travaglini@arm.com template <typename T> 307813481Sgiacomo.travaglini@arm.com operator ParamGenerator<T>() const { 307913481Sgiacomo.travaglini@arm.com const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 308013481Sgiacomo.travaglini@arm.com static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 308113481Sgiacomo.travaglini@arm.com static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 308213481Sgiacomo.travaglini@arm.com static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), 308313481Sgiacomo.travaglini@arm.com static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), 308413481Sgiacomo.travaglini@arm.com static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), 308513481Sgiacomo.travaglini@arm.com static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), 308613481Sgiacomo.travaglini@arm.com static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), 308713481Sgiacomo.travaglini@arm.com static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_), 308813481Sgiacomo.travaglini@arm.com static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_), 308913481Sgiacomo.travaglini@arm.com static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_), 309013481Sgiacomo.travaglini@arm.com static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_), 309113481Sgiacomo.travaglini@arm.com static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_), 309213481Sgiacomo.travaglini@arm.com static_cast<T>(v39_), static_cast<T>(v40_), static_cast<T>(v41_), 309313481Sgiacomo.travaglini@arm.com static_cast<T>(v42_), static_cast<T>(v43_), static_cast<T>(v44_), 309413481Sgiacomo.travaglini@arm.com static_cast<T>(v45_), static_cast<T>(v46_), static_cast<T>(v47_), 309513481Sgiacomo.travaglini@arm.com static_cast<T>(v48_), static_cast<T>(v49_), static_cast<T>(v50_)}; 309613481Sgiacomo.travaglini@arm.com return ValuesIn(array); 309713481Sgiacomo.travaglini@arm.com } 309813481Sgiacomo.travaglini@arm.com 309913481Sgiacomo.travaglini@arm.com private: 310013481Sgiacomo.travaglini@arm.com // No implementation - assignment is unsupported. 310113481Sgiacomo.travaglini@arm.com void operator=(const ValueArray50& other); 310213481Sgiacomo.travaglini@arm.com 310313481Sgiacomo.travaglini@arm.com const T1 v1_; 310413481Sgiacomo.travaglini@arm.com const T2 v2_; 310513481Sgiacomo.travaglini@arm.com const T3 v3_; 310613481Sgiacomo.travaglini@arm.com const T4 v4_; 310713481Sgiacomo.travaglini@arm.com const T5 v5_; 310813481Sgiacomo.travaglini@arm.com const T6 v6_; 310913481Sgiacomo.travaglini@arm.com const T7 v7_; 311013481Sgiacomo.travaglini@arm.com const T8 v8_; 311113481Sgiacomo.travaglini@arm.com const T9 v9_; 311213481Sgiacomo.travaglini@arm.com const T10 v10_; 311313481Sgiacomo.travaglini@arm.com const T11 v11_; 311413481Sgiacomo.travaglini@arm.com const T12 v12_; 311513481Sgiacomo.travaglini@arm.com const T13 v13_; 311613481Sgiacomo.travaglini@arm.com const T14 v14_; 311713481Sgiacomo.travaglini@arm.com const T15 v15_; 311813481Sgiacomo.travaglini@arm.com const T16 v16_; 311913481Sgiacomo.travaglini@arm.com const T17 v17_; 312013481Sgiacomo.travaglini@arm.com const T18 v18_; 312113481Sgiacomo.travaglini@arm.com const T19 v19_; 312213481Sgiacomo.travaglini@arm.com const T20 v20_; 312313481Sgiacomo.travaglini@arm.com const T21 v21_; 312413481Sgiacomo.travaglini@arm.com const T22 v22_; 312513481Sgiacomo.travaglini@arm.com const T23 v23_; 312613481Sgiacomo.travaglini@arm.com const T24 v24_; 312713481Sgiacomo.travaglini@arm.com const T25 v25_; 312813481Sgiacomo.travaglini@arm.com const T26 v26_; 312913481Sgiacomo.travaglini@arm.com const T27 v27_; 313013481Sgiacomo.travaglini@arm.com const T28 v28_; 313113481Sgiacomo.travaglini@arm.com const T29 v29_; 313213481Sgiacomo.travaglini@arm.com const T30 v30_; 313313481Sgiacomo.travaglini@arm.com const T31 v31_; 313413481Sgiacomo.travaglini@arm.com const T32 v32_; 313513481Sgiacomo.travaglini@arm.com const T33 v33_; 313613481Sgiacomo.travaglini@arm.com const T34 v34_; 313713481Sgiacomo.travaglini@arm.com const T35 v35_; 313813481Sgiacomo.travaglini@arm.com const T36 v36_; 313913481Sgiacomo.travaglini@arm.com const T37 v37_; 314013481Sgiacomo.travaglini@arm.com const T38 v38_; 314113481Sgiacomo.travaglini@arm.com const T39 v39_; 314213481Sgiacomo.travaglini@arm.com const T40 v40_; 314313481Sgiacomo.travaglini@arm.com const T41 v41_; 314413481Sgiacomo.travaglini@arm.com const T42 v42_; 314513481Sgiacomo.travaglini@arm.com const T43 v43_; 314613481Sgiacomo.travaglini@arm.com const T44 v44_; 314713481Sgiacomo.travaglini@arm.com const T45 v45_; 314813481Sgiacomo.travaglini@arm.com const T46 v46_; 314913481Sgiacomo.travaglini@arm.com const T47 v47_; 315013481Sgiacomo.travaglini@arm.com const T48 v48_; 315113481Sgiacomo.travaglini@arm.com const T49 v49_; 315213481Sgiacomo.travaglini@arm.com const T50 v50_; 315313481Sgiacomo.travaglini@arm.com}; 315413481Sgiacomo.travaglini@arm.com 315513481Sgiacomo.travaglini@arm.com# if GTEST_HAS_COMBINE 315613481Sgiacomo.travaglini@arm.com// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE. 315713481Sgiacomo.travaglini@arm.com// 315813481Sgiacomo.travaglini@arm.com// Generates values from the Cartesian product of values produced 315913481Sgiacomo.travaglini@arm.com// by the argument generators. 316013481Sgiacomo.travaglini@arm.com// 316113481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2> 316213481Sgiacomo.travaglini@arm.comclass CartesianProductGenerator2 316313481Sgiacomo.travaglini@arm.com : public ParamGeneratorInterface< ::testing::tuple<T1, T2> > { 316413481Sgiacomo.travaglini@arm.com public: 316513481Sgiacomo.travaglini@arm.com typedef ::testing::tuple<T1, T2> ParamType; 316613481Sgiacomo.travaglini@arm.com 316713481Sgiacomo.travaglini@arm.com CartesianProductGenerator2(const ParamGenerator<T1>& g1, 316813481Sgiacomo.travaglini@arm.com const ParamGenerator<T2>& g2) 316913481Sgiacomo.travaglini@arm.com : g1_(g1), g2_(g2) {} 317013481Sgiacomo.travaglini@arm.com virtual ~CartesianProductGenerator2() {} 317113481Sgiacomo.travaglini@arm.com 317213481Sgiacomo.travaglini@arm.com virtual ParamIteratorInterface<ParamType>* Begin() const { 317313481Sgiacomo.travaglini@arm.com return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin()); 317413481Sgiacomo.travaglini@arm.com } 317513481Sgiacomo.travaglini@arm.com virtual ParamIteratorInterface<ParamType>* End() const { 317613481Sgiacomo.travaglini@arm.com return new Iterator(this, g1_, g1_.end(), g2_, g2_.end()); 317713481Sgiacomo.travaglini@arm.com } 317813481Sgiacomo.travaglini@arm.com 317913481Sgiacomo.travaglini@arm.com private: 318013481Sgiacomo.travaglini@arm.com class Iterator : public ParamIteratorInterface<ParamType> { 318113481Sgiacomo.travaglini@arm.com public: 318213481Sgiacomo.travaglini@arm.com Iterator(const ParamGeneratorInterface<ParamType>* base, 318313481Sgiacomo.travaglini@arm.com const ParamGenerator<T1>& g1, 318413481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T1>::iterator& current1, 318513481Sgiacomo.travaglini@arm.com const ParamGenerator<T2>& g2, 318613481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T2>::iterator& current2) 318713481Sgiacomo.travaglini@arm.com : base_(base), 318813481Sgiacomo.travaglini@arm.com begin1_(g1.begin()), end1_(g1.end()), current1_(current1), 318913481Sgiacomo.travaglini@arm.com begin2_(g2.begin()), end2_(g2.end()), current2_(current2) { 319013481Sgiacomo.travaglini@arm.com ComputeCurrentValue(); 319113481Sgiacomo.travaglini@arm.com } 319213481Sgiacomo.travaglini@arm.com virtual ~Iterator() {} 319313481Sgiacomo.travaglini@arm.com 319413481Sgiacomo.travaglini@arm.com virtual const ParamGeneratorInterface<ParamType>* BaseGenerator() const { 319513481Sgiacomo.travaglini@arm.com return base_; 319613481Sgiacomo.travaglini@arm.com } 319713481Sgiacomo.travaglini@arm.com // Advance should not be called on beyond-of-range iterators 319813481Sgiacomo.travaglini@arm.com // so no component iterators must be beyond end of range, either. 319913481Sgiacomo.travaglini@arm.com virtual void Advance() { 320013481Sgiacomo.travaglini@arm.com assert(!AtEnd()); 320113481Sgiacomo.travaglini@arm.com ++current2_; 320213481Sgiacomo.travaglini@arm.com if (current2_ == end2_) { 320313481Sgiacomo.travaglini@arm.com current2_ = begin2_; 320413481Sgiacomo.travaglini@arm.com ++current1_; 320513481Sgiacomo.travaglini@arm.com } 320613481Sgiacomo.travaglini@arm.com ComputeCurrentValue(); 320713481Sgiacomo.travaglini@arm.com } 320813481Sgiacomo.travaglini@arm.com virtual ParamIteratorInterface<ParamType>* Clone() const { 320913481Sgiacomo.travaglini@arm.com return new Iterator(*this); 321013481Sgiacomo.travaglini@arm.com } 321113481Sgiacomo.travaglini@arm.com virtual const ParamType* Current() const { return ¤t_value_; } 321213481Sgiacomo.travaglini@arm.com virtual bool Equals(const ParamIteratorInterface<ParamType>& other) const { 321313481Sgiacomo.travaglini@arm.com // Having the same base generator guarantees that the other 321413481Sgiacomo.travaglini@arm.com // iterator is of the same type and we can downcast. 321513481Sgiacomo.travaglini@arm.com GTEST_CHECK_(BaseGenerator() == other.BaseGenerator()) 321613481Sgiacomo.travaglini@arm.com << "The program attempted to compare iterators " 321713481Sgiacomo.travaglini@arm.com << "from different generators." << std::endl; 321813481Sgiacomo.travaglini@arm.com const Iterator* typed_other = 321913481Sgiacomo.travaglini@arm.com CheckedDowncastToActualType<const Iterator>(&other); 322013481Sgiacomo.travaglini@arm.com // We must report iterators equal if they both point beyond their 322113481Sgiacomo.travaglini@arm.com // respective ranges. That can happen in a variety of fashions, 322213481Sgiacomo.travaglini@arm.com // so we have to consult AtEnd(). 322313481Sgiacomo.travaglini@arm.com return (AtEnd() && typed_other->AtEnd()) || 322413481Sgiacomo.travaglini@arm.com ( 322513481Sgiacomo.travaglini@arm.com current1_ == typed_other->current1_ && 322613481Sgiacomo.travaglini@arm.com current2_ == typed_other->current2_); 322713481Sgiacomo.travaglini@arm.com } 322813481Sgiacomo.travaglini@arm.com 322913481Sgiacomo.travaglini@arm.com private: 323013481Sgiacomo.travaglini@arm.com Iterator(const Iterator& other) 323113481Sgiacomo.travaglini@arm.com : base_(other.base_), 323213481Sgiacomo.travaglini@arm.com begin1_(other.begin1_), 323313481Sgiacomo.travaglini@arm.com end1_(other.end1_), 323413481Sgiacomo.travaglini@arm.com current1_(other.current1_), 323513481Sgiacomo.travaglini@arm.com begin2_(other.begin2_), 323613481Sgiacomo.travaglini@arm.com end2_(other.end2_), 323713481Sgiacomo.travaglini@arm.com current2_(other.current2_) { 323813481Sgiacomo.travaglini@arm.com ComputeCurrentValue(); 323913481Sgiacomo.travaglini@arm.com } 324013481Sgiacomo.travaglini@arm.com 324113481Sgiacomo.travaglini@arm.com void ComputeCurrentValue() { 324213481Sgiacomo.travaglini@arm.com if (!AtEnd()) 324313481Sgiacomo.travaglini@arm.com current_value_ = ParamType(*current1_, *current2_); 324413481Sgiacomo.travaglini@arm.com } 324513481Sgiacomo.travaglini@arm.com bool AtEnd() const { 324613481Sgiacomo.travaglini@arm.com // We must report iterator past the end of the range when either of the 324713481Sgiacomo.travaglini@arm.com // component iterators has reached the end of its range. 324813481Sgiacomo.travaglini@arm.com return 324913481Sgiacomo.travaglini@arm.com current1_ == end1_ || 325013481Sgiacomo.travaglini@arm.com current2_ == end2_; 325113481Sgiacomo.travaglini@arm.com } 325213481Sgiacomo.travaglini@arm.com 325313481Sgiacomo.travaglini@arm.com // No implementation - assignment is unsupported. 325413481Sgiacomo.travaglini@arm.com void operator=(const Iterator& other); 325513481Sgiacomo.travaglini@arm.com 325613481Sgiacomo.travaglini@arm.com const ParamGeneratorInterface<ParamType>* const base_; 325713481Sgiacomo.travaglini@arm.com // begin[i]_ and end[i]_ define the i-th range that Iterator traverses. 325813481Sgiacomo.travaglini@arm.com // current[i]_ is the actual traversing iterator. 325913481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T1>::iterator begin1_; 326013481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T1>::iterator end1_; 326113481Sgiacomo.travaglini@arm.com typename ParamGenerator<T1>::iterator current1_; 326213481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T2>::iterator begin2_; 326313481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T2>::iterator end2_; 326413481Sgiacomo.travaglini@arm.com typename ParamGenerator<T2>::iterator current2_; 326513481Sgiacomo.travaglini@arm.com ParamType current_value_; 326613481Sgiacomo.travaglini@arm.com }; // class CartesianProductGenerator2::Iterator 326713481Sgiacomo.travaglini@arm.com 326813481Sgiacomo.travaglini@arm.com // No implementation - assignment is unsupported. 326913481Sgiacomo.travaglini@arm.com void operator=(const CartesianProductGenerator2& other); 327013481Sgiacomo.travaglini@arm.com 327113481Sgiacomo.travaglini@arm.com const ParamGenerator<T1> g1_; 327213481Sgiacomo.travaglini@arm.com const ParamGenerator<T2> g2_; 327313481Sgiacomo.travaglini@arm.com}; // class CartesianProductGenerator2 327413481Sgiacomo.travaglini@arm.com 327513481Sgiacomo.travaglini@arm.com 327613481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3> 327713481Sgiacomo.travaglini@arm.comclass CartesianProductGenerator3 327813481Sgiacomo.travaglini@arm.com : public ParamGeneratorInterface< ::testing::tuple<T1, T2, T3> > { 327913481Sgiacomo.travaglini@arm.com public: 328013481Sgiacomo.travaglini@arm.com typedef ::testing::tuple<T1, T2, T3> ParamType; 328113481Sgiacomo.travaglini@arm.com 328213481Sgiacomo.travaglini@arm.com CartesianProductGenerator3(const ParamGenerator<T1>& g1, 328313481Sgiacomo.travaglini@arm.com const ParamGenerator<T2>& g2, const ParamGenerator<T3>& g3) 328413481Sgiacomo.travaglini@arm.com : g1_(g1), g2_(g2), g3_(g3) {} 328513481Sgiacomo.travaglini@arm.com virtual ~CartesianProductGenerator3() {} 328613481Sgiacomo.travaglini@arm.com 328713481Sgiacomo.travaglini@arm.com virtual ParamIteratorInterface<ParamType>* Begin() const { 328813481Sgiacomo.travaglini@arm.com return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_, 328913481Sgiacomo.travaglini@arm.com g3_.begin()); 329013481Sgiacomo.travaglini@arm.com } 329113481Sgiacomo.travaglini@arm.com virtual ParamIteratorInterface<ParamType>* End() const { 329213481Sgiacomo.travaglini@arm.com return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end()); 329313481Sgiacomo.travaglini@arm.com } 329413481Sgiacomo.travaglini@arm.com 329513481Sgiacomo.travaglini@arm.com private: 329613481Sgiacomo.travaglini@arm.com class Iterator : public ParamIteratorInterface<ParamType> { 329713481Sgiacomo.travaglini@arm.com public: 329813481Sgiacomo.travaglini@arm.com Iterator(const ParamGeneratorInterface<ParamType>* base, 329913481Sgiacomo.travaglini@arm.com const ParamGenerator<T1>& g1, 330013481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T1>::iterator& current1, 330113481Sgiacomo.travaglini@arm.com const ParamGenerator<T2>& g2, 330213481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T2>::iterator& current2, 330313481Sgiacomo.travaglini@arm.com const ParamGenerator<T3>& g3, 330413481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T3>::iterator& current3) 330513481Sgiacomo.travaglini@arm.com : base_(base), 330613481Sgiacomo.travaglini@arm.com begin1_(g1.begin()), end1_(g1.end()), current1_(current1), 330713481Sgiacomo.travaglini@arm.com begin2_(g2.begin()), end2_(g2.end()), current2_(current2), 330813481Sgiacomo.travaglini@arm.com begin3_(g3.begin()), end3_(g3.end()), current3_(current3) { 330913481Sgiacomo.travaglini@arm.com ComputeCurrentValue(); 331013481Sgiacomo.travaglini@arm.com } 331113481Sgiacomo.travaglini@arm.com virtual ~Iterator() {} 331213481Sgiacomo.travaglini@arm.com 331313481Sgiacomo.travaglini@arm.com virtual const ParamGeneratorInterface<ParamType>* BaseGenerator() const { 331413481Sgiacomo.travaglini@arm.com return base_; 331513481Sgiacomo.travaglini@arm.com } 331613481Sgiacomo.travaglini@arm.com // Advance should not be called on beyond-of-range iterators 331713481Sgiacomo.travaglini@arm.com // so no component iterators must be beyond end of range, either. 331813481Sgiacomo.travaglini@arm.com virtual void Advance() { 331913481Sgiacomo.travaglini@arm.com assert(!AtEnd()); 332013481Sgiacomo.travaglini@arm.com ++current3_; 332113481Sgiacomo.travaglini@arm.com if (current3_ == end3_) { 332213481Sgiacomo.travaglini@arm.com current3_ = begin3_; 332313481Sgiacomo.travaglini@arm.com ++current2_; 332413481Sgiacomo.travaglini@arm.com } 332513481Sgiacomo.travaglini@arm.com if (current2_ == end2_) { 332613481Sgiacomo.travaglini@arm.com current2_ = begin2_; 332713481Sgiacomo.travaglini@arm.com ++current1_; 332813481Sgiacomo.travaglini@arm.com } 332913481Sgiacomo.travaglini@arm.com ComputeCurrentValue(); 333013481Sgiacomo.travaglini@arm.com } 333113481Sgiacomo.travaglini@arm.com virtual ParamIteratorInterface<ParamType>* Clone() const { 333213481Sgiacomo.travaglini@arm.com return new Iterator(*this); 333313481Sgiacomo.travaglini@arm.com } 333413481Sgiacomo.travaglini@arm.com virtual const ParamType* Current() const { return ¤t_value_; } 333513481Sgiacomo.travaglini@arm.com virtual bool Equals(const ParamIteratorInterface<ParamType>& other) const { 333613481Sgiacomo.travaglini@arm.com // Having the same base generator guarantees that the other 333713481Sgiacomo.travaglini@arm.com // iterator is of the same type and we can downcast. 333813481Sgiacomo.travaglini@arm.com GTEST_CHECK_(BaseGenerator() == other.BaseGenerator()) 333913481Sgiacomo.travaglini@arm.com << "The program attempted to compare iterators " 334013481Sgiacomo.travaglini@arm.com << "from different generators." << std::endl; 334113481Sgiacomo.travaglini@arm.com const Iterator* typed_other = 334213481Sgiacomo.travaglini@arm.com CheckedDowncastToActualType<const Iterator>(&other); 334313481Sgiacomo.travaglini@arm.com // We must report iterators equal if they both point beyond their 334413481Sgiacomo.travaglini@arm.com // respective ranges. That can happen in a variety of fashions, 334513481Sgiacomo.travaglini@arm.com // so we have to consult AtEnd(). 334613481Sgiacomo.travaglini@arm.com return (AtEnd() && typed_other->AtEnd()) || 334713481Sgiacomo.travaglini@arm.com ( 334813481Sgiacomo.travaglini@arm.com current1_ == typed_other->current1_ && 334913481Sgiacomo.travaglini@arm.com current2_ == typed_other->current2_ && 335013481Sgiacomo.travaglini@arm.com current3_ == typed_other->current3_); 335113481Sgiacomo.travaglini@arm.com } 335213481Sgiacomo.travaglini@arm.com 335313481Sgiacomo.travaglini@arm.com private: 335413481Sgiacomo.travaglini@arm.com Iterator(const Iterator& other) 335513481Sgiacomo.travaglini@arm.com : base_(other.base_), 335613481Sgiacomo.travaglini@arm.com begin1_(other.begin1_), 335713481Sgiacomo.travaglini@arm.com end1_(other.end1_), 335813481Sgiacomo.travaglini@arm.com current1_(other.current1_), 335913481Sgiacomo.travaglini@arm.com begin2_(other.begin2_), 336013481Sgiacomo.travaglini@arm.com end2_(other.end2_), 336113481Sgiacomo.travaglini@arm.com current2_(other.current2_), 336213481Sgiacomo.travaglini@arm.com begin3_(other.begin3_), 336313481Sgiacomo.travaglini@arm.com end3_(other.end3_), 336413481Sgiacomo.travaglini@arm.com current3_(other.current3_) { 336513481Sgiacomo.travaglini@arm.com ComputeCurrentValue(); 336613481Sgiacomo.travaglini@arm.com } 336713481Sgiacomo.travaglini@arm.com 336813481Sgiacomo.travaglini@arm.com void ComputeCurrentValue() { 336913481Sgiacomo.travaglini@arm.com if (!AtEnd()) 337013481Sgiacomo.travaglini@arm.com current_value_ = ParamType(*current1_, *current2_, *current3_); 337113481Sgiacomo.travaglini@arm.com } 337213481Sgiacomo.travaglini@arm.com bool AtEnd() const { 337313481Sgiacomo.travaglini@arm.com // We must report iterator past the end of the range when either of the 337413481Sgiacomo.travaglini@arm.com // component iterators has reached the end of its range. 337513481Sgiacomo.travaglini@arm.com return 337613481Sgiacomo.travaglini@arm.com current1_ == end1_ || 337713481Sgiacomo.travaglini@arm.com current2_ == end2_ || 337813481Sgiacomo.travaglini@arm.com current3_ == end3_; 337913481Sgiacomo.travaglini@arm.com } 338013481Sgiacomo.travaglini@arm.com 338113481Sgiacomo.travaglini@arm.com // No implementation - assignment is unsupported. 338213481Sgiacomo.travaglini@arm.com void operator=(const Iterator& other); 338313481Sgiacomo.travaglini@arm.com 338413481Sgiacomo.travaglini@arm.com const ParamGeneratorInterface<ParamType>* const base_; 338513481Sgiacomo.travaglini@arm.com // begin[i]_ and end[i]_ define the i-th range that Iterator traverses. 338613481Sgiacomo.travaglini@arm.com // current[i]_ is the actual traversing iterator. 338713481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T1>::iterator begin1_; 338813481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T1>::iterator end1_; 338913481Sgiacomo.travaglini@arm.com typename ParamGenerator<T1>::iterator current1_; 339013481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T2>::iterator begin2_; 339113481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T2>::iterator end2_; 339213481Sgiacomo.travaglini@arm.com typename ParamGenerator<T2>::iterator current2_; 339313481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T3>::iterator begin3_; 339413481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T3>::iterator end3_; 339513481Sgiacomo.travaglini@arm.com typename ParamGenerator<T3>::iterator current3_; 339613481Sgiacomo.travaglini@arm.com ParamType current_value_; 339713481Sgiacomo.travaglini@arm.com }; // class CartesianProductGenerator3::Iterator 339813481Sgiacomo.travaglini@arm.com 339913481Sgiacomo.travaglini@arm.com // No implementation - assignment is unsupported. 340013481Sgiacomo.travaglini@arm.com void operator=(const CartesianProductGenerator3& other); 340113481Sgiacomo.travaglini@arm.com 340213481Sgiacomo.travaglini@arm.com const ParamGenerator<T1> g1_; 340313481Sgiacomo.travaglini@arm.com const ParamGenerator<T2> g2_; 340413481Sgiacomo.travaglini@arm.com const ParamGenerator<T3> g3_; 340513481Sgiacomo.travaglini@arm.com}; // class CartesianProductGenerator3 340613481Sgiacomo.travaglini@arm.com 340713481Sgiacomo.travaglini@arm.com 340813481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4> 340913481Sgiacomo.travaglini@arm.comclass CartesianProductGenerator4 341013481Sgiacomo.travaglini@arm.com : public ParamGeneratorInterface< ::testing::tuple<T1, T2, T3, T4> > { 341113481Sgiacomo.travaglini@arm.com public: 341213481Sgiacomo.travaglini@arm.com typedef ::testing::tuple<T1, T2, T3, T4> ParamType; 341313481Sgiacomo.travaglini@arm.com 341413481Sgiacomo.travaglini@arm.com CartesianProductGenerator4(const ParamGenerator<T1>& g1, 341513481Sgiacomo.travaglini@arm.com const ParamGenerator<T2>& g2, const ParamGenerator<T3>& g3, 341613481Sgiacomo.travaglini@arm.com const ParamGenerator<T4>& g4) 341713481Sgiacomo.travaglini@arm.com : g1_(g1), g2_(g2), g3_(g3), g4_(g4) {} 341813481Sgiacomo.travaglini@arm.com virtual ~CartesianProductGenerator4() {} 341913481Sgiacomo.travaglini@arm.com 342013481Sgiacomo.travaglini@arm.com virtual ParamIteratorInterface<ParamType>* Begin() const { 342113481Sgiacomo.travaglini@arm.com return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_, 342213481Sgiacomo.travaglini@arm.com g3_.begin(), g4_, g4_.begin()); 342313481Sgiacomo.travaglini@arm.com } 342413481Sgiacomo.travaglini@arm.com virtual ParamIteratorInterface<ParamType>* End() const { 342513481Sgiacomo.travaglini@arm.com return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(), 342613481Sgiacomo.travaglini@arm.com g4_, g4_.end()); 342713481Sgiacomo.travaglini@arm.com } 342813481Sgiacomo.travaglini@arm.com 342913481Sgiacomo.travaglini@arm.com private: 343013481Sgiacomo.travaglini@arm.com class Iterator : public ParamIteratorInterface<ParamType> { 343113481Sgiacomo.travaglini@arm.com public: 343213481Sgiacomo.travaglini@arm.com Iterator(const ParamGeneratorInterface<ParamType>* base, 343313481Sgiacomo.travaglini@arm.com const ParamGenerator<T1>& g1, 343413481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T1>::iterator& current1, 343513481Sgiacomo.travaglini@arm.com const ParamGenerator<T2>& g2, 343613481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T2>::iterator& current2, 343713481Sgiacomo.travaglini@arm.com const ParamGenerator<T3>& g3, 343813481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T3>::iterator& current3, 343913481Sgiacomo.travaglini@arm.com const ParamGenerator<T4>& g4, 344013481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T4>::iterator& current4) 344113481Sgiacomo.travaglini@arm.com : base_(base), 344213481Sgiacomo.travaglini@arm.com begin1_(g1.begin()), end1_(g1.end()), current1_(current1), 344313481Sgiacomo.travaglini@arm.com begin2_(g2.begin()), end2_(g2.end()), current2_(current2), 344413481Sgiacomo.travaglini@arm.com begin3_(g3.begin()), end3_(g3.end()), current3_(current3), 344513481Sgiacomo.travaglini@arm.com begin4_(g4.begin()), end4_(g4.end()), current4_(current4) { 344613481Sgiacomo.travaglini@arm.com ComputeCurrentValue(); 344713481Sgiacomo.travaglini@arm.com } 344813481Sgiacomo.travaglini@arm.com virtual ~Iterator() {} 344913481Sgiacomo.travaglini@arm.com 345013481Sgiacomo.travaglini@arm.com virtual const ParamGeneratorInterface<ParamType>* BaseGenerator() const { 345113481Sgiacomo.travaglini@arm.com return base_; 345213481Sgiacomo.travaglini@arm.com } 345313481Sgiacomo.travaglini@arm.com // Advance should not be called on beyond-of-range iterators 345413481Sgiacomo.travaglini@arm.com // so no component iterators must be beyond end of range, either. 345513481Sgiacomo.travaglini@arm.com virtual void Advance() { 345613481Sgiacomo.travaglini@arm.com assert(!AtEnd()); 345713481Sgiacomo.travaglini@arm.com ++current4_; 345813481Sgiacomo.travaglini@arm.com if (current4_ == end4_) { 345913481Sgiacomo.travaglini@arm.com current4_ = begin4_; 346013481Sgiacomo.travaglini@arm.com ++current3_; 346113481Sgiacomo.travaglini@arm.com } 346213481Sgiacomo.travaglini@arm.com if (current3_ == end3_) { 346313481Sgiacomo.travaglini@arm.com current3_ = begin3_; 346413481Sgiacomo.travaglini@arm.com ++current2_; 346513481Sgiacomo.travaglini@arm.com } 346613481Sgiacomo.travaglini@arm.com if (current2_ == end2_) { 346713481Sgiacomo.travaglini@arm.com current2_ = begin2_; 346813481Sgiacomo.travaglini@arm.com ++current1_; 346913481Sgiacomo.travaglini@arm.com } 347013481Sgiacomo.travaglini@arm.com ComputeCurrentValue(); 347113481Sgiacomo.travaglini@arm.com } 347213481Sgiacomo.travaglini@arm.com virtual ParamIteratorInterface<ParamType>* Clone() const { 347313481Sgiacomo.travaglini@arm.com return new Iterator(*this); 347413481Sgiacomo.travaglini@arm.com } 347513481Sgiacomo.travaglini@arm.com virtual const ParamType* Current() const { return ¤t_value_; } 347613481Sgiacomo.travaglini@arm.com virtual bool Equals(const ParamIteratorInterface<ParamType>& other) const { 347713481Sgiacomo.travaglini@arm.com // Having the same base generator guarantees that the other 347813481Sgiacomo.travaglini@arm.com // iterator is of the same type and we can downcast. 347913481Sgiacomo.travaglini@arm.com GTEST_CHECK_(BaseGenerator() == other.BaseGenerator()) 348013481Sgiacomo.travaglini@arm.com << "The program attempted to compare iterators " 348113481Sgiacomo.travaglini@arm.com << "from different generators." << std::endl; 348213481Sgiacomo.travaglini@arm.com const Iterator* typed_other = 348313481Sgiacomo.travaglini@arm.com CheckedDowncastToActualType<const Iterator>(&other); 348413481Sgiacomo.travaglini@arm.com // We must report iterators equal if they both point beyond their 348513481Sgiacomo.travaglini@arm.com // respective ranges. That can happen in a variety of fashions, 348613481Sgiacomo.travaglini@arm.com // so we have to consult AtEnd(). 348713481Sgiacomo.travaglini@arm.com return (AtEnd() && typed_other->AtEnd()) || 348813481Sgiacomo.travaglini@arm.com ( 348913481Sgiacomo.travaglini@arm.com current1_ == typed_other->current1_ && 349013481Sgiacomo.travaglini@arm.com current2_ == typed_other->current2_ && 349113481Sgiacomo.travaglini@arm.com current3_ == typed_other->current3_ && 349213481Sgiacomo.travaglini@arm.com current4_ == typed_other->current4_); 349313481Sgiacomo.travaglini@arm.com } 349413481Sgiacomo.travaglini@arm.com 349513481Sgiacomo.travaglini@arm.com private: 349613481Sgiacomo.travaglini@arm.com Iterator(const Iterator& other) 349713481Sgiacomo.travaglini@arm.com : base_(other.base_), 349813481Sgiacomo.travaglini@arm.com begin1_(other.begin1_), 349913481Sgiacomo.travaglini@arm.com end1_(other.end1_), 350013481Sgiacomo.travaglini@arm.com current1_(other.current1_), 350113481Sgiacomo.travaglini@arm.com begin2_(other.begin2_), 350213481Sgiacomo.travaglini@arm.com end2_(other.end2_), 350313481Sgiacomo.travaglini@arm.com current2_(other.current2_), 350413481Sgiacomo.travaglini@arm.com begin3_(other.begin3_), 350513481Sgiacomo.travaglini@arm.com end3_(other.end3_), 350613481Sgiacomo.travaglini@arm.com current3_(other.current3_), 350713481Sgiacomo.travaglini@arm.com begin4_(other.begin4_), 350813481Sgiacomo.travaglini@arm.com end4_(other.end4_), 350913481Sgiacomo.travaglini@arm.com current4_(other.current4_) { 351013481Sgiacomo.travaglini@arm.com ComputeCurrentValue(); 351113481Sgiacomo.travaglini@arm.com } 351213481Sgiacomo.travaglini@arm.com 351313481Sgiacomo.travaglini@arm.com void ComputeCurrentValue() { 351413481Sgiacomo.travaglini@arm.com if (!AtEnd()) 351513481Sgiacomo.travaglini@arm.com current_value_ = ParamType(*current1_, *current2_, *current3_, 351613481Sgiacomo.travaglini@arm.com *current4_); 351713481Sgiacomo.travaglini@arm.com } 351813481Sgiacomo.travaglini@arm.com bool AtEnd() const { 351913481Sgiacomo.travaglini@arm.com // We must report iterator past the end of the range when either of the 352013481Sgiacomo.travaglini@arm.com // component iterators has reached the end of its range. 352113481Sgiacomo.travaglini@arm.com return 352213481Sgiacomo.travaglini@arm.com current1_ == end1_ || 352313481Sgiacomo.travaglini@arm.com current2_ == end2_ || 352413481Sgiacomo.travaglini@arm.com current3_ == end3_ || 352513481Sgiacomo.travaglini@arm.com current4_ == end4_; 352613481Sgiacomo.travaglini@arm.com } 352713481Sgiacomo.travaglini@arm.com 352813481Sgiacomo.travaglini@arm.com // No implementation - assignment is unsupported. 352913481Sgiacomo.travaglini@arm.com void operator=(const Iterator& other); 353013481Sgiacomo.travaglini@arm.com 353113481Sgiacomo.travaglini@arm.com const ParamGeneratorInterface<ParamType>* const base_; 353213481Sgiacomo.travaglini@arm.com // begin[i]_ and end[i]_ define the i-th range that Iterator traverses. 353313481Sgiacomo.travaglini@arm.com // current[i]_ is the actual traversing iterator. 353413481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T1>::iterator begin1_; 353513481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T1>::iterator end1_; 353613481Sgiacomo.travaglini@arm.com typename ParamGenerator<T1>::iterator current1_; 353713481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T2>::iterator begin2_; 353813481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T2>::iterator end2_; 353913481Sgiacomo.travaglini@arm.com typename ParamGenerator<T2>::iterator current2_; 354013481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T3>::iterator begin3_; 354113481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T3>::iterator end3_; 354213481Sgiacomo.travaglini@arm.com typename ParamGenerator<T3>::iterator current3_; 354313481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T4>::iterator begin4_; 354413481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T4>::iterator end4_; 354513481Sgiacomo.travaglini@arm.com typename ParamGenerator<T4>::iterator current4_; 354613481Sgiacomo.travaglini@arm.com ParamType current_value_; 354713481Sgiacomo.travaglini@arm.com }; // class CartesianProductGenerator4::Iterator 354813481Sgiacomo.travaglini@arm.com 354913481Sgiacomo.travaglini@arm.com // No implementation - assignment is unsupported. 355013481Sgiacomo.travaglini@arm.com void operator=(const CartesianProductGenerator4& other); 355113481Sgiacomo.travaglini@arm.com 355213481Sgiacomo.travaglini@arm.com const ParamGenerator<T1> g1_; 355313481Sgiacomo.travaglini@arm.com const ParamGenerator<T2> g2_; 355413481Sgiacomo.travaglini@arm.com const ParamGenerator<T3> g3_; 355513481Sgiacomo.travaglini@arm.com const ParamGenerator<T4> g4_; 355613481Sgiacomo.travaglini@arm.com}; // class CartesianProductGenerator4 355713481Sgiacomo.travaglini@arm.com 355813481Sgiacomo.travaglini@arm.com 355913481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5> 356013481Sgiacomo.travaglini@arm.comclass CartesianProductGenerator5 356113481Sgiacomo.travaglini@arm.com : public ParamGeneratorInterface< ::testing::tuple<T1, T2, T3, T4, T5> > { 356213481Sgiacomo.travaglini@arm.com public: 356313481Sgiacomo.travaglini@arm.com typedef ::testing::tuple<T1, T2, T3, T4, T5> ParamType; 356413481Sgiacomo.travaglini@arm.com 356513481Sgiacomo.travaglini@arm.com CartesianProductGenerator5(const ParamGenerator<T1>& g1, 356613481Sgiacomo.travaglini@arm.com const ParamGenerator<T2>& g2, const ParamGenerator<T3>& g3, 356713481Sgiacomo.travaglini@arm.com const ParamGenerator<T4>& g4, const ParamGenerator<T5>& g5) 356813481Sgiacomo.travaglini@arm.com : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5) {} 356913481Sgiacomo.travaglini@arm.com virtual ~CartesianProductGenerator5() {} 357013481Sgiacomo.travaglini@arm.com 357113481Sgiacomo.travaglini@arm.com virtual ParamIteratorInterface<ParamType>* Begin() const { 357213481Sgiacomo.travaglini@arm.com return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_, 357313481Sgiacomo.travaglini@arm.com g3_.begin(), g4_, g4_.begin(), g5_, g5_.begin()); 357413481Sgiacomo.travaglini@arm.com } 357513481Sgiacomo.travaglini@arm.com virtual ParamIteratorInterface<ParamType>* End() const { 357613481Sgiacomo.travaglini@arm.com return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(), 357713481Sgiacomo.travaglini@arm.com g4_, g4_.end(), g5_, g5_.end()); 357813481Sgiacomo.travaglini@arm.com } 357913481Sgiacomo.travaglini@arm.com 358013481Sgiacomo.travaglini@arm.com private: 358113481Sgiacomo.travaglini@arm.com class Iterator : public ParamIteratorInterface<ParamType> { 358213481Sgiacomo.travaglini@arm.com public: 358313481Sgiacomo.travaglini@arm.com Iterator(const ParamGeneratorInterface<ParamType>* base, 358413481Sgiacomo.travaglini@arm.com const ParamGenerator<T1>& g1, 358513481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T1>::iterator& current1, 358613481Sgiacomo.travaglini@arm.com const ParamGenerator<T2>& g2, 358713481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T2>::iterator& current2, 358813481Sgiacomo.travaglini@arm.com const ParamGenerator<T3>& g3, 358913481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T3>::iterator& current3, 359013481Sgiacomo.travaglini@arm.com const ParamGenerator<T4>& g4, 359113481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T4>::iterator& current4, 359213481Sgiacomo.travaglini@arm.com const ParamGenerator<T5>& g5, 359313481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T5>::iterator& current5) 359413481Sgiacomo.travaglini@arm.com : base_(base), 359513481Sgiacomo.travaglini@arm.com begin1_(g1.begin()), end1_(g1.end()), current1_(current1), 359613481Sgiacomo.travaglini@arm.com begin2_(g2.begin()), end2_(g2.end()), current2_(current2), 359713481Sgiacomo.travaglini@arm.com begin3_(g3.begin()), end3_(g3.end()), current3_(current3), 359813481Sgiacomo.travaglini@arm.com begin4_(g4.begin()), end4_(g4.end()), current4_(current4), 359913481Sgiacomo.travaglini@arm.com begin5_(g5.begin()), end5_(g5.end()), current5_(current5) { 360013481Sgiacomo.travaglini@arm.com ComputeCurrentValue(); 360113481Sgiacomo.travaglini@arm.com } 360213481Sgiacomo.travaglini@arm.com virtual ~Iterator() {} 360313481Sgiacomo.travaglini@arm.com 360413481Sgiacomo.travaglini@arm.com virtual const ParamGeneratorInterface<ParamType>* BaseGenerator() const { 360513481Sgiacomo.travaglini@arm.com return base_; 360613481Sgiacomo.travaglini@arm.com } 360713481Sgiacomo.travaglini@arm.com // Advance should not be called on beyond-of-range iterators 360813481Sgiacomo.travaglini@arm.com // so no component iterators must be beyond end of range, either. 360913481Sgiacomo.travaglini@arm.com virtual void Advance() { 361013481Sgiacomo.travaglini@arm.com assert(!AtEnd()); 361113481Sgiacomo.travaglini@arm.com ++current5_; 361213481Sgiacomo.travaglini@arm.com if (current5_ == end5_) { 361313481Sgiacomo.travaglini@arm.com current5_ = begin5_; 361413481Sgiacomo.travaglini@arm.com ++current4_; 361513481Sgiacomo.travaglini@arm.com } 361613481Sgiacomo.travaglini@arm.com if (current4_ == end4_) { 361713481Sgiacomo.travaglini@arm.com current4_ = begin4_; 361813481Sgiacomo.travaglini@arm.com ++current3_; 361913481Sgiacomo.travaglini@arm.com } 362013481Sgiacomo.travaglini@arm.com if (current3_ == end3_) { 362113481Sgiacomo.travaglini@arm.com current3_ = begin3_; 362213481Sgiacomo.travaglini@arm.com ++current2_; 362313481Sgiacomo.travaglini@arm.com } 362413481Sgiacomo.travaglini@arm.com if (current2_ == end2_) { 362513481Sgiacomo.travaglini@arm.com current2_ = begin2_; 362613481Sgiacomo.travaglini@arm.com ++current1_; 362713481Sgiacomo.travaglini@arm.com } 362813481Sgiacomo.travaglini@arm.com ComputeCurrentValue(); 362913481Sgiacomo.travaglini@arm.com } 363013481Sgiacomo.travaglini@arm.com virtual ParamIteratorInterface<ParamType>* Clone() const { 363113481Sgiacomo.travaglini@arm.com return new Iterator(*this); 363213481Sgiacomo.travaglini@arm.com } 363313481Sgiacomo.travaglini@arm.com virtual const ParamType* Current() const { return ¤t_value_; } 363413481Sgiacomo.travaglini@arm.com virtual bool Equals(const ParamIteratorInterface<ParamType>& other) const { 363513481Sgiacomo.travaglini@arm.com // Having the same base generator guarantees that the other 363613481Sgiacomo.travaglini@arm.com // iterator is of the same type and we can downcast. 363713481Sgiacomo.travaglini@arm.com GTEST_CHECK_(BaseGenerator() == other.BaseGenerator()) 363813481Sgiacomo.travaglini@arm.com << "The program attempted to compare iterators " 363913481Sgiacomo.travaglini@arm.com << "from different generators." << std::endl; 364013481Sgiacomo.travaglini@arm.com const Iterator* typed_other = 364113481Sgiacomo.travaglini@arm.com CheckedDowncastToActualType<const Iterator>(&other); 364213481Sgiacomo.travaglini@arm.com // We must report iterators equal if they both point beyond their 364313481Sgiacomo.travaglini@arm.com // respective ranges. That can happen in a variety of fashions, 364413481Sgiacomo.travaglini@arm.com // so we have to consult AtEnd(). 364513481Sgiacomo.travaglini@arm.com return (AtEnd() && typed_other->AtEnd()) || 364613481Sgiacomo.travaglini@arm.com ( 364713481Sgiacomo.travaglini@arm.com current1_ == typed_other->current1_ && 364813481Sgiacomo.travaglini@arm.com current2_ == typed_other->current2_ && 364913481Sgiacomo.travaglini@arm.com current3_ == typed_other->current3_ && 365013481Sgiacomo.travaglini@arm.com current4_ == typed_other->current4_ && 365113481Sgiacomo.travaglini@arm.com current5_ == typed_other->current5_); 365213481Sgiacomo.travaglini@arm.com } 365313481Sgiacomo.travaglini@arm.com 365413481Sgiacomo.travaglini@arm.com private: 365513481Sgiacomo.travaglini@arm.com Iterator(const Iterator& other) 365613481Sgiacomo.travaglini@arm.com : base_(other.base_), 365713481Sgiacomo.travaglini@arm.com begin1_(other.begin1_), 365813481Sgiacomo.travaglini@arm.com end1_(other.end1_), 365913481Sgiacomo.travaglini@arm.com current1_(other.current1_), 366013481Sgiacomo.travaglini@arm.com begin2_(other.begin2_), 366113481Sgiacomo.travaglini@arm.com end2_(other.end2_), 366213481Sgiacomo.travaglini@arm.com current2_(other.current2_), 366313481Sgiacomo.travaglini@arm.com begin3_(other.begin3_), 366413481Sgiacomo.travaglini@arm.com end3_(other.end3_), 366513481Sgiacomo.travaglini@arm.com current3_(other.current3_), 366613481Sgiacomo.travaglini@arm.com begin4_(other.begin4_), 366713481Sgiacomo.travaglini@arm.com end4_(other.end4_), 366813481Sgiacomo.travaglini@arm.com current4_(other.current4_), 366913481Sgiacomo.travaglini@arm.com begin5_(other.begin5_), 367013481Sgiacomo.travaglini@arm.com end5_(other.end5_), 367113481Sgiacomo.travaglini@arm.com current5_(other.current5_) { 367213481Sgiacomo.travaglini@arm.com ComputeCurrentValue(); 367313481Sgiacomo.travaglini@arm.com } 367413481Sgiacomo.travaglini@arm.com 367513481Sgiacomo.travaglini@arm.com void ComputeCurrentValue() { 367613481Sgiacomo.travaglini@arm.com if (!AtEnd()) 367713481Sgiacomo.travaglini@arm.com current_value_ = ParamType(*current1_, *current2_, *current3_, 367813481Sgiacomo.travaglini@arm.com *current4_, *current5_); 367913481Sgiacomo.travaglini@arm.com } 368013481Sgiacomo.travaglini@arm.com bool AtEnd() const { 368113481Sgiacomo.travaglini@arm.com // We must report iterator past the end of the range when either of the 368213481Sgiacomo.travaglini@arm.com // component iterators has reached the end of its range. 368313481Sgiacomo.travaglini@arm.com return 368413481Sgiacomo.travaglini@arm.com current1_ == end1_ || 368513481Sgiacomo.travaglini@arm.com current2_ == end2_ || 368613481Sgiacomo.travaglini@arm.com current3_ == end3_ || 368713481Sgiacomo.travaglini@arm.com current4_ == end4_ || 368813481Sgiacomo.travaglini@arm.com current5_ == end5_; 368913481Sgiacomo.travaglini@arm.com } 369013481Sgiacomo.travaglini@arm.com 369113481Sgiacomo.travaglini@arm.com // No implementation - assignment is unsupported. 369213481Sgiacomo.travaglini@arm.com void operator=(const Iterator& other); 369313481Sgiacomo.travaglini@arm.com 369413481Sgiacomo.travaglini@arm.com const ParamGeneratorInterface<ParamType>* const base_; 369513481Sgiacomo.travaglini@arm.com // begin[i]_ and end[i]_ define the i-th range that Iterator traverses. 369613481Sgiacomo.travaglini@arm.com // current[i]_ is the actual traversing iterator. 369713481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T1>::iterator begin1_; 369813481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T1>::iterator end1_; 369913481Sgiacomo.travaglini@arm.com typename ParamGenerator<T1>::iterator current1_; 370013481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T2>::iterator begin2_; 370113481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T2>::iterator end2_; 370213481Sgiacomo.travaglini@arm.com typename ParamGenerator<T2>::iterator current2_; 370313481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T3>::iterator begin3_; 370413481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T3>::iterator end3_; 370513481Sgiacomo.travaglini@arm.com typename ParamGenerator<T3>::iterator current3_; 370613481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T4>::iterator begin4_; 370713481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T4>::iterator end4_; 370813481Sgiacomo.travaglini@arm.com typename ParamGenerator<T4>::iterator current4_; 370913481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T5>::iterator begin5_; 371013481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T5>::iterator end5_; 371113481Sgiacomo.travaglini@arm.com typename ParamGenerator<T5>::iterator current5_; 371213481Sgiacomo.travaglini@arm.com ParamType current_value_; 371313481Sgiacomo.travaglini@arm.com }; // class CartesianProductGenerator5::Iterator 371413481Sgiacomo.travaglini@arm.com 371513481Sgiacomo.travaglini@arm.com // No implementation - assignment is unsupported. 371613481Sgiacomo.travaglini@arm.com void operator=(const CartesianProductGenerator5& other); 371713481Sgiacomo.travaglini@arm.com 371813481Sgiacomo.travaglini@arm.com const ParamGenerator<T1> g1_; 371913481Sgiacomo.travaglini@arm.com const ParamGenerator<T2> g2_; 372013481Sgiacomo.travaglini@arm.com const ParamGenerator<T3> g3_; 372113481Sgiacomo.travaglini@arm.com const ParamGenerator<T4> g4_; 372213481Sgiacomo.travaglini@arm.com const ParamGenerator<T5> g5_; 372313481Sgiacomo.travaglini@arm.com}; // class CartesianProductGenerator5 372413481Sgiacomo.travaglini@arm.com 372513481Sgiacomo.travaglini@arm.com 372613481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 372713481Sgiacomo.travaglini@arm.com typename T6> 372813481Sgiacomo.travaglini@arm.comclass CartesianProductGenerator6 372913481Sgiacomo.travaglini@arm.com : public ParamGeneratorInterface< ::testing::tuple<T1, T2, T3, T4, T5, 373013481Sgiacomo.travaglini@arm.com T6> > { 373113481Sgiacomo.travaglini@arm.com public: 373213481Sgiacomo.travaglini@arm.com typedef ::testing::tuple<T1, T2, T3, T4, T5, T6> ParamType; 373313481Sgiacomo.travaglini@arm.com 373413481Sgiacomo.travaglini@arm.com CartesianProductGenerator6(const ParamGenerator<T1>& g1, 373513481Sgiacomo.travaglini@arm.com const ParamGenerator<T2>& g2, const ParamGenerator<T3>& g3, 373613481Sgiacomo.travaglini@arm.com const ParamGenerator<T4>& g4, const ParamGenerator<T5>& g5, 373713481Sgiacomo.travaglini@arm.com const ParamGenerator<T6>& g6) 373813481Sgiacomo.travaglini@arm.com : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6) {} 373913481Sgiacomo.travaglini@arm.com virtual ~CartesianProductGenerator6() {} 374013481Sgiacomo.travaglini@arm.com 374113481Sgiacomo.travaglini@arm.com virtual ParamIteratorInterface<ParamType>* Begin() const { 374213481Sgiacomo.travaglini@arm.com return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_, 374313481Sgiacomo.travaglini@arm.com g3_.begin(), g4_, g4_.begin(), g5_, g5_.begin(), g6_, g6_.begin()); 374413481Sgiacomo.travaglini@arm.com } 374513481Sgiacomo.travaglini@arm.com virtual ParamIteratorInterface<ParamType>* End() const { 374613481Sgiacomo.travaglini@arm.com return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(), 374713481Sgiacomo.travaglini@arm.com g4_, g4_.end(), g5_, g5_.end(), g6_, g6_.end()); 374813481Sgiacomo.travaglini@arm.com } 374913481Sgiacomo.travaglini@arm.com 375013481Sgiacomo.travaglini@arm.com private: 375113481Sgiacomo.travaglini@arm.com class Iterator : public ParamIteratorInterface<ParamType> { 375213481Sgiacomo.travaglini@arm.com public: 375313481Sgiacomo.travaglini@arm.com Iterator(const ParamGeneratorInterface<ParamType>* base, 375413481Sgiacomo.travaglini@arm.com const ParamGenerator<T1>& g1, 375513481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T1>::iterator& current1, 375613481Sgiacomo.travaglini@arm.com const ParamGenerator<T2>& g2, 375713481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T2>::iterator& current2, 375813481Sgiacomo.travaglini@arm.com const ParamGenerator<T3>& g3, 375913481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T3>::iterator& current3, 376013481Sgiacomo.travaglini@arm.com const ParamGenerator<T4>& g4, 376113481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T4>::iterator& current4, 376213481Sgiacomo.travaglini@arm.com const ParamGenerator<T5>& g5, 376313481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T5>::iterator& current5, 376413481Sgiacomo.travaglini@arm.com const ParamGenerator<T6>& g6, 376513481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T6>::iterator& current6) 376613481Sgiacomo.travaglini@arm.com : base_(base), 376713481Sgiacomo.travaglini@arm.com begin1_(g1.begin()), end1_(g1.end()), current1_(current1), 376813481Sgiacomo.travaglini@arm.com begin2_(g2.begin()), end2_(g2.end()), current2_(current2), 376913481Sgiacomo.travaglini@arm.com begin3_(g3.begin()), end3_(g3.end()), current3_(current3), 377013481Sgiacomo.travaglini@arm.com begin4_(g4.begin()), end4_(g4.end()), current4_(current4), 377113481Sgiacomo.travaglini@arm.com begin5_(g5.begin()), end5_(g5.end()), current5_(current5), 377213481Sgiacomo.travaglini@arm.com begin6_(g6.begin()), end6_(g6.end()), current6_(current6) { 377313481Sgiacomo.travaglini@arm.com ComputeCurrentValue(); 377413481Sgiacomo.travaglini@arm.com } 377513481Sgiacomo.travaglini@arm.com virtual ~Iterator() {} 377613481Sgiacomo.travaglini@arm.com 377713481Sgiacomo.travaglini@arm.com virtual const ParamGeneratorInterface<ParamType>* BaseGenerator() const { 377813481Sgiacomo.travaglini@arm.com return base_; 377913481Sgiacomo.travaglini@arm.com } 378013481Sgiacomo.travaglini@arm.com // Advance should not be called on beyond-of-range iterators 378113481Sgiacomo.travaglini@arm.com // so no component iterators must be beyond end of range, either. 378213481Sgiacomo.travaglini@arm.com virtual void Advance() { 378313481Sgiacomo.travaglini@arm.com assert(!AtEnd()); 378413481Sgiacomo.travaglini@arm.com ++current6_; 378513481Sgiacomo.travaglini@arm.com if (current6_ == end6_) { 378613481Sgiacomo.travaglini@arm.com current6_ = begin6_; 378713481Sgiacomo.travaglini@arm.com ++current5_; 378813481Sgiacomo.travaglini@arm.com } 378913481Sgiacomo.travaglini@arm.com if (current5_ == end5_) { 379013481Sgiacomo.travaglini@arm.com current5_ = begin5_; 379113481Sgiacomo.travaglini@arm.com ++current4_; 379213481Sgiacomo.travaglini@arm.com } 379313481Sgiacomo.travaglini@arm.com if (current4_ == end4_) { 379413481Sgiacomo.travaglini@arm.com current4_ = begin4_; 379513481Sgiacomo.travaglini@arm.com ++current3_; 379613481Sgiacomo.travaglini@arm.com } 379713481Sgiacomo.travaglini@arm.com if (current3_ == end3_) { 379813481Sgiacomo.travaglini@arm.com current3_ = begin3_; 379913481Sgiacomo.travaglini@arm.com ++current2_; 380013481Sgiacomo.travaglini@arm.com } 380113481Sgiacomo.travaglini@arm.com if (current2_ == end2_) { 380213481Sgiacomo.travaglini@arm.com current2_ = begin2_; 380313481Sgiacomo.travaglini@arm.com ++current1_; 380413481Sgiacomo.travaglini@arm.com } 380513481Sgiacomo.travaglini@arm.com ComputeCurrentValue(); 380613481Sgiacomo.travaglini@arm.com } 380713481Sgiacomo.travaglini@arm.com virtual ParamIteratorInterface<ParamType>* Clone() const { 380813481Sgiacomo.travaglini@arm.com return new Iterator(*this); 380913481Sgiacomo.travaglini@arm.com } 381013481Sgiacomo.travaglini@arm.com virtual const ParamType* Current() const { return ¤t_value_; } 381113481Sgiacomo.travaglini@arm.com virtual bool Equals(const ParamIteratorInterface<ParamType>& other) const { 381213481Sgiacomo.travaglini@arm.com // Having the same base generator guarantees that the other 381313481Sgiacomo.travaglini@arm.com // iterator is of the same type and we can downcast. 381413481Sgiacomo.travaglini@arm.com GTEST_CHECK_(BaseGenerator() == other.BaseGenerator()) 381513481Sgiacomo.travaglini@arm.com << "The program attempted to compare iterators " 381613481Sgiacomo.travaglini@arm.com << "from different generators." << std::endl; 381713481Sgiacomo.travaglini@arm.com const Iterator* typed_other = 381813481Sgiacomo.travaglini@arm.com CheckedDowncastToActualType<const Iterator>(&other); 381913481Sgiacomo.travaglini@arm.com // We must report iterators equal if they both point beyond their 382013481Sgiacomo.travaglini@arm.com // respective ranges. That can happen in a variety of fashions, 382113481Sgiacomo.travaglini@arm.com // so we have to consult AtEnd(). 382213481Sgiacomo.travaglini@arm.com return (AtEnd() && typed_other->AtEnd()) || 382313481Sgiacomo.travaglini@arm.com ( 382413481Sgiacomo.travaglini@arm.com current1_ == typed_other->current1_ && 382513481Sgiacomo.travaglini@arm.com current2_ == typed_other->current2_ && 382613481Sgiacomo.travaglini@arm.com current3_ == typed_other->current3_ && 382713481Sgiacomo.travaglini@arm.com current4_ == typed_other->current4_ && 382813481Sgiacomo.travaglini@arm.com current5_ == typed_other->current5_ && 382913481Sgiacomo.travaglini@arm.com current6_ == typed_other->current6_); 383013481Sgiacomo.travaglini@arm.com } 383113481Sgiacomo.travaglini@arm.com 383213481Sgiacomo.travaglini@arm.com private: 383313481Sgiacomo.travaglini@arm.com Iterator(const Iterator& other) 383413481Sgiacomo.travaglini@arm.com : base_(other.base_), 383513481Sgiacomo.travaglini@arm.com begin1_(other.begin1_), 383613481Sgiacomo.travaglini@arm.com end1_(other.end1_), 383713481Sgiacomo.travaglini@arm.com current1_(other.current1_), 383813481Sgiacomo.travaglini@arm.com begin2_(other.begin2_), 383913481Sgiacomo.travaglini@arm.com end2_(other.end2_), 384013481Sgiacomo.travaglini@arm.com current2_(other.current2_), 384113481Sgiacomo.travaglini@arm.com begin3_(other.begin3_), 384213481Sgiacomo.travaglini@arm.com end3_(other.end3_), 384313481Sgiacomo.travaglini@arm.com current3_(other.current3_), 384413481Sgiacomo.travaglini@arm.com begin4_(other.begin4_), 384513481Sgiacomo.travaglini@arm.com end4_(other.end4_), 384613481Sgiacomo.travaglini@arm.com current4_(other.current4_), 384713481Sgiacomo.travaglini@arm.com begin5_(other.begin5_), 384813481Sgiacomo.travaglini@arm.com end5_(other.end5_), 384913481Sgiacomo.travaglini@arm.com current5_(other.current5_), 385013481Sgiacomo.travaglini@arm.com begin6_(other.begin6_), 385113481Sgiacomo.travaglini@arm.com end6_(other.end6_), 385213481Sgiacomo.travaglini@arm.com current6_(other.current6_) { 385313481Sgiacomo.travaglini@arm.com ComputeCurrentValue(); 385413481Sgiacomo.travaglini@arm.com } 385513481Sgiacomo.travaglini@arm.com 385613481Sgiacomo.travaglini@arm.com void ComputeCurrentValue() { 385713481Sgiacomo.travaglini@arm.com if (!AtEnd()) 385813481Sgiacomo.travaglini@arm.com current_value_ = ParamType(*current1_, *current2_, *current3_, 385913481Sgiacomo.travaglini@arm.com *current4_, *current5_, *current6_); 386013481Sgiacomo.travaglini@arm.com } 386113481Sgiacomo.travaglini@arm.com bool AtEnd() const { 386213481Sgiacomo.travaglini@arm.com // We must report iterator past the end of the range when either of the 386313481Sgiacomo.travaglini@arm.com // component iterators has reached the end of its range. 386413481Sgiacomo.travaglini@arm.com return 386513481Sgiacomo.travaglini@arm.com current1_ == end1_ || 386613481Sgiacomo.travaglini@arm.com current2_ == end2_ || 386713481Sgiacomo.travaglini@arm.com current3_ == end3_ || 386813481Sgiacomo.travaglini@arm.com current4_ == end4_ || 386913481Sgiacomo.travaglini@arm.com current5_ == end5_ || 387013481Sgiacomo.travaglini@arm.com current6_ == end6_; 387113481Sgiacomo.travaglini@arm.com } 387213481Sgiacomo.travaglini@arm.com 387313481Sgiacomo.travaglini@arm.com // No implementation - assignment is unsupported. 387413481Sgiacomo.travaglini@arm.com void operator=(const Iterator& other); 387513481Sgiacomo.travaglini@arm.com 387613481Sgiacomo.travaglini@arm.com const ParamGeneratorInterface<ParamType>* const base_; 387713481Sgiacomo.travaglini@arm.com // begin[i]_ and end[i]_ define the i-th range that Iterator traverses. 387813481Sgiacomo.travaglini@arm.com // current[i]_ is the actual traversing iterator. 387913481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T1>::iterator begin1_; 388013481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T1>::iterator end1_; 388113481Sgiacomo.travaglini@arm.com typename ParamGenerator<T1>::iterator current1_; 388213481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T2>::iterator begin2_; 388313481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T2>::iterator end2_; 388413481Sgiacomo.travaglini@arm.com typename ParamGenerator<T2>::iterator current2_; 388513481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T3>::iterator begin3_; 388613481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T3>::iterator end3_; 388713481Sgiacomo.travaglini@arm.com typename ParamGenerator<T3>::iterator current3_; 388813481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T4>::iterator begin4_; 388913481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T4>::iterator end4_; 389013481Sgiacomo.travaglini@arm.com typename ParamGenerator<T4>::iterator current4_; 389113481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T5>::iterator begin5_; 389213481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T5>::iterator end5_; 389313481Sgiacomo.travaglini@arm.com typename ParamGenerator<T5>::iterator current5_; 389413481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T6>::iterator begin6_; 389513481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T6>::iterator end6_; 389613481Sgiacomo.travaglini@arm.com typename ParamGenerator<T6>::iterator current6_; 389713481Sgiacomo.travaglini@arm.com ParamType current_value_; 389813481Sgiacomo.travaglini@arm.com }; // class CartesianProductGenerator6::Iterator 389913481Sgiacomo.travaglini@arm.com 390013481Sgiacomo.travaglini@arm.com // No implementation - assignment is unsupported. 390113481Sgiacomo.travaglini@arm.com void operator=(const CartesianProductGenerator6& other); 390213481Sgiacomo.travaglini@arm.com 390313481Sgiacomo.travaglini@arm.com const ParamGenerator<T1> g1_; 390413481Sgiacomo.travaglini@arm.com const ParamGenerator<T2> g2_; 390513481Sgiacomo.travaglini@arm.com const ParamGenerator<T3> g3_; 390613481Sgiacomo.travaglini@arm.com const ParamGenerator<T4> g4_; 390713481Sgiacomo.travaglini@arm.com const ParamGenerator<T5> g5_; 390813481Sgiacomo.travaglini@arm.com const ParamGenerator<T6> g6_; 390913481Sgiacomo.travaglini@arm.com}; // class CartesianProductGenerator6 391013481Sgiacomo.travaglini@arm.com 391113481Sgiacomo.travaglini@arm.com 391213481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 391313481Sgiacomo.travaglini@arm.com typename T6, typename T7> 391413481Sgiacomo.travaglini@arm.comclass CartesianProductGenerator7 391513481Sgiacomo.travaglini@arm.com : public ParamGeneratorInterface< ::testing::tuple<T1, T2, T3, T4, T5, T6, 391613481Sgiacomo.travaglini@arm.com T7> > { 391713481Sgiacomo.travaglini@arm.com public: 391813481Sgiacomo.travaglini@arm.com typedef ::testing::tuple<T1, T2, T3, T4, T5, T6, T7> ParamType; 391913481Sgiacomo.travaglini@arm.com 392013481Sgiacomo.travaglini@arm.com CartesianProductGenerator7(const ParamGenerator<T1>& g1, 392113481Sgiacomo.travaglini@arm.com const ParamGenerator<T2>& g2, const ParamGenerator<T3>& g3, 392213481Sgiacomo.travaglini@arm.com const ParamGenerator<T4>& g4, const ParamGenerator<T5>& g5, 392313481Sgiacomo.travaglini@arm.com const ParamGenerator<T6>& g6, const ParamGenerator<T7>& g7) 392413481Sgiacomo.travaglini@arm.com : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7) {} 392513481Sgiacomo.travaglini@arm.com virtual ~CartesianProductGenerator7() {} 392613481Sgiacomo.travaglini@arm.com 392713481Sgiacomo.travaglini@arm.com virtual ParamIteratorInterface<ParamType>* Begin() const { 392813481Sgiacomo.travaglini@arm.com return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_, 392913481Sgiacomo.travaglini@arm.com g3_.begin(), g4_, g4_.begin(), g5_, g5_.begin(), g6_, g6_.begin(), g7_, 393013481Sgiacomo.travaglini@arm.com g7_.begin()); 393113481Sgiacomo.travaglini@arm.com } 393213481Sgiacomo.travaglini@arm.com virtual ParamIteratorInterface<ParamType>* End() const { 393313481Sgiacomo.travaglini@arm.com return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(), 393413481Sgiacomo.travaglini@arm.com g4_, g4_.end(), g5_, g5_.end(), g6_, g6_.end(), g7_, g7_.end()); 393513481Sgiacomo.travaglini@arm.com } 393613481Sgiacomo.travaglini@arm.com 393713481Sgiacomo.travaglini@arm.com private: 393813481Sgiacomo.travaglini@arm.com class Iterator : public ParamIteratorInterface<ParamType> { 393913481Sgiacomo.travaglini@arm.com public: 394013481Sgiacomo.travaglini@arm.com Iterator(const ParamGeneratorInterface<ParamType>* base, 394113481Sgiacomo.travaglini@arm.com const ParamGenerator<T1>& g1, 394213481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T1>::iterator& current1, 394313481Sgiacomo.travaglini@arm.com const ParamGenerator<T2>& g2, 394413481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T2>::iterator& current2, 394513481Sgiacomo.travaglini@arm.com const ParamGenerator<T3>& g3, 394613481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T3>::iterator& current3, 394713481Sgiacomo.travaglini@arm.com const ParamGenerator<T4>& g4, 394813481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T4>::iterator& current4, 394913481Sgiacomo.travaglini@arm.com const ParamGenerator<T5>& g5, 395013481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T5>::iterator& current5, 395113481Sgiacomo.travaglini@arm.com const ParamGenerator<T6>& g6, 395213481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T6>::iterator& current6, 395313481Sgiacomo.travaglini@arm.com const ParamGenerator<T7>& g7, 395413481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T7>::iterator& current7) 395513481Sgiacomo.travaglini@arm.com : base_(base), 395613481Sgiacomo.travaglini@arm.com begin1_(g1.begin()), end1_(g1.end()), current1_(current1), 395713481Sgiacomo.travaglini@arm.com begin2_(g2.begin()), end2_(g2.end()), current2_(current2), 395813481Sgiacomo.travaglini@arm.com begin3_(g3.begin()), end3_(g3.end()), current3_(current3), 395913481Sgiacomo.travaglini@arm.com begin4_(g4.begin()), end4_(g4.end()), current4_(current4), 396013481Sgiacomo.travaglini@arm.com begin5_(g5.begin()), end5_(g5.end()), current5_(current5), 396113481Sgiacomo.travaglini@arm.com begin6_(g6.begin()), end6_(g6.end()), current6_(current6), 396213481Sgiacomo.travaglini@arm.com begin7_(g7.begin()), end7_(g7.end()), current7_(current7) { 396313481Sgiacomo.travaglini@arm.com ComputeCurrentValue(); 396413481Sgiacomo.travaglini@arm.com } 396513481Sgiacomo.travaglini@arm.com virtual ~Iterator() {} 396613481Sgiacomo.travaglini@arm.com 396713481Sgiacomo.travaglini@arm.com virtual const ParamGeneratorInterface<ParamType>* BaseGenerator() const { 396813481Sgiacomo.travaglini@arm.com return base_; 396913481Sgiacomo.travaglini@arm.com } 397013481Sgiacomo.travaglini@arm.com // Advance should not be called on beyond-of-range iterators 397113481Sgiacomo.travaglini@arm.com // so no component iterators must be beyond end of range, either. 397213481Sgiacomo.travaglini@arm.com virtual void Advance() { 397313481Sgiacomo.travaglini@arm.com assert(!AtEnd()); 397413481Sgiacomo.travaglini@arm.com ++current7_; 397513481Sgiacomo.travaglini@arm.com if (current7_ == end7_) { 397613481Sgiacomo.travaglini@arm.com current7_ = begin7_; 397713481Sgiacomo.travaglini@arm.com ++current6_; 397813481Sgiacomo.travaglini@arm.com } 397913481Sgiacomo.travaglini@arm.com if (current6_ == end6_) { 398013481Sgiacomo.travaglini@arm.com current6_ = begin6_; 398113481Sgiacomo.travaglini@arm.com ++current5_; 398213481Sgiacomo.travaglini@arm.com } 398313481Sgiacomo.travaglini@arm.com if (current5_ == end5_) { 398413481Sgiacomo.travaglini@arm.com current5_ = begin5_; 398513481Sgiacomo.travaglini@arm.com ++current4_; 398613481Sgiacomo.travaglini@arm.com } 398713481Sgiacomo.travaglini@arm.com if (current4_ == end4_) { 398813481Sgiacomo.travaglini@arm.com current4_ = begin4_; 398913481Sgiacomo.travaglini@arm.com ++current3_; 399013481Sgiacomo.travaglini@arm.com } 399113481Sgiacomo.travaglini@arm.com if (current3_ == end3_) { 399213481Sgiacomo.travaglini@arm.com current3_ = begin3_; 399313481Sgiacomo.travaglini@arm.com ++current2_; 399413481Sgiacomo.travaglini@arm.com } 399513481Sgiacomo.travaglini@arm.com if (current2_ == end2_) { 399613481Sgiacomo.travaglini@arm.com current2_ = begin2_; 399713481Sgiacomo.travaglini@arm.com ++current1_; 399813481Sgiacomo.travaglini@arm.com } 399913481Sgiacomo.travaglini@arm.com ComputeCurrentValue(); 400013481Sgiacomo.travaglini@arm.com } 400113481Sgiacomo.travaglini@arm.com virtual ParamIteratorInterface<ParamType>* Clone() const { 400213481Sgiacomo.travaglini@arm.com return new Iterator(*this); 400313481Sgiacomo.travaglini@arm.com } 400413481Sgiacomo.travaglini@arm.com virtual const ParamType* Current() const { return ¤t_value_; } 400513481Sgiacomo.travaglini@arm.com virtual bool Equals(const ParamIteratorInterface<ParamType>& other) const { 400613481Sgiacomo.travaglini@arm.com // Having the same base generator guarantees that the other 400713481Sgiacomo.travaglini@arm.com // iterator is of the same type and we can downcast. 400813481Sgiacomo.travaglini@arm.com GTEST_CHECK_(BaseGenerator() == other.BaseGenerator()) 400913481Sgiacomo.travaglini@arm.com << "The program attempted to compare iterators " 401013481Sgiacomo.travaglini@arm.com << "from different generators." << std::endl; 401113481Sgiacomo.travaglini@arm.com const Iterator* typed_other = 401213481Sgiacomo.travaglini@arm.com CheckedDowncastToActualType<const Iterator>(&other); 401313481Sgiacomo.travaglini@arm.com // We must report iterators equal if they both point beyond their 401413481Sgiacomo.travaglini@arm.com // respective ranges. That can happen in a variety of fashions, 401513481Sgiacomo.travaglini@arm.com // so we have to consult AtEnd(). 401613481Sgiacomo.travaglini@arm.com return (AtEnd() && typed_other->AtEnd()) || 401713481Sgiacomo.travaglini@arm.com ( 401813481Sgiacomo.travaglini@arm.com current1_ == typed_other->current1_ && 401913481Sgiacomo.travaglini@arm.com current2_ == typed_other->current2_ && 402013481Sgiacomo.travaglini@arm.com current3_ == typed_other->current3_ && 402113481Sgiacomo.travaglini@arm.com current4_ == typed_other->current4_ && 402213481Sgiacomo.travaglini@arm.com current5_ == typed_other->current5_ && 402313481Sgiacomo.travaglini@arm.com current6_ == typed_other->current6_ && 402413481Sgiacomo.travaglini@arm.com current7_ == typed_other->current7_); 402513481Sgiacomo.travaglini@arm.com } 402613481Sgiacomo.travaglini@arm.com 402713481Sgiacomo.travaglini@arm.com private: 402813481Sgiacomo.travaglini@arm.com Iterator(const Iterator& other) 402913481Sgiacomo.travaglini@arm.com : base_(other.base_), 403013481Sgiacomo.travaglini@arm.com begin1_(other.begin1_), 403113481Sgiacomo.travaglini@arm.com end1_(other.end1_), 403213481Sgiacomo.travaglini@arm.com current1_(other.current1_), 403313481Sgiacomo.travaglini@arm.com begin2_(other.begin2_), 403413481Sgiacomo.travaglini@arm.com end2_(other.end2_), 403513481Sgiacomo.travaglini@arm.com current2_(other.current2_), 403613481Sgiacomo.travaglini@arm.com begin3_(other.begin3_), 403713481Sgiacomo.travaglini@arm.com end3_(other.end3_), 403813481Sgiacomo.travaglini@arm.com current3_(other.current3_), 403913481Sgiacomo.travaglini@arm.com begin4_(other.begin4_), 404013481Sgiacomo.travaglini@arm.com end4_(other.end4_), 404113481Sgiacomo.travaglini@arm.com current4_(other.current4_), 404213481Sgiacomo.travaglini@arm.com begin5_(other.begin5_), 404313481Sgiacomo.travaglini@arm.com end5_(other.end5_), 404413481Sgiacomo.travaglini@arm.com current5_(other.current5_), 404513481Sgiacomo.travaglini@arm.com begin6_(other.begin6_), 404613481Sgiacomo.travaglini@arm.com end6_(other.end6_), 404713481Sgiacomo.travaglini@arm.com current6_(other.current6_), 404813481Sgiacomo.travaglini@arm.com begin7_(other.begin7_), 404913481Sgiacomo.travaglini@arm.com end7_(other.end7_), 405013481Sgiacomo.travaglini@arm.com current7_(other.current7_) { 405113481Sgiacomo.travaglini@arm.com ComputeCurrentValue(); 405213481Sgiacomo.travaglini@arm.com } 405313481Sgiacomo.travaglini@arm.com 405413481Sgiacomo.travaglini@arm.com void ComputeCurrentValue() { 405513481Sgiacomo.travaglini@arm.com if (!AtEnd()) 405613481Sgiacomo.travaglini@arm.com current_value_ = ParamType(*current1_, *current2_, *current3_, 405713481Sgiacomo.travaglini@arm.com *current4_, *current5_, *current6_, *current7_); 405813481Sgiacomo.travaglini@arm.com } 405913481Sgiacomo.travaglini@arm.com bool AtEnd() const { 406013481Sgiacomo.travaglini@arm.com // We must report iterator past the end of the range when either of the 406113481Sgiacomo.travaglini@arm.com // component iterators has reached the end of its range. 406213481Sgiacomo.travaglini@arm.com return 406313481Sgiacomo.travaglini@arm.com current1_ == end1_ || 406413481Sgiacomo.travaglini@arm.com current2_ == end2_ || 406513481Sgiacomo.travaglini@arm.com current3_ == end3_ || 406613481Sgiacomo.travaglini@arm.com current4_ == end4_ || 406713481Sgiacomo.travaglini@arm.com current5_ == end5_ || 406813481Sgiacomo.travaglini@arm.com current6_ == end6_ || 406913481Sgiacomo.travaglini@arm.com current7_ == end7_; 407013481Sgiacomo.travaglini@arm.com } 407113481Sgiacomo.travaglini@arm.com 407213481Sgiacomo.travaglini@arm.com // No implementation - assignment is unsupported. 407313481Sgiacomo.travaglini@arm.com void operator=(const Iterator& other); 407413481Sgiacomo.travaglini@arm.com 407513481Sgiacomo.travaglini@arm.com const ParamGeneratorInterface<ParamType>* const base_; 407613481Sgiacomo.travaglini@arm.com // begin[i]_ and end[i]_ define the i-th range that Iterator traverses. 407713481Sgiacomo.travaglini@arm.com // current[i]_ is the actual traversing iterator. 407813481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T1>::iterator begin1_; 407913481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T1>::iterator end1_; 408013481Sgiacomo.travaglini@arm.com typename ParamGenerator<T1>::iterator current1_; 408113481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T2>::iterator begin2_; 408213481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T2>::iterator end2_; 408313481Sgiacomo.travaglini@arm.com typename ParamGenerator<T2>::iterator current2_; 408413481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T3>::iterator begin3_; 408513481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T3>::iterator end3_; 408613481Sgiacomo.travaglini@arm.com typename ParamGenerator<T3>::iterator current3_; 408713481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T4>::iterator begin4_; 408813481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T4>::iterator end4_; 408913481Sgiacomo.travaglini@arm.com typename ParamGenerator<T4>::iterator current4_; 409013481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T5>::iterator begin5_; 409113481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T5>::iterator end5_; 409213481Sgiacomo.travaglini@arm.com typename ParamGenerator<T5>::iterator current5_; 409313481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T6>::iterator begin6_; 409413481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T6>::iterator end6_; 409513481Sgiacomo.travaglini@arm.com typename ParamGenerator<T6>::iterator current6_; 409613481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T7>::iterator begin7_; 409713481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T7>::iterator end7_; 409813481Sgiacomo.travaglini@arm.com typename ParamGenerator<T7>::iterator current7_; 409913481Sgiacomo.travaglini@arm.com ParamType current_value_; 410013481Sgiacomo.travaglini@arm.com }; // class CartesianProductGenerator7::Iterator 410113481Sgiacomo.travaglini@arm.com 410213481Sgiacomo.travaglini@arm.com // No implementation - assignment is unsupported. 410313481Sgiacomo.travaglini@arm.com void operator=(const CartesianProductGenerator7& other); 410413481Sgiacomo.travaglini@arm.com 410513481Sgiacomo.travaglini@arm.com const ParamGenerator<T1> g1_; 410613481Sgiacomo.travaglini@arm.com const ParamGenerator<T2> g2_; 410713481Sgiacomo.travaglini@arm.com const ParamGenerator<T3> g3_; 410813481Sgiacomo.travaglini@arm.com const ParamGenerator<T4> g4_; 410913481Sgiacomo.travaglini@arm.com const ParamGenerator<T5> g5_; 411013481Sgiacomo.travaglini@arm.com const ParamGenerator<T6> g6_; 411113481Sgiacomo.travaglini@arm.com const ParamGenerator<T7> g7_; 411213481Sgiacomo.travaglini@arm.com}; // class CartesianProductGenerator7 411313481Sgiacomo.travaglini@arm.com 411413481Sgiacomo.travaglini@arm.com 411513481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 411613481Sgiacomo.travaglini@arm.com typename T6, typename T7, typename T8> 411713481Sgiacomo.travaglini@arm.comclass CartesianProductGenerator8 411813481Sgiacomo.travaglini@arm.com : public ParamGeneratorInterface< ::testing::tuple<T1, T2, T3, T4, T5, T6, 411913481Sgiacomo.travaglini@arm.com T7, T8> > { 412013481Sgiacomo.travaglini@arm.com public: 412113481Sgiacomo.travaglini@arm.com typedef ::testing::tuple<T1, T2, T3, T4, T5, T6, T7, T8> ParamType; 412213481Sgiacomo.travaglini@arm.com 412313481Sgiacomo.travaglini@arm.com CartesianProductGenerator8(const ParamGenerator<T1>& g1, 412413481Sgiacomo.travaglini@arm.com const ParamGenerator<T2>& g2, const ParamGenerator<T3>& g3, 412513481Sgiacomo.travaglini@arm.com const ParamGenerator<T4>& g4, const ParamGenerator<T5>& g5, 412613481Sgiacomo.travaglini@arm.com const ParamGenerator<T6>& g6, const ParamGenerator<T7>& g7, 412713481Sgiacomo.travaglini@arm.com const ParamGenerator<T8>& g8) 412813481Sgiacomo.travaglini@arm.com : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7), 412913481Sgiacomo.travaglini@arm.com g8_(g8) {} 413013481Sgiacomo.travaglini@arm.com virtual ~CartesianProductGenerator8() {} 413113481Sgiacomo.travaglini@arm.com 413213481Sgiacomo.travaglini@arm.com virtual ParamIteratorInterface<ParamType>* Begin() const { 413313481Sgiacomo.travaglini@arm.com return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_, 413413481Sgiacomo.travaglini@arm.com g3_.begin(), g4_, g4_.begin(), g5_, g5_.begin(), g6_, g6_.begin(), g7_, 413513481Sgiacomo.travaglini@arm.com g7_.begin(), g8_, g8_.begin()); 413613481Sgiacomo.travaglini@arm.com } 413713481Sgiacomo.travaglini@arm.com virtual ParamIteratorInterface<ParamType>* End() const { 413813481Sgiacomo.travaglini@arm.com return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(), 413913481Sgiacomo.travaglini@arm.com g4_, g4_.end(), g5_, g5_.end(), g6_, g6_.end(), g7_, g7_.end(), g8_, 414013481Sgiacomo.travaglini@arm.com g8_.end()); 414113481Sgiacomo.travaglini@arm.com } 414213481Sgiacomo.travaglini@arm.com 414313481Sgiacomo.travaglini@arm.com private: 414413481Sgiacomo.travaglini@arm.com class Iterator : public ParamIteratorInterface<ParamType> { 414513481Sgiacomo.travaglini@arm.com public: 414613481Sgiacomo.travaglini@arm.com Iterator(const ParamGeneratorInterface<ParamType>* base, 414713481Sgiacomo.travaglini@arm.com const ParamGenerator<T1>& g1, 414813481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T1>::iterator& current1, 414913481Sgiacomo.travaglini@arm.com const ParamGenerator<T2>& g2, 415013481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T2>::iterator& current2, 415113481Sgiacomo.travaglini@arm.com const ParamGenerator<T3>& g3, 415213481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T3>::iterator& current3, 415313481Sgiacomo.travaglini@arm.com const ParamGenerator<T4>& g4, 415413481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T4>::iterator& current4, 415513481Sgiacomo.travaglini@arm.com const ParamGenerator<T5>& g5, 415613481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T5>::iterator& current5, 415713481Sgiacomo.travaglini@arm.com const ParamGenerator<T6>& g6, 415813481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T6>::iterator& current6, 415913481Sgiacomo.travaglini@arm.com const ParamGenerator<T7>& g7, 416013481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T7>::iterator& current7, 416113481Sgiacomo.travaglini@arm.com const ParamGenerator<T8>& g8, 416213481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T8>::iterator& current8) 416313481Sgiacomo.travaglini@arm.com : base_(base), 416413481Sgiacomo.travaglini@arm.com begin1_(g1.begin()), end1_(g1.end()), current1_(current1), 416513481Sgiacomo.travaglini@arm.com begin2_(g2.begin()), end2_(g2.end()), current2_(current2), 416613481Sgiacomo.travaglini@arm.com begin3_(g3.begin()), end3_(g3.end()), current3_(current3), 416713481Sgiacomo.travaglini@arm.com begin4_(g4.begin()), end4_(g4.end()), current4_(current4), 416813481Sgiacomo.travaglini@arm.com begin5_(g5.begin()), end5_(g5.end()), current5_(current5), 416913481Sgiacomo.travaglini@arm.com begin6_(g6.begin()), end6_(g6.end()), current6_(current6), 417013481Sgiacomo.travaglini@arm.com begin7_(g7.begin()), end7_(g7.end()), current7_(current7), 417113481Sgiacomo.travaglini@arm.com begin8_(g8.begin()), end8_(g8.end()), current8_(current8) { 417213481Sgiacomo.travaglini@arm.com ComputeCurrentValue(); 417313481Sgiacomo.travaglini@arm.com } 417413481Sgiacomo.travaglini@arm.com virtual ~Iterator() {} 417513481Sgiacomo.travaglini@arm.com 417613481Sgiacomo.travaglini@arm.com virtual const ParamGeneratorInterface<ParamType>* BaseGenerator() const { 417713481Sgiacomo.travaglini@arm.com return base_; 417813481Sgiacomo.travaglini@arm.com } 417913481Sgiacomo.travaglini@arm.com // Advance should not be called on beyond-of-range iterators 418013481Sgiacomo.travaglini@arm.com // so no component iterators must be beyond end of range, either. 418113481Sgiacomo.travaglini@arm.com virtual void Advance() { 418213481Sgiacomo.travaglini@arm.com assert(!AtEnd()); 418313481Sgiacomo.travaglini@arm.com ++current8_; 418413481Sgiacomo.travaglini@arm.com if (current8_ == end8_) { 418513481Sgiacomo.travaglini@arm.com current8_ = begin8_; 418613481Sgiacomo.travaglini@arm.com ++current7_; 418713481Sgiacomo.travaglini@arm.com } 418813481Sgiacomo.travaglini@arm.com if (current7_ == end7_) { 418913481Sgiacomo.travaglini@arm.com current7_ = begin7_; 419013481Sgiacomo.travaglini@arm.com ++current6_; 419113481Sgiacomo.travaglini@arm.com } 419213481Sgiacomo.travaglini@arm.com if (current6_ == end6_) { 419313481Sgiacomo.travaglini@arm.com current6_ = begin6_; 419413481Sgiacomo.travaglini@arm.com ++current5_; 419513481Sgiacomo.travaglini@arm.com } 419613481Sgiacomo.travaglini@arm.com if (current5_ == end5_) { 419713481Sgiacomo.travaglini@arm.com current5_ = begin5_; 419813481Sgiacomo.travaglini@arm.com ++current4_; 419913481Sgiacomo.travaglini@arm.com } 420013481Sgiacomo.travaglini@arm.com if (current4_ == end4_) { 420113481Sgiacomo.travaglini@arm.com current4_ = begin4_; 420213481Sgiacomo.travaglini@arm.com ++current3_; 420313481Sgiacomo.travaglini@arm.com } 420413481Sgiacomo.travaglini@arm.com if (current3_ == end3_) { 420513481Sgiacomo.travaglini@arm.com current3_ = begin3_; 420613481Sgiacomo.travaglini@arm.com ++current2_; 420713481Sgiacomo.travaglini@arm.com } 420813481Sgiacomo.travaglini@arm.com if (current2_ == end2_) { 420913481Sgiacomo.travaglini@arm.com current2_ = begin2_; 421013481Sgiacomo.travaglini@arm.com ++current1_; 421113481Sgiacomo.travaglini@arm.com } 421213481Sgiacomo.travaglini@arm.com ComputeCurrentValue(); 421313481Sgiacomo.travaglini@arm.com } 421413481Sgiacomo.travaglini@arm.com virtual ParamIteratorInterface<ParamType>* Clone() const { 421513481Sgiacomo.travaglini@arm.com return new Iterator(*this); 421613481Sgiacomo.travaglini@arm.com } 421713481Sgiacomo.travaglini@arm.com virtual const ParamType* Current() const { return ¤t_value_; } 421813481Sgiacomo.travaglini@arm.com virtual bool Equals(const ParamIteratorInterface<ParamType>& other) const { 421913481Sgiacomo.travaglini@arm.com // Having the same base generator guarantees that the other 422013481Sgiacomo.travaglini@arm.com // iterator is of the same type and we can downcast. 422113481Sgiacomo.travaglini@arm.com GTEST_CHECK_(BaseGenerator() == other.BaseGenerator()) 422213481Sgiacomo.travaglini@arm.com << "The program attempted to compare iterators " 422313481Sgiacomo.travaglini@arm.com << "from different generators." << std::endl; 422413481Sgiacomo.travaglini@arm.com const Iterator* typed_other = 422513481Sgiacomo.travaglini@arm.com CheckedDowncastToActualType<const Iterator>(&other); 422613481Sgiacomo.travaglini@arm.com // We must report iterators equal if they both point beyond their 422713481Sgiacomo.travaglini@arm.com // respective ranges. That can happen in a variety of fashions, 422813481Sgiacomo.travaglini@arm.com // so we have to consult AtEnd(). 422913481Sgiacomo.travaglini@arm.com return (AtEnd() && typed_other->AtEnd()) || 423013481Sgiacomo.travaglini@arm.com ( 423113481Sgiacomo.travaglini@arm.com current1_ == typed_other->current1_ && 423213481Sgiacomo.travaglini@arm.com current2_ == typed_other->current2_ && 423313481Sgiacomo.travaglini@arm.com current3_ == typed_other->current3_ && 423413481Sgiacomo.travaglini@arm.com current4_ == typed_other->current4_ && 423513481Sgiacomo.travaglini@arm.com current5_ == typed_other->current5_ && 423613481Sgiacomo.travaglini@arm.com current6_ == typed_other->current6_ && 423713481Sgiacomo.travaglini@arm.com current7_ == typed_other->current7_ && 423813481Sgiacomo.travaglini@arm.com current8_ == typed_other->current8_); 423913481Sgiacomo.travaglini@arm.com } 424013481Sgiacomo.travaglini@arm.com 424113481Sgiacomo.travaglini@arm.com private: 424213481Sgiacomo.travaglini@arm.com Iterator(const Iterator& other) 424313481Sgiacomo.travaglini@arm.com : base_(other.base_), 424413481Sgiacomo.travaglini@arm.com begin1_(other.begin1_), 424513481Sgiacomo.travaglini@arm.com end1_(other.end1_), 424613481Sgiacomo.travaglini@arm.com current1_(other.current1_), 424713481Sgiacomo.travaglini@arm.com begin2_(other.begin2_), 424813481Sgiacomo.travaglini@arm.com end2_(other.end2_), 424913481Sgiacomo.travaglini@arm.com current2_(other.current2_), 425013481Sgiacomo.travaglini@arm.com begin3_(other.begin3_), 425113481Sgiacomo.travaglini@arm.com end3_(other.end3_), 425213481Sgiacomo.travaglini@arm.com current3_(other.current3_), 425313481Sgiacomo.travaglini@arm.com begin4_(other.begin4_), 425413481Sgiacomo.travaglini@arm.com end4_(other.end4_), 425513481Sgiacomo.travaglini@arm.com current4_(other.current4_), 425613481Sgiacomo.travaglini@arm.com begin5_(other.begin5_), 425713481Sgiacomo.travaglini@arm.com end5_(other.end5_), 425813481Sgiacomo.travaglini@arm.com current5_(other.current5_), 425913481Sgiacomo.travaglini@arm.com begin6_(other.begin6_), 426013481Sgiacomo.travaglini@arm.com end6_(other.end6_), 426113481Sgiacomo.travaglini@arm.com current6_(other.current6_), 426213481Sgiacomo.travaglini@arm.com begin7_(other.begin7_), 426313481Sgiacomo.travaglini@arm.com end7_(other.end7_), 426413481Sgiacomo.travaglini@arm.com current7_(other.current7_), 426513481Sgiacomo.travaglini@arm.com begin8_(other.begin8_), 426613481Sgiacomo.travaglini@arm.com end8_(other.end8_), 426713481Sgiacomo.travaglini@arm.com current8_(other.current8_) { 426813481Sgiacomo.travaglini@arm.com ComputeCurrentValue(); 426913481Sgiacomo.travaglini@arm.com } 427013481Sgiacomo.travaglini@arm.com 427113481Sgiacomo.travaglini@arm.com void ComputeCurrentValue() { 427213481Sgiacomo.travaglini@arm.com if (!AtEnd()) 427313481Sgiacomo.travaglini@arm.com current_value_ = ParamType(*current1_, *current2_, *current3_, 427413481Sgiacomo.travaglini@arm.com *current4_, *current5_, *current6_, *current7_, *current8_); 427513481Sgiacomo.travaglini@arm.com } 427613481Sgiacomo.travaglini@arm.com bool AtEnd() const { 427713481Sgiacomo.travaglini@arm.com // We must report iterator past the end of the range when either of the 427813481Sgiacomo.travaglini@arm.com // component iterators has reached the end of its range. 427913481Sgiacomo.travaglini@arm.com return 428013481Sgiacomo.travaglini@arm.com current1_ == end1_ || 428113481Sgiacomo.travaglini@arm.com current2_ == end2_ || 428213481Sgiacomo.travaglini@arm.com current3_ == end3_ || 428313481Sgiacomo.travaglini@arm.com current4_ == end4_ || 428413481Sgiacomo.travaglini@arm.com current5_ == end5_ || 428513481Sgiacomo.travaglini@arm.com current6_ == end6_ || 428613481Sgiacomo.travaglini@arm.com current7_ == end7_ || 428713481Sgiacomo.travaglini@arm.com current8_ == end8_; 428813481Sgiacomo.travaglini@arm.com } 428913481Sgiacomo.travaglini@arm.com 429013481Sgiacomo.travaglini@arm.com // No implementation - assignment is unsupported. 429113481Sgiacomo.travaglini@arm.com void operator=(const Iterator& other); 429213481Sgiacomo.travaglini@arm.com 429313481Sgiacomo.travaglini@arm.com const ParamGeneratorInterface<ParamType>* const base_; 429413481Sgiacomo.travaglini@arm.com // begin[i]_ and end[i]_ define the i-th range that Iterator traverses. 429513481Sgiacomo.travaglini@arm.com // current[i]_ is the actual traversing iterator. 429613481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T1>::iterator begin1_; 429713481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T1>::iterator end1_; 429813481Sgiacomo.travaglini@arm.com typename ParamGenerator<T1>::iterator current1_; 429913481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T2>::iterator begin2_; 430013481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T2>::iterator end2_; 430113481Sgiacomo.travaglini@arm.com typename ParamGenerator<T2>::iterator current2_; 430213481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T3>::iterator begin3_; 430313481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T3>::iterator end3_; 430413481Sgiacomo.travaglini@arm.com typename ParamGenerator<T3>::iterator current3_; 430513481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T4>::iterator begin4_; 430613481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T4>::iterator end4_; 430713481Sgiacomo.travaglini@arm.com typename ParamGenerator<T4>::iterator current4_; 430813481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T5>::iterator begin5_; 430913481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T5>::iterator end5_; 431013481Sgiacomo.travaglini@arm.com typename ParamGenerator<T5>::iterator current5_; 431113481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T6>::iterator begin6_; 431213481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T6>::iterator end6_; 431313481Sgiacomo.travaglini@arm.com typename ParamGenerator<T6>::iterator current6_; 431413481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T7>::iterator begin7_; 431513481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T7>::iterator end7_; 431613481Sgiacomo.travaglini@arm.com typename ParamGenerator<T7>::iterator current7_; 431713481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T8>::iterator begin8_; 431813481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T8>::iterator end8_; 431913481Sgiacomo.travaglini@arm.com typename ParamGenerator<T8>::iterator current8_; 432013481Sgiacomo.travaglini@arm.com ParamType current_value_; 432113481Sgiacomo.travaglini@arm.com }; // class CartesianProductGenerator8::Iterator 432213481Sgiacomo.travaglini@arm.com 432313481Sgiacomo.travaglini@arm.com // No implementation - assignment is unsupported. 432413481Sgiacomo.travaglini@arm.com void operator=(const CartesianProductGenerator8& other); 432513481Sgiacomo.travaglini@arm.com 432613481Sgiacomo.travaglini@arm.com const ParamGenerator<T1> g1_; 432713481Sgiacomo.travaglini@arm.com const ParamGenerator<T2> g2_; 432813481Sgiacomo.travaglini@arm.com const ParamGenerator<T3> g3_; 432913481Sgiacomo.travaglini@arm.com const ParamGenerator<T4> g4_; 433013481Sgiacomo.travaglini@arm.com const ParamGenerator<T5> g5_; 433113481Sgiacomo.travaglini@arm.com const ParamGenerator<T6> g6_; 433213481Sgiacomo.travaglini@arm.com const ParamGenerator<T7> g7_; 433313481Sgiacomo.travaglini@arm.com const ParamGenerator<T8> g8_; 433413481Sgiacomo.travaglini@arm.com}; // class CartesianProductGenerator8 433513481Sgiacomo.travaglini@arm.com 433613481Sgiacomo.travaglini@arm.com 433713481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 433813481Sgiacomo.travaglini@arm.com typename T6, typename T7, typename T8, typename T9> 433913481Sgiacomo.travaglini@arm.comclass CartesianProductGenerator9 434013481Sgiacomo.travaglini@arm.com : public ParamGeneratorInterface< ::testing::tuple<T1, T2, T3, T4, T5, T6, 434113481Sgiacomo.travaglini@arm.com T7, T8, T9> > { 434213481Sgiacomo.travaglini@arm.com public: 434313481Sgiacomo.travaglini@arm.com typedef ::testing::tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9> ParamType; 434413481Sgiacomo.travaglini@arm.com 434513481Sgiacomo.travaglini@arm.com CartesianProductGenerator9(const ParamGenerator<T1>& g1, 434613481Sgiacomo.travaglini@arm.com const ParamGenerator<T2>& g2, const ParamGenerator<T3>& g3, 434713481Sgiacomo.travaglini@arm.com const ParamGenerator<T4>& g4, const ParamGenerator<T5>& g5, 434813481Sgiacomo.travaglini@arm.com const ParamGenerator<T6>& g6, const ParamGenerator<T7>& g7, 434913481Sgiacomo.travaglini@arm.com const ParamGenerator<T8>& g8, const ParamGenerator<T9>& g9) 435013481Sgiacomo.travaglini@arm.com : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7), g8_(g8), 435113481Sgiacomo.travaglini@arm.com g9_(g9) {} 435213481Sgiacomo.travaglini@arm.com virtual ~CartesianProductGenerator9() {} 435313481Sgiacomo.travaglini@arm.com 435413481Sgiacomo.travaglini@arm.com virtual ParamIteratorInterface<ParamType>* Begin() const { 435513481Sgiacomo.travaglini@arm.com return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_, 435613481Sgiacomo.travaglini@arm.com g3_.begin(), g4_, g4_.begin(), g5_, g5_.begin(), g6_, g6_.begin(), g7_, 435713481Sgiacomo.travaglini@arm.com g7_.begin(), g8_, g8_.begin(), g9_, g9_.begin()); 435813481Sgiacomo.travaglini@arm.com } 435913481Sgiacomo.travaglini@arm.com virtual ParamIteratorInterface<ParamType>* End() const { 436013481Sgiacomo.travaglini@arm.com return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(), 436113481Sgiacomo.travaglini@arm.com g4_, g4_.end(), g5_, g5_.end(), g6_, g6_.end(), g7_, g7_.end(), g8_, 436213481Sgiacomo.travaglini@arm.com g8_.end(), g9_, g9_.end()); 436313481Sgiacomo.travaglini@arm.com } 436413481Sgiacomo.travaglini@arm.com 436513481Sgiacomo.travaglini@arm.com private: 436613481Sgiacomo.travaglini@arm.com class Iterator : public ParamIteratorInterface<ParamType> { 436713481Sgiacomo.travaglini@arm.com public: 436813481Sgiacomo.travaglini@arm.com Iterator(const ParamGeneratorInterface<ParamType>* base, 436913481Sgiacomo.travaglini@arm.com const ParamGenerator<T1>& g1, 437013481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T1>::iterator& current1, 437113481Sgiacomo.travaglini@arm.com const ParamGenerator<T2>& g2, 437213481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T2>::iterator& current2, 437313481Sgiacomo.travaglini@arm.com const ParamGenerator<T3>& g3, 437413481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T3>::iterator& current3, 437513481Sgiacomo.travaglini@arm.com const ParamGenerator<T4>& g4, 437613481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T4>::iterator& current4, 437713481Sgiacomo.travaglini@arm.com const ParamGenerator<T5>& g5, 437813481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T5>::iterator& current5, 437913481Sgiacomo.travaglini@arm.com const ParamGenerator<T6>& g6, 438013481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T6>::iterator& current6, 438113481Sgiacomo.travaglini@arm.com const ParamGenerator<T7>& g7, 438213481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T7>::iterator& current7, 438313481Sgiacomo.travaglini@arm.com const ParamGenerator<T8>& g8, 438413481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T8>::iterator& current8, 438513481Sgiacomo.travaglini@arm.com const ParamGenerator<T9>& g9, 438613481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T9>::iterator& current9) 438713481Sgiacomo.travaglini@arm.com : base_(base), 438813481Sgiacomo.travaglini@arm.com begin1_(g1.begin()), end1_(g1.end()), current1_(current1), 438913481Sgiacomo.travaglini@arm.com begin2_(g2.begin()), end2_(g2.end()), current2_(current2), 439013481Sgiacomo.travaglini@arm.com begin3_(g3.begin()), end3_(g3.end()), current3_(current3), 439113481Sgiacomo.travaglini@arm.com begin4_(g4.begin()), end4_(g4.end()), current4_(current4), 439213481Sgiacomo.travaglini@arm.com begin5_(g5.begin()), end5_(g5.end()), current5_(current5), 439313481Sgiacomo.travaglini@arm.com begin6_(g6.begin()), end6_(g6.end()), current6_(current6), 439413481Sgiacomo.travaglini@arm.com begin7_(g7.begin()), end7_(g7.end()), current7_(current7), 439513481Sgiacomo.travaglini@arm.com begin8_(g8.begin()), end8_(g8.end()), current8_(current8), 439613481Sgiacomo.travaglini@arm.com begin9_(g9.begin()), end9_(g9.end()), current9_(current9) { 439713481Sgiacomo.travaglini@arm.com ComputeCurrentValue(); 439813481Sgiacomo.travaglini@arm.com } 439913481Sgiacomo.travaglini@arm.com virtual ~Iterator() {} 440013481Sgiacomo.travaglini@arm.com 440113481Sgiacomo.travaglini@arm.com virtual const ParamGeneratorInterface<ParamType>* BaseGenerator() const { 440213481Sgiacomo.travaglini@arm.com return base_; 440313481Sgiacomo.travaglini@arm.com } 440413481Sgiacomo.travaglini@arm.com // Advance should not be called on beyond-of-range iterators 440513481Sgiacomo.travaglini@arm.com // so no component iterators must be beyond end of range, either. 440613481Sgiacomo.travaglini@arm.com virtual void Advance() { 440713481Sgiacomo.travaglini@arm.com assert(!AtEnd()); 440813481Sgiacomo.travaglini@arm.com ++current9_; 440913481Sgiacomo.travaglini@arm.com if (current9_ == end9_) { 441013481Sgiacomo.travaglini@arm.com current9_ = begin9_; 441113481Sgiacomo.travaglini@arm.com ++current8_; 441213481Sgiacomo.travaglini@arm.com } 441313481Sgiacomo.travaglini@arm.com if (current8_ == end8_) { 441413481Sgiacomo.travaglini@arm.com current8_ = begin8_; 441513481Sgiacomo.travaglini@arm.com ++current7_; 441613481Sgiacomo.travaglini@arm.com } 441713481Sgiacomo.travaglini@arm.com if (current7_ == end7_) { 441813481Sgiacomo.travaglini@arm.com current7_ = begin7_; 441913481Sgiacomo.travaglini@arm.com ++current6_; 442013481Sgiacomo.travaglini@arm.com } 442113481Sgiacomo.travaglini@arm.com if (current6_ == end6_) { 442213481Sgiacomo.travaglini@arm.com current6_ = begin6_; 442313481Sgiacomo.travaglini@arm.com ++current5_; 442413481Sgiacomo.travaglini@arm.com } 442513481Sgiacomo.travaglini@arm.com if (current5_ == end5_) { 442613481Sgiacomo.travaglini@arm.com current5_ = begin5_; 442713481Sgiacomo.travaglini@arm.com ++current4_; 442813481Sgiacomo.travaglini@arm.com } 442913481Sgiacomo.travaglini@arm.com if (current4_ == end4_) { 443013481Sgiacomo.travaglini@arm.com current4_ = begin4_; 443113481Sgiacomo.travaglini@arm.com ++current3_; 443213481Sgiacomo.travaglini@arm.com } 443313481Sgiacomo.travaglini@arm.com if (current3_ == end3_) { 443413481Sgiacomo.travaglini@arm.com current3_ = begin3_; 443513481Sgiacomo.travaglini@arm.com ++current2_; 443613481Sgiacomo.travaglini@arm.com } 443713481Sgiacomo.travaglini@arm.com if (current2_ == end2_) { 443813481Sgiacomo.travaglini@arm.com current2_ = begin2_; 443913481Sgiacomo.travaglini@arm.com ++current1_; 444013481Sgiacomo.travaglini@arm.com } 444113481Sgiacomo.travaglini@arm.com ComputeCurrentValue(); 444213481Sgiacomo.travaglini@arm.com } 444313481Sgiacomo.travaglini@arm.com virtual ParamIteratorInterface<ParamType>* Clone() const { 444413481Sgiacomo.travaglini@arm.com return new Iterator(*this); 444513481Sgiacomo.travaglini@arm.com } 444613481Sgiacomo.travaglini@arm.com virtual const ParamType* Current() const { return ¤t_value_; } 444713481Sgiacomo.travaglini@arm.com virtual bool Equals(const ParamIteratorInterface<ParamType>& other) const { 444813481Sgiacomo.travaglini@arm.com // Having the same base generator guarantees that the other 444913481Sgiacomo.travaglini@arm.com // iterator is of the same type and we can downcast. 445013481Sgiacomo.travaglini@arm.com GTEST_CHECK_(BaseGenerator() == other.BaseGenerator()) 445113481Sgiacomo.travaglini@arm.com << "The program attempted to compare iterators " 445213481Sgiacomo.travaglini@arm.com << "from different generators." << std::endl; 445313481Sgiacomo.travaglini@arm.com const Iterator* typed_other = 445413481Sgiacomo.travaglini@arm.com CheckedDowncastToActualType<const Iterator>(&other); 445513481Sgiacomo.travaglini@arm.com // We must report iterators equal if they both point beyond their 445613481Sgiacomo.travaglini@arm.com // respective ranges. That can happen in a variety of fashions, 445713481Sgiacomo.travaglini@arm.com // so we have to consult AtEnd(). 445813481Sgiacomo.travaglini@arm.com return (AtEnd() && typed_other->AtEnd()) || 445913481Sgiacomo.travaglini@arm.com ( 446013481Sgiacomo.travaglini@arm.com current1_ == typed_other->current1_ && 446113481Sgiacomo.travaglini@arm.com current2_ == typed_other->current2_ && 446213481Sgiacomo.travaglini@arm.com current3_ == typed_other->current3_ && 446313481Sgiacomo.travaglini@arm.com current4_ == typed_other->current4_ && 446413481Sgiacomo.travaglini@arm.com current5_ == typed_other->current5_ && 446513481Sgiacomo.travaglini@arm.com current6_ == typed_other->current6_ && 446613481Sgiacomo.travaglini@arm.com current7_ == typed_other->current7_ && 446713481Sgiacomo.travaglini@arm.com current8_ == typed_other->current8_ && 446813481Sgiacomo.travaglini@arm.com current9_ == typed_other->current9_); 446913481Sgiacomo.travaglini@arm.com } 447013481Sgiacomo.travaglini@arm.com 447113481Sgiacomo.travaglini@arm.com private: 447213481Sgiacomo.travaglini@arm.com Iterator(const Iterator& other) 447313481Sgiacomo.travaglini@arm.com : base_(other.base_), 447413481Sgiacomo.travaglini@arm.com begin1_(other.begin1_), 447513481Sgiacomo.travaglini@arm.com end1_(other.end1_), 447613481Sgiacomo.travaglini@arm.com current1_(other.current1_), 447713481Sgiacomo.travaglini@arm.com begin2_(other.begin2_), 447813481Sgiacomo.travaglini@arm.com end2_(other.end2_), 447913481Sgiacomo.travaglini@arm.com current2_(other.current2_), 448013481Sgiacomo.travaglini@arm.com begin3_(other.begin3_), 448113481Sgiacomo.travaglini@arm.com end3_(other.end3_), 448213481Sgiacomo.travaglini@arm.com current3_(other.current3_), 448313481Sgiacomo.travaglini@arm.com begin4_(other.begin4_), 448413481Sgiacomo.travaglini@arm.com end4_(other.end4_), 448513481Sgiacomo.travaglini@arm.com current4_(other.current4_), 448613481Sgiacomo.travaglini@arm.com begin5_(other.begin5_), 448713481Sgiacomo.travaglini@arm.com end5_(other.end5_), 448813481Sgiacomo.travaglini@arm.com current5_(other.current5_), 448913481Sgiacomo.travaglini@arm.com begin6_(other.begin6_), 449013481Sgiacomo.travaglini@arm.com end6_(other.end6_), 449113481Sgiacomo.travaglini@arm.com current6_(other.current6_), 449213481Sgiacomo.travaglini@arm.com begin7_(other.begin7_), 449313481Sgiacomo.travaglini@arm.com end7_(other.end7_), 449413481Sgiacomo.travaglini@arm.com current7_(other.current7_), 449513481Sgiacomo.travaglini@arm.com begin8_(other.begin8_), 449613481Sgiacomo.travaglini@arm.com end8_(other.end8_), 449713481Sgiacomo.travaglini@arm.com current8_(other.current8_), 449813481Sgiacomo.travaglini@arm.com begin9_(other.begin9_), 449913481Sgiacomo.travaglini@arm.com end9_(other.end9_), 450013481Sgiacomo.travaglini@arm.com current9_(other.current9_) { 450113481Sgiacomo.travaglini@arm.com ComputeCurrentValue(); 450213481Sgiacomo.travaglini@arm.com } 450313481Sgiacomo.travaglini@arm.com 450413481Sgiacomo.travaglini@arm.com void ComputeCurrentValue() { 450513481Sgiacomo.travaglini@arm.com if (!AtEnd()) 450613481Sgiacomo.travaglini@arm.com current_value_ = ParamType(*current1_, *current2_, *current3_, 450713481Sgiacomo.travaglini@arm.com *current4_, *current5_, *current6_, *current7_, *current8_, 450813481Sgiacomo.travaglini@arm.com *current9_); 450913481Sgiacomo.travaglini@arm.com } 451013481Sgiacomo.travaglini@arm.com bool AtEnd() const { 451113481Sgiacomo.travaglini@arm.com // We must report iterator past the end of the range when either of the 451213481Sgiacomo.travaglini@arm.com // component iterators has reached the end of its range. 451313481Sgiacomo.travaglini@arm.com return 451413481Sgiacomo.travaglini@arm.com current1_ == end1_ || 451513481Sgiacomo.travaglini@arm.com current2_ == end2_ || 451613481Sgiacomo.travaglini@arm.com current3_ == end3_ || 451713481Sgiacomo.travaglini@arm.com current4_ == end4_ || 451813481Sgiacomo.travaglini@arm.com current5_ == end5_ || 451913481Sgiacomo.travaglini@arm.com current6_ == end6_ || 452013481Sgiacomo.travaglini@arm.com current7_ == end7_ || 452113481Sgiacomo.travaglini@arm.com current8_ == end8_ || 452213481Sgiacomo.travaglini@arm.com current9_ == end9_; 452313481Sgiacomo.travaglini@arm.com } 452413481Sgiacomo.travaglini@arm.com 452513481Sgiacomo.travaglini@arm.com // No implementation - assignment is unsupported. 452613481Sgiacomo.travaglini@arm.com void operator=(const Iterator& other); 452713481Sgiacomo.travaglini@arm.com 452813481Sgiacomo.travaglini@arm.com const ParamGeneratorInterface<ParamType>* const base_; 452913481Sgiacomo.travaglini@arm.com // begin[i]_ and end[i]_ define the i-th range that Iterator traverses. 453013481Sgiacomo.travaglini@arm.com // current[i]_ is the actual traversing iterator. 453113481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T1>::iterator begin1_; 453213481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T1>::iterator end1_; 453313481Sgiacomo.travaglini@arm.com typename ParamGenerator<T1>::iterator current1_; 453413481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T2>::iterator begin2_; 453513481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T2>::iterator end2_; 453613481Sgiacomo.travaglini@arm.com typename ParamGenerator<T2>::iterator current2_; 453713481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T3>::iterator begin3_; 453813481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T3>::iterator end3_; 453913481Sgiacomo.travaglini@arm.com typename ParamGenerator<T3>::iterator current3_; 454013481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T4>::iterator begin4_; 454113481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T4>::iterator end4_; 454213481Sgiacomo.travaglini@arm.com typename ParamGenerator<T4>::iterator current4_; 454313481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T5>::iterator begin5_; 454413481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T5>::iterator end5_; 454513481Sgiacomo.travaglini@arm.com typename ParamGenerator<T5>::iterator current5_; 454613481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T6>::iterator begin6_; 454713481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T6>::iterator end6_; 454813481Sgiacomo.travaglini@arm.com typename ParamGenerator<T6>::iterator current6_; 454913481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T7>::iterator begin7_; 455013481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T7>::iterator end7_; 455113481Sgiacomo.travaglini@arm.com typename ParamGenerator<T7>::iterator current7_; 455213481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T8>::iterator begin8_; 455313481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T8>::iterator end8_; 455413481Sgiacomo.travaglini@arm.com typename ParamGenerator<T8>::iterator current8_; 455513481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T9>::iterator begin9_; 455613481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T9>::iterator end9_; 455713481Sgiacomo.travaglini@arm.com typename ParamGenerator<T9>::iterator current9_; 455813481Sgiacomo.travaglini@arm.com ParamType current_value_; 455913481Sgiacomo.travaglini@arm.com }; // class CartesianProductGenerator9::Iterator 456013481Sgiacomo.travaglini@arm.com 456113481Sgiacomo.travaglini@arm.com // No implementation - assignment is unsupported. 456213481Sgiacomo.travaglini@arm.com void operator=(const CartesianProductGenerator9& other); 456313481Sgiacomo.travaglini@arm.com 456413481Sgiacomo.travaglini@arm.com const ParamGenerator<T1> g1_; 456513481Sgiacomo.travaglini@arm.com const ParamGenerator<T2> g2_; 456613481Sgiacomo.travaglini@arm.com const ParamGenerator<T3> g3_; 456713481Sgiacomo.travaglini@arm.com const ParamGenerator<T4> g4_; 456813481Sgiacomo.travaglini@arm.com const ParamGenerator<T5> g5_; 456913481Sgiacomo.travaglini@arm.com const ParamGenerator<T6> g6_; 457013481Sgiacomo.travaglini@arm.com const ParamGenerator<T7> g7_; 457113481Sgiacomo.travaglini@arm.com const ParamGenerator<T8> g8_; 457213481Sgiacomo.travaglini@arm.com const ParamGenerator<T9> g9_; 457313481Sgiacomo.travaglini@arm.com}; // class CartesianProductGenerator9 457413481Sgiacomo.travaglini@arm.com 457513481Sgiacomo.travaglini@arm.com 457613481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 457713481Sgiacomo.travaglini@arm.com typename T6, typename T7, typename T8, typename T9, typename T10> 457813481Sgiacomo.travaglini@arm.comclass CartesianProductGenerator10 457913481Sgiacomo.travaglini@arm.com : public ParamGeneratorInterface< ::testing::tuple<T1, T2, T3, T4, T5, T6, 458013481Sgiacomo.travaglini@arm.com T7, T8, T9, T10> > { 458113481Sgiacomo.travaglini@arm.com public: 458213481Sgiacomo.travaglini@arm.com typedef ::testing::tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> ParamType; 458313481Sgiacomo.travaglini@arm.com 458413481Sgiacomo.travaglini@arm.com CartesianProductGenerator10(const ParamGenerator<T1>& g1, 458513481Sgiacomo.travaglini@arm.com const ParamGenerator<T2>& g2, const ParamGenerator<T3>& g3, 458613481Sgiacomo.travaglini@arm.com const ParamGenerator<T4>& g4, const ParamGenerator<T5>& g5, 458713481Sgiacomo.travaglini@arm.com const ParamGenerator<T6>& g6, const ParamGenerator<T7>& g7, 458813481Sgiacomo.travaglini@arm.com const ParamGenerator<T8>& g8, const ParamGenerator<T9>& g9, 458913481Sgiacomo.travaglini@arm.com const ParamGenerator<T10>& g10) 459013481Sgiacomo.travaglini@arm.com : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7), g8_(g8), 459113481Sgiacomo.travaglini@arm.com g9_(g9), g10_(g10) {} 459213481Sgiacomo.travaglini@arm.com virtual ~CartesianProductGenerator10() {} 459313481Sgiacomo.travaglini@arm.com 459413481Sgiacomo.travaglini@arm.com virtual ParamIteratorInterface<ParamType>* Begin() const { 459513481Sgiacomo.travaglini@arm.com return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_, 459613481Sgiacomo.travaglini@arm.com g3_.begin(), g4_, g4_.begin(), g5_, g5_.begin(), g6_, g6_.begin(), g7_, 459713481Sgiacomo.travaglini@arm.com g7_.begin(), g8_, g8_.begin(), g9_, g9_.begin(), g10_, g10_.begin()); 459813481Sgiacomo.travaglini@arm.com } 459913481Sgiacomo.travaglini@arm.com virtual ParamIteratorInterface<ParamType>* End() const { 460013481Sgiacomo.travaglini@arm.com return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(), 460113481Sgiacomo.travaglini@arm.com g4_, g4_.end(), g5_, g5_.end(), g6_, g6_.end(), g7_, g7_.end(), g8_, 460213481Sgiacomo.travaglini@arm.com g8_.end(), g9_, g9_.end(), g10_, g10_.end()); 460313481Sgiacomo.travaglini@arm.com } 460413481Sgiacomo.travaglini@arm.com 460513481Sgiacomo.travaglini@arm.com private: 460613481Sgiacomo.travaglini@arm.com class Iterator : public ParamIteratorInterface<ParamType> { 460713481Sgiacomo.travaglini@arm.com public: 460813481Sgiacomo.travaglini@arm.com Iterator(const ParamGeneratorInterface<ParamType>* base, 460913481Sgiacomo.travaglini@arm.com const ParamGenerator<T1>& g1, 461013481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T1>::iterator& current1, 461113481Sgiacomo.travaglini@arm.com const ParamGenerator<T2>& g2, 461213481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T2>::iterator& current2, 461313481Sgiacomo.travaglini@arm.com const ParamGenerator<T3>& g3, 461413481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T3>::iterator& current3, 461513481Sgiacomo.travaglini@arm.com const ParamGenerator<T4>& g4, 461613481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T4>::iterator& current4, 461713481Sgiacomo.travaglini@arm.com const ParamGenerator<T5>& g5, 461813481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T5>::iterator& current5, 461913481Sgiacomo.travaglini@arm.com const ParamGenerator<T6>& g6, 462013481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T6>::iterator& current6, 462113481Sgiacomo.travaglini@arm.com const ParamGenerator<T7>& g7, 462213481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T7>::iterator& current7, 462313481Sgiacomo.travaglini@arm.com const ParamGenerator<T8>& g8, 462413481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T8>::iterator& current8, 462513481Sgiacomo.travaglini@arm.com const ParamGenerator<T9>& g9, 462613481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T9>::iterator& current9, 462713481Sgiacomo.travaglini@arm.com const ParamGenerator<T10>& g10, 462813481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T10>::iterator& current10) 462913481Sgiacomo.travaglini@arm.com : base_(base), 463013481Sgiacomo.travaglini@arm.com begin1_(g1.begin()), end1_(g1.end()), current1_(current1), 463113481Sgiacomo.travaglini@arm.com begin2_(g2.begin()), end2_(g2.end()), current2_(current2), 463213481Sgiacomo.travaglini@arm.com begin3_(g3.begin()), end3_(g3.end()), current3_(current3), 463313481Sgiacomo.travaglini@arm.com begin4_(g4.begin()), end4_(g4.end()), current4_(current4), 463413481Sgiacomo.travaglini@arm.com begin5_(g5.begin()), end5_(g5.end()), current5_(current5), 463513481Sgiacomo.travaglini@arm.com begin6_(g6.begin()), end6_(g6.end()), current6_(current6), 463613481Sgiacomo.travaglini@arm.com begin7_(g7.begin()), end7_(g7.end()), current7_(current7), 463713481Sgiacomo.travaglini@arm.com begin8_(g8.begin()), end8_(g8.end()), current8_(current8), 463813481Sgiacomo.travaglini@arm.com begin9_(g9.begin()), end9_(g9.end()), current9_(current9), 463913481Sgiacomo.travaglini@arm.com begin10_(g10.begin()), end10_(g10.end()), current10_(current10) { 464013481Sgiacomo.travaglini@arm.com ComputeCurrentValue(); 464113481Sgiacomo.travaglini@arm.com } 464213481Sgiacomo.travaglini@arm.com virtual ~Iterator() {} 464313481Sgiacomo.travaglini@arm.com 464413481Sgiacomo.travaglini@arm.com virtual const ParamGeneratorInterface<ParamType>* BaseGenerator() const { 464513481Sgiacomo.travaglini@arm.com return base_; 464613481Sgiacomo.travaglini@arm.com } 464713481Sgiacomo.travaglini@arm.com // Advance should not be called on beyond-of-range iterators 464813481Sgiacomo.travaglini@arm.com // so no component iterators must be beyond end of range, either. 464913481Sgiacomo.travaglini@arm.com virtual void Advance() { 465013481Sgiacomo.travaglini@arm.com assert(!AtEnd()); 465113481Sgiacomo.travaglini@arm.com ++current10_; 465213481Sgiacomo.travaglini@arm.com if (current10_ == end10_) { 465313481Sgiacomo.travaglini@arm.com current10_ = begin10_; 465413481Sgiacomo.travaglini@arm.com ++current9_; 465513481Sgiacomo.travaglini@arm.com } 465613481Sgiacomo.travaglini@arm.com if (current9_ == end9_) { 465713481Sgiacomo.travaglini@arm.com current9_ = begin9_; 465813481Sgiacomo.travaglini@arm.com ++current8_; 465913481Sgiacomo.travaglini@arm.com } 466013481Sgiacomo.travaglini@arm.com if (current8_ == end8_) { 466113481Sgiacomo.travaglini@arm.com current8_ = begin8_; 466213481Sgiacomo.travaglini@arm.com ++current7_; 466313481Sgiacomo.travaglini@arm.com } 466413481Sgiacomo.travaglini@arm.com if (current7_ == end7_) { 466513481Sgiacomo.travaglini@arm.com current7_ = begin7_; 466613481Sgiacomo.travaglini@arm.com ++current6_; 466713481Sgiacomo.travaglini@arm.com } 466813481Sgiacomo.travaglini@arm.com if (current6_ == end6_) { 466913481Sgiacomo.travaglini@arm.com current6_ = begin6_; 467013481Sgiacomo.travaglini@arm.com ++current5_; 467113481Sgiacomo.travaglini@arm.com } 467213481Sgiacomo.travaglini@arm.com if (current5_ == end5_) { 467313481Sgiacomo.travaglini@arm.com current5_ = begin5_; 467413481Sgiacomo.travaglini@arm.com ++current4_; 467513481Sgiacomo.travaglini@arm.com } 467613481Sgiacomo.travaglini@arm.com if (current4_ == end4_) { 467713481Sgiacomo.travaglini@arm.com current4_ = begin4_; 467813481Sgiacomo.travaglini@arm.com ++current3_; 467913481Sgiacomo.travaglini@arm.com } 468013481Sgiacomo.travaglini@arm.com if (current3_ == end3_) { 468113481Sgiacomo.travaglini@arm.com current3_ = begin3_; 468213481Sgiacomo.travaglini@arm.com ++current2_; 468313481Sgiacomo.travaglini@arm.com } 468413481Sgiacomo.travaglini@arm.com if (current2_ == end2_) { 468513481Sgiacomo.travaglini@arm.com current2_ = begin2_; 468613481Sgiacomo.travaglini@arm.com ++current1_; 468713481Sgiacomo.travaglini@arm.com } 468813481Sgiacomo.travaglini@arm.com ComputeCurrentValue(); 468913481Sgiacomo.travaglini@arm.com } 469013481Sgiacomo.travaglini@arm.com virtual ParamIteratorInterface<ParamType>* Clone() const { 469113481Sgiacomo.travaglini@arm.com return new Iterator(*this); 469213481Sgiacomo.travaglini@arm.com } 469313481Sgiacomo.travaglini@arm.com virtual const ParamType* Current() const { return ¤t_value_; } 469413481Sgiacomo.travaglini@arm.com virtual bool Equals(const ParamIteratorInterface<ParamType>& other) const { 469513481Sgiacomo.travaglini@arm.com // Having the same base generator guarantees that the other 469613481Sgiacomo.travaglini@arm.com // iterator is of the same type and we can downcast. 469713481Sgiacomo.travaglini@arm.com GTEST_CHECK_(BaseGenerator() == other.BaseGenerator()) 469813481Sgiacomo.travaglini@arm.com << "The program attempted to compare iterators " 469913481Sgiacomo.travaglini@arm.com << "from different generators." << std::endl; 470013481Sgiacomo.travaglini@arm.com const Iterator* typed_other = 470113481Sgiacomo.travaglini@arm.com CheckedDowncastToActualType<const Iterator>(&other); 470213481Sgiacomo.travaglini@arm.com // We must report iterators equal if they both point beyond their 470313481Sgiacomo.travaglini@arm.com // respective ranges. That can happen in a variety of fashions, 470413481Sgiacomo.travaglini@arm.com // so we have to consult AtEnd(). 470513481Sgiacomo.travaglini@arm.com return (AtEnd() && typed_other->AtEnd()) || 470613481Sgiacomo.travaglini@arm.com ( 470713481Sgiacomo.travaglini@arm.com current1_ == typed_other->current1_ && 470813481Sgiacomo.travaglini@arm.com current2_ == typed_other->current2_ && 470913481Sgiacomo.travaglini@arm.com current3_ == typed_other->current3_ && 471013481Sgiacomo.travaglini@arm.com current4_ == typed_other->current4_ && 471113481Sgiacomo.travaglini@arm.com current5_ == typed_other->current5_ && 471213481Sgiacomo.travaglini@arm.com current6_ == typed_other->current6_ && 471313481Sgiacomo.travaglini@arm.com current7_ == typed_other->current7_ && 471413481Sgiacomo.travaglini@arm.com current8_ == typed_other->current8_ && 471513481Sgiacomo.travaglini@arm.com current9_ == typed_other->current9_ && 471613481Sgiacomo.travaglini@arm.com current10_ == typed_other->current10_); 471713481Sgiacomo.travaglini@arm.com } 471813481Sgiacomo.travaglini@arm.com 471913481Sgiacomo.travaglini@arm.com private: 472013481Sgiacomo.travaglini@arm.com Iterator(const Iterator& other) 472113481Sgiacomo.travaglini@arm.com : base_(other.base_), 472213481Sgiacomo.travaglini@arm.com begin1_(other.begin1_), 472313481Sgiacomo.travaglini@arm.com end1_(other.end1_), 472413481Sgiacomo.travaglini@arm.com current1_(other.current1_), 472513481Sgiacomo.travaglini@arm.com begin2_(other.begin2_), 472613481Sgiacomo.travaglini@arm.com end2_(other.end2_), 472713481Sgiacomo.travaglini@arm.com current2_(other.current2_), 472813481Sgiacomo.travaglini@arm.com begin3_(other.begin3_), 472913481Sgiacomo.travaglini@arm.com end3_(other.end3_), 473013481Sgiacomo.travaglini@arm.com current3_(other.current3_), 473113481Sgiacomo.travaglini@arm.com begin4_(other.begin4_), 473213481Sgiacomo.travaglini@arm.com end4_(other.end4_), 473313481Sgiacomo.travaglini@arm.com current4_(other.current4_), 473413481Sgiacomo.travaglini@arm.com begin5_(other.begin5_), 473513481Sgiacomo.travaglini@arm.com end5_(other.end5_), 473613481Sgiacomo.travaglini@arm.com current5_(other.current5_), 473713481Sgiacomo.travaglini@arm.com begin6_(other.begin6_), 473813481Sgiacomo.travaglini@arm.com end6_(other.end6_), 473913481Sgiacomo.travaglini@arm.com current6_(other.current6_), 474013481Sgiacomo.travaglini@arm.com begin7_(other.begin7_), 474113481Sgiacomo.travaglini@arm.com end7_(other.end7_), 474213481Sgiacomo.travaglini@arm.com current7_(other.current7_), 474313481Sgiacomo.travaglini@arm.com begin8_(other.begin8_), 474413481Sgiacomo.travaglini@arm.com end8_(other.end8_), 474513481Sgiacomo.travaglini@arm.com current8_(other.current8_), 474613481Sgiacomo.travaglini@arm.com begin9_(other.begin9_), 474713481Sgiacomo.travaglini@arm.com end9_(other.end9_), 474813481Sgiacomo.travaglini@arm.com current9_(other.current9_), 474913481Sgiacomo.travaglini@arm.com begin10_(other.begin10_), 475013481Sgiacomo.travaglini@arm.com end10_(other.end10_), 475113481Sgiacomo.travaglini@arm.com current10_(other.current10_) { 475213481Sgiacomo.travaglini@arm.com ComputeCurrentValue(); 475313481Sgiacomo.travaglini@arm.com } 475413481Sgiacomo.travaglini@arm.com 475513481Sgiacomo.travaglini@arm.com void ComputeCurrentValue() { 475613481Sgiacomo.travaglini@arm.com if (!AtEnd()) 475713481Sgiacomo.travaglini@arm.com current_value_ = ParamType(*current1_, *current2_, *current3_, 475813481Sgiacomo.travaglini@arm.com *current4_, *current5_, *current6_, *current7_, *current8_, 475913481Sgiacomo.travaglini@arm.com *current9_, *current10_); 476013481Sgiacomo.travaglini@arm.com } 476113481Sgiacomo.travaglini@arm.com bool AtEnd() const { 476213481Sgiacomo.travaglini@arm.com // We must report iterator past the end of the range when either of the 476313481Sgiacomo.travaglini@arm.com // component iterators has reached the end of its range. 476413481Sgiacomo.travaglini@arm.com return 476513481Sgiacomo.travaglini@arm.com current1_ == end1_ || 476613481Sgiacomo.travaglini@arm.com current2_ == end2_ || 476713481Sgiacomo.travaglini@arm.com current3_ == end3_ || 476813481Sgiacomo.travaglini@arm.com current4_ == end4_ || 476913481Sgiacomo.travaglini@arm.com current5_ == end5_ || 477013481Sgiacomo.travaglini@arm.com current6_ == end6_ || 477113481Sgiacomo.travaglini@arm.com current7_ == end7_ || 477213481Sgiacomo.travaglini@arm.com current8_ == end8_ || 477313481Sgiacomo.travaglini@arm.com current9_ == end9_ || 477413481Sgiacomo.travaglini@arm.com current10_ == end10_; 477513481Sgiacomo.travaglini@arm.com } 477613481Sgiacomo.travaglini@arm.com 477713481Sgiacomo.travaglini@arm.com // No implementation - assignment is unsupported. 477813481Sgiacomo.travaglini@arm.com void operator=(const Iterator& other); 477913481Sgiacomo.travaglini@arm.com 478013481Sgiacomo.travaglini@arm.com const ParamGeneratorInterface<ParamType>* const base_; 478113481Sgiacomo.travaglini@arm.com // begin[i]_ and end[i]_ define the i-th range that Iterator traverses. 478213481Sgiacomo.travaglini@arm.com // current[i]_ is the actual traversing iterator. 478313481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T1>::iterator begin1_; 478413481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T1>::iterator end1_; 478513481Sgiacomo.travaglini@arm.com typename ParamGenerator<T1>::iterator current1_; 478613481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T2>::iterator begin2_; 478713481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T2>::iterator end2_; 478813481Sgiacomo.travaglini@arm.com typename ParamGenerator<T2>::iterator current2_; 478913481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T3>::iterator begin3_; 479013481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T3>::iterator end3_; 479113481Sgiacomo.travaglini@arm.com typename ParamGenerator<T3>::iterator current3_; 479213481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T4>::iterator begin4_; 479313481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T4>::iterator end4_; 479413481Sgiacomo.travaglini@arm.com typename ParamGenerator<T4>::iterator current4_; 479513481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T5>::iterator begin5_; 479613481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T5>::iterator end5_; 479713481Sgiacomo.travaglini@arm.com typename ParamGenerator<T5>::iterator current5_; 479813481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T6>::iterator begin6_; 479913481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T6>::iterator end6_; 480013481Sgiacomo.travaglini@arm.com typename ParamGenerator<T6>::iterator current6_; 480113481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T7>::iterator begin7_; 480213481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T7>::iterator end7_; 480313481Sgiacomo.travaglini@arm.com typename ParamGenerator<T7>::iterator current7_; 480413481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T8>::iterator begin8_; 480513481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T8>::iterator end8_; 480613481Sgiacomo.travaglini@arm.com typename ParamGenerator<T8>::iterator current8_; 480713481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T9>::iterator begin9_; 480813481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T9>::iterator end9_; 480913481Sgiacomo.travaglini@arm.com typename ParamGenerator<T9>::iterator current9_; 481013481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T10>::iterator begin10_; 481113481Sgiacomo.travaglini@arm.com const typename ParamGenerator<T10>::iterator end10_; 481213481Sgiacomo.travaglini@arm.com typename ParamGenerator<T10>::iterator current10_; 481313481Sgiacomo.travaglini@arm.com ParamType current_value_; 481413481Sgiacomo.travaglini@arm.com }; // class CartesianProductGenerator10::Iterator 481513481Sgiacomo.travaglini@arm.com 481613481Sgiacomo.travaglini@arm.com // No implementation - assignment is unsupported. 481713481Sgiacomo.travaglini@arm.com void operator=(const CartesianProductGenerator10& other); 481813481Sgiacomo.travaglini@arm.com 481913481Sgiacomo.travaglini@arm.com const ParamGenerator<T1> g1_; 482013481Sgiacomo.travaglini@arm.com const ParamGenerator<T2> g2_; 482113481Sgiacomo.travaglini@arm.com const ParamGenerator<T3> g3_; 482213481Sgiacomo.travaglini@arm.com const ParamGenerator<T4> g4_; 482313481Sgiacomo.travaglini@arm.com const ParamGenerator<T5> g5_; 482413481Sgiacomo.travaglini@arm.com const ParamGenerator<T6> g6_; 482513481Sgiacomo.travaglini@arm.com const ParamGenerator<T7> g7_; 482613481Sgiacomo.travaglini@arm.com const ParamGenerator<T8> g8_; 482713481Sgiacomo.travaglini@arm.com const ParamGenerator<T9> g9_; 482813481Sgiacomo.travaglini@arm.com const ParamGenerator<T10> g10_; 482913481Sgiacomo.travaglini@arm.com}; // class CartesianProductGenerator10 483013481Sgiacomo.travaglini@arm.com 483113481Sgiacomo.travaglini@arm.com 483213481Sgiacomo.travaglini@arm.com// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE. 483313481Sgiacomo.travaglini@arm.com// 483413481Sgiacomo.travaglini@arm.com// Helper classes providing Combine() with polymorphic features. They allow 483513481Sgiacomo.travaglini@arm.com// casting CartesianProductGeneratorN<T> to ParamGenerator<U> if T is 483613481Sgiacomo.travaglini@arm.com// convertible to U. 483713481Sgiacomo.travaglini@arm.com// 483813481Sgiacomo.travaglini@arm.comtemplate <class Generator1, class Generator2> 483913481Sgiacomo.travaglini@arm.comclass CartesianProductHolder2 { 484013481Sgiacomo.travaglini@arm.com public: 484113481Sgiacomo.travaglini@arm.comCartesianProductHolder2(const Generator1& g1, const Generator2& g2) 484213481Sgiacomo.travaglini@arm.com : g1_(g1), g2_(g2) {} 484313481Sgiacomo.travaglini@arm.com template <typename T1, typename T2> 484413481Sgiacomo.travaglini@arm.com operator ParamGenerator< ::testing::tuple<T1, T2> >() const { 484513481Sgiacomo.travaglini@arm.com return ParamGenerator< ::testing::tuple<T1, T2> >( 484613481Sgiacomo.travaglini@arm.com new CartesianProductGenerator2<T1, T2>( 484713481Sgiacomo.travaglini@arm.com static_cast<ParamGenerator<T1> >(g1_), 484813481Sgiacomo.travaglini@arm.com static_cast<ParamGenerator<T2> >(g2_))); 484913481Sgiacomo.travaglini@arm.com } 485013481Sgiacomo.travaglini@arm.com 485113481Sgiacomo.travaglini@arm.com private: 485213481Sgiacomo.travaglini@arm.com // No implementation - assignment is unsupported. 485313481Sgiacomo.travaglini@arm.com void operator=(const CartesianProductHolder2& other); 485413481Sgiacomo.travaglini@arm.com 485513481Sgiacomo.travaglini@arm.com const Generator1 g1_; 485613481Sgiacomo.travaglini@arm.com const Generator2 g2_; 485713481Sgiacomo.travaglini@arm.com}; // class CartesianProductHolder2 485813481Sgiacomo.travaglini@arm.com 485913481Sgiacomo.travaglini@arm.comtemplate <class Generator1, class Generator2, class Generator3> 486013481Sgiacomo.travaglini@arm.comclass CartesianProductHolder3 { 486113481Sgiacomo.travaglini@arm.com public: 486213481Sgiacomo.travaglini@arm.comCartesianProductHolder3(const Generator1& g1, const Generator2& g2, 486313481Sgiacomo.travaglini@arm.com const Generator3& g3) 486413481Sgiacomo.travaglini@arm.com : g1_(g1), g2_(g2), g3_(g3) {} 486513481Sgiacomo.travaglini@arm.com template <typename T1, typename T2, typename T3> 486613481Sgiacomo.travaglini@arm.com operator ParamGenerator< ::testing::tuple<T1, T2, T3> >() const { 486713481Sgiacomo.travaglini@arm.com return ParamGenerator< ::testing::tuple<T1, T2, T3> >( 486813481Sgiacomo.travaglini@arm.com new CartesianProductGenerator3<T1, T2, T3>( 486913481Sgiacomo.travaglini@arm.com static_cast<ParamGenerator<T1> >(g1_), 487013481Sgiacomo.travaglini@arm.com static_cast<ParamGenerator<T2> >(g2_), 487113481Sgiacomo.travaglini@arm.com static_cast<ParamGenerator<T3> >(g3_))); 487213481Sgiacomo.travaglini@arm.com } 487313481Sgiacomo.travaglini@arm.com 487413481Sgiacomo.travaglini@arm.com private: 487513481Sgiacomo.travaglini@arm.com // No implementation - assignment is unsupported. 487613481Sgiacomo.travaglini@arm.com void operator=(const CartesianProductHolder3& other); 487713481Sgiacomo.travaglini@arm.com 487813481Sgiacomo.travaglini@arm.com const Generator1 g1_; 487913481Sgiacomo.travaglini@arm.com const Generator2 g2_; 488013481Sgiacomo.travaglini@arm.com const Generator3 g3_; 488113481Sgiacomo.travaglini@arm.com}; // class CartesianProductHolder3 488213481Sgiacomo.travaglini@arm.com 488313481Sgiacomo.travaglini@arm.comtemplate <class Generator1, class Generator2, class Generator3, 488413481Sgiacomo.travaglini@arm.com class Generator4> 488513481Sgiacomo.travaglini@arm.comclass CartesianProductHolder4 { 488613481Sgiacomo.travaglini@arm.com public: 488713481Sgiacomo.travaglini@arm.comCartesianProductHolder4(const Generator1& g1, const Generator2& g2, 488813481Sgiacomo.travaglini@arm.com const Generator3& g3, const Generator4& g4) 488913481Sgiacomo.travaglini@arm.com : g1_(g1), g2_(g2), g3_(g3), g4_(g4) {} 489013481Sgiacomo.travaglini@arm.com template <typename T1, typename T2, typename T3, typename T4> 489113481Sgiacomo.travaglini@arm.com operator ParamGenerator< ::testing::tuple<T1, T2, T3, T4> >() const { 489213481Sgiacomo.travaglini@arm.com return ParamGenerator< ::testing::tuple<T1, T2, T3, T4> >( 489313481Sgiacomo.travaglini@arm.com new CartesianProductGenerator4<T1, T2, T3, T4>( 489413481Sgiacomo.travaglini@arm.com static_cast<ParamGenerator<T1> >(g1_), 489513481Sgiacomo.travaglini@arm.com static_cast<ParamGenerator<T2> >(g2_), 489613481Sgiacomo.travaglini@arm.com static_cast<ParamGenerator<T3> >(g3_), 489713481Sgiacomo.travaglini@arm.com static_cast<ParamGenerator<T4> >(g4_))); 489813481Sgiacomo.travaglini@arm.com } 489913481Sgiacomo.travaglini@arm.com 490013481Sgiacomo.travaglini@arm.com private: 490113481Sgiacomo.travaglini@arm.com // No implementation - assignment is unsupported. 490213481Sgiacomo.travaglini@arm.com void operator=(const CartesianProductHolder4& other); 490313481Sgiacomo.travaglini@arm.com 490413481Sgiacomo.travaglini@arm.com const Generator1 g1_; 490513481Sgiacomo.travaglini@arm.com const Generator2 g2_; 490613481Sgiacomo.travaglini@arm.com const Generator3 g3_; 490713481Sgiacomo.travaglini@arm.com const Generator4 g4_; 490813481Sgiacomo.travaglini@arm.com}; // class CartesianProductHolder4 490913481Sgiacomo.travaglini@arm.com 491013481Sgiacomo.travaglini@arm.comtemplate <class Generator1, class Generator2, class Generator3, 491113481Sgiacomo.travaglini@arm.com class Generator4, class Generator5> 491213481Sgiacomo.travaglini@arm.comclass CartesianProductHolder5 { 491313481Sgiacomo.travaglini@arm.com public: 491413481Sgiacomo.travaglini@arm.comCartesianProductHolder5(const Generator1& g1, const Generator2& g2, 491513481Sgiacomo.travaglini@arm.com const Generator3& g3, const Generator4& g4, const Generator5& g5) 491613481Sgiacomo.travaglini@arm.com : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5) {} 491713481Sgiacomo.travaglini@arm.com template <typename T1, typename T2, typename T3, typename T4, typename T5> 491813481Sgiacomo.travaglini@arm.com operator ParamGenerator< ::testing::tuple<T1, T2, T3, T4, T5> >() const { 491913481Sgiacomo.travaglini@arm.com return ParamGenerator< ::testing::tuple<T1, T2, T3, T4, T5> >( 492013481Sgiacomo.travaglini@arm.com new CartesianProductGenerator5<T1, T2, T3, T4, T5>( 492113481Sgiacomo.travaglini@arm.com static_cast<ParamGenerator<T1> >(g1_), 492213481Sgiacomo.travaglini@arm.com static_cast<ParamGenerator<T2> >(g2_), 492313481Sgiacomo.travaglini@arm.com static_cast<ParamGenerator<T3> >(g3_), 492413481Sgiacomo.travaglini@arm.com static_cast<ParamGenerator<T4> >(g4_), 492513481Sgiacomo.travaglini@arm.com static_cast<ParamGenerator<T5> >(g5_))); 492613481Sgiacomo.travaglini@arm.com } 492713481Sgiacomo.travaglini@arm.com 492813481Sgiacomo.travaglini@arm.com private: 492913481Sgiacomo.travaglini@arm.com // No implementation - assignment is unsupported. 493013481Sgiacomo.travaglini@arm.com void operator=(const CartesianProductHolder5& other); 493113481Sgiacomo.travaglini@arm.com 493213481Sgiacomo.travaglini@arm.com const Generator1 g1_; 493313481Sgiacomo.travaglini@arm.com const Generator2 g2_; 493413481Sgiacomo.travaglini@arm.com const Generator3 g3_; 493513481Sgiacomo.travaglini@arm.com const Generator4 g4_; 493613481Sgiacomo.travaglini@arm.com const Generator5 g5_; 493713481Sgiacomo.travaglini@arm.com}; // class CartesianProductHolder5 493813481Sgiacomo.travaglini@arm.com 493913481Sgiacomo.travaglini@arm.comtemplate <class Generator1, class Generator2, class Generator3, 494013481Sgiacomo.travaglini@arm.com class Generator4, class Generator5, class Generator6> 494113481Sgiacomo.travaglini@arm.comclass CartesianProductHolder6 { 494213481Sgiacomo.travaglini@arm.com public: 494313481Sgiacomo.travaglini@arm.comCartesianProductHolder6(const Generator1& g1, const Generator2& g2, 494413481Sgiacomo.travaglini@arm.com const Generator3& g3, const Generator4& g4, const Generator5& g5, 494513481Sgiacomo.travaglini@arm.com const Generator6& g6) 494613481Sgiacomo.travaglini@arm.com : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6) {} 494713481Sgiacomo.travaglini@arm.com template <typename T1, typename T2, typename T3, typename T4, typename T5, 494813481Sgiacomo.travaglini@arm.com typename T6> 494913481Sgiacomo.travaglini@arm.com operator ParamGenerator< ::testing::tuple<T1, T2, T3, T4, T5, T6> >() const { 495013481Sgiacomo.travaglini@arm.com return ParamGenerator< ::testing::tuple<T1, T2, T3, T4, T5, T6> >( 495113481Sgiacomo.travaglini@arm.com new CartesianProductGenerator6<T1, T2, T3, T4, T5, T6>( 495213481Sgiacomo.travaglini@arm.com static_cast<ParamGenerator<T1> >(g1_), 495313481Sgiacomo.travaglini@arm.com static_cast<ParamGenerator<T2> >(g2_), 495413481Sgiacomo.travaglini@arm.com static_cast<ParamGenerator<T3> >(g3_), 495513481Sgiacomo.travaglini@arm.com static_cast<ParamGenerator<T4> >(g4_), 495613481Sgiacomo.travaglini@arm.com static_cast<ParamGenerator<T5> >(g5_), 495713481Sgiacomo.travaglini@arm.com static_cast<ParamGenerator<T6> >(g6_))); 495813481Sgiacomo.travaglini@arm.com } 495913481Sgiacomo.travaglini@arm.com 496013481Sgiacomo.travaglini@arm.com private: 496113481Sgiacomo.travaglini@arm.com // No implementation - assignment is unsupported. 496213481Sgiacomo.travaglini@arm.com void operator=(const CartesianProductHolder6& other); 496313481Sgiacomo.travaglini@arm.com 496413481Sgiacomo.travaglini@arm.com const Generator1 g1_; 496513481Sgiacomo.travaglini@arm.com const Generator2 g2_; 496613481Sgiacomo.travaglini@arm.com const Generator3 g3_; 496713481Sgiacomo.travaglini@arm.com const Generator4 g4_; 496813481Sgiacomo.travaglini@arm.com const Generator5 g5_; 496913481Sgiacomo.travaglini@arm.com const Generator6 g6_; 497013481Sgiacomo.travaglini@arm.com}; // class CartesianProductHolder6 497113481Sgiacomo.travaglini@arm.com 497213481Sgiacomo.travaglini@arm.comtemplate <class Generator1, class Generator2, class Generator3, 497313481Sgiacomo.travaglini@arm.com class Generator4, class Generator5, class Generator6, class Generator7> 497413481Sgiacomo.travaglini@arm.comclass CartesianProductHolder7 { 497513481Sgiacomo.travaglini@arm.com public: 497613481Sgiacomo.travaglini@arm.comCartesianProductHolder7(const Generator1& g1, const Generator2& g2, 497713481Sgiacomo.travaglini@arm.com const Generator3& g3, const Generator4& g4, const Generator5& g5, 497813481Sgiacomo.travaglini@arm.com const Generator6& g6, const Generator7& g7) 497913481Sgiacomo.travaglini@arm.com : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7) {} 498013481Sgiacomo.travaglini@arm.com template <typename T1, typename T2, typename T3, typename T4, typename T5, 498113481Sgiacomo.travaglini@arm.com typename T6, typename T7> 498213481Sgiacomo.travaglini@arm.com operator ParamGenerator< ::testing::tuple<T1, T2, T3, T4, T5, T6, 498313481Sgiacomo.travaglini@arm.com T7> >() const { 498413481Sgiacomo.travaglini@arm.com return ParamGenerator< ::testing::tuple<T1, T2, T3, T4, T5, T6, T7> >( 498513481Sgiacomo.travaglini@arm.com new CartesianProductGenerator7<T1, T2, T3, T4, T5, T6, T7>( 498613481Sgiacomo.travaglini@arm.com static_cast<ParamGenerator<T1> >(g1_), 498713481Sgiacomo.travaglini@arm.com static_cast<ParamGenerator<T2> >(g2_), 498813481Sgiacomo.travaglini@arm.com static_cast<ParamGenerator<T3> >(g3_), 498913481Sgiacomo.travaglini@arm.com static_cast<ParamGenerator<T4> >(g4_), 499013481Sgiacomo.travaglini@arm.com static_cast<ParamGenerator<T5> >(g5_), 499113481Sgiacomo.travaglini@arm.com static_cast<ParamGenerator<T6> >(g6_), 499213481Sgiacomo.travaglini@arm.com static_cast<ParamGenerator<T7> >(g7_))); 499313481Sgiacomo.travaglini@arm.com } 499413481Sgiacomo.travaglini@arm.com 499513481Sgiacomo.travaglini@arm.com private: 499613481Sgiacomo.travaglini@arm.com // No implementation - assignment is unsupported. 499713481Sgiacomo.travaglini@arm.com void operator=(const CartesianProductHolder7& other); 499813481Sgiacomo.travaglini@arm.com 499913481Sgiacomo.travaglini@arm.com const Generator1 g1_; 500013481Sgiacomo.travaglini@arm.com const Generator2 g2_; 500113481Sgiacomo.travaglini@arm.com const Generator3 g3_; 500213481Sgiacomo.travaglini@arm.com const Generator4 g4_; 500313481Sgiacomo.travaglini@arm.com const Generator5 g5_; 500413481Sgiacomo.travaglini@arm.com const Generator6 g6_; 500513481Sgiacomo.travaglini@arm.com const Generator7 g7_; 500613481Sgiacomo.travaglini@arm.com}; // class CartesianProductHolder7 500713481Sgiacomo.travaglini@arm.com 500813481Sgiacomo.travaglini@arm.comtemplate <class Generator1, class Generator2, class Generator3, 500913481Sgiacomo.travaglini@arm.com class Generator4, class Generator5, class Generator6, class Generator7, 501013481Sgiacomo.travaglini@arm.com class Generator8> 501113481Sgiacomo.travaglini@arm.comclass CartesianProductHolder8 { 501213481Sgiacomo.travaglini@arm.com public: 501313481Sgiacomo.travaglini@arm.comCartesianProductHolder8(const Generator1& g1, const Generator2& g2, 501413481Sgiacomo.travaglini@arm.com const Generator3& g3, const Generator4& g4, const Generator5& g5, 501513481Sgiacomo.travaglini@arm.com const Generator6& g6, const Generator7& g7, const Generator8& g8) 501613481Sgiacomo.travaglini@arm.com : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7), 501713481Sgiacomo.travaglini@arm.com g8_(g8) {} 501813481Sgiacomo.travaglini@arm.com template <typename T1, typename T2, typename T3, typename T4, typename T5, 501913481Sgiacomo.travaglini@arm.com typename T6, typename T7, typename T8> 502013481Sgiacomo.travaglini@arm.com operator ParamGenerator< ::testing::tuple<T1, T2, T3, T4, T5, T6, T7, 502113481Sgiacomo.travaglini@arm.com T8> >() const { 502213481Sgiacomo.travaglini@arm.com return ParamGenerator< ::testing::tuple<T1, T2, T3, T4, T5, T6, T7, T8> >( 502313481Sgiacomo.travaglini@arm.com new CartesianProductGenerator8<T1, T2, T3, T4, T5, T6, T7, T8>( 502413481Sgiacomo.travaglini@arm.com static_cast<ParamGenerator<T1> >(g1_), 502513481Sgiacomo.travaglini@arm.com static_cast<ParamGenerator<T2> >(g2_), 502613481Sgiacomo.travaglini@arm.com static_cast<ParamGenerator<T3> >(g3_), 502713481Sgiacomo.travaglini@arm.com static_cast<ParamGenerator<T4> >(g4_), 502813481Sgiacomo.travaglini@arm.com static_cast<ParamGenerator<T5> >(g5_), 502913481Sgiacomo.travaglini@arm.com static_cast<ParamGenerator<T6> >(g6_), 503013481Sgiacomo.travaglini@arm.com static_cast<ParamGenerator<T7> >(g7_), 503113481Sgiacomo.travaglini@arm.com static_cast<ParamGenerator<T8> >(g8_))); 503213481Sgiacomo.travaglini@arm.com } 503313481Sgiacomo.travaglini@arm.com 503413481Sgiacomo.travaglini@arm.com private: 503513481Sgiacomo.travaglini@arm.com // No implementation - assignment is unsupported. 503613481Sgiacomo.travaglini@arm.com void operator=(const CartesianProductHolder8& other); 503713481Sgiacomo.travaglini@arm.com 503813481Sgiacomo.travaglini@arm.com const Generator1 g1_; 503913481Sgiacomo.travaglini@arm.com const Generator2 g2_; 504013481Sgiacomo.travaglini@arm.com const Generator3 g3_; 504113481Sgiacomo.travaglini@arm.com const Generator4 g4_; 504213481Sgiacomo.travaglini@arm.com const Generator5 g5_; 504313481Sgiacomo.travaglini@arm.com const Generator6 g6_; 504413481Sgiacomo.travaglini@arm.com const Generator7 g7_; 504513481Sgiacomo.travaglini@arm.com const Generator8 g8_; 504613481Sgiacomo.travaglini@arm.com}; // class CartesianProductHolder8 504713481Sgiacomo.travaglini@arm.com 504813481Sgiacomo.travaglini@arm.comtemplate <class Generator1, class Generator2, class Generator3, 504913481Sgiacomo.travaglini@arm.com class Generator4, class Generator5, class Generator6, class Generator7, 505013481Sgiacomo.travaglini@arm.com class Generator8, class Generator9> 505113481Sgiacomo.travaglini@arm.comclass CartesianProductHolder9 { 505213481Sgiacomo.travaglini@arm.com public: 505313481Sgiacomo.travaglini@arm.comCartesianProductHolder9(const Generator1& g1, const Generator2& g2, 505413481Sgiacomo.travaglini@arm.com const Generator3& g3, const Generator4& g4, const Generator5& g5, 505513481Sgiacomo.travaglini@arm.com const Generator6& g6, const Generator7& g7, const Generator8& g8, 505613481Sgiacomo.travaglini@arm.com const Generator9& g9) 505713481Sgiacomo.travaglini@arm.com : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7), g8_(g8), 505813481Sgiacomo.travaglini@arm.com g9_(g9) {} 505913481Sgiacomo.travaglini@arm.com template <typename T1, typename T2, typename T3, typename T4, typename T5, 506013481Sgiacomo.travaglini@arm.com typename T6, typename T7, typename T8, typename T9> 506113481Sgiacomo.travaglini@arm.com operator ParamGenerator< ::testing::tuple<T1, T2, T3, T4, T5, T6, T7, T8, 506213481Sgiacomo.travaglini@arm.com T9> >() const { 506313481Sgiacomo.travaglini@arm.com return ParamGenerator< ::testing::tuple<T1, T2, T3, T4, T5, T6, T7, T8, 506413481Sgiacomo.travaglini@arm.com T9> >( 506513481Sgiacomo.travaglini@arm.com new CartesianProductGenerator9<T1, T2, T3, T4, T5, T6, T7, T8, T9>( 506613481Sgiacomo.travaglini@arm.com static_cast<ParamGenerator<T1> >(g1_), 506713481Sgiacomo.travaglini@arm.com static_cast<ParamGenerator<T2> >(g2_), 506813481Sgiacomo.travaglini@arm.com static_cast<ParamGenerator<T3> >(g3_), 506913481Sgiacomo.travaglini@arm.com static_cast<ParamGenerator<T4> >(g4_), 507013481Sgiacomo.travaglini@arm.com static_cast<ParamGenerator<T5> >(g5_), 507113481Sgiacomo.travaglini@arm.com static_cast<ParamGenerator<T6> >(g6_), 507213481Sgiacomo.travaglini@arm.com static_cast<ParamGenerator<T7> >(g7_), 507313481Sgiacomo.travaglini@arm.com static_cast<ParamGenerator<T8> >(g8_), 507413481Sgiacomo.travaglini@arm.com static_cast<ParamGenerator<T9> >(g9_))); 507513481Sgiacomo.travaglini@arm.com } 507613481Sgiacomo.travaglini@arm.com 507713481Sgiacomo.travaglini@arm.com private: 507813481Sgiacomo.travaglini@arm.com // No implementation - assignment is unsupported. 507913481Sgiacomo.travaglini@arm.com void operator=(const CartesianProductHolder9& other); 508013481Sgiacomo.travaglini@arm.com 508113481Sgiacomo.travaglini@arm.com const Generator1 g1_; 508213481Sgiacomo.travaglini@arm.com const Generator2 g2_; 508313481Sgiacomo.travaglini@arm.com const Generator3 g3_; 508413481Sgiacomo.travaglini@arm.com const Generator4 g4_; 508513481Sgiacomo.travaglini@arm.com const Generator5 g5_; 508613481Sgiacomo.travaglini@arm.com const Generator6 g6_; 508713481Sgiacomo.travaglini@arm.com const Generator7 g7_; 508813481Sgiacomo.travaglini@arm.com const Generator8 g8_; 508913481Sgiacomo.travaglini@arm.com const Generator9 g9_; 509013481Sgiacomo.travaglini@arm.com}; // class CartesianProductHolder9 509113481Sgiacomo.travaglini@arm.com 509213481Sgiacomo.travaglini@arm.comtemplate <class Generator1, class Generator2, class Generator3, 509313481Sgiacomo.travaglini@arm.com class Generator4, class Generator5, class Generator6, class Generator7, 509413481Sgiacomo.travaglini@arm.com class Generator8, class Generator9, class Generator10> 509513481Sgiacomo.travaglini@arm.comclass CartesianProductHolder10 { 509613481Sgiacomo.travaglini@arm.com public: 509713481Sgiacomo.travaglini@arm.comCartesianProductHolder10(const Generator1& g1, const Generator2& g2, 509813481Sgiacomo.travaglini@arm.com const Generator3& g3, const Generator4& g4, const Generator5& g5, 509913481Sgiacomo.travaglini@arm.com const Generator6& g6, const Generator7& g7, const Generator8& g8, 510013481Sgiacomo.travaglini@arm.com const Generator9& g9, const Generator10& g10) 510113481Sgiacomo.travaglini@arm.com : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7), g8_(g8), 510213481Sgiacomo.travaglini@arm.com g9_(g9), g10_(g10) {} 510313481Sgiacomo.travaglini@arm.com template <typename T1, typename T2, typename T3, typename T4, typename T5, 510413481Sgiacomo.travaglini@arm.com typename T6, typename T7, typename T8, typename T9, typename T10> 510513481Sgiacomo.travaglini@arm.com operator ParamGenerator< ::testing::tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, 510613481Sgiacomo.travaglini@arm.com T10> >() const { 510713481Sgiacomo.travaglini@arm.com return ParamGenerator< ::testing::tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, 510813481Sgiacomo.travaglini@arm.com T10> >( 510913481Sgiacomo.travaglini@arm.com new CartesianProductGenerator10<T1, T2, T3, T4, T5, T6, T7, T8, T9, 511013481Sgiacomo.travaglini@arm.com T10>( 511113481Sgiacomo.travaglini@arm.com static_cast<ParamGenerator<T1> >(g1_), 511213481Sgiacomo.travaglini@arm.com static_cast<ParamGenerator<T2> >(g2_), 511313481Sgiacomo.travaglini@arm.com static_cast<ParamGenerator<T3> >(g3_), 511413481Sgiacomo.travaglini@arm.com static_cast<ParamGenerator<T4> >(g4_), 511513481Sgiacomo.travaglini@arm.com static_cast<ParamGenerator<T5> >(g5_), 511613481Sgiacomo.travaglini@arm.com static_cast<ParamGenerator<T6> >(g6_), 511713481Sgiacomo.travaglini@arm.com static_cast<ParamGenerator<T7> >(g7_), 511813481Sgiacomo.travaglini@arm.com static_cast<ParamGenerator<T8> >(g8_), 511913481Sgiacomo.travaglini@arm.com static_cast<ParamGenerator<T9> >(g9_), 512013481Sgiacomo.travaglini@arm.com static_cast<ParamGenerator<T10> >(g10_))); 512113481Sgiacomo.travaglini@arm.com } 512213481Sgiacomo.travaglini@arm.com 512313481Sgiacomo.travaglini@arm.com private: 512413481Sgiacomo.travaglini@arm.com // No implementation - assignment is unsupported. 512513481Sgiacomo.travaglini@arm.com void operator=(const CartesianProductHolder10& other); 512613481Sgiacomo.travaglini@arm.com 512713481Sgiacomo.travaglini@arm.com const Generator1 g1_; 512813481Sgiacomo.travaglini@arm.com const Generator2 g2_; 512913481Sgiacomo.travaglini@arm.com const Generator3 g3_; 513013481Sgiacomo.travaglini@arm.com const Generator4 g4_; 513113481Sgiacomo.travaglini@arm.com const Generator5 g5_; 513213481Sgiacomo.travaglini@arm.com const Generator6 g6_; 513313481Sgiacomo.travaglini@arm.com const Generator7 g7_; 513413481Sgiacomo.travaglini@arm.com const Generator8 g8_; 513513481Sgiacomo.travaglini@arm.com const Generator9 g9_; 513613481Sgiacomo.travaglini@arm.com const Generator10 g10_; 513713481Sgiacomo.travaglini@arm.com}; // class CartesianProductHolder10 513813481Sgiacomo.travaglini@arm.com 513913481Sgiacomo.travaglini@arm.com# endif // GTEST_HAS_COMBINE 514013481Sgiacomo.travaglini@arm.com 514113481Sgiacomo.travaglini@arm.com} // namespace internal 514213481Sgiacomo.travaglini@arm.com} // namespace testing 514313481Sgiacomo.travaglini@arm.com 514413481Sgiacomo.travaglini@arm.com#endif // GTEST_HAS_PARAM_TEST 514513481Sgiacomo.travaglini@arm.com 514613481Sgiacomo.travaglini@arm.com#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_GENERATED_H_ 5147