18b92989c89bec8632aa47dc58dc162f199d62edcJames Zern// This file was GENERATED by command: 28b92989c89bec8632aa47dc58dc162f199d62edcJames Zern// pump.py gtest-param-util-generated.h.pump 38b92989c89bec8632aa47dc58dc162f199d62edcJames Zern// DO NOT EDIT BY HAND!!! 48b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 58b92989c89bec8632aa47dc58dc162f199d62edcJames Zern// Copyright 2008 Google Inc. 68b92989c89bec8632aa47dc58dc162f199d62edcJames Zern// All Rights Reserved. 78b92989c89bec8632aa47dc58dc162f199d62edcJames Zern// 88b92989c89bec8632aa47dc58dc162f199d62edcJames Zern// Redistribution and use in source and binary forms, with or without 98b92989c89bec8632aa47dc58dc162f199d62edcJames Zern// modification, are permitted provided that the following conditions are 108b92989c89bec8632aa47dc58dc162f199d62edcJames Zern// met: 118b92989c89bec8632aa47dc58dc162f199d62edcJames Zern// 128b92989c89bec8632aa47dc58dc162f199d62edcJames Zern// * Redistributions of source code must retain the above copyright 138b92989c89bec8632aa47dc58dc162f199d62edcJames Zern// notice, this list of conditions and the following disclaimer. 148b92989c89bec8632aa47dc58dc162f199d62edcJames Zern// * Redistributions in binary form must reproduce the above 158b92989c89bec8632aa47dc58dc162f199d62edcJames Zern// copyright notice, this list of conditions and the following disclaimer 168b92989c89bec8632aa47dc58dc162f199d62edcJames Zern// in the documentation and/or other materials provided with the 178b92989c89bec8632aa47dc58dc162f199d62edcJames Zern// distribution. 188b92989c89bec8632aa47dc58dc162f199d62edcJames Zern// * Neither the name of Google Inc. nor the names of its 198b92989c89bec8632aa47dc58dc162f199d62edcJames Zern// contributors may be used to endorse or promote products derived from 208b92989c89bec8632aa47dc58dc162f199d62edcJames Zern// this software without specific prior written permission. 218b92989c89bec8632aa47dc58dc162f199d62edcJames Zern// 228b92989c89bec8632aa47dc58dc162f199d62edcJames Zern// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 238b92989c89bec8632aa47dc58dc162f199d62edcJames Zern// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 248b92989c89bec8632aa47dc58dc162f199d62edcJames Zern// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 258b92989c89bec8632aa47dc58dc162f199d62edcJames Zern// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 268b92989c89bec8632aa47dc58dc162f199d62edcJames Zern// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 278b92989c89bec8632aa47dc58dc162f199d62edcJames Zern// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 288b92989c89bec8632aa47dc58dc162f199d62edcJames Zern// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 298b92989c89bec8632aa47dc58dc162f199d62edcJames Zern// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 308b92989c89bec8632aa47dc58dc162f199d62edcJames Zern// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 318b92989c89bec8632aa47dc58dc162f199d62edcJames Zern// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 328b92989c89bec8632aa47dc58dc162f199d62edcJames Zern// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 338b92989c89bec8632aa47dc58dc162f199d62edcJames Zern// 348b92989c89bec8632aa47dc58dc162f199d62edcJames Zern// Author: vladl@google.com (Vlad Losev) 358b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 368b92989c89bec8632aa47dc58dc162f199d62edcJames Zern// Type and function utilities for implementing parameterized tests. 378b92989c89bec8632aa47dc58dc162f199d62edcJames Zern// This file is generated by a SCRIPT. DO NOT EDIT BY HAND! 388b92989c89bec8632aa47dc58dc162f199d62edcJames Zern// 398b92989c89bec8632aa47dc58dc162f199d62edcJames Zern// Currently Google Test supports at most 50 arguments in Values, 408b92989c89bec8632aa47dc58dc162f199d62edcJames Zern// and at most 10 arguments in Combine. Please contact 418b92989c89bec8632aa47dc58dc162f199d62edcJames Zern// googletestframework@googlegroups.com if you need more. 428b92989c89bec8632aa47dc58dc162f199d62edcJames Zern// Please note that the number of arguments to Combine is limited 438b92989c89bec8632aa47dc58dc162f199d62edcJames Zern// by the maximum arity of the implementation of tuple which is 448b92989c89bec8632aa47dc58dc162f199d62edcJames Zern// currently set at 10. 458b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 468b92989c89bec8632aa47dc58dc162f199d62edcJames Zern#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_GENERATED_H_ 478b92989c89bec8632aa47dc58dc162f199d62edcJames Zern#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_GENERATED_H_ 488b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 498b92989c89bec8632aa47dc58dc162f199d62edcJames Zern// scripts/fuse_gtest.py depends on gtest's own header being #included 508b92989c89bec8632aa47dc58dc162f199d62edcJames Zern// *unconditionally*. Therefore these #includes cannot be moved 518b92989c89bec8632aa47dc58dc162f199d62edcJames Zern// inside #if GTEST_HAS_PARAM_TEST. 528b92989c89bec8632aa47dc58dc162f199d62edcJames Zern#include "gtest/internal/gtest-param-util.h" 538b92989c89bec8632aa47dc58dc162f199d62edcJames Zern#include "gtest/internal/gtest-port.h" 548b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 558b92989c89bec8632aa47dc58dc162f199d62edcJames Zern#if GTEST_HAS_PARAM_TEST 568b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 578b92989c89bec8632aa47dc58dc162f199d62edcJames Zernnamespace testing { 588b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 598b92989c89bec8632aa47dc58dc162f199d62edcJames Zern// Forward declarations of ValuesIn(), which is implemented in 608b92989c89bec8632aa47dc58dc162f199d62edcJames Zern// include/gtest/gtest-param-test.h. 618b92989c89bec8632aa47dc58dc162f199d62edcJames Zerntemplate <typename ForwardIterator> 628b92989c89bec8632aa47dc58dc162f199d62edcJames Zerninternal::ParamGenerator< 638b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename ::testing::internal::IteratorTraits<ForwardIterator>::value_type> 648b92989c89bec8632aa47dc58dc162f199d62edcJames ZernValuesIn(ForwardIterator begin, ForwardIterator end); 658b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 668b92989c89bec8632aa47dc58dc162f199d62edcJames Zerntemplate <typename T, size_t N> 678b92989c89bec8632aa47dc58dc162f199d62edcJames Zerninternal::ParamGenerator<T> ValuesIn(const T (&array)[N]); 688b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 698b92989c89bec8632aa47dc58dc162f199d62edcJames Zerntemplate <class Container> 708b92989c89bec8632aa47dc58dc162f199d62edcJames Zerninternal::ParamGenerator<typename Container::value_type> ValuesIn( 718b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const Container& container); 728b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 738b92989c89bec8632aa47dc58dc162f199d62edcJames Zernnamespace internal { 748b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 758b92989c89bec8632aa47dc58dc162f199d62edcJames Zern// Used in the Values() function to provide polymorphic capabilities. 768b92989c89bec8632aa47dc58dc162f199d62edcJames Zerntemplate <typename T1> 778b92989c89bec8632aa47dc58dc162f199d62edcJames Zernclass ValueArray1 { 788b92989c89bec8632aa47dc58dc162f199d62edcJames Zern public: 798b92989c89bec8632aa47dc58dc162f199d62edcJames Zern explicit ValueArray1(T1 v1) : v1_(v1) {} 808b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 818b92989c89bec8632aa47dc58dc162f199d62edcJames Zern template <typename T> 828b92989c89bec8632aa47dc58dc162f199d62edcJames Zern operator ParamGenerator<T>() const { 838b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T array[] = {static_cast<T>(v1_)}; 848b92989c89bec8632aa47dc58dc162f199d62edcJames Zern return ValuesIn(array); 858b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 868b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 878b92989c89bec8632aa47dc58dc162f199d62edcJames Zern private: 888b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // No implementation - assignment is unsupported. 898b92989c89bec8632aa47dc58dc162f199d62edcJames Zern void operator=(const ValueArray1& other); 908b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 918b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T1 v1_; 928b92989c89bec8632aa47dc58dc162f199d62edcJames Zern}; 938b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 948b92989c89bec8632aa47dc58dc162f199d62edcJames Zerntemplate <typename T1, typename T2> 958b92989c89bec8632aa47dc58dc162f199d62edcJames Zernclass ValueArray2 { 968b92989c89bec8632aa47dc58dc162f199d62edcJames Zern public: 978b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ValueArray2(T1 v1, T2 v2) : v1_(v1), v2_(v2) {} 988b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 998b92989c89bec8632aa47dc58dc162f199d62edcJames Zern template <typename T> 1008b92989c89bec8632aa47dc58dc162f199d62edcJames Zern operator ParamGenerator<T>() const { 1018b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_)}; 1028b92989c89bec8632aa47dc58dc162f199d62edcJames Zern return ValuesIn(array); 1038b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 1048b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 1058b92989c89bec8632aa47dc58dc162f199d62edcJames Zern private: 1068b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // No implementation - assignment is unsupported. 1078b92989c89bec8632aa47dc58dc162f199d62edcJames Zern void operator=(const ValueArray2& other); 1088b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 1098b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T1 v1_; 1108b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T2 v2_; 1118b92989c89bec8632aa47dc58dc162f199d62edcJames Zern}; 1128b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 1138b92989c89bec8632aa47dc58dc162f199d62edcJames Zerntemplate <typename T1, typename T2, typename T3> 1148b92989c89bec8632aa47dc58dc162f199d62edcJames Zernclass ValueArray3 { 1158b92989c89bec8632aa47dc58dc162f199d62edcJames Zern public: 1168b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ValueArray3(T1 v1, T2 v2, T3 v3) : v1_(v1), v2_(v2), v3_(v3) {} 1178b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 1188b92989c89bec8632aa47dc58dc162f199d62edcJames Zern template <typename T> 1198b92989c89bec8632aa47dc58dc162f199d62edcJames Zern operator ParamGenerator<T>() const { 1208b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 1218b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v3_)}; 1228b92989c89bec8632aa47dc58dc162f199d62edcJames Zern return ValuesIn(array); 1238b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 1248b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 1258b92989c89bec8632aa47dc58dc162f199d62edcJames Zern private: 1268b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // No implementation - assignment is unsupported. 1278b92989c89bec8632aa47dc58dc162f199d62edcJames Zern void operator=(const ValueArray3& other); 1288b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 1298b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T1 v1_; 1308b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T2 v2_; 1318b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T3 v3_; 1328b92989c89bec8632aa47dc58dc162f199d62edcJames Zern}; 1338b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 1348b92989c89bec8632aa47dc58dc162f199d62edcJames Zerntemplate <typename T1, typename T2, typename T3, typename T4> 1358b92989c89bec8632aa47dc58dc162f199d62edcJames Zernclass ValueArray4 { 1368b92989c89bec8632aa47dc58dc162f199d62edcJames Zern public: 1378b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ValueArray4(T1 v1, T2 v2, T3 v3, T4 v4) : v1_(v1), v2_(v2), v3_(v3), 1388b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v4_(v4) {} 1398b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 1408b92989c89bec8632aa47dc58dc162f199d62edcJames Zern template <typename T> 1418b92989c89bec8632aa47dc58dc162f199d62edcJames Zern operator ParamGenerator<T>() const { 1428b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 1438b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v3_), static_cast<T>(v4_)}; 1448b92989c89bec8632aa47dc58dc162f199d62edcJames Zern return ValuesIn(array); 1458b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 1468b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 1478b92989c89bec8632aa47dc58dc162f199d62edcJames Zern private: 1488b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // No implementation - assignment is unsupported. 1498b92989c89bec8632aa47dc58dc162f199d62edcJames Zern void operator=(const ValueArray4& other); 1508b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 1518b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T1 v1_; 1528b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T2 v2_; 1538b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T3 v3_; 1548b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T4 v4_; 1558b92989c89bec8632aa47dc58dc162f199d62edcJames Zern}; 1568b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 1578b92989c89bec8632aa47dc58dc162f199d62edcJames Zerntemplate <typename T1, typename T2, typename T3, typename T4, typename T5> 1588b92989c89bec8632aa47dc58dc162f199d62edcJames Zernclass ValueArray5 { 1598b92989c89bec8632aa47dc58dc162f199d62edcJames Zern public: 1608b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ValueArray5(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5) : v1_(v1), v2_(v2), v3_(v3), 1618b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v4_(v4), v5_(v5) {} 1628b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 1638b92989c89bec8632aa47dc58dc162f199d62edcJames Zern template <typename T> 1648b92989c89bec8632aa47dc58dc162f199d62edcJames Zern operator ParamGenerator<T>() const { 1658b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 1668b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_)}; 1678b92989c89bec8632aa47dc58dc162f199d62edcJames Zern return ValuesIn(array); 1688b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 1698b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 1708b92989c89bec8632aa47dc58dc162f199d62edcJames Zern private: 1718b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // No implementation - assignment is unsupported. 1728b92989c89bec8632aa47dc58dc162f199d62edcJames Zern void operator=(const ValueArray5& other); 1738b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 1748b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T1 v1_; 1758b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T2 v2_; 1768b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T3 v3_; 1778b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T4 v4_; 1788b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T5 v5_; 1798b92989c89bec8632aa47dc58dc162f199d62edcJames Zern}; 1808b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 1818b92989c89bec8632aa47dc58dc162f199d62edcJames Zerntemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 1828b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T6> 1838b92989c89bec8632aa47dc58dc162f199d62edcJames Zernclass ValueArray6 { 1848b92989c89bec8632aa47dc58dc162f199d62edcJames Zern public: 1858b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ValueArray6(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6) : v1_(v1), v2_(v2), 1868b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v3_(v3), v4_(v4), v5_(v5), v6_(v6) {} 1878b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 1888b92989c89bec8632aa47dc58dc162f199d62edcJames Zern template <typename T> 1898b92989c89bec8632aa47dc58dc162f199d62edcJames Zern operator ParamGenerator<T>() const { 1908b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 1918b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 1928b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v6_)}; 1938b92989c89bec8632aa47dc58dc162f199d62edcJames Zern return ValuesIn(array); 1948b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 1958b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 1968b92989c89bec8632aa47dc58dc162f199d62edcJames Zern private: 1978b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // No implementation - assignment is unsupported. 1988b92989c89bec8632aa47dc58dc162f199d62edcJames Zern void operator=(const ValueArray6& other); 1998b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 2008b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T1 v1_; 2018b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T2 v2_; 2028b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T3 v3_; 2038b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T4 v4_; 2048b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T5 v5_; 2058b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T6 v6_; 2068b92989c89bec8632aa47dc58dc162f199d62edcJames Zern}; 2078b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 2088b92989c89bec8632aa47dc58dc162f199d62edcJames Zerntemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 2098b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T6, typename T7> 2108b92989c89bec8632aa47dc58dc162f199d62edcJames Zernclass ValueArray7 { 2118b92989c89bec8632aa47dc58dc162f199d62edcJames Zern public: 2128b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ValueArray7(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7) : v1_(v1), 2138b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7) {} 2148b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 2158b92989c89bec8632aa47dc58dc162f199d62edcJames Zern template <typename T> 2168b92989c89bec8632aa47dc58dc162f199d62edcJames Zern operator ParamGenerator<T>() const { 2178b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 2188b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 2198b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v6_), static_cast<T>(v7_)}; 2208b92989c89bec8632aa47dc58dc162f199d62edcJames Zern return ValuesIn(array); 2218b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 2228b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 2238b92989c89bec8632aa47dc58dc162f199d62edcJames Zern private: 2248b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // No implementation - assignment is unsupported. 2258b92989c89bec8632aa47dc58dc162f199d62edcJames Zern void operator=(const ValueArray7& other); 2268b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 2278b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T1 v1_; 2288b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T2 v2_; 2298b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T3 v3_; 2308b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T4 v4_; 2318b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T5 v5_; 2328b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T6 v6_; 2338b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T7 v7_; 2348b92989c89bec8632aa47dc58dc162f199d62edcJames Zern}; 2358b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 2368b92989c89bec8632aa47dc58dc162f199d62edcJames Zerntemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 2378b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T6, typename T7, typename T8> 2388b92989c89bec8632aa47dc58dc162f199d62edcJames Zernclass ValueArray8 { 2398b92989c89bec8632aa47dc58dc162f199d62edcJames Zern public: 2408b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ValueArray8(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, 2418b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T8 v8) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), 2428b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v8_(v8) {} 2438b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 2448b92989c89bec8632aa47dc58dc162f199d62edcJames Zern template <typename T> 2458b92989c89bec8632aa47dc58dc162f199d62edcJames Zern operator ParamGenerator<T>() const { 2468b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 2478b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 2488b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_)}; 2498b92989c89bec8632aa47dc58dc162f199d62edcJames Zern return ValuesIn(array); 2508b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 2518b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 2528b92989c89bec8632aa47dc58dc162f199d62edcJames Zern private: 2538b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // No implementation - assignment is unsupported. 2548b92989c89bec8632aa47dc58dc162f199d62edcJames Zern void operator=(const ValueArray8& other); 2558b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 2568b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T1 v1_; 2578b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T2 v2_; 2588b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T3 v3_; 2598b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T4 v4_; 2608b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T5 v5_; 2618b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T6 v6_; 2628b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T7 v7_; 2638b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T8 v8_; 2648b92989c89bec8632aa47dc58dc162f199d62edcJames Zern}; 2658b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 2668b92989c89bec8632aa47dc58dc162f199d62edcJames Zerntemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 2678b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T6, typename T7, typename T8, typename T9> 2688b92989c89bec8632aa47dc58dc162f199d62edcJames Zernclass ValueArray9 { 2698b92989c89bec8632aa47dc58dc162f199d62edcJames Zern public: 2708b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ValueArray9(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, 2718b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T9 v9) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), 2728b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v8_(v8), v9_(v9) {} 2738b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 2748b92989c89bec8632aa47dc58dc162f199d62edcJames Zern template <typename T> 2758b92989c89bec8632aa47dc58dc162f199d62edcJames Zern operator ParamGenerator<T>() const { 2768b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 2778b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 2788b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 2798b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v9_)}; 2808b92989c89bec8632aa47dc58dc162f199d62edcJames Zern return ValuesIn(array); 2818b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 2828b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 2838b92989c89bec8632aa47dc58dc162f199d62edcJames Zern private: 2848b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // No implementation - assignment is unsupported. 2858b92989c89bec8632aa47dc58dc162f199d62edcJames Zern void operator=(const ValueArray9& other); 2868b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 2878b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T1 v1_; 2888b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T2 v2_; 2898b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T3 v3_; 2908b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T4 v4_; 2918b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T5 v5_; 2928b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T6 v6_; 2938b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T7 v7_; 2948b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T8 v8_; 2958b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T9 v9_; 2968b92989c89bec8632aa47dc58dc162f199d62edcJames Zern}; 2978b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 2988b92989c89bec8632aa47dc58dc162f199d62edcJames Zerntemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 2998b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T6, typename T7, typename T8, typename T9, typename T10> 3008b92989c89bec8632aa47dc58dc162f199d62edcJames Zernclass ValueArray10 { 3018b92989c89bec8632aa47dc58dc162f199d62edcJames Zern public: 3028b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ValueArray10(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 3038b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T10 v10) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), 3048b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v8_(v8), v9_(v9), v10_(v10) {} 3058b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 3068b92989c89bec8632aa47dc58dc162f199d62edcJames Zern template <typename T> 3078b92989c89bec8632aa47dc58dc162f199d62edcJames Zern operator ParamGenerator<T>() const { 3088b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 3098b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 3108b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 3118b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v9_), static_cast<T>(v10_)}; 3128b92989c89bec8632aa47dc58dc162f199d62edcJames Zern return ValuesIn(array); 3138b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 3148b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 3158b92989c89bec8632aa47dc58dc162f199d62edcJames Zern private: 3168b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // No implementation - assignment is unsupported. 3178b92989c89bec8632aa47dc58dc162f199d62edcJames Zern void operator=(const ValueArray10& other); 3188b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 3198b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T1 v1_; 3208b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T2 v2_; 3218b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T3 v3_; 3228b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T4 v4_; 3238b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T5 v5_; 3248b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T6 v6_; 3258b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T7 v7_; 3268b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T8 v8_; 3278b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T9 v9_; 3288b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T10 v10_; 3298b92989c89bec8632aa47dc58dc162f199d62edcJames Zern}; 3308b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 3318b92989c89bec8632aa47dc58dc162f199d62edcJames Zerntemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 3328b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T6, typename T7, typename T8, typename T9, typename T10, 3338b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T11> 3348b92989c89bec8632aa47dc58dc162f199d62edcJames Zernclass ValueArray11 { 3358b92989c89bec8632aa47dc58dc162f199d62edcJames Zern public: 3368b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ValueArray11(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 3378b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T10 v10, T11 v11) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), 3388b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11) {} 3398b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 3408b92989c89bec8632aa47dc58dc162f199d62edcJames Zern template <typename T> 3418b92989c89bec8632aa47dc58dc162f199d62edcJames Zern operator ParamGenerator<T>() const { 3428b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 3438b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 3448b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 3458b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_)}; 3468b92989c89bec8632aa47dc58dc162f199d62edcJames Zern return ValuesIn(array); 3478b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 3488b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 3498b92989c89bec8632aa47dc58dc162f199d62edcJames Zern private: 3508b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // No implementation - assignment is unsupported. 3518b92989c89bec8632aa47dc58dc162f199d62edcJames Zern void operator=(const ValueArray11& other); 3528b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 3538b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T1 v1_; 3548b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T2 v2_; 3558b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T3 v3_; 3568b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T4 v4_; 3578b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T5 v5_; 3588b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T6 v6_; 3598b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T7 v7_; 3608b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T8 v8_; 3618b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T9 v9_; 3628b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T10 v10_; 3638b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T11 v11_; 3648b92989c89bec8632aa47dc58dc162f199d62edcJames Zern}; 3658b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 3668b92989c89bec8632aa47dc58dc162f199d62edcJames Zerntemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 3678b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T6, typename T7, typename T8, typename T9, typename T10, 3688b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T11, typename T12> 3698b92989c89bec8632aa47dc58dc162f199d62edcJames Zernclass ValueArray12 { 3708b92989c89bec8632aa47dc58dc162f199d62edcJames Zern public: 3718b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ValueArray12(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 3728b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T10 v10, T11 v11, T12 v12) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), 3738b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12) {} 3748b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 3758b92989c89bec8632aa47dc58dc162f199d62edcJames Zern template <typename T> 3768b92989c89bec8632aa47dc58dc162f199d62edcJames Zern operator ParamGenerator<T>() const { 3778b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 3788b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 3798b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 3808b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), 3818b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v12_)}; 3828b92989c89bec8632aa47dc58dc162f199d62edcJames Zern return ValuesIn(array); 3838b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 3848b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 3858b92989c89bec8632aa47dc58dc162f199d62edcJames Zern private: 3868b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // No implementation - assignment is unsupported. 3878b92989c89bec8632aa47dc58dc162f199d62edcJames Zern void operator=(const ValueArray12& other); 3888b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 3898b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T1 v1_; 3908b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T2 v2_; 3918b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T3 v3_; 3928b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T4 v4_; 3938b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T5 v5_; 3948b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T6 v6_; 3958b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T7 v7_; 3968b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T8 v8_; 3978b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T9 v9_; 3988b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T10 v10_; 3998b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T11 v11_; 4008b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T12 v12_; 4018b92989c89bec8632aa47dc58dc162f199d62edcJames Zern}; 4028b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 4038b92989c89bec8632aa47dc58dc162f199d62edcJames Zerntemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 4048b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T6, typename T7, typename T8, typename T9, typename T10, 4058b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T11, typename T12, typename T13> 4068b92989c89bec8632aa47dc58dc162f199d62edcJames Zernclass ValueArray13 { 4078b92989c89bec8632aa47dc58dc162f199d62edcJames Zern public: 4088b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ValueArray13(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 4098b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T10 v10, T11 v11, T12 v12, T13 v13) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), 4108b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), 4118b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v12_(v12), v13_(v13) {} 4128b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 4138b92989c89bec8632aa47dc58dc162f199d62edcJames Zern template <typename T> 4148b92989c89bec8632aa47dc58dc162f199d62edcJames Zern operator ParamGenerator<T>() const { 4158b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 4168b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 4178b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 4188b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), 4198b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v12_), static_cast<T>(v13_)}; 4208b92989c89bec8632aa47dc58dc162f199d62edcJames Zern return ValuesIn(array); 4218b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 4228b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 4238b92989c89bec8632aa47dc58dc162f199d62edcJames Zern private: 4248b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // No implementation - assignment is unsupported. 4258b92989c89bec8632aa47dc58dc162f199d62edcJames Zern void operator=(const ValueArray13& other); 4268b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 4278b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T1 v1_; 4288b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T2 v2_; 4298b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T3 v3_; 4308b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T4 v4_; 4318b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T5 v5_; 4328b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T6 v6_; 4338b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T7 v7_; 4348b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T8 v8_; 4358b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T9 v9_; 4368b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T10 v10_; 4378b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T11 v11_; 4388b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T12 v12_; 4398b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T13 v13_; 4408b92989c89bec8632aa47dc58dc162f199d62edcJames Zern}; 4418b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 4428b92989c89bec8632aa47dc58dc162f199d62edcJames Zerntemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 4438b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T6, typename T7, typename T8, typename T9, typename T10, 4448b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T11, typename T12, typename T13, typename T14> 4458b92989c89bec8632aa47dc58dc162f199d62edcJames Zernclass ValueArray14 { 4468b92989c89bec8632aa47dc58dc162f199d62edcJames Zern public: 4478b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ValueArray14(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 4488b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T10 v10, T11 v11, T12 v12, T13 v13, T14 v14) : v1_(v1), v2_(v2), v3_(v3), 4498b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), 4508b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v11_(v11), v12_(v12), v13_(v13), v14_(v14) {} 4518b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 4528b92989c89bec8632aa47dc58dc162f199d62edcJames Zern template <typename T> 4538b92989c89bec8632aa47dc58dc162f199d62edcJames Zern operator ParamGenerator<T>() const { 4548b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 4558b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 4568b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 4578b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), 4588b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_)}; 4598b92989c89bec8632aa47dc58dc162f199d62edcJames Zern return ValuesIn(array); 4608b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 4618b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 4628b92989c89bec8632aa47dc58dc162f199d62edcJames Zern private: 4638b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // No implementation - assignment is unsupported. 4648b92989c89bec8632aa47dc58dc162f199d62edcJames Zern void operator=(const ValueArray14& other); 4658b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 4668b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T1 v1_; 4678b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T2 v2_; 4688b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T3 v3_; 4698b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T4 v4_; 4708b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T5 v5_; 4718b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T6 v6_; 4728b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T7 v7_; 4738b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T8 v8_; 4748b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T9 v9_; 4758b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T10 v10_; 4768b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T11 v11_; 4778b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T12 v12_; 4788b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T13 v13_; 4798b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T14 v14_; 4808b92989c89bec8632aa47dc58dc162f199d62edcJames Zern}; 4818b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 4828b92989c89bec8632aa47dc58dc162f199d62edcJames Zerntemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 4838b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T6, typename T7, typename T8, typename T9, typename T10, 4848b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T11, typename T12, typename T13, typename T14, typename T15> 4858b92989c89bec8632aa47dc58dc162f199d62edcJames Zernclass ValueArray15 { 4868b92989c89bec8632aa47dc58dc162f199d62edcJames Zern public: 4878b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ValueArray15(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 4888b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15) : v1_(v1), v2_(v2), 4898b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), 4908b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15) {} 4918b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 4928b92989c89bec8632aa47dc58dc162f199d62edcJames Zern template <typename T> 4938b92989c89bec8632aa47dc58dc162f199d62edcJames Zern operator ParamGenerator<T>() const { 4948b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 4958b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 4968b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 4978b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), 4988b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), 4998b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v15_)}; 5008b92989c89bec8632aa47dc58dc162f199d62edcJames Zern return ValuesIn(array); 5018b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 5028b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 5038b92989c89bec8632aa47dc58dc162f199d62edcJames Zern private: 5048b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // No implementation - assignment is unsupported. 5058b92989c89bec8632aa47dc58dc162f199d62edcJames Zern void operator=(const ValueArray15& other); 5068b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 5078b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T1 v1_; 5088b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T2 v2_; 5098b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T3 v3_; 5108b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T4 v4_; 5118b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T5 v5_; 5128b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T6 v6_; 5138b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T7 v7_; 5148b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T8 v8_; 5158b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T9 v9_; 5168b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T10 v10_; 5178b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T11 v11_; 5188b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T12 v12_; 5198b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T13 v13_; 5208b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T14 v14_; 5218b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T15 v15_; 5228b92989c89bec8632aa47dc58dc162f199d62edcJames Zern}; 5238b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 5248b92989c89bec8632aa47dc58dc162f199d62edcJames Zerntemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 5258b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T6, typename T7, typename T8, typename T9, typename T10, 5268b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T11, typename T12, typename T13, typename T14, typename T15, 5278b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T16> 5288b92989c89bec8632aa47dc58dc162f199d62edcJames Zernclass ValueArray16 { 5298b92989c89bec8632aa47dc58dc162f199d62edcJames Zern public: 5308b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ValueArray16(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 5318b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16) : v1_(v1), 5328b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), 5338b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), 5348b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v16_(v16) {} 5358b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 5368b92989c89bec8632aa47dc58dc162f199d62edcJames Zern template <typename T> 5378b92989c89bec8632aa47dc58dc162f199d62edcJames Zern operator ParamGenerator<T>() const { 5388b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 5398b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 5408b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 5418b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), 5428b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), 5438b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v15_), static_cast<T>(v16_)}; 5448b92989c89bec8632aa47dc58dc162f199d62edcJames Zern return ValuesIn(array); 5458b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 5468b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 5478b92989c89bec8632aa47dc58dc162f199d62edcJames Zern private: 5488b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // No implementation - assignment is unsupported. 5498b92989c89bec8632aa47dc58dc162f199d62edcJames Zern void operator=(const ValueArray16& other); 5508b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 5518b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T1 v1_; 5528b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T2 v2_; 5538b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T3 v3_; 5548b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T4 v4_; 5558b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T5 v5_; 5568b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T6 v6_; 5578b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T7 v7_; 5588b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T8 v8_; 5598b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T9 v9_; 5608b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T10 v10_; 5618b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T11 v11_; 5628b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T12 v12_; 5638b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T13 v13_; 5648b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T14 v14_; 5658b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T15 v15_; 5668b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T16 v16_; 5678b92989c89bec8632aa47dc58dc162f199d62edcJames Zern}; 5688b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 5698b92989c89bec8632aa47dc58dc162f199d62edcJames Zerntemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 5708b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T6, typename T7, typename T8, typename T9, typename T10, 5718b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T11, typename T12, typename T13, typename T14, typename T15, 5728b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T16, typename T17> 5738b92989c89bec8632aa47dc58dc162f199d62edcJames Zernclass ValueArray17 { 5748b92989c89bec8632aa47dc58dc162f199d62edcJames Zern public: 5758b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ValueArray17(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 5768b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, 5778b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T17 v17) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), 5788b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), 5798b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v15_(v15), v16_(v16), v17_(v17) {} 5808b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 5818b92989c89bec8632aa47dc58dc162f199d62edcJames Zern template <typename T> 5828b92989c89bec8632aa47dc58dc162f199d62edcJames Zern operator ParamGenerator<T>() const { 5838b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 5848b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 5858b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 5868b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), 5878b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), 5888b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_)}; 5898b92989c89bec8632aa47dc58dc162f199d62edcJames Zern return ValuesIn(array); 5908b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 5918b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 5928b92989c89bec8632aa47dc58dc162f199d62edcJames Zern private: 5938b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // No implementation - assignment is unsupported. 5948b92989c89bec8632aa47dc58dc162f199d62edcJames Zern void operator=(const ValueArray17& other); 5958b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 5968b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T1 v1_; 5978b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T2 v2_; 5988b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T3 v3_; 5998b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T4 v4_; 6008b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T5 v5_; 6018b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T6 v6_; 6028b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T7 v7_; 6038b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T8 v8_; 6048b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T9 v9_; 6058b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T10 v10_; 6068b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T11 v11_; 6078b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T12 v12_; 6088b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T13 v13_; 6098b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T14 v14_; 6108b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T15 v15_; 6118b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T16 v16_; 6128b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T17 v17_; 6138b92989c89bec8632aa47dc58dc162f199d62edcJames Zern}; 6148b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 6158b92989c89bec8632aa47dc58dc162f199d62edcJames Zerntemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 6168b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T6, typename T7, typename T8, typename T9, typename T10, 6178b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T11, typename T12, typename T13, typename T14, typename T15, 6188b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T16, typename T17, typename T18> 6198b92989c89bec8632aa47dc58dc162f199d62edcJames Zernclass ValueArray18 { 6208b92989c89bec8632aa47dc58dc162f199d62edcJames Zern public: 6218b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ValueArray18(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 6228b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 6238b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T18 v18) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), 6248b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), 6258b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v15_(v15), v16_(v16), v17_(v17), v18_(v18) {} 6268b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 6278b92989c89bec8632aa47dc58dc162f199d62edcJames Zern template <typename T> 6288b92989c89bec8632aa47dc58dc162f199d62edcJames Zern operator ParamGenerator<T>() const { 6298b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 6308b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 6318b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 6328b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), 6338b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), 6348b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), 6358b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v18_)}; 6368b92989c89bec8632aa47dc58dc162f199d62edcJames Zern return ValuesIn(array); 6378b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 6388b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 6398b92989c89bec8632aa47dc58dc162f199d62edcJames Zern private: 6408b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // No implementation - assignment is unsupported. 6418b92989c89bec8632aa47dc58dc162f199d62edcJames Zern void operator=(const ValueArray18& other); 6428b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 6438b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T1 v1_; 6448b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T2 v2_; 6458b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T3 v3_; 6468b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T4 v4_; 6478b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T5 v5_; 6488b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T6 v6_; 6498b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T7 v7_; 6508b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T8 v8_; 6518b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T9 v9_; 6528b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T10 v10_; 6538b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T11 v11_; 6548b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T12 v12_; 6558b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T13 v13_; 6568b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T14 v14_; 6578b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T15 v15_; 6588b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T16 v16_; 6598b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T17 v17_; 6608b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T18 v18_; 6618b92989c89bec8632aa47dc58dc162f199d62edcJames Zern}; 6628b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 6638b92989c89bec8632aa47dc58dc162f199d62edcJames Zerntemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 6648b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T6, typename T7, typename T8, typename T9, typename T10, 6658b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T11, typename T12, typename T13, typename T14, typename T15, 6668b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T16, typename T17, typename T18, typename T19> 6678b92989c89bec8632aa47dc58dc162f199d62edcJames Zernclass ValueArray19 { 6688b92989c89bec8632aa47dc58dc162f199d62edcJames Zern public: 6698b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ValueArray19(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 6708b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 6718b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T18 v18, T19 v19) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), 6728b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), 6738b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19) {} 6748b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 6758b92989c89bec8632aa47dc58dc162f199d62edcJames Zern template <typename T> 6768b92989c89bec8632aa47dc58dc162f199d62edcJames Zern operator ParamGenerator<T>() const { 6778b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 6788b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 6798b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 6808b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), 6818b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), 6828b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), 6838b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v18_), static_cast<T>(v19_)}; 6848b92989c89bec8632aa47dc58dc162f199d62edcJames Zern return ValuesIn(array); 6858b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 6868b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 6878b92989c89bec8632aa47dc58dc162f199d62edcJames Zern private: 6888b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // No implementation - assignment is unsupported. 6898b92989c89bec8632aa47dc58dc162f199d62edcJames Zern void operator=(const ValueArray19& other); 6908b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 6918b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T1 v1_; 6928b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T2 v2_; 6938b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T3 v3_; 6948b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T4 v4_; 6958b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T5 v5_; 6968b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T6 v6_; 6978b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T7 v7_; 6988b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T8 v8_; 6998b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T9 v9_; 7008b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T10 v10_; 7018b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T11 v11_; 7028b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T12 v12_; 7038b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T13 v13_; 7048b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T14 v14_; 7058b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T15 v15_; 7068b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T16 v16_; 7078b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T17 v17_; 7088b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T18 v18_; 7098b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T19 v19_; 7108b92989c89bec8632aa47dc58dc162f199d62edcJames Zern}; 7118b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 7128b92989c89bec8632aa47dc58dc162f199d62edcJames Zerntemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 7138b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T6, typename T7, typename T8, typename T9, typename T10, 7148b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T11, typename T12, typename T13, typename T14, typename T15, 7158b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T16, typename T17, typename T18, typename T19, typename T20> 7168b92989c89bec8632aa47dc58dc162f199d62edcJames Zernclass ValueArray20 { 7178b92989c89bec8632aa47dc58dc162f199d62edcJames Zern public: 7188b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ValueArray20(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 7198b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 7208b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T18 v18, T19 v19, T20 v20) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), 7218b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), 7228b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18), 7238b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v19_(v19), v20_(v20) {} 7248b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 7258b92989c89bec8632aa47dc58dc162f199d62edcJames Zern template <typename T> 7268b92989c89bec8632aa47dc58dc162f199d62edcJames Zern operator ParamGenerator<T>() const { 7278b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 7288b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 7298b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 7308b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), 7318b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), 7328b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), 7338b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_)}; 7348b92989c89bec8632aa47dc58dc162f199d62edcJames Zern return ValuesIn(array); 7358b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 7368b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 7378b92989c89bec8632aa47dc58dc162f199d62edcJames Zern private: 7388b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // No implementation - assignment is unsupported. 7398b92989c89bec8632aa47dc58dc162f199d62edcJames Zern void operator=(const ValueArray20& other); 7408b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 7418b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T1 v1_; 7428b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T2 v2_; 7438b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T3 v3_; 7448b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T4 v4_; 7458b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T5 v5_; 7468b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T6 v6_; 7478b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T7 v7_; 7488b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T8 v8_; 7498b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T9 v9_; 7508b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T10 v10_; 7518b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T11 v11_; 7528b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T12 v12_; 7538b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T13 v13_; 7548b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T14 v14_; 7558b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T15 v15_; 7568b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T16 v16_; 7578b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T17 v17_; 7588b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T18 v18_; 7598b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T19 v19_; 7608b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T20 v20_; 7618b92989c89bec8632aa47dc58dc162f199d62edcJames Zern}; 7628b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 7638b92989c89bec8632aa47dc58dc162f199d62edcJames Zerntemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 7648b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T6, typename T7, typename T8, typename T9, typename T10, 7658b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T11, typename T12, typename T13, typename T14, typename T15, 7668b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T16, typename T17, typename T18, typename T19, typename T20, 7678b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T21> 7688b92989c89bec8632aa47dc58dc162f199d62edcJames Zernclass ValueArray21 { 7698b92989c89bec8632aa47dc58dc162f199d62edcJames Zern public: 7708b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ValueArray21(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 7718b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 7728b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T18 v18, T19 v19, T20 v20, T21 v21) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), 7738b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), 7748b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17), 7758b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v18_(v18), v19_(v19), v20_(v20), v21_(v21) {} 7768b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 7778b92989c89bec8632aa47dc58dc162f199d62edcJames Zern template <typename T> 7788b92989c89bec8632aa47dc58dc162f199d62edcJames Zern operator ParamGenerator<T>() const { 7798b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 7808b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 7818b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 7828b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), 7838b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), 7848b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), 7858b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), 7868b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v21_)}; 7878b92989c89bec8632aa47dc58dc162f199d62edcJames Zern return ValuesIn(array); 7888b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 7898b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 7908b92989c89bec8632aa47dc58dc162f199d62edcJames Zern private: 7918b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // No implementation - assignment is unsupported. 7928b92989c89bec8632aa47dc58dc162f199d62edcJames Zern void operator=(const ValueArray21& other); 7938b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 7948b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T1 v1_; 7958b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T2 v2_; 7968b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T3 v3_; 7978b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T4 v4_; 7988b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T5 v5_; 7998b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T6 v6_; 8008b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T7 v7_; 8018b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T8 v8_; 8028b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T9 v9_; 8038b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T10 v10_; 8048b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T11 v11_; 8058b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T12 v12_; 8068b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T13 v13_; 8078b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T14 v14_; 8088b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T15 v15_; 8098b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T16 v16_; 8108b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T17 v17_; 8118b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T18 v18_; 8128b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T19 v19_; 8138b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T20 v20_; 8148b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T21 v21_; 8158b92989c89bec8632aa47dc58dc162f199d62edcJames Zern}; 8168b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 8178b92989c89bec8632aa47dc58dc162f199d62edcJames Zerntemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 8188b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T6, typename T7, typename T8, typename T9, typename T10, 8198b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T11, typename T12, typename T13, typename T14, typename T15, 8208b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T16, typename T17, typename T18, typename T19, typename T20, 8218b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T21, typename T22> 8228b92989c89bec8632aa47dc58dc162f199d62edcJames Zernclass ValueArray22 { 8238b92989c89bec8632aa47dc58dc162f199d62edcJames Zern public: 8248b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ValueArray22(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 8258b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 8268b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T18 v18, T19 v19, T20 v20, T21 v21, T22 v22) : v1_(v1), v2_(v2), v3_(v3), 8278b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), 8288b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), 8298b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22) {} 8308b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 8318b92989c89bec8632aa47dc58dc162f199d62edcJames Zern template <typename T> 8328b92989c89bec8632aa47dc58dc162f199d62edcJames Zern operator ParamGenerator<T>() const { 8338b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 8348b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 8358b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 8368b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), 8378b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), 8388b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), 8398b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), 8408b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v21_), static_cast<T>(v22_)}; 8418b92989c89bec8632aa47dc58dc162f199d62edcJames Zern return ValuesIn(array); 8428b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 8438b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 8448b92989c89bec8632aa47dc58dc162f199d62edcJames Zern private: 8458b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // No implementation - assignment is unsupported. 8468b92989c89bec8632aa47dc58dc162f199d62edcJames Zern void operator=(const ValueArray22& other); 8478b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 8488b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T1 v1_; 8498b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T2 v2_; 8508b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T3 v3_; 8518b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T4 v4_; 8528b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T5 v5_; 8538b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T6 v6_; 8548b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T7 v7_; 8558b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T8 v8_; 8568b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T9 v9_; 8578b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T10 v10_; 8588b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T11 v11_; 8598b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T12 v12_; 8608b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T13 v13_; 8618b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T14 v14_; 8628b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T15 v15_; 8638b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T16 v16_; 8648b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T17 v17_; 8658b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T18 v18_; 8668b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T19 v19_; 8678b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T20 v20_; 8688b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T21 v21_; 8698b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T22 v22_; 8708b92989c89bec8632aa47dc58dc162f199d62edcJames Zern}; 8718b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 8728b92989c89bec8632aa47dc58dc162f199d62edcJames Zerntemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 8738b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T6, typename T7, typename T8, typename T9, typename T10, 8748b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T11, typename T12, typename T13, typename T14, typename T15, 8758b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T16, typename T17, typename T18, typename T19, typename T20, 8768b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T21, typename T22, typename T23> 8778b92989c89bec8632aa47dc58dc162f199d62edcJames Zernclass ValueArray23 { 8788b92989c89bec8632aa47dc58dc162f199d62edcJames Zern public: 8798b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ValueArray23(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 8808b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 8818b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23) : v1_(v1), v2_(v2), 8828b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), 8838b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), 8848b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), 8858b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v23_(v23) {} 8868b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 8878b92989c89bec8632aa47dc58dc162f199d62edcJames Zern template <typename T> 8888b92989c89bec8632aa47dc58dc162f199d62edcJames Zern operator ParamGenerator<T>() const { 8898b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 8908b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 8918b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 8928b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), 8938b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), 8948b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), 8958b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), 8968b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_)}; 8978b92989c89bec8632aa47dc58dc162f199d62edcJames Zern return ValuesIn(array); 8988b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 8998b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 9008b92989c89bec8632aa47dc58dc162f199d62edcJames Zern private: 9018b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // No implementation - assignment is unsupported. 9028b92989c89bec8632aa47dc58dc162f199d62edcJames Zern void operator=(const ValueArray23& other); 9038b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 9048b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T1 v1_; 9058b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T2 v2_; 9068b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T3 v3_; 9078b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T4 v4_; 9088b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T5 v5_; 9098b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T6 v6_; 9108b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T7 v7_; 9118b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T8 v8_; 9128b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T9 v9_; 9138b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T10 v10_; 9148b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T11 v11_; 9158b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T12 v12_; 9168b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T13 v13_; 9178b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T14 v14_; 9188b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T15 v15_; 9198b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T16 v16_; 9208b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T17 v17_; 9218b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T18 v18_; 9228b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T19 v19_; 9238b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T20 v20_; 9248b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T21 v21_; 9258b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T22 v22_; 9268b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T23 v23_; 9278b92989c89bec8632aa47dc58dc162f199d62edcJames Zern}; 9288b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 9298b92989c89bec8632aa47dc58dc162f199d62edcJames Zerntemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 9308b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T6, typename T7, typename T8, typename T9, typename T10, 9318b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T11, typename T12, typename T13, typename T14, typename T15, 9328b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T16, typename T17, typename T18, typename T19, typename T20, 9338b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T21, typename T22, typename T23, typename T24> 9348b92989c89bec8632aa47dc58dc162f199d62edcJames Zernclass ValueArray24 { 9358b92989c89bec8632aa47dc58dc162f199d62edcJames Zern public: 9368b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ValueArray24(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 9378b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 9388b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24) : v1_(v1), 9398b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), 9408b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), 9418b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), 9428b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v22_(v22), v23_(v23), v24_(v24) {} 9438b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 9448b92989c89bec8632aa47dc58dc162f199d62edcJames Zern template <typename T> 9458b92989c89bec8632aa47dc58dc162f199d62edcJames Zern operator ParamGenerator<T>() const { 9468b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 9478b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 9488b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 9498b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), 9508b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), 9518b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), 9528b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), 9538b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), 9548b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v24_)}; 9558b92989c89bec8632aa47dc58dc162f199d62edcJames Zern return ValuesIn(array); 9568b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 9578b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 9588b92989c89bec8632aa47dc58dc162f199d62edcJames Zern private: 9598b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // No implementation - assignment is unsupported. 9608b92989c89bec8632aa47dc58dc162f199d62edcJames Zern void operator=(const ValueArray24& other); 9618b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 9628b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T1 v1_; 9638b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T2 v2_; 9648b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T3 v3_; 9658b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T4 v4_; 9668b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T5 v5_; 9678b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T6 v6_; 9688b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T7 v7_; 9698b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T8 v8_; 9708b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T9 v9_; 9718b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T10 v10_; 9728b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T11 v11_; 9738b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T12 v12_; 9748b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T13 v13_; 9758b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T14 v14_; 9768b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T15 v15_; 9778b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T16 v16_; 9788b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T17 v17_; 9798b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T18 v18_; 9808b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T19 v19_; 9818b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T20 v20_; 9828b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T21 v21_; 9838b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T22 v22_; 9848b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T23 v23_; 9858b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T24 v24_; 9868b92989c89bec8632aa47dc58dc162f199d62edcJames Zern}; 9878b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 9888b92989c89bec8632aa47dc58dc162f199d62edcJames Zerntemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 9898b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T6, typename T7, typename T8, typename T9, typename T10, 9908b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T11, typename T12, typename T13, typename T14, typename T15, 9918b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T16, typename T17, typename T18, typename T19, typename T20, 9928b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T21, typename T22, typename T23, typename T24, typename T25> 9938b92989c89bec8632aa47dc58dc162f199d62edcJames Zernclass ValueArray25 { 9948b92989c89bec8632aa47dc58dc162f199d62edcJames Zern public: 9958b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ValueArray25(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 9968b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 9978b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, 9988b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T25 v25) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), 9998b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), 10008b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), 10018b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25) {} 10028b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 10038b92989c89bec8632aa47dc58dc162f199d62edcJames Zern template <typename T> 10048b92989c89bec8632aa47dc58dc162f199d62edcJames Zern operator ParamGenerator<T>() const { 10058b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 10068b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 10078b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 10088b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), 10098b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), 10108b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), 10118b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), 10128b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), 10138b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v24_), static_cast<T>(v25_)}; 10148b92989c89bec8632aa47dc58dc162f199d62edcJames Zern return ValuesIn(array); 10158b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 10168b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 10178b92989c89bec8632aa47dc58dc162f199d62edcJames Zern private: 10188b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // No implementation - assignment is unsupported. 10198b92989c89bec8632aa47dc58dc162f199d62edcJames Zern void operator=(const ValueArray25& other); 10208b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 10218b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T1 v1_; 10228b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T2 v2_; 10238b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T3 v3_; 10248b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T4 v4_; 10258b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T5 v5_; 10268b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T6 v6_; 10278b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T7 v7_; 10288b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T8 v8_; 10298b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T9 v9_; 10308b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T10 v10_; 10318b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T11 v11_; 10328b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T12 v12_; 10338b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T13 v13_; 10348b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T14 v14_; 10358b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T15 v15_; 10368b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T16 v16_; 10378b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T17 v17_; 10388b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T18 v18_; 10398b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T19 v19_; 10408b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T20 v20_; 10418b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T21 v21_; 10428b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T22 v22_; 10438b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T23 v23_; 10448b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T24 v24_; 10458b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T25 v25_; 10468b92989c89bec8632aa47dc58dc162f199d62edcJames Zern}; 10478b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 10488b92989c89bec8632aa47dc58dc162f199d62edcJames Zerntemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 10498b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T6, typename T7, typename T8, typename T9, typename T10, 10508b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T11, typename T12, typename T13, typename T14, typename T15, 10518b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T16, typename T17, typename T18, typename T19, typename T20, 10528b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T21, typename T22, typename T23, typename T24, typename T25, 10538b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T26> 10548b92989c89bec8632aa47dc58dc162f199d62edcJames Zernclass ValueArray26 { 10558b92989c89bec8632aa47dc58dc162f199d62edcJames Zern public: 10568b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ValueArray26(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 10578b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 10588b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 10598b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T26 v26) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), 10608b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), 10618b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), 10628b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26) {} 10638b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 10648b92989c89bec8632aa47dc58dc162f199d62edcJames Zern template <typename T> 10658b92989c89bec8632aa47dc58dc162f199d62edcJames Zern operator ParamGenerator<T>() const { 10668b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 10678b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 10688b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 10698b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), 10708b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), 10718b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), 10728b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), 10738b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), 10748b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_)}; 10758b92989c89bec8632aa47dc58dc162f199d62edcJames Zern return ValuesIn(array); 10768b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 10778b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 10788b92989c89bec8632aa47dc58dc162f199d62edcJames Zern private: 10798b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // No implementation - assignment is unsupported. 10808b92989c89bec8632aa47dc58dc162f199d62edcJames Zern void operator=(const ValueArray26& other); 10818b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 10828b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T1 v1_; 10838b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T2 v2_; 10848b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T3 v3_; 10858b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T4 v4_; 10868b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T5 v5_; 10878b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T6 v6_; 10888b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T7 v7_; 10898b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T8 v8_; 10908b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T9 v9_; 10918b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T10 v10_; 10928b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T11 v11_; 10938b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T12 v12_; 10948b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T13 v13_; 10958b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T14 v14_; 10968b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T15 v15_; 10978b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T16 v16_; 10988b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T17 v17_; 10998b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T18 v18_; 11008b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T19 v19_; 11018b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T20 v20_; 11028b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T21 v21_; 11038b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T22 v22_; 11048b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T23 v23_; 11058b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T24 v24_; 11068b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T25 v25_; 11078b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T26 v26_; 11088b92989c89bec8632aa47dc58dc162f199d62edcJames Zern}; 11098b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 11108b92989c89bec8632aa47dc58dc162f199d62edcJames Zerntemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 11118b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T6, typename T7, typename T8, typename T9, typename T10, 11128b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T11, typename T12, typename T13, typename T14, typename T15, 11138b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T16, typename T17, typename T18, typename T19, typename T20, 11148b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T21, typename T22, typename T23, typename T24, typename T25, 11158b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T26, typename T27> 11168b92989c89bec8632aa47dc58dc162f199d62edcJames Zernclass ValueArray27 { 11178b92989c89bec8632aa47dc58dc162f199d62edcJames Zern public: 11188b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ValueArray27(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 11198b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 11208b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 11218b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T26 v26, T27 v27) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), 11228b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), 11238b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), 11248b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v20_(v20), v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), 11258b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v26_(v26), v27_(v27) {} 11268b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 11278b92989c89bec8632aa47dc58dc162f199d62edcJames Zern template <typename T> 11288b92989c89bec8632aa47dc58dc162f199d62edcJames Zern operator ParamGenerator<T>() const { 11298b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 11308b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 11318b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 11328b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), 11338b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), 11348b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), 11358b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), 11368b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), 11378b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_), 11388b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v27_)}; 11398b92989c89bec8632aa47dc58dc162f199d62edcJames Zern return ValuesIn(array); 11408b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 11418b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 11428b92989c89bec8632aa47dc58dc162f199d62edcJames Zern private: 11438b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // No implementation - assignment is unsupported. 11448b92989c89bec8632aa47dc58dc162f199d62edcJames Zern void operator=(const ValueArray27& other); 11458b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 11468b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T1 v1_; 11478b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T2 v2_; 11488b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T3 v3_; 11498b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T4 v4_; 11508b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T5 v5_; 11518b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T6 v6_; 11528b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T7 v7_; 11538b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T8 v8_; 11548b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T9 v9_; 11558b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T10 v10_; 11568b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T11 v11_; 11578b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T12 v12_; 11588b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T13 v13_; 11598b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T14 v14_; 11608b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T15 v15_; 11618b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T16 v16_; 11628b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T17 v17_; 11638b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T18 v18_; 11648b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T19 v19_; 11658b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T20 v20_; 11668b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T21 v21_; 11678b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T22 v22_; 11688b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T23 v23_; 11698b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T24 v24_; 11708b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T25 v25_; 11718b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T26 v26_; 11728b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T27 v27_; 11738b92989c89bec8632aa47dc58dc162f199d62edcJames Zern}; 11748b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 11758b92989c89bec8632aa47dc58dc162f199d62edcJames Zerntemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 11768b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T6, typename T7, typename T8, typename T9, typename T10, 11778b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T11, typename T12, typename T13, typename T14, typename T15, 11788b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T16, typename T17, typename T18, typename T19, typename T20, 11798b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T21, typename T22, typename T23, typename T24, typename T25, 11808b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T26, typename T27, typename T28> 11818b92989c89bec8632aa47dc58dc162f199d62edcJames Zernclass ValueArray28 { 11828b92989c89bec8632aa47dc58dc162f199d62edcJames Zern public: 11838b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ValueArray28(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 11848b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 11858b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 11868b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T26 v26, T27 v27, T28 v28) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), 11878b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), 11888b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18), 11898b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v19_(v19), v20_(v20), v21_(v21), v22_(v22), v23_(v23), v24_(v24), 11908b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v25_(v25), v26_(v26), v27_(v27), v28_(v28) {} 11918b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 11928b92989c89bec8632aa47dc58dc162f199d62edcJames Zern template <typename T> 11938b92989c89bec8632aa47dc58dc162f199d62edcJames Zern operator ParamGenerator<T>() const { 11948b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 11958b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 11968b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 11978b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), 11988b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), 11998b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), 12008b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), 12018b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), 12028b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_), 12038b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v27_), static_cast<T>(v28_)}; 12048b92989c89bec8632aa47dc58dc162f199d62edcJames Zern return ValuesIn(array); 12058b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 12068b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 12078b92989c89bec8632aa47dc58dc162f199d62edcJames Zern private: 12088b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // No implementation - assignment is unsupported. 12098b92989c89bec8632aa47dc58dc162f199d62edcJames Zern void operator=(const ValueArray28& other); 12108b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 12118b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T1 v1_; 12128b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T2 v2_; 12138b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T3 v3_; 12148b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T4 v4_; 12158b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T5 v5_; 12168b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T6 v6_; 12178b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T7 v7_; 12188b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T8 v8_; 12198b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T9 v9_; 12208b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T10 v10_; 12218b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T11 v11_; 12228b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T12 v12_; 12238b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T13 v13_; 12248b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T14 v14_; 12258b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T15 v15_; 12268b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T16 v16_; 12278b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T17 v17_; 12288b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T18 v18_; 12298b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T19 v19_; 12308b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T20 v20_; 12318b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T21 v21_; 12328b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T22 v22_; 12338b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T23 v23_; 12348b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T24 v24_; 12358b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T25 v25_; 12368b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T26 v26_; 12378b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T27 v27_; 12388b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T28 v28_; 12398b92989c89bec8632aa47dc58dc162f199d62edcJames Zern}; 12408b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 12418b92989c89bec8632aa47dc58dc162f199d62edcJames Zerntemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 12428b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T6, typename T7, typename T8, typename T9, typename T10, 12438b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T11, typename T12, typename T13, typename T14, typename T15, 12448b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T16, typename T17, typename T18, typename T19, typename T20, 12458b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T21, typename T22, typename T23, typename T24, typename T25, 12468b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T26, typename T27, typename T28, typename T29> 12478b92989c89bec8632aa47dc58dc162f199d62edcJames Zernclass ValueArray29 { 12488b92989c89bec8632aa47dc58dc162f199d62edcJames Zern public: 12498b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ValueArray29(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 12508b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 12518b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 12528b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T26 v26, T27 v27, T28 v28, T29 v29) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), 12538b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), 12548b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17), 12558b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), v23_(v23), 12568b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28), v29_(v29) {} 12578b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 12588b92989c89bec8632aa47dc58dc162f199d62edcJames Zern template <typename T> 12598b92989c89bec8632aa47dc58dc162f199d62edcJames Zern operator ParamGenerator<T>() const { 12608b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 12618b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 12628b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 12638b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), 12648b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), 12658b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), 12668b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), 12678b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), 12688b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_), 12698b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_)}; 12708b92989c89bec8632aa47dc58dc162f199d62edcJames Zern return ValuesIn(array); 12718b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 12728b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 12738b92989c89bec8632aa47dc58dc162f199d62edcJames Zern private: 12748b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // No implementation - assignment is unsupported. 12758b92989c89bec8632aa47dc58dc162f199d62edcJames Zern void operator=(const ValueArray29& other); 12768b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 12778b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T1 v1_; 12788b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T2 v2_; 12798b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T3 v3_; 12808b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T4 v4_; 12818b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T5 v5_; 12828b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T6 v6_; 12838b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T7 v7_; 12848b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T8 v8_; 12858b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T9 v9_; 12868b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T10 v10_; 12878b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T11 v11_; 12888b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T12 v12_; 12898b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T13 v13_; 12908b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T14 v14_; 12918b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T15 v15_; 12928b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T16 v16_; 12938b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T17 v17_; 12948b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T18 v18_; 12958b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T19 v19_; 12968b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T20 v20_; 12978b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T21 v21_; 12988b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T22 v22_; 12998b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T23 v23_; 13008b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T24 v24_; 13018b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T25 v25_; 13028b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T26 v26_; 13038b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T27 v27_; 13048b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T28 v28_; 13058b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T29 v29_; 13068b92989c89bec8632aa47dc58dc162f199d62edcJames Zern}; 13078b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 13088b92989c89bec8632aa47dc58dc162f199d62edcJames Zerntemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 13098b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T6, typename T7, typename T8, typename T9, typename T10, 13108b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T11, typename T12, typename T13, typename T14, typename T15, 13118b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T16, typename T17, typename T18, typename T19, typename T20, 13128b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T21, typename T22, typename T23, typename T24, typename T25, 13138b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T26, typename T27, typename T28, typename T29, typename T30> 13148b92989c89bec8632aa47dc58dc162f199d62edcJames Zernclass ValueArray30 { 13158b92989c89bec8632aa47dc58dc162f199d62edcJames Zern public: 13168b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ValueArray30(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 13178b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 13188b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 13198b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T26 v26, T27 v27, T28 v28, T29 v29, T30 v30) : v1_(v1), v2_(v2), v3_(v3), 13208b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), 13218b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), 13228b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), 13238b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28), 13248b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v29_(v29), v30_(v30) {} 13258b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 13268b92989c89bec8632aa47dc58dc162f199d62edcJames Zern template <typename T> 13278b92989c89bec8632aa47dc58dc162f199d62edcJames Zern operator ParamGenerator<T>() const { 13288b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 13298b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 13308b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 13318b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), 13328b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), 13338b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), 13348b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), 13358b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), 13368b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_), 13378b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_), 13388b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v30_)}; 13398b92989c89bec8632aa47dc58dc162f199d62edcJames Zern return ValuesIn(array); 13408b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 13418b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 13428b92989c89bec8632aa47dc58dc162f199d62edcJames Zern private: 13438b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // No implementation - assignment is unsupported. 13448b92989c89bec8632aa47dc58dc162f199d62edcJames Zern void operator=(const ValueArray30& other); 13458b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 13468b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T1 v1_; 13478b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T2 v2_; 13488b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T3 v3_; 13498b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T4 v4_; 13508b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T5 v5_; 13518b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T6 v6_; 13528b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T7 v7_; 13538b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T8 v8_; 13548b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T9 v9_; 13558b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T10 v10_; 13568b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T11 v11_; 13578b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T12 v12_; 13588b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T13 v13_; 13598b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T14 v14_; 13608b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T15 v15_; 13618b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T16 v16_; 13628b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T17 v17_; 13638b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T18 v18_; 13648b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T19 v19_; 13658b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T20 v20_; 13668b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T21 v21_; 13678b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T22 v22_; 13688b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T23 v23_; 13698b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T24 v24_; 13708b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T25 v25_; 13718b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T26 v26_; 13728b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T27 v27_; 13738b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T28 v28_; 13748b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T29 v29_; 13758b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T30 v30_; 13768b92989c89bec8632aa47dc58dc162f199d62edcJames Zern}; 13778b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 13788b92989c89bec8632aa47dc58dc162f199d62edcJames Zerntemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 13798b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T6, typename T7, typename T8, typename T9, typename T10, 13808b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T11, typename T12, typename T13, typename T14, typename T15, 13818b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T16, typename T17, typename T18, typename T19, typename T20, 13828b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T21, typename T22, typename T23, typename T24, typename T25, 13838b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T26, typename T27, typename T28, typename T29, typename T30, 13848b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T31> 13858b92989c89bec8632aa47dc58dc162f199d62edcJames Zernclass ValueArray31 { 13868b92989c89bec8632aa47dc58dc162f199d62edcJames Zern public: 13878b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ValueArray31(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 13888b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 13898b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 13908b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31) : v1_(v1), v2_(v2), 13918b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), 13928b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), 13938b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), 13948b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28), 13958b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v29_(v29), v30_(v30), v31_(v31) {} 13968b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 13978b92989c89bec8632aa47dc58dc162f199d62edcJames Zern template <typename T> 13988b92989c89bec8632aa47dc58dc162f199d62edcJames Zern operator ParamGenerator<T>() const { 13998b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 14008b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 14018b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 14028b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), 14038b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), 14048b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), 14058b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), 14068b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), 14078b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_), 14088b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_), 14098b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v30_), static_cast<T>(v31_)}; 14108b92989c89bec8632aa47dc58dc162f199d62edcJames Zern return ValuesIn(array); 14118b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 14128b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 14138b92989c89bec8632aa47dc58dc162f199d62edcJames Zern private: 14148b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // No implementation - assignment is unsupported. 14158b92989c89bec8632aa47dc58dc162f199d62edcJames Zern void operator=(const ValueArray31& other); 14168b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 14178b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T1 v1_; 14188b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T2 v2_; 14198b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T3 v3_; 14208b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T4 v4_; 14218b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T5 v5_; 14228b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T6 v6_; 14238b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T7 v7_; 14248b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T8 v8_; 14258b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T9 v9_; 14268b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T10 v10_; 14278b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T11 v11_; 14288b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T12 v12_; 14298b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T13 v13_; 14308b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T14 v14_; 14318b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T15 v15_; 14328b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T16 v16_; 14338b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T17 v17_; 14348b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T18 v18_; 14358b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T19 v19_; 14368b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T20 v20_; 14378b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T21 v21_; 14388b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T22 v22_; 14398b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T23 v23_; 14408b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T24 v24_; 14418b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T25 v25_; 14428b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T26 v26_; 14438b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T27 v27_; 14448b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T28 v28_; 14458b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T29 v29_; 14468b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T30 v30_; 14478b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T31 v31_; 14488b92989c89bec8632aa47dc58dc162f199d62edcJames Zern}; 14498b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 14508b92989c89bec8632aa47dc58dc162f199d62edcJames Zerntemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 14518b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T6, typename T7, typename T8, typename T9, typename T10, 14528b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T11, typename T12, typename T13, typename T14, typename T15, 14538b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T16, typename T17, typename T18, typename T19, typename T20, 14548b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T21, typename T22, typename T23, typename T24, typename T25, 14558b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T26, typename T27, typename T28, typename T29, typename T30, 14568b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T31, typename T32> 14578b92989c89bec8632aa47dc58dc162f199d62edcJames Zernclass ValueArray32 { 14588b92989c89bec8632aa47dc58dc162f199d62edcJames Zern public: 14598b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ValueArray32(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 14608b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 14618b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 14628b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32) : v1_(v1), 14638b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), 14648b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), 14658b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), 14668b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), 14678b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32) {} 14688b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 14698b92989c89bec8632aa47dc58dc162f199d62edcJames Zern template <typename T> 14708b92989c89bec8632aa47dc58dc162f199d62edcJames Zern operator ParamGenerator<T>() const { 14718b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 14728b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 14738b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 14748b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), 14758b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), 14768b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), 14778b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), 14788b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), 14798b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_), 14808b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_), 14818b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_)}; 14828b92989c89bec8632aa47dc58dc162f199d62edcJames Zern return ValuesIn(array); 14838b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 14848b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 14858b92989c89bec8632aa47dc58dc162f199d62edcJames Zern private: 14868b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // No implementation - assignment is unsupported. 14878b92989c89bec8632aa47dc58dc162f199d62edcJames Zern void operator=(const ValueArray32& other); 14888b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 14898b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T1 v1_; 14908b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T2 v2_; 14918b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T3 v3_; 14928b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T4 v4_; 14938b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T5 v5_; 14948b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T6 v6_; 14958b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T7 v7_; 14968b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T8 v8_; 14978b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T9 v9_; 14988b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T10 v10_; 14998b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T11 v11_; 15008b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T12 v12_; 15018b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T13 v13_; 15028b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T14 v14_; 15038b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T15 v15_; 15048b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T16 v16_; 15058b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T17 v17_; 15068b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T18 v18_; 15078b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T19 v19_; 15088b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T20 v20_; 15098b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T21 v21_; 15108b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T22 v22_; 15118b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T23 v23_; 15128b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T24 v24_; 15138b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T25 v25_; 15148b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T26 v26_; 15158b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T27 v27_; 15168b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T28 v28_; 15178b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T29 v29_; 15188b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T30 v30_; 15198b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T31 v31_; 15208b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T32 v32_; 15218b92989c89bec8632aa47dc58dc162f199d62edcJames Zern}; 15228b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 15238b92989c89bec8632aa47dc58dc162f199d62edcJames Zerntemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 15248b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T6, typename T7, typename T8, typename T9, typename T10, 15258b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T11, typename T12, typename T13, typename T14, typename T15, 15268b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T16, typename T17, typename T18, typename T19, typename T20, 15278b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T21, typename T22, typename T23, typename T24, typename T25, 15288b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T26, typename T27, typename T28, typename T29, typename T30, 15298b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T31, typename T32, typename T33> 15308b92989c89bec8632aa47dc58dc162f199d62edcJames Zernclass ValueArray33 { 15318b92989c89bec8632aa47dc58dc162f199d62edcJames Zern public: 15328b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ValueArray33(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 15338b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 15348b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 15358b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, 15368b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T33 v33) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), 15378b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), 15388b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), 15398b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26), 15408b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32), 15418b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v33_(v33) {} 15428b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 15438b92989c89bec8632aa47dc58dc162f199d62edcJames Zern template <typename T> 15448b92989c89bec8632aa47dc58dc162f199d62edcJames Zern operator ParamGenerator<T>() const { 15458b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 15468b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 15478b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 15488b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), 15498b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), 15508b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), 15518b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), 15528b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), 15538b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_), 15548b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_), 15558b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_), 15568b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v33_)}; 15578b92989c89bec8632aa47dc58dc162f199d62edcJames Zern return ValuesIn(array); 15588b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 15598b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 15608b92989c89bec8632aa47dc58dc162f199d62edcJames Zern private: 15618b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // No implementation - assignment is unsupported. 15628b92989c89bec8632aa47dc58dc162f199d62edcJames Zern void operator=(const ValueArray33& other); 15638b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 15648b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T1 v1_; 15658b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T2 v2_; 15668b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T3 v3_; 15678b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T4 v4_; 15688b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T5 v5_; 15698b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T6 v6_; 15708b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T7 v7_; 15718b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T8 v8_; 15728b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T9 v9_; 15738b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T10 v10_; 15748b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T11 v11_; 15758b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T12 v12_; 15768b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T13 v13_; 15778b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T14 v14_; 15788b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T15 v15_; 15798b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T16 v16_; 15808b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T17 v17_; 15818b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T18 v18_; 15828b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T19 v19_; 15838b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T20 v20_; 15848b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T21 v21_; 15858b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T22 v22_; 15868b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T23 v23_; 15878b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T24 v24_; 15888b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T25 v25_; 15898b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T26 v26_; 15908b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T27 v27_; 15918b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T28 v28_; 15928b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T29 v29_; 15938b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T30 v30_; 15948b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T31 v31_; 15958b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T32 v32_; 15968b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T33 v33_; 15978b92989c89bec8632aa47dc58dc162f199d62edcJames Zern}; 15988b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 15998b92989c89bec8632aa47dc58dc162f199d62edcJames Zerntemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 16008b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T6, typename T7, typename T8, typename T9, typename T10, 16018b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T11, typename T12, typename T13, typename T14, typename T15, 16028b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T16, typename T17, typename T18, typename T19, typename T20, 16038b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T21, typename T22, typename T23, typename T24, typename T25, 16048b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T26, typename T27, typename T28, typename T29, typename T30, 16058b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T31, typename T32, typename T33, typename T34> 16068b92989c89bec8632aa47dc58dc162f199d62edcJames Zernclass ValueArray34 { 16078b92989c89bec8632aa47dc58dc162f199d62edcJames Zern public: 16088b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ValueArray34(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 16098b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 16108b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 16118b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, 16128b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T34 v34) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), 16138b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), 16148b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), 16158b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26), 16168b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32), 16178b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v33_(v33), v34_(v34) {} 16188b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 16198b92989c89bec8632aa47dc58dc162f199d62edcJames Zern template <typename T> 16208b92989c89bec8632aa47dc58dc162f199d62edcJames Zern operator ParamGenerator<T>() const { 16218b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 16228b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 16238b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 16248b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), 16258b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), 16268b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), 16278b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), 16288b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), 16298b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_), 16308b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_), 16318b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_), 16328b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v33_), static_cast<T>(v34_)}; 16338b92989c89bec8632aa47dc58dc162f199d62edcJames Zern return ValuesIn(array); 16348b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 16358b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 16368b92989c89bec8632aa47dc58dc162f199d62edcJames Zern private: 16378b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // No implementation - assignment is unsupported. 16388b92989c89bec8632aa47dc58dc162f199d62edcJames Zern void operator=(const ValueArray34& other); 16398b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 16408b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T1 v1_; 16418b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T2 v2_; 16428b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T3 v3_; 16438b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T4 v4_; 16448b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T5 v5_; 16458b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T6 v6_; 16468b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T7 v7_; 16478b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T8 v8_; 16488b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T9 v9_; 16498b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T10 v10_; 16508b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T11 v11_; 16518b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T12 v12_; 16528b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T13 v13_; 16538b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T14 v14_; 16548b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T15 v15_; 16558b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T16 v16_; 16568b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T17 v17_; 16578b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T18 v18_; 16588b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T19 v19_; 16598b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T20 v20_; 16608b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T21 v21_; 16618b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T22 v22_; 16628b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T23 v23_; 16638b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T24 v24_; 16648b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T25 v25_; 16658b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T26 v26_; 16668b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T27 v27_; 16678b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T28 v28_; 16688b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T29 v29_; 16698b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T30 v30_; 16708b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T31 v31_; 16718b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T32 v32_; 16728b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T33 v33_; 16738b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T34 v34_; 16748b92989c89bec8632aa47dc58dc162f199d62edcJames Zern}; 16758b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 16768b92989c89bec8632aa47dc58dc162f199d62edcJames Zerntemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 16778b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T6, typename T7, typename T8, typename T9, typename T10, 16788b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T11, typename T12, typename T13, typename T14, typename T15, 16798b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T16, typename T17, typename T18, typename T19, typename T20, 16808b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T21, typename T22, typename T23, typename T24, typename T25, 16818b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T26, typename T27, typename T28, typename T29, typename T30, 16828b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T31, typename T32, typename T33, typename T34, typename T35> 16838b92989c89bec8632aa47dc58dc162f199d62edcJames Zernclass ValueArray35 { 16848b92989c89bec8632aa47dc58dc162f199d62edcJames Zern public: 16858b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ValueArray35(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 16868b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 16878b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 16888b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, 16898b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T34 v34, T35 v35) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), 16908b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), 16918b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), 16928b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v20_(v20), v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), 16938b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v26_(v26), v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), 16948b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v32_(v32), v33_(v33), v34_(v34), v35_(v35) {} 16958b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 16968b92989c89bec8632aa47dc58dc162f199d62edcJames Zern template <typename T> 16978b92989c89bec8632aa47dc58dc162f199d62edcJames Zern operator ParamGenerator<T>() const { 16988b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 16998b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 17008b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 17018b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), 17028b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), 17038b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), 17048b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), 17058b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), 17068b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_), 17078b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_), 17088b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_), 17098b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_)}; 17108b92989c89bec8632aa47dc58dc162f199d62edcJames Zern return ValuesIn(array); 17118b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 17128b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 17138b92989c89bec8632aa47dc58dc162f199d62edcJames Zern private: 17148b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // No implementation - assignment is unsupported. 17158b92989c89bec8632aa47dc58dc162f199d62edcJames Zern void operator=(const ValueArray35& other); 17168b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 17178b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T1 v1_; 17188b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T2 v2_; 17198b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T3 v3_; 17208b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T4 v4_; 17218b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T5 v5_; 17228b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T6 v6_; 17238b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T7 v7_; 17248b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T8 v8_; 17258b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T9 v9_; 17268b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T10 v10_; 17278b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T11 v11_; 17288b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T12 v12_; 17298b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T13 v13_; 17308b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T14 v14_; 17318b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T15 v15_; 17328b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T16 v16_; 17338b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T17 v17_; 17348b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T18 v18_; 17358b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T19 v19_; 17368b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T20 v20_; 17378b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T21 v21_; 17388b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T22 v22_; 17398b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T23 v23_; 17408b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T24 v24_; 17418b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T25 v25_; 17428b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T26 v26_; 17438b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T27 v27_; 17448b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T28 v28_; 17458b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T29 v29_; 17468b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T30 v30_; 17478b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T31 v31_; 17488b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T32 v32_; 17498b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T33 v33_; 17508b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T34 v34_; 17518b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T35 v35_; 17528b92989c89bec8632aa47dc58dc162f199d62edcJames Zern}; 17538b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 17548b92989c89bec8632aa47dc58dc162f199d62edcJames Zerntemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 17558b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T6, typename T7, typename T8, typename T9, typename T10, 17568b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T11, typename T12, typename T13, typename T14, typename T15, 17578b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T16, typename T17, typename T18, typename T19, typename T20, 17588b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T21, typename T22, typename T23, typename T24, typename T25, 17598b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T26, typename T27, typename T28, typename T29, typename T30, 17608b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T31, typename T32, typename T33, typename T34, typename T35, 17618b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T36> 17628b92989c89bec8632aa47dc58dc162f199d62edcJames Zernclass ValueArray36 { 17638b92989c89bec8632aa47dc58dc162f199d62edcJames Zern public: 17648b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ValueArray36(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 17658b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 17668b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 17678b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, 17688b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T34 v34, T35 v35, T36 v36) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), 17698b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), 17708b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18), 17718b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v19_(v19), v20_(v20), v21_(v21), v22_(v22), v23_(v23), v24_(v24), 17728b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v25_(v25), v26_(v26), v27_(v27), v28_(v28), v29_(v29), v30_(v30), 17738b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v31_(v31), v32_(v32), v33_(v33), v34_(v34), v35_(v35), v36_(v36) {} 17748b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 17758b92989c89bec8632aa47dc58dc162f199d62edcJames Zern template <typename T> 17768b92989c89bec8632aa47dc58dc162f199d62edcJames Zern operator ParamGenerator<T>() const { 17778b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 17788b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 17798b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 17808b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), 17818b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), 17828b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), 17838b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), 17848b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), 17858b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_), 17868b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_), 17878b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_), 17888b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_), 17898b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v36_)}; 17908b92989c89bec8632aa47dc58dc162f199d62edcJames Zern return ValuesIn(array); 17918b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 17928b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 17938b92989c89bec8632aa47dc58dc162f199d62edcJames Zern private: 17948b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // No implementation - assignment is unsupported. 17958b92989c89bec8632aa47dc58dc162f199d62edcJames Zern void operator=(const ValueArray36& other); 17968b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 17978b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T1 v1_; 17988b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T2 v2_; 17998b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T3 v3_; 18008b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T4 v4_; 18018b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T5 v5_; 18028b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T6 v6_; 18038b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T7 v7_; 18048b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T8 v8_; 18058b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T9 v9_; 18068b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T10 v10_; 18078b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T11 v11_; 18088b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T12 v12_; 18098b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T13 v13_; 18108b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T14 v14_; 18118b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T15 v15_; 18128b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T16 v16_; 18138b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T17 v17_; 18148b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T18 v18_; 18158b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T19 v19_; 18168b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T20 v20_; 18178b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T21 v21_; 18188b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T22 v22_; 18198b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T23 v23_; 18208b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T24 v24_; 18218b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T25 v25_; 18228b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T26 v26_; 18238b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T27 v27_; 18248b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T28 v28_; 18258b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T29 v29_; 18268b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T30 v30_; 18278b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T31 v31_; 18288b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T32 v32_; 18298b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T33 v33_; 18308b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T34 v34_; 18318b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T35 v35_; 18328b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T36 v36_; 18338b92989c89bec8632aa47dc58dc162f199d62edcJames Zern}; 18348b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 18358b92989c89bec8632aa47dc58dc162f199d62edcJames Zerntemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 18368b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T6, typename T7, typename T8, typename T9, typename T10, 18378b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T11, typename T12, typename T13, typename T14, typename T15, 18388b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T16, typename T17, typename T18, typename T19, typename T20, 18398b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T21, typename T22, typename T23, typename T24, typename T25, 18408b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T26, typename T27, typename T28, typename T29, typename T30, 18418b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T31, typename T32, typename T33, typename T34, typename T35, 18428b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T36, typename T37> 18438b92989c89bec8632aa47dc58dc162f199d62edcJames Zernclass ValueArray37 { 18448b92989c89bec8632aa47dc58dc162f199d62edcJames Zern public: 18458b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ValueArray37(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 18468b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 18478b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 18488b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, 18498b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T34 v34, T35 v35, T36 v36, T37 v37) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), 18508b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), 18518b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17), 18528b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), v23_(v23), 18538b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28), v29_(v29), 18548b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v30_(v30), v31_(v31), v32_(v32), v33_(v33), v34_(v34), v35_(v35), 18558b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v36_(v36), v37_(v37) {} 18568b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 18578b92989c89bec8632aa47dc58dc162f199d62edcJames Zern template <typename T> 18588b92989c89bec8632aa47dc58dc162f199d62edcJames Zern operator ParamGenerator<T>() const { 18598b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 18608b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 18618b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 18628b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), 18638b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), 18648b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), 18658b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), 18668b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), 18678b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_), 18688b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_), 18698b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_), 18708b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_), 18718b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v36_), static_cast<T>(v37_)}; 18728b92989c89bec8632aa47dc58dc162f199d62edcJames Zern return ValuesIn(array); 18738b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 18748b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 18758b92989c89bec8632aa47dc58dc162f199d62edcJames Zern private: 18768b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // No implementation - assignment is unsupported. 18778b92989c89bec8632aa47dc58dc162f199d62edcJames Zern void operator=(const ValueArray37& other); 18788b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 18798b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T1 v1_; 18808b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T2 v2_; 18818b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T3 v3_; 18828b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T4 v4_; 18838b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T5 v5_; 18848b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T6 v6_; 18858b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T7 v7_; 18868b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T8 v8_; 18878b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T9 v9_; 18888b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T10 v10_; 18898b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T11 v11_; 18908b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T12 v12_; 18918b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T13 v13_; 18928b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T14 v14_; 18938b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T15 v15_; 18948b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T16 v16_; 18958b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T17 v17_; 18968b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T18 v18_; 18978b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T19 v19_; 18988b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T20 v20_; 18998b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T21 v21_; 19008b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T22 v22_; 19018b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T23 v23_; 19028b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T24 v24_; 19038b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T25 v25_; 19048b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T26 v26_; 19058b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T27 v27_; 19068b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T28 v28_; 19078b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T29 v29_; 19088b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T30 v30_; 19098b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T31 v31_; 19108b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T32 v32_; 19118b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T33 v33_; 19128b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T34 v34_; 19138b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T35 v35_; 19148b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T36 v36_; 19158b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T37 v37_; 19168b92989c89bec8632aa47dc58dc162f199d62edcJames Zern}; 19178b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 19188b92989c89bec8632aa47dc58dc162f199d62edcJames Zerntemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 19198b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T6, typename T7, typename T8, typename T9, typename T10, 19208b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T11, typename T12, typename T13, typename T14, typename T15, 19218b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T16, typename T17, typename T18, typename T19, typename T20, 19228b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T21, typename T22, typename T23, typename T24, typename T25, 19238b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T26, typename T27, typename T28, typename T29, typename T30, 19248b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T31, typename T32, typename T33, typename T34, typename T35, 19258b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T36, typename T37, typename T38> 19268b92989c89bec8632aa47dc58dc162f199d62edcJames Zernclass ValueArray38 { 19278b92989c89bec8632aa47dc58dc162f199d62edcJames Zern public: 19288b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ValueArray38(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 19298b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 19308b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 19318b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, 19328b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T34 v34, T35 v35, T36 v36, T37 v37, T38 v38) : v1_(v1), v2_(v2), v3_(v3), 19338b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), 19348b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), 19358b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), 19368b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28), 19378b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v29_(v29), v30_(v30), v31_(v31), v32_(v32), v33_(v33), v34_(v34), 19388b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v35_(v35), v36_(v36), v37_(v37), v38_(v38) {} 19398b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 19408b92989c89bec8632aa47dc58dc162f199d62edcJames Zern template <typename T> 19418b92989c89bec8632aa47dc58dc162f199d62edcJames Zern operator ParamGenerator<T>() const { 19428b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 19438b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 19448b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 19458b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), 19468b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), 19478b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), 19488b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), 19498b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), 19508b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_), 19518b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_), 19528b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_), 19538b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_), 19548b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_)}; 19558b92989c89bec8632aa47dc58dc162f199d62edcJames Zern return ValuesIn(array); 19568b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 19578b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 19588b92989c89bec8632aa47dc58dc162f199d62edcJames Zern private: 19598b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // No implementation - assignment is unsupported. 19608b92989c89bec8632aa47dc58dc162f199d62edcJames Zern void operator=(const ValueArray38& other); 19618b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 19628b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T1 v1_; 19638b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T2 v2_; 19648b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T3 v3_; 19658b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T4 v4_; 19668b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T5 v5_; 19678b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T6 v6_; 19688b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T7 v7_; 19698b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T8 v8_; 19708b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T9 v9_; 19718b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T10 v10_; 19728b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T11 v11_; 19738b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T12 v12_; 19748b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T13 v13_; 19758b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T14 v14_; 19768b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T15 v15_; 19778b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T16 v16_; 19788b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T17 v17_; 19798b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T18 v18_; 19808b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T19 v19_; 19818b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T20 v20_; 19828b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T21 v21_; 19838b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T22 v22_; 19848b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T23 v23_; 19858b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T24 v24_; 19868b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T25 v25_; 19878b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T26 v26_; 19888b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T27 v27_; 19898b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T28 v28_; 19908b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T29 v29_; 19918b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T30 v30_; 19928b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T31 v31_; 19938b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T32 v32_; 19948b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T33 v33_; 19958b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T34 v34_; 19968b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T35 v35_; 19978b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T36 v36_; 19988b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T37 v37_; 19998b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T38 v38_; 20008b92989c89bec8632aa47dc58dc162f199d62edcJames Zern}; 20018b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 20028b92989c89bec8632aa47dc58dc162f199d62edcJames Zerntemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 20038b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T6, typename T7, typename T8, typename T9, typename T10, 20048b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T11, typename T12, typename T13, typename T14, typename T15, 20058b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T16, typename T17, typename T18, typename T19, typename T20, 20068b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T21, typename T22, typename T23, typename T24, typename T25, 20078b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T26, typename T27, typename T28, typename T29, typename T30, 20088b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T31, typename T32, typename T33, typename T34, typename T35, 20098b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T36, typename T37, typename T38, typename T39> 20108b92989c89bec8632aa47dc58dc162f199d62edcJames Zernclass ValueArray39 { 20118b92989c89bec8632aa47dc58dc162f199d62edcJames Zern public: 20128b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ValueArray39(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 20138b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 20148b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 20158b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, 20168b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39) : v1_(v1), v2_(v2), 20178b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), 20188b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), 20198b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), 20208b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28), 20218b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v29_(v29), v30_(v30), v31_(v31), v32_(v32), v33_(v33), v34_(v34), 20228b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v35_(v35), v36_(v36), v37_(v37), v38_(v38), v39_(v39) {} 20238b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 20248b92989c89bec8632aa47dc58dc162f199d62edcJames Zern template <typename T> 20258b92989c89bec8632aa47dc58dc162f199d62edcJames Zern operator ParamGenerator<T>() const { 20268b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 20278b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 20288b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 20298b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), 20308b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), 20318b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), 20328b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), 20338b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), 20348b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_), 20358b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_), 20368b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_), 20378b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_), 20388b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_), 20398b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v39_)}; 20408b92989c89bec8632aa47dc58dc162f199d62edcJames Zern return ValuesIn(array); 20418b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 20428b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 20438b92989c89bec8632aa47dc58dc162f199d62edcJames Zern private: 20448b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // No implementation - assignment is unsupported. 20458b92989c89bec8632aa47dc58dc162f199d62edcJames Zern void operator=(const ValueArray39& other); 20468b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 20478b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T1 v1_; 20488b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T2 v2_; 20498b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T3 v3_; 20508b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T4 v4_; 20518b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T5 v5_; 20528b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T6 v6_; 20538b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T7 v7_; 20548b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T8 v8_; 20558b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T9 v9_; 20568b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T10 v10_; 20578b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T11 v11_; 20588b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T12 v12_; 20598b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T13 v13_; 20608b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T14 v14_; 20618b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T15 v15_; 20628b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T16 v16_; 20638b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T17 v17_; 20648b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T18 v18_; 20658b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T19 v19_; 20668b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T20 v20_; 20678b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T21 v21_; 20688b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T22 v22_; 20698b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T23 v23_; 20708b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T24 v24_; 20718b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T25 v25_; 20728b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T26 v26_; 20738b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T27 v27_; 20748b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T28 v28_; 20758b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T29 v29_; 20768b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T30 v30_; 20778b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T31 v31_; 20788b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T32 v32_; 20798b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T33 v33_; 20808b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T34 v34_; 20818b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T35 v35_; 20828b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T36 v36_; 20838b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T37 v37_; 20848b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T38 v38_; 20858b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T39 v39_; 20868b92989c89bec8632aa47dc58dc162f199d62edcJames Zern}; 20878b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 20888b92989c89bec8632aa47dc58dc162f199d62edcJames Zerntemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 20898b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T6, typename T7, typename T8, typename T9, typename T10, 20908b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T11, typename T12, typename T13, typename T14, typename T15, 20918b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T16, typename T17, typename T18, typename T19, typename T20, 20928b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T21, typename T22, typename T23, typename T24, typename T25, 20938b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T26, typename T27, typename T28, typename T29, typename T30, 20948b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T31, typename T32, typename T33, typename T34, typename T35, 20958b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T36, typename T37, typename T38, typename T39, typename T40> 20968b92989c89bec8632aa47dc58dc162f199d62edcJames Zernclass ValueArray40 { 20978b92989c89bec8632aa47dc58dc162f199d62edcJames Zern public: 20988b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ValueArray40(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 20998b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 21008b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 21018b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, 21028b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40) : v1_(v1), 21038b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), 21048b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), 21058b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), 21068b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), 21078b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32), v33_(v33), 21088b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v34_(v34), v35_(v35), v36_(v36), v37_(v37), v38_(v38), v39_(v39), 21098b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v40_(v40) {} 21108b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 21118b92989c89bec8632aa47dc58dc162f199d62edcJames Zern template <typename T> 21128b92989c89bec8632aa47dc58dc162f199d62edcJames Zern operator ParamGenerator<T>() const { 21138b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 21148b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 21158b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 21168b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), 21178b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), 21188b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), 21198b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), 21208b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), 21218b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_), 21228b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_), 21238b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_), 21248b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_), 21258b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_), 21268b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v39_), static_cast<T>(v40_)}; 21278b92989c89bec8632aa47dc58dc162f199d62edcJames Zern return ValuesIn(array); 21288b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 21298b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 21308b92989c89bec8632aa47dc58dc162f199d62edcJames Zern private: 21318b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // No implementation - assignment is unsupported. 21328b92989c89bec8632aa47dc58dc162f199d62edcJames Zern void operator=(const ValueArray40& other); 21338b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 21348b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T1 v1_; 21358b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T2 v2_; 21368b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T3 v3_; 21378b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T4 v4_; 21388b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T5 v5_; 21398b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T6 v6_; 21408b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T7 v7_; 21418b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T8 v8_; 21428b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T9 v9_; 21438b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T10 v10_; 21448b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T11 v11_; 21458b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T12 v12_; 21468b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T13 v13_; 21478b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T14 v14_; 21488b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T15 v15_; 21498b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T16 v16_; 21508b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T17 v17_; 21518b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T18 v18_; 21528b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T19 v19_; 21538b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T20 v20_; 21548b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T21 v21_; 21558b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T22 v22_; 21568b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T23 v23_; 21578b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T24 v24_; 21588b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T25 v25_; 21598b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T26 v26_; 21608b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T27 v27_; 21618b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T28 v28_; 21628b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T29 v29_; 21638b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T30 v30_; 21648b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T31 v31_; 21658b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T32 v32_; 21668b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T33 v33_; 21678b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T34 v34_; 21688b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T35 v35_; 21698b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T36 v36_; 21708b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T37 v37_; 21718b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T38 v38_; 21728b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T39 v39_; 21738b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T40 v40_; 21748b92989c89bec8632aa47dc58dc162f199d62edcJames Zern}; 21758b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 21768b92989c89bec8632aa47dc58dc162f199d62edcJames Zerntemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 21778b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T6, typename T7, typename T8, typename T9, typename T10, 21788b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T11, typename T12, typename T13, typename T14, typename T15, 21798b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T16, typename T17, typename T18, typename T19, typename T20, 21808b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T21, typename T22, typename T23, typename T24, typename T25, 21818b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T26, typename T27, typename T28, typename T29, typename T30, 21828b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T31, typename T32, typename T33, typename T34, typename T35, 21838b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T36, typename T37, typename T38, typename T39, typename T40, 21848b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T41> 21858b92989c89bec8632aa47dc58dc162f199d62edcJames Zernclass ValueArray41 { 21868b92989c89bec8632aa47dc58dc162f199d62edcJames Zern public: 21878b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ValueArray41(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 21888b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 21898b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 21908b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, 21918b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, 21928b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T41 v41) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), 21938b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), 21948b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), 21958b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26), 21968b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32), 21978b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v33_(v33), v34_(v34), v35_(v35), v36_(v36), v37_(v37), v38_(v38), 21988b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v39_(v39), v40_(v40), v41_(v41) {} 21998b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 22008b92989c89bec8632aa47dc58dc162f199d62edcJames Zern template <typename T> 22018b92989c89bec8632aa47dc58dc162f199d62edcJames Zern operator ParamGenerator<T>() const { 22028b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 22038b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 22048b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 22058b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), 22068b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), 22078b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), 22088b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), 22098b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), 22108b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_), 22118b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_), 22128b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_), 22138b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_), 22148b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_), 22158b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v39_), static_cast<T>(v40_), static_cast<T>(v41_)}; 22168b92989c89bec8632aa47dc58dc162f199d62edcJames Zern return ValuesIn(array); 22178b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 22188b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 22198b92989c89bec8632aa47dc58dc162f199d62edcJames Zern private: 22208b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // No implementation - assignment is unsupported. 22218b92989c89bec8632aa47dc58dc162f199d62edcJames Zern void operator=(const ValueArray41& other); 22228b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 22238b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T1 v1_; 22248b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T2 v2_; 22258b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T3 v3_; 22268b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T4 v4_; 22278b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T5 v5_; 22288b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T6 v6_; 22298b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T7 v7_; 22308b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T8 v8_; 22318b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T9 v9_; 22328b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T10 v10_; 22338b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T11 v11_; 22348b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T12 v12_; 22358b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T13 v13_; 22368b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T14 v14_; 22378b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T15 v15_; 22388b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T16 v16_; 22398b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T17 v17_; 22408b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T18 v18_; 22418b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T19 v19_; 22428b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T20 v20_; 22438b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T21 v21_; 22448b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T22 v22_; 22458b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T23 v23_; 22468b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T24 v24_; 22478b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T25 v25_; 22488b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T26 v26_; 22498b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T27 v27_; 22508b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T28 v28_; 22518b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T29 v29_; 22528b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T30 v30_; 22538b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T31 v31_; 22548b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T32 v32_; 22558b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T33 v33_; 22568b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T34 v34_; 22578b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T35 v35_; 22588b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T36 v36_; 22598b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T37 v37_; 22608b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T38 v38_; 22618b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T39 v39_; 22628b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T40 v40_; 22638b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T41 v41_; 22648b92989c89bec8632aa47dc58dc162f199d62edcJames Zern}; 22658b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 22668b92989c89bec8632aa47dc58dc162f199d62edcJames Zerntemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 22678b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T6, typename T7, typename T8, typename T9, typename T10, 22688b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T11, typename T12, typename T13, typename T14, typename T15, 22698b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T16, typename T17, typename T18, typename T19, typename T20, 22708b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T21, typename T22, typename T23, typename T24, typename T25, 22718b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T26, typename T27, typename T28, typename T29, typename T30, 22728b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T31, typename T32, typename T33, typename T34, typename T35, 22738b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T36, typename T37, typename T38, typename T39, typename T40, 22748b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T41, typename T42> 22758b92989c89bec8632aa47dc58dc162f199d62edcJames Zernclass ValueArray42 { 22768b92989c89bec8632aa47dc58dc162f199d62edcJames Zern public: 22778b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ValueArray42(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 22788b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 22798b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 22808b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, 22818b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, 22828b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T42 v42) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), 22838b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), 22848b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), 22858b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26), 22868b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32), 22878b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v33_(v33), v34_(v34), v35_(v35), v36_(v36), v37_(v37), v38_(v38), 22888b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v39_(v39), v40_(v40), v41_(v41), v42_(v42) {} 22898b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 22908b92989c89bec8632aa47dc58dc162f199d62edcJames Zern template <typename T> 22918b92989c89bec8632aa47dc58dc162f199d62edcJames Zern operator ParamGenerator<T>() const { 22928b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 22938b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 22948b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 22958b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), 22968b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), 22978b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), 22988b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), 22998b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), 23008b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_), 23018b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_), 23028b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_), 23038b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_), 23048b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_), 23058b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v39_), static_cast<T>(v40_), static_cast<T>(v41_), 23068b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v42_)}; 23078b92989c89bec8632aa47dc58dc162f199d62edcJames Zern return ValuesIn(array); 23088b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 23098b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 23108b92989c89bec8632aa47dc58dc162f199d62edcJames Zern private: 23118b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // No implementation - assignment is unsupported. 23128b92989c89bec8632aa47dc58dc162f199d62edcJames Zern void operator=(const ValueArray42& other); 23138b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 23148b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T1 v1_; 23158b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T2 v2_; 23168b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T3 v3_; 23178b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T4 v4_; 23188b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T5 v5_; 23198b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T6 v6_; 23208b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T7 v7_; 23218b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T8 v8_; 23228b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T9 v9_; 23238b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T10 v10_; 23248b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T11 v11_; 23258b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T12 v12_; 23268b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T13 v13_; 23278b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T14 v14_; 23288b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T15 v15_; 23298b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T16 v16_; 23308b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T17 v17_; 23318b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T18 v18_; 23328b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T19 v19_; 23338b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T20 v20_; 23348b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T21 v21_; 23358b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T22 v22_; 23368b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T23 v23_; 23378b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T24 v24_; 23388b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T25 v25_; 23398b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T26 v26_; 23408b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T27 v27_; 23418b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T28 v28_; 23428b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T29 v29_; 23438b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T30 v30_; 23448b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T31 v31_; 23458b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T32 v32_; 23468b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T33 v33_; 23478b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T34 v34_; 23488b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T35 v35_; 23498b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T36 v36_; 23508b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T37 v37_; 23518b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T38 v38_; 23528b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T39 v39_; 23538b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T40 v40_; 23548b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T41 v41_; 23558b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T42 v42_; 23568b92989c89bec8632aa47dc58dc162f199d62edcJames Zern}; 23578b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 23588b92989c89bec8632aa47dc58dc162f199d62edcJames Zerntemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 23598b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T6, typename T7, typename T8, typename T9, typename T10, 23608b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T11, typename T12, typename T13, typename T14, typename T15, 23618b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T16, typename T17, typename T18, typename T19, typename T20, 23628b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T21, typename T22, typename T23, typename T24, typename T25, 23638b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T26, typename T27, typename T28, typename T29, typename T30, 23648b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T31, typename T32, typename T33, typename T34, typename T35, 23658b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T36, typename T37, typename T38, typename T39, typename T40, 23668b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T41, typename T42, typename T43> 23678b92989c89bec8632aa47dc58dc162f199d62edcJames Zernclass ValueArray43 { 23688b92989c89bec8632aa47dc58dc162f199d62edcJames Zern public: 23698b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ValueArray43(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 23708b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 23718b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 23728b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, 23738b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, 23748b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T42 v42, T43 v43) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), 23758b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), 23768b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), 23778b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v20_(v20), v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), 23788b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v26_(v26), v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), 23798b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v32_(v32), v33_(v33), v34_(v34), v35_(v35), v36_(v36), v37_(v37), 23808b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v38_(v38), v39_(v39), v40_(v40), v41_(v41), v42_(v42), v43_(v43) {} 23818b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 23828b92989c89bec8632aa47dc58dc162f199d62edcJames Zern template <typename T> 23838b92989c89bec8632aa47dc58dc162f199d62edcJames Zern operator ParamGenerator<T>() const { 23848b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 23858b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 23868b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 23878b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), 23888b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), 23898b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), 23908b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), 23918b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), 23928b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_), 23938b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_), 23948b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_), 23958b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_), 23968b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_), 23978b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v39_), static_cast<T>(v40_), static_cast<T>(v41_), 23988b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v42_), static_cast<T>(v43_)}; 23998b92989c89bec8632aa47dc58dc162f199d62edcJames Zern return ValuesIn(array); 24008b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 24018b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 24028b92989c89bec8632aa47dc58dc162f199d62edcJames Zern private: 24038b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // No implementation - assignment is unsupported. 24048b92989c89bec8632aa47dc58dc162f199d62edcJames Zern void operator=(const ValueArray43& other); 24058b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 24068b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T1 v1_; 24078b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T2 v2_; 24088b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T3 v3_; 24098b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T4 v4_; 24108b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T5 v5_; 24118b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T6 v6_; 24128b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T7 v7_; 24138b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T8 v8_; 24148b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T9 v9_; 24158b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T10 v10_; 24168b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T11 v11_; 24178b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T12 v12_; 24188b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T13 v13_; 24198b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T14 v14_; 24208b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T15 v15_; 24218b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T16 v16_; 24228b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T17 v17_; 24238b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T18 v18_; 24248b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T19 v19_; 24258b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T20 v20_; 24268b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T21 v21_; 24278b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T22 v22_; 24288b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T23 v23_; 24298b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T24 v24_; 24308b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T25 v25_; 24318b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T26 v26_; 24328b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T27 v27_; 24338b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T28 v28_; 24348b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T29 v29_; 24358b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T30 v30_; 24368b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T31 v31_; 24378b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T32 v32_; 24388b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T33 v33_; 24398b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T34 v34_; 24408b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T35 v35_; 24418b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T36 v36_; 24428b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T37 v37_; 24438b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T38 v38_; 24448b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T39 v39_; 24458b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T40 v40_; 24468b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T41 v41_; 24478b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T42 v42_; 24488b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T43 v43_; 24498b92989c89bec8632aa47dc58dc162f199d62edcJames Zern}; 24508b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 24518b92989c89bec8632aa47dc58dc162f199d62edcJames Zerntemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 24528b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T6, typename T7, typename T8, typename T9, typename T10, 24538b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T11, typename T12, typename T13, typename T14, typename T15, 24548b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T16, typename T17, typename T18, typename T19, typename T20, 24558b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T21, typename T22, typename T23, typename T24, typename T25, 24568b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T26, typename T27, typename T28, typename T29, typename T30, 24578b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T31, typename T32, typename T33, typename T34, typename T35, 24588b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T36, typename T37, typename T38, typename T39, typename T40, 24598b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T41, typename T42, typename T43, typename T44> 24608b92989c89bec8632aa47dc58dc162f199d62edcJames Zernclass ValueArray44 { 24618b92989c89bec8632aa47dc58dc162f199d62edcJames Zern public: 24628b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ValueArray44(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 24638b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 24648b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 24658b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, 24668b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, 24678b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T42 v42, T43 v43, T44 v44) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), 24688b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), 24698b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18), 24708b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v19_(v19), v20_(v20), v21_(v21), v22_(v22), v23_(v23), v24_(v24), 24718b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v25_(v25), v26_(v26), v27_(v27), v28_(v28), v29_(v29), v30_(v30), 24728b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v31_(v31), v32_(v32), v33_(v33), v34_(v34), v35_(v35), v36_(v36), 24738b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v37_(v37), v38_(v38), v39_(v39), v40_(v40), v41_(v41), v42_(v42), 24748b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v43_(v43), v44_(v44) {} 24758b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 24768b92989c89bec8632aa47dc58dc162f199d62edcJames Zern template <typename T> 24778b92989c89bec8632aa47dc58dc162f199d62edcJames Zern operator ParamGenerator<T>() const { 24788b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 24798b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 24808b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 24818b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), 24828b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), 24838b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), 24848b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), 24858b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), 24868b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_), 24878b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_), 24888b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_), 24898b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_), 24908b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_), 24918b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v39_), static_cast<T>(v40_), static_cast<T>(v41_), 24928b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v42_), static_cast<T>(v43_), static_cast<T>(v44_)}; 24938b92989c89bec8632aa47dc58dc162f199d62edcJames Zern return ValuesIn(array); 24948b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 24958b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 24968b92989c89bec8632aa47dc58dc162f199d62edcJames Zern private: 24978b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // No implementation - assignment is unsupported. 24988b92989c89bec8632aa47dc58dc162f199d62edcJames Zern void operator=(const ValueArray44& other); 24998b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 25008b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T1 v1_; 25018b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T2 v2_; 25028b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T3 v3_; 25038b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T4 v4_; 25048b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T5 v5_; 25058b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T6 v6_; 25068b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T7 v7_; 25078b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T8 v8_; 25088b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T9 v9_; 25098b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T10 v10_; 25108b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T11 v11_; 25118b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T12 v12_; 25128b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T13 v13_; 25138b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T14 v14_; 25148b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T15 v15_; 25158b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T16 v16_; 25168b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T17 v17_; 25178b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T18 v18_; 25188b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T19 v19_; 25198b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T20 v20_; 25208b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T21 v21_; 25218b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T22 v22_; 25228b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T23 v23_; 25238b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T24 v24_; 25248b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T25 v25_; 25258b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T26 v26_; 25268b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T27 v27_; 25278b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T28 v28_; 25288b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T29 v29_; 25298b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T30 v30_; 25308b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T31 v31_; 25318b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T32 v32_; 25328b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T33 v33_; 25338b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T34 v34_; 25348b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T35 v35_; 25358b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T36 v36_; 25368b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T37 v37_; 25378b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T38 v38_; 25388b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T39 v39_; 25398b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T40 v40_; 25408b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T41 v41_; 25418b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T42 v42_; 25428b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T43 v43_; 25438b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T44 v44_; 25448b92989c89bec8632aa47dc58dc162f199d62edcJames Zern}; 25458b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 25468b92989c89bec8632aa47dc58dc162f199d62edcJames Zerntemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 25478b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T6, typename T7, typename T8, typename T9, typename T10, 25488b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T11, typename T12, typename T13, typename T14, typename T15, 25498b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T16, typename T17, typename T18, typename T19, typename T20, 25508b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T21, typename T22, typename T23, typename T24, typename T25, 25518b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T26, typename T27, typename T28, typename T29, typename T30, 25528b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T31, typename T32, typename T33, typename T34, typename T35, 25538b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T36, typename T37, typename T38, typename T39, typename T40, 25548b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T41, typename T42, typename T43, typename T44, typename T45> 25558b92989c89bec8632aa47dc58dc162f199d62edcJames Zernclass ValueArray45 { 25568b92989c89bec8632aa47dc58dc162f199d62edcJames Zern public: 25578b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ValueArray45(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 25588b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 25598b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 25608b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, 25618b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, 25628b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T42 v42, T43 v43, T44 v44, T45 v45) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), 25638b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), 25648b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17), 25658b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), v23_(v23), 25668b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28), v29_(v29), 25678b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v30_(v30), v31_(v31), v32_(v32), v33_(v33), v34_(v34), v35_(v35), 25688b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v36_(v36), v37_(v37), v38_(v38), v39_(v39), v40_(v40), v41_(v41), 25698b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v42_(v42), v43_(v43), v44_(v44), v45_(v45) {} 25708b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 25718b92989c89bec8632aa47dc58dc162f199d62edcJames Zern template <typename T> 25728b92989c89bec8632aa47dc58dc162f199d62edcJames Zern operator ParamGenerator<T>() const { 25738b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 25748b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 25758b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 25768b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), 25778b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), 25788b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), 25798b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), 25808b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), 25818b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_), 25828b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_), 25838b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_), 25848b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_), 25858b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_), 25868b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v39_), static_cast<T>(v40_), static_cast<T>(v41_), 25878b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v42_), static_cast<T>(v43_), static_cast<T>(v44_), 25888b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v45_)}; 25898b92989c89bec8632aa47dc58dc162f199d62edcJames Zern return ValuesIn(array); 25908b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 25918b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 25928b92989c89bec8632aa47dc58dc162f199d62edcJames Zern private: 25938b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // No implementation - assignment is unsupported. 25948b92989c89bec8632aa47dc58dc162f199d62edcJames Zern void operator=(const ValueArray45& other); 25958b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 25968b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T1 v1_; 25978b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T2 v2_; 25988b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T3 v3_; 25998b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T4 v4_; 26008b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T5 v5_; 26018b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T6 v6_; 26028b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T7 v7_; 26038b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T8 v8_; 26048b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T9 v9_; 26058b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T10 v10_; 26068b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T11 v11_; 26078b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T12 v12_; 26088b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T13 v13_; 26098b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T14 v14_; 26108b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T15 v15_; 26118b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T16 v16_; 26128b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T17 v17_; 26138b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T18 v18_; 26148b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T19 v19_; 26158b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T20 v20_; 26168b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T21 v21_; 26178b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T22 v22_; 26188b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T23 v23_; 26198b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T24 v24_; 26208b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T25 v25_; 26218b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T26 v26_; 26228b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T27 v27_; 26238b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T28 v28_; 26248b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T29 v29_; 26258b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T30 v30_; 26268b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T31 v31_; 26278b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T32 v32_; 26288b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T33 v33_; 26298b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T34 v34_; 26308b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T35 v35_; 26318b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T36 v36_; 26328b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T37 v37_; 26338b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T38 v38_; 26348b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T39 v39_; 26358b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T40 v40_; 26368b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T41 v41_; 26378b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T42 v42_; 26388b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T43 v43_; 26398b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T44 v44_; 26408b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T45 v45_; 26418b92989c89bec8632aa47dc58dc162f199d62edcJames Zern}; 26428b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 26438b92989c89bec8632aa47dc58dc162f199d62edcJames Zerntemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 26448b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T6, typename T7, typename T8, typename T9, typename T10, 26458b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T11, typename T12, typename T13, typename T14, typename T15, 26468b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T16, typename T17, typename T18, typename T19, typename T20, 26478b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T21, typename T22, typename T23, typename T24, typename T25, 26488b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T26, typename T27, typename T28, typename T29, typename T30, 26498b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T31, typename T32, typename T33, typename T34, typename T35, 26508b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T36, typename T37, typename T38, typename T39, typename T40, 26518b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T41, typename T42, typename T43, typename T44, typename T45, 26528b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T46> 26538b92989c89bec8632aa47dc58dc162f199d62edcJames Zernclass ValueArray46 { 26548b92989c89bec8632aa47dc58dc162f199d62edcJames Zern public: 26558b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ValueArray46(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 26568b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 26578b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 26588b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, 26598b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, 26608b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T42 v42, T43 v43, T44 v44, T45 v45, T46 v46) : v1_(v1), v2_(v2), v3_(v3), 26618b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), 26628b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), 26638b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), 26648b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28), 26658b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v29_(v29), v30_(v30), v31_(v31), v32_(v32), v33_(v33), v34_(v34), 26668b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v35_(v35), v36_(v36), v37_(v37), v38_(v38), v39_(v39), v40_(v40), 26678b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v41_(v41), v42_(v42), v43_(v43), v44_(v44), v45_(v45), v46_(v46) {} 26688b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 26698b92989c89bec8632aa47dc58dc162f199d62edcJames Zern template <typename T> 26708b92989c89bec8632aa47dc58dc162f199d62edcJames Zern operator ParamGenerator<T>() const { 26718b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 26728b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 26738b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 26748b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), 26758b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), 26768b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), 26778b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), 26788b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), 26798b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_), 26808b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_), 26818b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_), 26828b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_), 26838b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_), 26848b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v39_), static_cast<T>(v40_), static_cast<T>(v41_), 26858b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v42_), static_cast<T>(v43_), static_cast<T>(v44_), 26868b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v45_), static_cast<T>(v46_)}; 26878b92989c89bec8632aa47dc58dc162f199d62edcJames Zern return ValuesIn(array); 26888b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 26898b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 26908b92989c89bec8632aa47dc58dc162f199d62edcJames Zern private: 26918b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // No implementation - assignment is unsupported. 26928b92989c89bec8632aa47dc58dc162f199d62edcJames Zern void operator=(const ValueArray46& other); 26938b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 26948b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T1 v1_; 26958b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T2 v2_; 26968b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T3 v3_; 26978b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T4 v4_; 26988b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T5 v5_; 26998b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T6 v6_; 27008b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T7 v7_; 27018b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T8 v8_; 27028b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T9 v9_; 27038b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T10 v10_; 27048b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T11 v11_; 27058b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T12 v12_; 27068b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T13 v13_; 27078b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T14 v14_; 27088b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T15 v15_; 27098b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T16 v16_; 27108b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T17 v17_; 27118b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T18 v18_; 27128b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T19 v19_; 27138b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T20 v20_; 27148b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T21 v21_; 27158b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T22 v22_; 27168b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T23 v23_; 27178b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T24 v24_; 27188b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T25 v25_; 27198b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T26 v26_; 27208b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T27 v27_; 27218b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T28 v28_; 27228b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T29 v29_; 27238b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T30 v30_; 27248b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T31 v31_; 27258b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T32 v32_; 27268b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T33 v33_; 27278b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T34 v34_; 27288b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T35 v35_; 27298b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T36 v36_; 27308b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T37 v37_; 27318b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T38 v38_; 27328b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T39 v39_; 27338b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T40 v40_; 27348b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T41 v41_; 27358b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T42 v42_; 27368b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T43 v43_; 27378b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T44 v44_; 27388b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T45 v45_; 27398b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T46 v46_; 27408b92989c89bec8632aa47dc58dc162f199d62edcJames Zern}; 27418b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 27428b92989c89bec8632aa47dc58dc162f199d62edcJames Zerntemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 27438b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T6, typename T7, typename T8, typename T9, typename T10, 27448b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T11, typename T12, typename T13, typename T14, typename T15, 27458b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T16, typename T17, typename T18, typename T19, typename T20, 27468b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T21, typename T22, typename T23, typename T24, typename T25, 27478b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T26, typename T27, typename T28, typename T29, typename T30, 27488b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T31, typename T32, typename T33, typename T34, typename T35, 27498b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T36, typename T37, typename T38, typename T39, typename T40, 27508b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T41, typename T42, typename T43, typename T44, typename T45, 27518b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T46, typename T47> 27528b92989c89bec8632aa47dc58dc162f199d62edcJames Zernclass ValueArray47 { 27538b92989c89bec8632aa47dc58dc162f199d62edcJames Zern public: 27548b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ValueArray47(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 27558b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 27568b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 27578b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, 27588b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, 27598b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47) : v1_(v1), v2_(v2), 27608b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), 27618b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), 27628b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), 27638b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28), 27648b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v29_(v29), v30_(v30), v31_(v31), v32_(v32), v33_(v33), v34_(v34), 27658b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v35_(v35), v36_(v36), v37_(v37), v38_(v38), v39_(v39), v40_(v40), 27668b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v41_(v41), v42_(v42), v43_(v43), v44_(v44), v45_(v45), v46_(v46), 27678b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v47_(v47) {} 27688b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 27698b92989c89bec8632aa47dc58dc162f199d62edcJames Zern template <typename T> 27708b92989c89bec8632aa47dc58dc162f199d62edcJames Zern operator ParamGenerator<T>() const { 27718b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 27728b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 27738b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 27748b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), 27758b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), 27768b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), 27778b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), 27788b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), 27798b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_), 27808b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_), 27818b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_), 27828b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_), 27838b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_), 27848b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v39_), static_cast<T>(v40_), static_cast<T>(v41_), 27858b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v42_), static_cast<T>(v43_), static_cast<T>(v44_), 27868b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v45_), static_cast<T>(v46_), static_cast<T>(v47_)}; 27878b92989c89bec8632aa47dc58dc162f199d62edcJames Zern return ValuesIn(array); 27888b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 27898b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 27908b92989c89bec8632aa47dc58dc162f199d62edcJames Zern private: 27918b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // No implementation - assignment is unsupported. 27928b92989c89bec8632aa47dc58dc162f199d62edcJames Zern void operator=(const ValueArray47& other); 27938b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 27948b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T1 v1_; 27958b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T2 v2_; 27968b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T3 v3_; 27978b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T4 v4_; 27988b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T5 v5_; 27998b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T6 v6_; 28008b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T7 v7_; 28018b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T8 v8_; 28028b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T9 v9_; 28038b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T10 v10_; 28048b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T11 v11_; 28058b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T12 v12_; 28068b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T13 v13_; 28078b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T14 v14_; 28088b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T15 v15_; 28098b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T16 v16_; 28108b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T17 v17_; 28118b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T18 v18_; 28128b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T19 v19_; 28138b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T20 v20_; 28148b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T21 v21_; 28158b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T22 v22_; 28168b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T23 v23_; 28178b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T24 v24_; 28188b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T25 v25_; 28198b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T26 v26_; 28208b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T27 v27_; 28218b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T28 v28_; 28228b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T29 v29_; 28238b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T30 v30_; 28248b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T31 v31_; 28258b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T32 v32_; 28268b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T33 v33_; 28278b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T34 v34_; 28288b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T35 v35_; 28298b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T36 v36_; 28308b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T37 v37_; 28318b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T38 v38_; 28328b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T39 v39_; 28338b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T40 v40_; 28348b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T41 v41_; 28358b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T42 v42_; 28368b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T43 v43_; 28378b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T44 v44_; 28388b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T45 v45_; 28398b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T46 v46_; 28408b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T47 v47_; 28418b92989c89bec8632aa47dc58dc162f199d62edcJames Zern}; 28428b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 28438b92989c89bec8632aa47dc58dc162f199d62edcJames Zerntemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 28448b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T6, typename T7, typename T8, typename T9, typename T10, 28458b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T11, typename T12, typename T13, typename T14, typename T15, 28468b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T16, typename T17, typename T18, typename T19, typename T20, 28478b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T21, typename T22, typename T23, typename T24, typename T25, 28488b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T26, typename T27, typename T28, typename T29, typename T30, 28498b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T31, typename T32, typename T33, typename T34, typename T35, 28508b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T36, typename T37, typename T38, typename T39, typename T40, 28518b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T41, typename T42, typename T43, typename T44, typename T45, 28528b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T46, typename T47, typename T48> 28538b92989c89bec8632aa47dc58dc162f199d62edcJames Zernclass ValueArray48 { 28548b92989c89bec8632aa47dc58dc162f199d62edcJames Zern public: 28558b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ValueArray48(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 28568b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 28578b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 28588b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, 28598b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, 28608b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47, T48 v48) : v1_(v1), 28618b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), 28628b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), 28638b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), 28648b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), 28658b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32), v33_(v33), 28668b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v34_(v34), v35_(v35), v36_(v36), v37_(v37), v38_(v38), v39_(v39), 28678b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v40_(v40), v41_(v41), v42_(v42), v43_(v43), v44_(v44), v45_(v45), 28688b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v46_(v46), v47_(v47), v48_(v48) {} 28698b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 28708b92989c89bec8632aa47dc58dc162f199d62edcJames Zern template <typename T> 28718b92989c89bec8632aa47dc58dc162f199d62edcJames Zern operator ParamGenerator<T>() const { 28728b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 28738b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 28748b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 28758b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), 28768b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), 28778b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), 28788b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), 28798b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), 28808b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_), 28818b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_), 28828b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_), 28838b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_), 28848b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_), 28858b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v39_), static_cast<T>(v40_), static_cast<T>(v41_), 28868b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v42_), static_cast<T>(v43_), static_cast<T>(v44_), 28878b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v45_), static_cast<T>(v46_), static_cast<T>(v47_), 28888b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v48_)}; 28898b92989c89bec8632aa47dc58dc162f199d62edcJames Zern return ValuesIn(array); 28908b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 28918b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 28928b92989c89bec8632aa47dc58dc162f199d62edcJames Zern private: 28938b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // No implementation - assignment is unsupported. 28948b92989c89bec8632aa47dc58dc162f199d62edcJames Zern void operator=(const ValueArray48& other); 28958b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 28968b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T1 v1_; 28978b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T2 v2_; 28988b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T3 v3_; 28998b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T4 v4_; 29008b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T5 v5_; 29018b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T6 v6_; 29028b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T7 v7_; 29038b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T8 v8_; 29048b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T9 v9_; 29058b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T10 v10_; 29068b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T11 v11_; 29078b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T12 v12_; 29088b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T13 v13_; 29098b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T14 v14_; 29108b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T15 v15_; 29118b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T16 v16_; 29128b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T17 v17_; 29138b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T18 v18_; 29148b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T19 v19_; 29158b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T20 v20_; 29168b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T21 v21_; 29178b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T22 v22_; 29188b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T23 v23_; 29198b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T24 v24_; 29208b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T25 v25_; 29218b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T26 v26_; 29228b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T27 v27_; 29238b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T28 v28_; 29248b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T29 v29_; 29258b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T30 v30_; 29268b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T31 v31_; 29278b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T32 v32_; 29288b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T33 v33_; 29298b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T34 v34_; 29308b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T35 v35_; 29318b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T36 v36_; 29328b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T37 v37_; 29338b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T38 v38_; 29348b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T39 v39_; 29358b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T40 v40_; 29368b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T41 v41_; 29378b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T42 v42_; 29388b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T43 v43_; 29398b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T44 v44_; 29408b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T45 v45_; 29418b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T46 v46_; 29428b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T47 v47_; 29438b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T48 v48_; 29448b92989c89bec8632aa47dc58dc162f199d62edcJames Zern}; 29458b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 29468b92989c89bec8632aa47dc58dc162f199d62edcJames Zerntemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 29478b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T6, typename T7, typename T8, typename T9, typename T10, 29488b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T11, typename T12, typename T13, typename T14, typename T15, 29498b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T16, typename T17, typename T18, typename T19, typename T20, 29508b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T21, typename T22, typename T23, typename T24, typename T25, 29518b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T26, typename T27, typename T28, typename T29, typename T30, 29528b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T31, typename T32, typename T33, typename T34, typename T35, 29538b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T36, typename T37, typename T38, typename T39, typename T40, 29548b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T41, typename T42, typename T43, typename T44, typename T45, 29558b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T46, typename T47, typename T48, typename T49> 29568b92989c89bec8632aa47dc58dc162f199d62edcJames Zernclass ValueArray49 { 29578b92989c89bec8632aa47dc58dc162f199d62edcJames Zern public: 29588b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ValueArray49(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 29598b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 29608b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 29618b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, 29628b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, 29638b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47, T48 v48, 29648b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T49 v49) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), 29658b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), 29668b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), 29678b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26), 29688b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32), 29698b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v33_(v33), v34_(v34), v35_(v35), v36_(v36), v37_(v37), v38_(v38), 29708b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v39_(v39), v40_(v40), v41_(v41), v42_(v42), v43_(v43), v44_(v44), 29718b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v45_(v45), v46_(v46), v47_(v47), v48_(v48), v49_(v49) {} 29728b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 29738b92989c89bec8632aa47dc58dc162f199d62edcJames Zern template <typename T> 29748b92989c89bec8632aa47dc58dc162f199d62edcJames Zern operator ParamGenerator<T>() const { 29758b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 29768b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 29778b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 29788b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), 29798b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), 29808b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), 29818b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), 29828b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), 29838b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_), 29848b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_), 29858b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_), 29868b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_), 29878b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_), 29888b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v39_), static_cast<T>(v40_), static_cast<T>(v41_), 29898b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v42_), static_cast<T>(v43_), static_cast<T>(v44_), 29908b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v45_), static_cast<T>(v46_), static_cast<T>(v47_), 29918b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v48_), static_cast<T>(v49_)}; 29928b92989c89bec8632aa47dc58dc162f199d62edcJames Zern return ValuesIn(array); 29938b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 29948b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 29958b92989c89bec8632aa47dc58dc162f199d62edcJames Zern private: 29968b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // No implementation - assignment is unsupported. 29978b92989c89bec8632aa47dc58dc162f199d62edcJames Zern void operator=(const ValueArray49& other); 29988b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 29998b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T1 v1_; 30008b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T2 v2_; 30018b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T3 v3_; 30028b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T4 v4_; 30038b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T5 v5_; 30048b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T6 v6_; 30058b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T7 v7_; 30068b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T8 v8_; 30078b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T9 v9_; 30088b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T10 v10_; 30098b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T11 v11_; 30108b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T12 v12_; 30118b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T13 v13_; 30128b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T14 v14_; 30138b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T15 v15_; 30148b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T16 v16_; 30158b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T17 v17_; 30168b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T18 v18_; 30178b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T19 v19_; 30188b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T20 v20_; 30198b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T21 v21_; 30208b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T22 v22_; 30218b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T23 v23_; 30228b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T24 v24_; 30238b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T25 v25_; 30248b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T26 v26_; 30258b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T27 v27_; 30268b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T28 v28_; 30278b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T29 v29_; 30288b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T30 v30_; 30298b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T31 v31_; 30308b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T32 v32_; 30318b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T33 v33_; 30328b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T34 v34_; 30338b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T35 v35_; 30348b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T36 v36_; 30358b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T37 v37_; 30368b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T38 v38_; 30378b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T39 v39_; 30388b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T40 v40_; 30398b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T41 v41_; 30408b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T42 v42_; 30418b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T43 v43_; 30428b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T44 v44_; 30438b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T45 v45_; 30448b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T46 v46_; 30458b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T47 v47_; 30468b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T48 v48_; 30478b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T49 v49_; 30488b92989c89bec8632aa47dc58dc162f199d62edcJames Zern}; 30498b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 30508b92989c89bec8632aa47dc58dc162f199d62edcJames Zerntemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 30518b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T6, typename T7, typename T8, typename T9, typename T10, 30528b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T11, typename T12, typename T13, typename T14, typename T15, 30538b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T16, typename T17, typename T18, typename T19, typename T20, 30548b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T21, typename T22, typename T23, typename T24, typename T25, 30558b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T26, typename T27, typename T28, typename T29, typename T30, 30568b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T31, typename T32, typename T33, typename T34, typename T35, 30578b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T36, typename T37, typename T38, typename T39, typename T40, 30588b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T41, typename T42, typename T43, typename T44, typename T45, 30598b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T46, typename T47, typename T48, typename T49, typename T50> 30608b92989c89bec8632aa47dc58dc162f199d62edcJames Zernclass ValueArray50 { 30618b92989c89bec8632aa47dc58dc162f199d62edcJames Zern public: 30628b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ValueArray50(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 30638b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 30648b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 30658b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, 30668b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, 30678b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47, T48 v48, T49 v49, 30688b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T50 v50) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), 30698b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), 30708b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), 30718b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26), 30728b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32), 30738b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v33_(v33), v34_(v34), v35_(v35), v36_(v36), v37_(v37), v38_(v38), 30748b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v39_(v39), v40_(v40), v41_(v41), v42_(v42), v43_(v43), v44_(v44), 30758b92989c89bec8632aa47dc58dc162f199d62edcJames Zern v45_(v45), v46_(v46), v47_(v47), v48_(v48), v49_(v49), v50_(v50) {} 30768b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 30778b92989c89bec8632aa47dc58dc162f199d62edcJames Zern template <typename T> 30788b92989c89bec8632aa47dc58dc162f199d62edcJames Zern operator ParamGenerator<T>() const { 30798b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 30808b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 30818b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 30828b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), 30838b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), 30848b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), 30858b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), 30868b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), 30878b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_), 30888b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_), 30898b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_), 30908b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_), 30918b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_), 30928b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v39_), static_cast<T>(v40_), static_cast<T>(v41_), 30938b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v42_), static_cast<T>(v43_), static_cast<T>(v44_), 30948b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v45_), static_cast<T>(v46_), static_cast<T>(v47_), 30958b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<T>(v48_), static_cast<T>(v49_), static_cast<T>(v50_)}; 30968b92989c89bec8632aa47dc58dc162f199d62edcJames Zern return ValuesIn(array); 30978b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 30988b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 30998b92989c89bec8632aa47dc58dc162f199d62edcJames Zern private: 31008b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // No implementation - assignment is unsupported. 31018b92989c89bec8632aa47dc58dc162f199d62edcJames Zern void operator=(const ValueArray50& other); 31028b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 31038b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T1 v1_; 31048b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T2 v2_; 31058b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T3 v3_; 31068b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T4 v4_; 31078b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T5 v5_; 31088b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T6 v6_; 31098b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T7 v7_; 31108b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T8 v8_; 31118b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T9 v9_; 31128b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T10 v10_; 31138b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T11 v11_; 31148b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T12 v12_; 31158b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T13 v13_; 31168b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T14 v14_; 31178b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T15 v15_; 31188b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T16 v16_; 31198b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T17 v17_; 31208b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T18 v18_; 31218b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T19 v19_; 31228b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T20 v20_; 31238b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T21 v21_; 31248b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T22 v22_; 31258b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T23 v23_; 31268b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T24 v24_; 31278b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T25 v25_; 31288b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T26 v26_; 31298b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T27 v27_; 31308b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T28 v28_; 31318b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T29 v29_; 31328b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T30 v30_; 31338b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T31 v31_; 31348b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T32 v32_; 31358b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T33 v33_; 31368b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T34 v34_; 31378b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T35 v35_; 31388b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T36 v36_; 31398b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T37 v37_; 31408b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T38 v38_; 31418b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T39 v39_; 31428b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T40 v40_; 31438b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T41 v41_; 31448b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T42 v42_; 31458b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T43 v43_; 31468b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T44 v44_; 31478b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T45 v45_; 31488b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T46 v46_; 31498b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T47 v47_; 31508b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T48 v48_; 31518b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T49 v49_; 31528b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const T50 v50_; 31538b92989c89bec8632aa47dc58dc162f199d62edcJames Zern}; 31548b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 31558b92989c89bec8632aa47dc58dc162f199d62edcJames Zern# if GTEST_HAS_COMBINE 31568b92989c89bec8632aa47dc58dc162f199d62edcJames Zern// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE. 31578b92989c89bec8632aa47dc58dc162f199d62edcJames Zern// 31588b92989c89bec8632aa47dc58dc162f199d62edcJames Zern// Generates values from the Cartesian product of values produced 31598b92989c89bec8632aa47dc58dc162f199d62edcJames Zern// by the argument generators. 31608b92989c89bec8632aa47dc58dc162f199d62edcJames Zern// 31618b92989c89bec8632aa47dc58dc162f199d62edcJames Zerntemplate <typename T1, typename T2> 31628b92989c89bec8632aa47dc58dc162f199d62edcJames Zernclass CartesianProductGenerator2 31638b92989c89bec8632aa47dc58dc162f199d62edcJames Zern : public ParamGeneratorInterface< ::testing::tuple<T1, T2> > { 31648b92989c89bec8632aa47dc58dc162f199d62edcJames Zern public: 31658b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typedef ::testing::tuple<T1, T2> ParamType; 31668b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 31678b92989c89bec8632aa47dc58dc162f199d62edcJames Zern CartesianProductGenerator2(const ParamGenerator<T1>& g1, 31688b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T2>& g2) 31698b92989c89bec8632aa47dc58dc162f199d62edcJames Zern : g1_(g1), g2_(g2) {} 31708b92989c89bec8632aa47dc58dc162f199d62edcJames Zern virtual ~CartesianProductGenerator2() {} 31718b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 31728b92989c89bec8632aa47dc58dc162f199d62edcJames Zern virtual ParamIteratorInterface<ParamType>* Begin() const { 31738b92989c89bec8632aa47dc58dc162f199d62edcJames Zern return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin()); 31748b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 31758b92989c89bec8632aa47dc58dc162f199d62edcJames Zern virtual ParamIteratorInterface<ParamType>* End() const { 31768b92989c89bec8632aa47dc58dc162f199d62edcJames Zern return new Iterator(this, g1_, g1_.end(), g2_, g2_.end()); 31778b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 31788b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 31798b92989c89bec8632aa47dc58dc162f199d62edcJames Zern private: 31808b92989c89bec8632aa47dc58dc162f199d62edcJames Zern class Iterator : public ParamIteratorInterface<ParamType> { 31818b92989c89bec8632aa47dc58dc162f199d62edcJames Zern public: 31828b92989c89bec8632aa47dc58dc162f199d62edcJames Zern Iterator(const ParamGeneratorInterface<ParamType>* base, 31838b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T1>& g1, 31848b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T1>::iterator& current1, 31858b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T2>& g2, 31868b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T2>::iterator& current2) 31878b92989c89bec8632aa47dc58dc162f199d62edcJames Zern : base_(base), 31888b92989c89bec8632aa47dc58dc162f199d62edcJames Zern begin1_(g1.begin()), end1_(g1.end()), current1_(current1), 31898b92989c89bec8632aa47dc58dc162f199d62edcJames Zern begin2_(g2.begin()), end2_(g2.end()), current2_(current2) { 31908b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ComputeCurrentValue(); 31918b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 31928b92989c89bec8632aa47dc58dc162f199d62edcJames Zern virtual ~Iterator() {} 31938b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 31948b92989c89bec8632aa47dc58dc162f199d62edcJames Zern virtual const ParamGeneratorInterface<ParamType>* BaseGenerator() const { 31958b92989c89bec8632aa47dc58dc162f199d62edcJames Zern return base_; 31968b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 31978b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // Advance should not be called on beyond-of-range iterators 31988b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // so no component iterators must be beyond end of range, either. 31998b92989c89bec8632aa47dc58dc162f199d62edcJames Zern virtual void Advance() { 32008b92989c89bec8632aa47dc58dc162f199d62edcJames Zern assert(!AtEnd()); 32018b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ++current2_; 32028b92989c89bec8632aa47dc58dc162f199d62edcJames Zern if (current2_ == end2_) { 32038b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current2_ = begin2_; 32048b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ++current1_; 32058b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 32068b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ComputeCurrentValue(); 32078b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 32088b92989c89bec8632aa47dc58dc162f199d62edcJames Zern virtual ParamIteratorInterface<ParamType>* Clone() const { 32098b92989c89bec8632aa47dc58dc162f199d62edcJames Zern return new Iterator(*this); 32108b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 32118b92989c89bec8632aa47dc58dc162f199d62edcJames Zern virtual const ParamType* Current() const { return ¤t_value_; } 32128b92989c89bec8632aa47dc58dc162f199d62edcJames Zern virtual bool Equals(const ParamIteratorInterface<ParamType>& other) const { 32138b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // Having the same base generator guarantees that the other 32148b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // iterator is of the same type and we can downcast. 32158b92989c89bec8632aa47dc58dc162f199d62edcJames Zern GTEST_CHECK_(BaseGenerator() == other.BaseGenerator()) 32168b92989c89bec8632aa47dc58dc162f199d62edcJames Zern << "The program attempted to compare iterators " 32178b92989c89bec8632aa47dc58dc162f199d62edcJames Zern << "from different generators." << std::endl; 32188b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const Iterator* typed_other = 32198b92989c89bec8632aa47dc58dc162f199d62edcJames Zern CheckedDowncastToActualType<const Iterator>(&other); 32208b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // We must report iterators equal if they both point beyond their 32218b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // respective ranges. That can happen in a variety of fashions, 32228b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // so we have to consult AtEnd(). 32238b92989c89bec8632aa47dc58dc162f199d62edcJames Zern return (AtEnd() && typed_other->AtEnd()) || 32248b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ( 32258b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current1_ == typed_other->current1_ && 32268b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current2_ == typed_other->current2_); 32278b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 32288b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 32298b92989c89bec8632aa47dc58dc162f199d62edcJames Zern private: 32308b92989c89bec8632aa47dc58dc162f199d62edcJames Zern Iterator(const Iterator& other) 32318b92989c89bec8632aa47dc58dc162f199d62edcJames Zern : base_(other.base_), 32328b92989c89bec8632aa47dc58dc162f199d62edcJames Zern begin1_(other.begin1_), 32338b92989c89bec8632aa47dc58dc162f199d62edcJames Zern end1_(other.end1_), 32348b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current1_(other.current1_), 32358b92989c89bec8632aa47dc58dc162f199d62edcJames Zern begin2_(other.begin2_), 32368b92989c89bec8632aa47dc58dc162f199d62edcJames Zern end2_(other.end2_), 32378b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current2_(other.current2_) { 32388b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ComputeCurrentValue(); 32398b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 32408b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 32418b92989c89bec8632aa47dc58dc162f199d62edcJames Zern void ComputeCurrentValue() { 32428b92989c89bec8632aa47dc58dc162f199d62edcJames Zern if (!AtEnd()) 32438b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current_value_ = ParamType(*current1_, *current2_); 32448b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 32458b92989c89bec8632aa47dc58dc162f199d62edcJames Zern bool AtEnd() const { 32468b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // We must report iterator past the end of the range when either of the 32478b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // component iterators has reached the end of its range. 32488b92989c89bec8632aa47dc58dc162f199d62edcJames Zern return 32498b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current1_ == end1_ || 32508b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current2_ == end2_; 32518b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 32528b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 32538b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // No implementation - assignment is unsupported. 32548b92989c89bec8632aa47dc58dc162f199d62edcJames Zern void operator=(const Iterator& other); 32558b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 32568b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGeneratorInterface<ParamType>* const base_; 32578b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // begin[i]_ and end[i]_ define the i-th range that Iterator traverses. 32588b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // current[i]_ is the actual traversing iterator. 32598b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T1>::iterator begin1_; 32608b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T1>::iterator end1_; 32618b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename ParamGenerator<T1>::iterator current1_; 32628b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T2>::iterator begin2_; 32638b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T2>::iterator end2_; 32648b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename ParamGenerator<T2>::iterator current2_; 32658b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ParamType current_value_; 32668b92989c89bec8632aa47dc58dc162f199d62edcJames Zern }; // class CartesianProductGenerator2::Iterator 32678b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 32688b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // No implementation - assignment is unsupported. 32698b92989c89bec8632aa47dc58dc162f199d62edcJames Zern void operator=(const CartesianProductGenerator2& other); 32708b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 32718b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T1> g1_; 32728b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T2> g2_; 32738b92989c89bec8632aa47dc58dc162f199d62edcJames Zern}; // class CartesianProductGenerator2 32748b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 32758b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 32768b92989c89bec8632aa47dc58dc162f199d62edcJames Zerntemplate <typename T1, typename T2, typename T3> 32778b92989c89bec8632aa47dc58dc162f199d62edcJames Zernclass CartesianProductGenerator3 32788b92989c89bec8632aa47dc58dc162f199d62edcJames Zern : public ParamGeneratorInterface< ::testing::tuple<T1, T2, T3> > { 32798b92989c89bec8632aa47dc58dc162f199d62edcJames Zern public: 32808b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typedef ::testing::tuple<T1, T2, T3> ParamType; 32818b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 32828b92989c89bec8632aa47dc58dc162f199d62edcJames Zern CartesianProductGenerator3(const ParamGenerator<T1>& g1, 32838b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T2>& g2, const ParamGenerator<T3>& g3) 32848b92989c89bec8632aa47dc58dc162f199d62edcJames Zern : g1_(g1), g2_(g2), g3_(g3) {} 32858b92989c89bec8632aa47dc58dc162f199d62edcJames Zern virtual ~CartesianProductGenerator3() {} 32868b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 32878b92989c89bec8632aa47dc58dc162f199d62edcJames Zern virtual ParamIteratorInterface<ParamType>* Begin() const { 32888b92989c89bec8632aa47dc58dc162f199d62edcJames Zern return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_, 32898b92989c89bec8632aa47dc58dc162f199d62edcJames Zern g3_.begin()); 32908b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 32918b92989c89bec8632aa47dc58dc162f199d62edcJames Zern virtual ParamIteratorInterface<ParamType>* End() const { 32928b92989c89bec8632aa47dc58dc162f199d62edcJames Zern return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end()); 32938b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 32948b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 32958b92989c89bec8632aa47dc58dc162f199d62edcJames Zern private: 32968b92989c89bec8632aa47dc58dc162f199d62edcJames Zern class Iterator : public ParamIteratorInterface<ParamType> { 32978b92989c89bec8632aa47dc58dc162f199d62edcJames Zern public: 32988b92989c89bec8632aa47dc58dc162f199d62edcJames Zern Iterator(const ParamGeneratorInterface<ParamType>* base, 32998b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T1>& g1, 33008b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T1>::iterator& current1, 33018b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T2>& g2, 33028b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T2>::iterator& current2, 33038b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T3>& g3, 33048b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T3>::iterator& current3) 33058b92989c89bec8632aa47dc58dc162f199d62edcJames Zern : base_(base), 33068b92989c89bec8632aa47dc58dc162f199d62edcJames Zern begin1_(g1.begin()), end1_(g1.end()), current1_(current1), 33078b92989c89bec8632aa47dc58dc162f199d62edcJames Zern begin2_(g2.begin()), end2_(g2.end()), current2_(current2), 33088b92989c89bec8632aa47dc58dc162f199d62edcJames Zern begin3_(g3.begin()), end3_(g3.end()), current3_(current3) { 33098b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ComputeCurrentValue(); 33108b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 33118b92989c89bec8632aa47dc58dc162f199d62edcJames Zern virtual ~Iterator() {} 33128b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 33138b92989c89bec8632aa47dc58dc162f199d62edcJames Zern virtual const ParamGeneratorInterface<ParamType>* BaseGenerator() const { 33148b92989c89bec8632aa47dc58dc162f199d62edcJames Zern return base_; 33158b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 33168b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // Advance should not be called on beyond-of-range iterators 33178b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // so no component iterators must be beyond end of range, either. 33188b92989c89bec8632aa47dc58dc162f199d62edcJames Zern virtual void Advance() { 33198b92989c89bec8632aa47dc58dc162f199d62edcJames Zern assert(!AtEnd()); 33208b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ++current3_; 33218b92989c89bec8632aa47dc58dc162f199d62edcJames Zern if (current3_ == end3_) { 33228b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current3_ = begin3_; 33238b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ++current2_; 33248b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 33258b92989c89bec8632aa47dc58dc162f199d62edcJames Zern if (current2_ == end2_) { 33268b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current2_ = begin2_; 33278b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ++current1_; 33288b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 33298b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ComputeCurrentValue(); 33308b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 33318b92989c89bec8632aa47dc58dc162f199d62edcJames Zern virtual ParamIteratorInterface<ParamType>* Clone() const { 33328b92989c89bec8632aa47dc58dc162f199d62edcJames Zern return new Iterator(*this); 33338b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 33348b92989c89bec8632aa47dc58dc162f199d62edcJames Zern virtual const ParamType* Current() const { return ¤t_value_; } 33358b92989c89bec8632aa47dc58dc162f199d62edcJames Zern virtual bool Equals(const ParamIteratorInterface<ParamType>& other) const { 33368b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // Having the same base generator guarantees that the other 33378b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // iterator is of the same type and we can downcast. 33388b92989c89bec8632aa47dc58dc162f199d62edcJames Zern GTEST_CHECK_(BaseGenerator() == other.BaseGenerator()) 33398b92989c89bec8632aa47dc58dc162f199d62edcJames Zern << "The program attempted to compare iterators " 33408b92989c89bec8632aa47dc58dc162f199d62edcJames Zern << "from different generators." << std::endl; 33418b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const Iterator* typed_other = 33428b92989c89bec8632aa47dc58dc162f199d62edcJames Zern CheckedDowncastToActualType<const Iterator>(&other); 33438b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // We must report iterators equal if they both point beyond their 33448b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // respective ranges. That can happen in a variety of fashions, 33458b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // so we have to consult AtEnd(). 33468b92989c89bec8632aa47dc58dc162f199d62edcJames Zern return (AtEnd() && typed_other->AtEnd()) || 33478b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ( 33488b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current1_ == typed_other->current1_ && 33498b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current2_ == typed_other->current2_ && 33508b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current3_ == typed_other->current3_); 33518b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 33528b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 33538b92989c89bec8632aa47dc58dc162f199d62edcJames Zern private: 33548b92989c89bec8632aa47dc58dc162f199d62edcJames Zern Iterator(const Iterator& other) 33558b92989c89bec8632aa47dc58dc162f199d62edcJames Zern : base_(other.base_), 33568b92989c89bec8632aa47dc58dc162f199d62edcJames Zern begin1_(other.begin1_), 33578b92989c89bec8632aa47dc58dc162f199d62edcJames Zern end1_(other.end1_), 33588b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current1_(other.current1_), 33598b92989c89bec8632aa47dc58dc162f199d62edcJames Zern begin2_(other.begin2_), 33608b92989c89bec8632aa47dc58dc162f199d62edcJames Zern end2_(other.end2_), 33618b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current2_(other.current2_), 33628b92989c89bec8632aa47dc58dc162f199d62edcJames Zern begin3_(other.begin3_), 33638b92989c89bec8632aa47dc58dc162f199d62edcJames Zern end3_(other.end3_), 33648b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current3_(other.current3_) { 33658b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ComputeCurrentValue(); 33668b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 33678b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 33688b92989c89bec8632aa47dc58dc162f199d62edcJames Zern void ComputeCurrentValue() { 33698b92989c89bec8632aa47dc58dc162f199d62edcJames Zern if (!AtEnd()) 33708b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current_value_ = ParamType(*current1_, *current2_, *current3_); 33718b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 33728b92989c89bec8632aa47dc58dc162f199d62edcJames Zern bool AtEnd() const { 33738b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // We must report iterator past the end of the range when either of the 33748b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // component iterators has reached the end of its range. 33758b92989c89bec8632aa47dc58dc162f199d62edcJames Zern return 33768b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current1_ == end1_ || 33778b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current2_ == end2_ || 33788b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current3_ == end3_; 33798b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 33808b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 33818b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // No implementation - assignment is unsupported. 33828b92989c89bec8632aa47dc58dc162f199d62edcJames Zern void operator=(const Iterator& other); 33838b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 33848b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGeneratorInterface<ParamType>* const base_; 33858b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // begin[i]_ and end[i]_ define the i-th range that Iterator traverses. 33868b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // current[i]_ is the actual traversing iterator. 33878b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T1>::iterator begin1_; 33888b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T1>::iterator end1_; 33898b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename ParamGenerator<T1>::iterator current1_; 33908b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T2>::iterator begin2_; 33918b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T2>::iterator end2_; 33928b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename ParamGenerator<T2>::iterator current2_; 33938b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T3>::iterator begin3_; 33948b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T3>::iterator end3_; 33958b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename ParamGenerator<T3>::iterator current3_; 33968b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ParamType current_value_; 33978b92989c89bec8632aa47dc58dc162f199d62edcJames Zern }; // class CartesianProductGenerator3::Iterator 33988b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 33998b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // No implementation - assignment is unsupported. 34008b92989c89bec8632aa47dc58dc162f199d62edcJames Zern void operator=(const CartesianProductGenerator3& other); 34018b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 34028b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T1> g1_; 34038b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T2> g2_; 34048b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T3> g3_; 34058b92989c89bec8632aa47dc58dc162f199d62edcJames Zern}; // class CartesianProductGenerator3 34068b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 34078b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 34088b92989c89bec8632aa47dc58dc162f199d62edcJames Zerntemplate <typename T1, typename T2, typename T3, typename T4> 34098b92989c89bec8632aa47dc58dc162f199d62edcJames Zernclass CartesianProductGenerator4 34108b92989c89bec8632aa47dc58dc162f199d62edcJames Zern : public ParamGeneratorInterface< ::testing::tuple<T1, T2, T3, T4> > { 34118b92989c89bec8632aa47dc58dc162f199d62edcJames Zern public: 34128b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typedef ::testing::tuple<T1, T2, T3, T4> ParamType; 34138b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 34148b92989c89bec8632aa47dc58dc162f199d62edcJames Zern CartesianProductGenerator4(const ParamGenerator<T1>& g1, 34158b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T2>& g2, const ParamGenerator<T3>& g3, 34168b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T4>& g4) 34178b92989c89bec8632aa47dc58dc162f199d62edcJames Zern : g1_(g1), g2_(g2), g3_(g3), g4_(g4) {} 34188b92989c89bec8632aa47dc58dc162f199d62edcJames Zern virtual ~CartesianProductGenerator4() {} 34198b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 34208b92989c89bec8632aa47dc58dc162f199d62edcJames Zern virtual ParamIteratorInterface<ParamType>* Begin() const { 34218b92989c89bec8632aa47dc58dc162f199d62edcJames Zern return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_, 34228b92989c89bec8632aa47dc58dc162f199d62edcJames Zern g3_.begin(), g4_, g4_.begin()); 34238b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 34248b92989c89bec8632aa47dc58dc162f199d62edcJames Zern virtual ParamIteratorInterface<ParamType>* End() const { 34258b92989c89bec8632aa47dc58dc162f199d62edcJames Zern return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(), 34268b92989c89bec8632aa47dc58dc162f199d62edcJames Zern g4_, g4_.end()); 34278b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 34288b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 34298b92989c89bec8632aa47dc58dc162f199d62edcJames Zern private: 34308b92989c89bec8632aa47dc58dc162f199d62edcJames Zern class Iterator : public ParamIteratorInterface<ParamType> { 34318b92989c89bec8632aa47dc58dc162f199d62edcJames Zern public: 34328b92989c89bec8632aa47dc58dc162f199d62edcJames Zern Iterator(const ParamGeneratorInterface<ParamType>* base, 34338b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T1>& g1, 34348b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T1>::iterator& current1, 34358b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T2>& g2, 34368b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T2>::iterator& current2, 34378b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T3>& g3, 34388b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T3>::iterator& current3, 34398b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T4>& g4, 34408b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T4>::iterator& current4) 34418b92989c89bec8632aa47dc58dc162f199d62edcJames Zern : base_(base), 34428b92989c89bec8632aa47dc58dc162f199d62edcJames Zern begin1_(g1.begin()), end1_(g1.end()), current1_(current1), 34438b92989c89bec8632aa47dc58dc162f199d62edcJames Zern begin2_(g2.begin()), end2_(g2.end()), current2_(current2), 34448b92989c89bec8632aa47dc58dc162f199d62edcJames Zern begin3_(g3.begin()), end3_(g3.end()), current3_(current3), 34458b92989c89bec8632aa47dc58dc162f199d62edcJames Zern begin4_(g4.begin()), end4_(g4.end()), current4_(current4) { 34468b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ComputeCurrentValue(); 34478b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 34488b92989c89bec8632aa47dc58dc162f199d62edcJames Zern virtual ~Iterator() {} 34498b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 34508b92989c89bec8632aa47dc58dc162f199d62edcJames Zern virtual const ParamGeneratorInterface<ParamType>* BaseGenerator() const { 34518b92989c89bec8632aa47dc58dc162f199d62edcJames Zern return base_; 34528b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 34538b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // Advance should not be called on beyond-of-range iterators 34548b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // so no component iterators must be beyond end of range, either. 34558b92989c89bec8632aa47dc58dc162f199d62edcJames Zern virtual void Advance() { 34568b92989c89bec8632aa47dc58dc162f199d62edcJames Zern assert(!AtEnd()); 34578b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ++current4_; 34588b92989c89bec8632aa47dc58dc162f199d62edcJames Zern if (current4_ == end4_) { 34598b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current4_ = begin4_; 34608b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ++current3_; 34618b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 34628b92989c89bec8632aa47dc58dc162f199d62edcJames Zern if (current3_ == end3_) { 34638b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current3_ = begin3_; 34648b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ++current2_; 34658b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 34668b92989c89bec8632aa47dc58dc162f199d62edcJames Zern if (current2_ == end2_) { 34678b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current2_ = begin2_; 34688b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ++current1_; 34698b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 34708b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ComputeCurrentValue(); 34718b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 34728b92989c89bec8632aa47dc58dc162f199d62edcJames Zern virtual ParamIteratorInterface<ParamType>* Clone() const { 34738b92989c89bec8632aa47dc58dc162f199d62edcJames Zern return new Iterator(*this); 34748b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 34758b92989c89bec8632aa47dc58dc162f199d62edcJames Zern virtual const ParamType* Current() const { return ¤t_value_; } 34768b92989c89bec8632aa47dc58dc162f199d62edcJames Zern virtual bool Equals(const ParamIteratorInterface<ParamType>& other) const { 34778b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // Having the same base generator guarantees that the other 34788b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // iterator is of the same type and we can downcast. 34798b92989c89bec8632aa47dc58dc162f199d62edcJames Zern GTEST_CHECK_(BaseGenerator() == other.BaseGenerator()) 34808b92989c89bec8632aa47dc58dc162f199d62edcJames Zern << "The program attempted to compare iterators " 34818b92989c89bec8632aa47dc58dc162f199d62edcJames Zern << "from different generators." << std::endl; 34828b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const Iterator* typed_other = 34838b92989c89bec8632aa47dc58dc162f199d62edcJames Zern CheckedDowncastToActualType<const Iterator>(&other); 34848b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // We must report iterators equal if they both point beyond their 34858b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // respective ranges. That can happen in a variety of fashions, 34868b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // so we have to consult AtEnd(). 34878b92989c89bec8632aa47dc58dc162f199d62edcJames Zern return (AtEnd() && typed_other->AtEnd()) || 34888b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ( 34898b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current1_ == typed_other->current1_ && 34908b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current2_ == typed_other->current2_ && 34918b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current3_ == typed_other->current3_ && 34928b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current4_ == typed_other->current4_); 34938b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 34948b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 34958b92989c89bec8632aa47dc58dc162f199d62edcJames Zern private: 34968b92989c89bec8632aa47dc58dc162f199d62edcJames Zern Iterator(const Iterator& other) 34978b92989c89bec8632aa47dc58dc162f199d62edcJames Zern : base_(other.base_), 34988b92989c89bec8632aa47dc58dc162f199d62edcJames Zern begin1_(other.begin1_), 34998b92989c89bec8632aa47dc58dc162f199d62edcJames Zern end1_(other.end1_), 35008b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current1_(other.current1_), 35018b92989c89bec8632aa47dc58dc162f199d62edcJames Zern begin2_(other.begin2_), 35028b92989c89bec8632aa47dc58dc162f199d62edcJames Zern end2_(other.end2_), 35038b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current2_(other.current2_), 35048b92989c89bec8632aa47dc58dc162f199d62edcJames Zern begin3_(other.begin3_), 35058b92989c89bec8632aa47dc58dc162f199d62edcJames Zern end3_(other.end3_), 35068b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current3_(other.current3_), 35078b92989c89bec8632aa47dc58dc162f199d62edcJames Zern begin4_(other.begin4_), 35088b92989c89bec8632aa47dc58dc162f199d62edcJames Zern end4_(other.end4_), 35098b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current4_(other.current4_) { 35108b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ComputeCurrentValue(); 35118b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 35128b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 35138b92989c89bec8632aa47dc58dc162f199d62edcJames Zern void ComputeCurrentValue() { 35148b92989c89bec8632aa47dc58dc162f199d62edcJames Zern if (!AtEnd()) 35158b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current_value_ = ParamType(*current1_, *current2_, *current3_, 35168b92989c89bec8632aa47dc58dc162f199d62edcJames Zern *current4_); 35178b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 35188b92989c89bec8632aa47dc58dc162f199d62edcJames Zern bool AtEnd() const { 35198b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // We must report iterator past the end of the range when either of the 35208b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // component iterators has reached the end of its range. 35218b92989c89bec8632aa47dc58dc162f199d62edcJames Zern return 35228b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current1_ == end1_ || 35238b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current2_ == end2_ || 35248b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current3_ == end3_ || 35258b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current4_ == end4_; 35268b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 35278b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 35288b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // No implementation - assignment is unsupported. 35298b92989c89bec8632aa47dc58dc162f199d62edcJames Zern void operator=(const Iterator& other); 35308b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 35318b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGeneratorInterface<ParamType>* const base_; 35328b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // begin[i]_ and end[i]_ define the i-th range that Iterator traverses. 35338b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // current[i]_ is the actual traversing iterator. 35348b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T1>::iterator begin1_; 35358b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T1>::iterator end1_; 35368b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename ParamGenerator<T1>::iterator current1_; 35378b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T2>::iterator begin2_; 35388b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T2>::iterator end2_; 35398b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename ParamGenerator<T2>::iterator current2_; 35408b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T3>::iterator begin3_; 35418b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T3>::iterator end3_; 35428b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename ParamGenerator<T3>::iterator current3_; 35438b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T4>::iterator begin4_; 35448b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T4>::iterator end4_; 35458b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename ParamGenerator<T4>::iterator current4_; 35468b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ParamType current_value_; 35478b92989c89bec8632aa47dc58dc162f199d62edcJames Zern }; // class CartesianProductGenerator4::Iterator 35488b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 35498b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // No implementation - assignment is unsupported. 35508b92989c89bec8632aa47dc58dc162f199d62edcJames Zern void operator=(const CartesianProductGenerator4& other); 35518b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 35528b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T1> g1_; 35538b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T2> g2_; 35548b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T3> g3_; 35558b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T4> g4_; 35568b92989c89bec8632aa47dc58dc162f199d62edcJames Zern}; // class CartesianProductGenerator4 35578b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 35588b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 35598b92989c89bec8632aa47dc58dc162f199d62edcJames Zerntemplate <typename T1, typename T2, typename T3, typename T4, typename T5> 35608b92989c89bec8632aa47dc58dc162f199d62edcJames Zernclass CartesianProductGenerator5 35618b92989c89bec8632aa47dc58dc162f199d62edcJames Zern : public ParamGeneratorInterface< ::testing::tuple<T1, T2, T3, T4, T5> > { 35628b92989c89bec8632aa47dc58dc162f199d62edcJames Zern public: 35638b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typedef ::testing::tuple<T1, T2, T3, T4, T5> ParamType; 35648b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 35658b92989c89bec8632aa47dc58dc162f199d62edcJames Zern CartesianProductGenerator5(const ParamGenerator<T1>& g1, 35668b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T2>& g2, const ParamGenerator<T3>& g3, 35678b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T4>& g4, const ParamGenerator<T5>& g5) 35688b92989c89bec8632aa47dc58dc162f199d62edcJames Zern : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5) {} 35698b92989c89bec8632aa47dc58dc162f199d62edcJames Zern virtual ~CartesianProductGenerator5() {} 35708b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 35718b92989c89bec8632aa47dc58dc162f199d62edcJames Zern virtual ParamIteratorInterface<ParamType>* Begin() const { 35728b92989c89bec8632aa47dc58dc162f199d62edcJames Zern return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_, 35738b92989c89bec8632aa47dc58dc162f199d62edcJames Zern g3_.begin(), g4_, g4_.begin(), g5_, g5_.begin()); 35748b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 35758b92989c89bec8632aa47dc58dc162f199d62edcJames Zern virtual ParamIteratorInterface<ParamType>* End() const { 35768b92989c89bec8632aa47dc58dc162f199d62edcJames Zern return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(), 35778b92989c89bec8632aa47dc58dc162f199d62edcJames Zern g4_, g4_.end(), g5_, g5_.end()); 35788b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 35798b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 35808b92989c89bec8632aa47dc58dc162f199d62edcJames Zern private: 35818b92989c89bec8632aa47dc58dc162f199d62edcJames Zern class Iterator : public ParamIteratorInterface<ParamType> { 35828b92989c89bec8632aa47dc58dc162f199d62edcJames Zern public: 35838b92989c89bec8632aa47dc58dc162f199d62edcJames Zern Iterator(const ParamGeneratorInterface<ParamType>* base, 35848b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T1>& g1, 35858b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T1>::iterator& current1, 35868b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T2>& g2, 35878b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T2>::iterator& current2, 35888b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T3>& g3, 35898b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T3>::iterator& current3, 35908b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T4>& g4, 35918b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T4>::iterator& current4, 35928b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T5>& g5, 35938b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T5>::iterator& current5) 35948b92989c89bec8632aa47dc58dc162f199d62edcJames Zern : base_(base), 35958b92989c89bec8632aa47dc58dc162f199d62edcJames Zern begin1_(g1.begin()), end1_(g1.end()), current1_(current1), 35968b92989c89bec8632aa47dc58dc162f199d62edcJames Zern begin2_(g2.begin()), end2_(g2.end()), current2_(current2), 35978b92989c89bec8632aa47dc58dc162f199d62edcJames Zern begin3_(g3.begin()), end3_(g3.end()), current3_(current3), 35988b92989c89bec8632aa47dc58dc162f199d62edcJames Zern begin4_(g4.begin()), end4_(g4.end()), current4_(current4), 35998b92989c89bec8632aa47dc58dc162f199d62edcJames Zern begin5_(g5.begin()), end5_(g5.end()), current5_(current5) { 36008b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ComputeCurrentValue(); 36018b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 36028b92989c89bec8632aa47dc58dc162f199d62edcJames Zern virtual ~Iterator() {} 36038b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 36048b92989c89bec8632aa47dc58dc162f199d62edcJames Zern virtual const ParamGeneratorInterface<ParamType>* BaseGenerator() const { 36058b92989c89bec8632aa47dc58dc162f199d62edcJames Zern return base_; 36068b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 36078b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // Advance should not be called on beyond-of-range iterators 36088b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // so no component iterators must be beyond end of range, either. 36098b92989c89bec8632aa47dc58dc162f199d62edcJames Zern virtual void Advance() { 36108b92989c89bec8632aa47dc58dc162f199d62edcJames Zern assert(!AtEnd()); 36118b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ++current5_; 36128b92989c89bec8632aa47dc58dc162f199d62edcJames Zern if (current5_ == end5_) { 36138b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current5_ = begin5_; 36148b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ++current4_; 36158b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 36168b92989c89bec8632aa47dc58dc162f199d62edcJames Zern if (current4_ == end4_) { 36178b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current4_ = begin4_; 36188b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ++current3_; 36198b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 36208b92989c89bec8632aa47dc58dc162f199d62edcJames Zern if (current3_ == end3_) { 36218b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current3_ = begin3_; 36228b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ++current2_; 36238b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 36248b92989c89bec8632aa47dc58dc162f199d62edcJames Zern if (current2_ == end2_) { 36258b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current2_ = begin2_; 36268b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ++current1_; 36278b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 36288b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ComputeCurrentValue(); 36298b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 36308b92989c89bec8632aa47dc58dc162f199d62edcJames Zern virtual ParamIteratorInterface<ParamType>* Clone() const { 36318b92989c89bec8632aa47dc58dc162f199d62edcJames Zern return new Iterator(*this); 36328b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 36338b92989c89bec8632aa47dc58dc162f199d62edcJames Zern virtual const ParamType* Current() const { return ¤t_value_; } 36348b92989c89bec8632aa47dc58dc162f199d62edcJames Zern virtual bool Equals(const ParamIteratorInterface<ParamType>& other) const { 36358b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // Having the same base generator guarantees that the other 36368b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // iterator is of the same type and we can downcast. 36378b92989c89bec8632aa47dc58dc162f199d62edcJames Zern GTEST_CHECK_(BaseGenerator() == other.BaseGenerator()) 36388b92989c89bec8632aa47dc58dc162f199d62edcJames Zern << "The program attempted to compare iterators " 36398b92989c89bec8632aa47dc58dc162f199d62edcJames Zern << "from different generators." << std::endl; 36408b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const Iterator* typed_other = 36418b92989c89bec8632aa47dc58dc162f199d62edcJames Zern CheckedDowncastToActualType<const Iterator>(&other); 36428b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // We must report iterators equal if they both point beyond their 36438b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // respective ranges. That can happen in a variety of fashions, 36448b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // so we have to consult AtEnd(). 36458b92989c89bec8632aa47dc58dc162f199d62edcJames Zern return (AtEnd() && typed_other->AtEnd()) || 36468b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ( 36478b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current1_ == typed_other->current1_ && 36488b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current2_ == typed_other->current2_ && 36498b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current3_ == typed_other->current3_ && 36508b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current4_ == typed_other->current4_ && 36518b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current5_ == typed_other->current5_); 36528b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 36538b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 36548b92989c89bec8632aa47dc58dc162f199d62edcJames Zern private: 36558b92989c89bec8632aa47dc58dc162f199d62edcJames Zern Iterator(const Iterator& other) 36568b92989c89bec8632aa47dc58dc162f199d62edcJames Zern : base_(other.base_), 36578b92989c89bec8632aa47dc58dc162f199d62edcJames Zern begin1_(other.begin1_), 36588b92989c89bec8632aa47dc58dc162f199d62edcJames Zern end1_(other.end1_), 36598b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current1_(other.current1_), 36608b92989c89bec8632aa47dc58dc162f199d62edcJames Zern begin2_(other.begin2_), 36618b92989c89bec8632aa47dc58dc162f199d62edcJames Zern end2_(other.end2_), 36628b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current2_(other.current2_), 36638b92989c89bec8632aa47dc58dc162f199d62edcJames Zern begin3_(other.begin3_), 36648b92989c89bec8632aa47dc58dc162f199d62edcJames Zern end3_(other.end3_), 36658b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current3_(other.current3_), 36668b92989c89bec8632aa47dc58dc162f199d62edcJames Zern begin4_(other.begin4_), 36678b92989c89bec8632aa47dc58dc162f199d62edcJames Zern end4_(other.end4_), 36688b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current4_(other.current4_), 36698b92989c89bec8632aa47dc58dc162f199d62edcJames Zern begin5_(other.begin5_), 36708b92989c89bec8632aa47dc58dc162f199d62edcJames Zern end5_(other.end5_), 36718b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current5_(other.current5_) { 36728b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ComputeCurrentValue(); 36738b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 36748b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 36758b92989c89bec8632aa47dc58dc162f199d62edcJames Zern void ComputeCurrentValue() { 36768b92989c89bec8632aa47dc58dc162f199d62edcJames Zern if (!AtEnd()) 36778b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current_value_ = ParamType(*current1_, *current2_, *current3_, 36788b92989c89bec8632aa47dc58dc162f199d62edcJames Zern *current4_, *current5_); 36798b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 36808b92989c89bec8632aa47dc58dc162f199d62edcJames Zern bool AtEnd() const { 36818b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // We must report iterator past the end of the range when either of the 36828b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // component iterators has reached the end of its range. 36838b92989c89bec8632aa47dc58dc162f199d62edcJames Zern return 36848b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current1_ == end1_ || 36858b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current2_ == end2_ || 36868b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current3_ == end3_ || 36878b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current4_ == end4_ || 36888b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current5_ == end5_; 36898b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 36908b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 36918b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // No implementation - assignment is unsupported. 36928b92989c89bec8632aa47dc58dc162f199d62edcJames Zern void operator=(const Iterator& other); 36938b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 36948b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGeneratorInterface<ParamType>* const base_; 36958b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // begin[i]_ and end[i]_ define the i-th range that Iterator traverses. 36968b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // current[i]_ is the actual traversing iterator. 36978b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T1>::iterator begin1_; 36988b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T1>::iterator end1_; 36998b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename ParamGenerator<T1>::iterator current1_; 37008b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T2>::iterator begin2_; 37018b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T2>::iterator end2_; 37028b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename ParamGenerator<T2>::iterator current2_; 37038b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T3>::iterator begin3_; 37048b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T3>::iterator end3_; 37058b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename ParamGenerator<T3>::iterator current3_; 37068b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T4>::iterator begin4_; 37078b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T4>::iterator end4_; 37088b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename ParamGenerator<T4>::iterator current4_; 37098b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T5>::iterator begin5_; 37108b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T5>::iterator end5_; 37118b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename ParamGenerator<T5>::iterator current5_; 37128b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ParamType current_value_; 37138b92989c89bec8632aa47dc58dc162f199d62edcJames Zern }; // class CartesianProductGenerator5::Iterator 37148b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 37158b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // No implementation - assignment is unsupported. 37168b92989c89bec8632aa47dc58dc162f199d62edcJames Zern void operator=(const CartesianProductGenerator5& other); 37178b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 37188b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T1> g1_; 37198b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T2> g2_; 37208b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T3> g3_; 37218b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T4> g4_; 37228b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T5> g5_; 37238b92989c89bec8632aa47dc58dc162f199d62edcJames Zern}; // class CartesianProductGenerator5 37248b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 37258b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 37268b92989c89bec8632aa47dc58dc162f199d62edcJames Zerntemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 37278b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T6> 37288b92989c89bec8632aa47dc58dc162f199d62edcJames Zernclass CartesianProductGenerator6 37298b92989c89bec8632aa47dc58dc162f199d62edcJames Zern : public ParamGeneratorInterface< ::testing::tuple<T1, T2, T3, T4, T5, 37308b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T6> > { 37318b92989c89bec8632aa47dc58dc162f199d62edcJames Zern public: 37328b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typedef ::testing::tuple<T1, T2, T3, T4, T5, T6> ParamType; 37338b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 37348b92989c89bec8632aa47dc58dc162f199d62edcJames Zern CartesianProductGenerator6(const ParamGenerator<T1>& g1, 37358b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T2>& g2, const ParamGenerator<T3>& g3, 37368b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T4>& g4, const ParamGenerator<T5>& g5, 37378b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T6>& g6) 37388b92989c89bec8632aa47dc58dc162f199d62edcJames Zern : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6) {} 37398b92989c89bec8632aa47dc58dc162f199d62edcJames Zern virtual ~CartesianProductGenerator6() {} 37408b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 37418b92989c89bec8632aa47dc58dc162f199d62edcJames Zern virtual ParamIteratorInterface<ParamType>* Begin() const { 37428b92989c89bec8632aa47dc58dc162f199d62edcJames Zern return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_, 37438b92989c89bec8632aa47dc58dc162f199d62edcJames Zern g3_.begin(), g4_, g4_.begin(), g5_, g5_.begin(), g6_, g6_.begin()); 37448b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 37458b92989c89bec8632aa47dc58dc162f199d62edcJames Zern virtual ParamIteratorInterface<ParamType>* End() const { 37468b92989c89bec8632aa47dc58dc162f199d62edcJames Zern return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(), 37478b92989c89bec8632aa47dc58dc162f199d62edcJames Zern g4_, g4_.end(), g5_, g5_.end(), g6_, g6_.end()); 37488b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 37498b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 37508b92989c89bec8632aa47dc58dc162f199d62edcJames Zern private: 37518b92989c89bec8632aa47dc58dc162f199d62edcJames Zern class Iterator : public ParamIteratorInterface<ParamType> { 37528b92989c89bec8632aa47dc58dc162f199d62edcJames Zern public: 37538b92989c89bec8632aa47dc58dc162f199d62edcJames Zern Iterator(const ParamGeneratorInterface<ParamType>* base, 37548b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T1>& g1, 37558b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T1>::iterator& current1, 37568b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T2>& g2, 37578b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T2>::iterator& current2, 37588b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T3>& g3, 37598b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T3>::iterator& current3, 37608b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T4>& g4, 37618b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T4>::iterator& current4, 37628b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T5>& g5, 37638b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T5>::iterator& current5, 37648b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T6>& g6, 37658b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T6>::iterator& current6) 37668b92989c89bec8632aa47dc58dc162f199d62edcJames Zern : base_(base), 37678b92989c89bec8632aa47dc58dc162f199d62edcJames Zern begin1_(g1.begin()), end1_(g1.end()), current1_(current1), 37688b92989c89bec8632aa47dc58dc162f199d62edcJames Zern begin2_(g2.begin()), end2_(g2.end()), current2_(current2), 37698b92989c89bec8632aa47dc58dc162f199d62edcJames Zern begin3_(g3.begin()), end3_(g3.end()), current3_(current3), 37708b92989c89bec8632aa47dc58dc162f199d62edcJames Zern begin4_(g4.begin()), end4_(g4.end()), current4_(current4), 37718b92989c89bec8632aa47dc58dc162f199d62edcJames Zern begin5_(g5.begin()), end5_(g5.end()), current5_(current5), 37728b92989c89bec8632aa47dc58dc162f199d62edcJames Zern begin6_(g6.begin()), end6_(g6.end()), current6_(current6) { 37738b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ComputeCurrentValue(); 37748b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 37758b92989c89bec8632aa47dc58dc162f199d62edcJames Zern virtual ~Iterator() {} 37768b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 37778b92989c89bec8632aa47dc58dc162f199d62edcJames Zern virtual const ParamGeneratorInterface<ParamType>* BaseGenerator() const { 37788b92989c89bec8632aa47dc58dc162f199d62edcJames Zern return base_; 37798b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 37808b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // Advance should not be called on beyond-of-range iterators 37818b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // so no component iterators must be beyond end of range, either. 37828b92989c89bec8632aa47dc58dc162f199d62edcJames Zern virtual void Advance() { 37838b92989c89bec8632aa47dc58dc162f199d62edcJames Zern assert(!AtEnd()); 37848b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ++current6_; 37858b92989c89bec8632aa47dc58dc162f199d62edcJames Zern if (current6_ == end6_) { 37868b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current6_ = begin6_; 37878b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ++current5_; 37888b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 37898b92989c89bec8632aa47dc58dc162f199d62edcJames Zern if (current5_ == end5_) { 37908b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current5_ = begin5_; 37918b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ++current4_; 37928b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 37938b92989c89bec8632aa47dc58dc162f199d62edcJames Zern if (current4_ == end4_) { 37948b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current4_ = begin4_; 37958b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ++current3_; 37968b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 37978b92989c89bec8632aa47dc58dc162f199d62edcJames Zern if (current3_ == end3_) { 37988b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current3_ = begin3_; 37998b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ++current2_; 38008b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 38018b92989c89bec8632aa47dc58dc162f199d62edcJames Zern if (current2_ == end2_) { 38028b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current2_ = begin2_; 38038b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ++current1_; 38048b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 38058b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ComputeCurrentValue(); 38068b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 38078b92989c89bec8632aa47dc58dc162f199d62edcJames Zern virtual ParamIteratorInterface<ParamType>* Clone() const { 38088b92989c89bec8632aa47dc58dc162f199d62edcJames Zern return new Iterator(*this); 38098b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 38108b92989c89bec8632aa47dc58dc162f199d62edcJames Zern virtual const ParamType* Current() const { return ¤t_value_; } 38118b92989c89bec8632aa47dc58dc162f199d62edcJames Zern virtual bool Equals(const ParamIteratorInterface<ParamType>& other) const { 38128b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // Having the same base generator guarantees that the other 38138b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // iterator is of the same type and we can downcast. 38148b92989c89bec8632aa47dc58dc162f199d62edcJames Zern GTEST_CHECK_(BaseGenerator() == other.BaseGenerator()) 38158b92989c89bec8632aa47dc58dc162f199d62edcJames Zern << "The program attempted to compare iterators " 38168b92989c89bec8632aa47dc58dc162f199d62edcJames Zern << "from different generators." << std::endl; 38178b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const Iterator* typed_other = 38188b92989c89bec8632aa47dc58dc162f199d62edcJames Zern CheckedDowncastToActualType<const Iterator>(&other); 38198b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // We must report iterators equal if they both point beyond their 38208b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // respective ranges. That can happen in a variety of fashions, 38218b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // so we have to consult AtEnd(). 38228b92989c89bec8632aa47dc58dc162f199d62edcJames Zern return (AtEnd() && typed_other->AtEnd()) || 38238b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ( 38248b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current1_ == typed_other->current1_ && 38258b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current2_ == typed_other->current2_ && 38268b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current3_ == typed_other->current3_ && 38278b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current4_ == typed_other->current4_ && 38288b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current5_ == typed_other->current5_ && 38298b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current6_ == typed_other->current6_); 38308b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 38318b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 38328b92989c89bec8632aa47dc58dc162f199d62edcJames Zern private: 38338b92989c89bec8632aa47dc58dc162f199d62edcJames Zern Iterator(const Iterator& other) 38348b92989c89bec8632aa47dc58dc162f199d62edcJames Zern : base_(other.base_), 38358b92989c89bec8632aa47dc58dc162f199d62edcJames Zern begin1_(other.begin1_), 38368b92989c89bec8632aa47dc58dc162f199d62edcJames Zern end1_(other.end1_), 38378b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current1_(other.current1_), 38388b92989c89bec8632aa47dc58dc162f199d62edcJames Zern begin2_(other.begin2_), 38398b92989c89bec8632aa47dc58dc162f199d62edcJames Zern end2_(other.end2_), 38408b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current2_(other.current2_), 38418b92989c89bec8632aa47dc58dc162f199d62edcJames Zern begin3_(other.begin3_), 38428b92989c89bec8632aa47dc58dc162f199d62edcJames Zern end3_(other.end3_), 38438b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current3_(other.current3_), 38448b92989c89bec8632aa47dc58dc162f199d62edcJames Zern begin4_(other.begin4_), 38458b92989c89bec8632aa47dc58dc162f199d62edcJames Zern end4_(other.end4_), 38468b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current4_(other.current4_), 38478b92989c89bec8632aa47dc58dc162f199d62edcJames Zern begin5_(other.begin5_), 38488b92989c89bec8632aa47dc58dc162f199d62edcJames Zern end5_(other.end5_), 38498b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current5_(other.current5_), 38508b92989c89bec8632aa47dc58dc162f199d62edcJames Zern begin6_(other.begin6_), 38518b92989c89bec8632aa47dc58dc162f199d62edcJames Zern end6_(other.end6_), 38528b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current6_(other.current6_) { 38538b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ComputeCurrentValue(); 38548b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 38558b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 38568b92989c89bec8632aa47dc58dc162f199d62edcJames Zern void ComputeCurrentValue() { 38578b92989c89bec8632aa47dc58dc162f199d62edcJames Zern if (!AtEnd()) 38588b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current_value_ = ParamType(*current1_, *current2_, *current3_, 38598b92989c89bec8632aa47dc58dc162f199d62edcJames Zern *current4_, *current5_, *current6_); 38608b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 38618b92989c89bec8632aa47dc58dc162f199d62edcJames Zern bool AtEnd() const { 38628b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // We must report iterator past the end of the range when either of the 38638b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // component iterators has reached the end of its range. 38648b92989c89bec8632aa47dc58dc162f199d62edcJames Zern return 38658b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current1_ == end1_ || 38668b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current2_ == end2_ || 38678b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current3_ == end3_ || 38688b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current4_ == end4_ || 38698b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current5_ == end5_ || 38708b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current6_ == end6_; 38718b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 38728b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 38738b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // No implementation - assignment is unsupported. 38748b92989c89bec8632aa47dc58dc162f199d62edcJames Zern void operator=(const Iterator& other); 38758b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 38768b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGeneratorInterface<ParamType>* const base_; 38778b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // begin[i]_ and end[i]_ define the i-th range that Iterator traverses. 38788b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // current[i]_ is the actual traversing iterator. 38798b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T1>::iterator begin1_; 38808b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T1>::iterator end1_; 38818b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename ParamGenerator<T1>::iterator current1_; 38828b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T2>::iterator begin2_; 38838b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T2>::iterator end2_; 38848b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename ParamGenerator<T2>::iterator current2_; 38858b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T3>::iterator begin3_; 38868b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T3>::iterator end3_; 38878b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename ParamGenerator<T3>::iterator current3_; 38888b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T4>::iterator begin4_; 38898b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T4>::iterator end4_; 38908b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename ParamGenerator<T4>::iterator current4_; 38918b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T5>::iterator begin5_; 38928b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T5>::iterator end5_; 38938b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename ParamGenerator<T5>::iterator current5_; 38948b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T6>::iterator begin6_; 38958b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T6>::iterator end6_; 38968b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename ParamGenerator<T6>::iterator current6_; 38978b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ParamType current_value_; 38988b92989c89bec8632aa47dc58dc162f199d62edcJames Zern }; // class CartesianProductGenerator6::Iterator 38998b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 39008b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // No implementation - assignment is unsupported. 39018b92989c89bec8632aa47dc58dc162f199d62edcJames Zern void operator=(const CartesianProductGenerator6& other); 39028b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 39038b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T1> g1_; 39048b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T2> g2_; 39058b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T3> g3_; 39068b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T4> g4_; 39078b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T5> g5_; 39088b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T6> g6_; 39098b92989c89bec8632aa47dc58dc162f199d62edcJames Zern}; // class CartesianProductGenerator6 39108b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 39118b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 39128b92989c89bec8632aa47dc58dc162f199d62edcJames Zerntemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 39138b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T6, typename T7> 39148b92989c89bec8632aa47dc58dc162f199d62edcJames Zernclass CartesianProductGenerator7 39158b92989c89bec8632aa47dc58dc162f199d62edcJames Zern : public ParamGeneratorInterface< ::testing::tuple<T1, T2, T3, T4, T5, T6, 39168b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T7> > { 39178b92989c89bec8632aa47dc58dc162f199d62edcJames Zern public: 39188b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typedef ::testing::tuple<T1, T2, T3, T4, T5, T6, T7> ParamType; 39198b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 39208b92989c89bec8632aa47dc58dc162f199d62edcJames Zern CartesianProductGenerator7(const ParamGenerator<T1>& g1, 39218b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T2>& g2, const ParamGenerator<T3>& g3, 39228b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T4>& g4, const ParamGenerator<T5>& g5, 39238b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T6>& g6, const ParamGenerator<T7>& g7) 39248b92989c89bec8632aa47dc58dc162f199d62edcJames Zern : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7) {} 39258b92989c89bec8632aa47dc58dc162f199d62edcJames Zern virtual ~CartesianProductGenerator7() {} 39268b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 39278b92989c89bec8632aa47dc58dc162f199d62edcJames Zern virtual ParamIteratorInterface<ParamType>* Begin() const { 39288b92989c89bec8632aa47dc58dc162f199d62edcJames Zern return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_, 39298b92989c89bec8632aa47dc58dc162f199d62edcJames Zern g3_.begin(), g4_, g4_.begin(), g5_, g5_.begin(), g6_, g6_.begin(), g7_, 39308b92989c89bec8632aa47dc58dc162f199d62edcJames Zern g7_.begin()); 39318b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 39328b92989c89bec8632aa47dc58dc162f199d62edcJames Zern virtual ParamIteratorInterface<ParamType>* End() const { 39338b92989c89bec8632aa47dc58dc162f199d62edcJames Zern return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(), 39348b92989c89bec8632aa47dc58dc162f199d62edcJames Zern g4_, g4_.end(), g5_, g5_.end(), g6_, g6_.end(), g7_, g7_.end()); 39358b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 39368b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 39378b92989c89bec8632aa47dc58dc162f199d62edcJames Zern private: 39388b92989c89bec8632aa47dc58dc162f199d62edcJames Zern class Iterator : public ParamIteratorInterface<ParamType> { 39398b92989c89bec8632aa47dc58dc162f199d62edcJames Zern public: 39408b92989c89bec8632aa47dc58dc162f199d62edcJames Zern Iterator(const ParamGeneratorInterface<ParamType>* base, 39418b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T1>& g1, 39428b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T1>::iterator& current1, 39438b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T2>& g2, 39448b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T2>::iterator& current2, 39458b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T3>& g3, 39468b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T3>::iterator& current3, 39478b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T4>& g4, 39488b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T4>::iterator& current4, 39498b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T5>& g5, 39508b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T5>::iterator& current5, 39518b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T6>& g6, 39528b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T6>::iterator& current6, 39538b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T7>& g7, 39548b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T7>::iterator& current7) 39558b92989c89bec8632aa47dc58dc162f199d62edcJames Zern : base_(base), 39568b92989c89bec8632aa47dc58dc162f199d62edcJames Zern begin1_(g1.begin()), end1_(g1.end()), current1_(current1), 39578b92989c89bec8632aa47dc58dc162f199d62edcJames Zern begin2_(g2.begin()), end2_(g2.end()), current2_(current2), 39588b92989c89bec8632aa47dc58dc162f199d62edcJames Zern begin3_(g3.begin()), end3_(g3.end()), current3_(current3), 39598b92989c89bec8632aa47dc58dc162f199d62edcJames Zern begin4_(g4.begin()), end4_(g4.end()), current4_(current4), 39608b92989c89bec8632aa47dc58dc162f199d62edcJames Zern begin5_(g5.begin()), end5_(g5.end()), current5_(current5), 39618b92989c89bec8632aa47dc58dc162f199d62edcJames Zern begin6_(g6.begin()), end6_(g6.end()), current6_(current6), 39628b92989c89bec8632aa47dc58dc162f199d62edcJames Zern begin7_(g7.begin()), end7_(g7.end()), current7_(current7) { 39638b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ComputeCurrentValue(); 39648b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 39658b92989c89bec8632aa47dc58dc162f199d62edcJames Zern virtual ~Iterator() {} 39668b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 39678b92989c89bec8632aa47dc58dc162f199d62edcJames Zern virtual const ParamGeneratorInterface<ParamType>* BaseGenerator() const { 39688b92989c89bec8632aa47dc58dc162f199d62edcJames Zern return base_; 39698b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 39708b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // Advance should not be called on beyond-of-range iterators 39718b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // so no component iterators must be beyond end of range, either. 39728b92989c89bec8632aa47dc58dc162f199d62edcJames Zern virtual void Advance() { 39738b92989c89bec8632aa47dc58dc162f199d62edcJames Zern assert(!AtEnd()); 39748b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ++current7_; 39758b92989c89bec8632aa47dc58dc162f199d62edcJames Zern if (current7_ == end7_) { 39768b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current7_ = begin7_; 39778b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ++current6_; 39788b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 39798b92989c89bec8632aa47dc58dc162f199d62edcJames Zern if (current6_ == end6_) { 39808b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current6_ = begin6_; 39818b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ++current5_; 39828b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 39838b92989c89bec8632aa47dc58dc162f199d62edcJames Zern if (current5_ == end5_) { 39848b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current5_ = begin5_; 39858b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ++current4_; 39868b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 39878b92989c89bec8632aa47dc58dc162f199d62edcJames Zern if (current4_ == end4_) { 39888b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current4_ = begin4_; 39898b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ++current3_; 39908b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 39918b92989c89bec8632aa47dc58dc162f199d62edcJames Zern if (current3_ == end3_) { 39928b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current3_ = begin3_; 39938b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ++current2_; 39948b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 39958b92989c89bec8632aa47dc58dc162f199d62edcJames Zern if (current2_ == end2_) { 39968b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current2_ = begin2_; 39978b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ++current1_; 39988b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 39998b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ComputeCurrentValue(); 40008b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 40018b92989c89bec8632aa47dc58dc162f199d62edcJames Zern virtual ParamIteratorInterface<ParamType>* Clone() const { 40028b92989c89bec8632aa47dc58dc162f199d62edcJames Zern return new Iterator(*this); 40038b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 40048b92989c89bec8632aa47dc58dc162f199d62edcJames Zern virtual const ParamType* Current() const { return ¤t_value_; } 40058b92989c89bec8632aa47dc58dc162f199d62edcJames Zern virtual bool Equals(const ParamIteratorInterface<ParamType>& other) const { 40068b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // Having the same base generator guarantees that the other 40078b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // iterator is of the same type and we can downcast. 40088b92989c89bec8632aa47dc58dc162f199d62edcJames Zern GTEST_CHECK_(BaseGenerator() == other.BaseGenerator()) 40098b92989c89bec8632aa47dc58dc162f199d62edcJames Zern << "The program attempted to compare iterators " 40108b92989c89bec8632aa47dc58dc162f199d62edcJames Zern << "from different generators." << std::endl; 40118b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const Iterator* typed_other = 40128b92989c89bec8632aa47dc58dc162f199d62edcJames Zern CheckedDowncastToActualType<const Iterator>(&other); 40138b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // We must report iterators equal if they both point beyond their 40148b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // respective ranges. That can happen in a variety of fashions, 40158b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // so we have to consult AtEnd(). 40168b92989c89bec8632aa47dc58dc162f199d62edcJames Zern return (AtEnd() && typed_other->AtEnd()) || 40178b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ( 40188b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current1_ == typed_other->current1_ && 40198b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current2_ == typed_other->current2_ && 40208b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current3_ == typed_other->current3_ && 40218b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current4_ == typed_other->current4_ && 40228b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current5_ == typed_other->current5_ && 40238b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current6_ == typed_other->current6_ && 40248b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current7_ == typed_other->current7_); 40258b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 40268b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 40278b92989c89bec8632aa47dc58dc162f199d62edcJames Zern private: 40288b92989c89bec8632aa47dc58dc162f199d62edcJames Zern Iterator(const Iterator& other) 40298b92989c89bec8632aa47dc58dc162f199d62edcJames Zern : base_(other.base_), 40308b92989c89bec8632aa47dc58dc162f199d62edcJames Zern begin1_(other.begin1_), 40318b92989c89bec8632aa47dc58dc162f199d62edcJames Zern end1_(other.end1_), 40328b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current1_(other.current1_), 40338b92989c89bec8632aa47dc58dc162f199d62edcJames Zern begin2_(other.begin2_), 40348b92989c89bec8632aa47dc58dc162f199d62edcJames Zern end2_(other.end2_), 40358b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current2_(other.current2_), 40368b92989c89bec8632aa47dc58dc162f199d62edcJames Zern begin3_(other.begin3_), 40378b92989c89bec8632aa47dc58dc162f199d62edcJames Zern end3_(other.end3_), 40388b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current3_(other.current3_), 40398b92989c89bec8632aa47dc58dc162f199d62edcJames Zern begin4_(other.begin4_), 40408b92989c89bec8632aa47dc58dc162f199d62edcJames Zern end4_(other.end4_), 40418b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current4_(other.current4_), 40428b92989c89bec8632aa47dc58dc162f199d62edcJames Zern begin5_(other.begin5_), 40438b92989c89bec8632aa47dc58dc162f199d62edcJames Zern end5_(other.end5_), 40448b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current5_(other.current5_), 40458b92989c89bec8632aa47dc58dc162f199d62edcJames Zern begin6_(other.begin6_), 40468b92989c89bec8632aa47dc58dc162f199d62edcJames Zern end6_(other.end6_), 40478b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current6_(other.current6_), 40488b92989c89bec8632aa47dc58dc162f199d62edcJames Zern begin7_(other.begin7_), 40498b92989c89bec8632aa47dc58dc162f199d62edcJames Zern end7_(other.end7_), 40508b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current7_(other.current7_) { 40518b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ComputeCurrentValue(); 40528b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 40538b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 40548b92989c89bec8632aa47dc58dc162f199d62edcJames Zern void ComputeCurrentValue() { 40558b92989c89bec8632aa47dc58dc162f199d62edcJames Zern if (!AtEnd()) 40568b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current_value_ = ParamType(*current1_, *current2_, *current3_, 40578b92989c89bec8632aa47dc58dc162f199d62edcJames Zern *current4_, *current5_, *current6_, *current7_); 40588b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 40598b92989c89bec8632aa47dc58dc162f199d62edcJames Zern bool AtEnd() const { 40608b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // We must report iterator past the end of the range when either of the 40618b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // component iterators has reached the end of its range. 40628b92989c89bec8632aa47dc58dc162f199d62edcJames Zern return 40638b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current1_ == end1_ || 40648b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current2_ == end2_ || 40658b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current3_ == end3_ || 40668b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current4_ == end4_ || 40678b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current5_ == end5_ || 40688b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current6_ == end6_ || 40698b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current7_ == end7_; 40708b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 40718b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 40728b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // No implementation - assignment is unsupported. 40738b92989c89bec8632aa47dc58dc162f199d62edcJames Zern void operator=(const Iterator& other); 40748b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 40758b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGeneratorInterface<ParamType>* const base_; 40768b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // begin[i]_ and end[i]_ define the i-th range that Iterator traverses. 40778b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // current[i]_ is the actual traversing iterator. 40788b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T1>::iterator begin1_; 40798b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T1>::iterator end1_; 40808b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename ParamGenerator<T1>::iterator current1_; 40818b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T2>::iterator begin2_; 40828b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T2>::iterator end2_; 40838b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename ParamGenerator<T2>::iterator current2_; 40848b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T3>::iterator begin3_; 40858b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T3>::iterator end3_; 40868b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename ParamGenerator<T3>::iterator current3_; 40878b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T4>::iterator begin4_; 40888b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T4>::iterator end4_; 40898b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename ParamGenerator<T4>::iterator current4_; 40908b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T5>::iterator begin5_; 40918b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T5>::iterator end5_; 40928b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename ParamGenerator<T5>::iterator current5_; 40938b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T6>::iterator begin6_; 40948b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T6>::iterator end6_; 40958b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename ParamGenerator<T6>::iterator current6_; 40968b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T7>::iterator begin7_; 40978b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T7>::iterator end7_; 40988b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename ParamGenerator<T7>::iterator current7_; 40998b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ParamType current_value_; 41008b92989c89bec8632aa47dc58dc162f199d62edcJames Zern }; // class CartesianProductGenerator7::Iterator 41018b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 41028b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // No implementation - assignment is unsupported. 41038b92989c89bec8632aa47dc58dc162f199d62edcJames Zern void operator=(const CartesianProductGenerator7& other); 41048b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 41058b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T1> g1_; 41068b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T2> g2_; 41078b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T3> g3_; 41088b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T4> g4_; 41098b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T5> g5_; 41108b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T6> g6_; 41118b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T7> g7_; 41128b92989c89bec8632aa47dc58dc162f199d62edcJames Zern}; // class CartesianProductGenerator7 41138b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 41148b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 41158b92989c89bec8632aa47dc58dc162f199d62edcJames Zerntemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 41168b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T6, typename T7, typename T8> 41178b92989c89bec8632aa47dc58dc162f199d62edcJames Zernclass CartesianProductGenerator8 41188b92989c89bec8632aa47dc58dc162f199d62edcJames Zern : public ParamGeneratorInterface< ::testing::tuple<T1, T2, T3, T4, T5, T6, 41198b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T7, T8> > { 41208b92989c89bec8632aa47dc58dc162f199d62edcJames Zern public: 41218b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typedef ::testing::tuple<T1, T2, T3, T4, T5, T6, T7, T8> ParamType; 41228b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 41238b92989c89bec8632aa47dc58dc162f199d62edcJames Zern CartesianProductGenerator8(const ParamGenerator<T1>& g1, 41248b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T2>& g2, const ParamGenerator<T3>& g3, 41258b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T4>& g4, const ParamGenerator<T5>& g5, 41268b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T6>& g6, const ParamGenerator<T7>& g7, 41278b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T8>& g8) 41288b92989c89bec8632aa47dc58dc162f199d62edcJames Zern : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7), 41298b92989c89bec8632aa47dc58dc162f199d62edcJames Zern g8_(g8) {} 41308b92989c89bec8632aa47dc58dc162f199d62edcJames Zern virtual ~CartesianProductGenerator8() {} 41318b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 41328b92989c89bec8632aa47dc58dc162f199d62edcJames Zern virtual ParamIteratorInterface<ParamType>* Begin() const { 41338b92989c89bec8632aa47dc58dc162f199d62edcJames Zern return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_, 41348b92989c89bec8632aa47dc58dc162f199d62edcJames Zern g3_.begin(), g4_, g4_.begin(), g5_, g5_.begin(), g6_, g6_.begin(), g7_, 41358b92989c89bec8632aa47dc58dc162f199d62edcJames Zern g7_.begin(), g8_, g8_.begin()); 41368b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 41378b92989c89bec8632aa47dc58dc162f199d62edcJames Zern virtual ParamIteratorInterface<ParamType>* End() const { 41388b92989c89bec8632aa47dc58dc162f199d62edcJames Zern return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(), 41398b92989c89bec8632aa47dc58dc162f199d62edcJames Zern g4_, g4_.end(), g5_, g5_.end(), g6_, g6_.end(), g7_, g7_.end(), g8_, 41408b92989c89bec8632aa47dc58dc162f199d62edcJames Zern g8_.end()); 41418b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 41428b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 41438b92989c89bec8632aa47dc58dc162f199d62edcJames Zern private: 41448b92989c89bec8632aa47dc58dc162f199d62edcJames Zern class Iterator : public ParamIteratorInterface<ParamType> { 41458b92989c89bec8632aa47dc58dc162f199d62edcJames Zern public: 41468b92989c89bec8632aa47dc58dc162f199d62edcJames Zern Iterator(const ParamGeneratorInterface<ParamType>* base, 41478b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T1>& g1, 41488b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T1>::iterator& current1, 41498b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T2>& g2, 41508b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T2>::iterator& current2, 41518b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T3>& g3, 41528b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T3>::iterator& current3, 41538b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T4>& g4, 41548b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T4>::iterator& current4, 41558b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T5>& g5, 41568b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T5>::iterator& current5, 41578b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T6>& g6, 41588b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T6>::iterator& current6, 41598b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T7>& g7, 41608b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T7>::iterator& current7, 41618b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T8>& g8, 41628b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T8>::iterator& current8) 41638b92989c89bec8632aa47dc58dc162f199d62edcJames Zern : base_(base), 41648b92989c89bec8632aa47dc58dc162f199d62edcJames Zern begin1_(g1.begin()), end1_(g1.end()), current1_(current1), 41658b92989c89bec8632aa47dc58dc162f199d62edcJames Zern begin2_(g2.begin()), end2_(g2.end()), current2_(current2), 41668b92989c89bec8632aa47dc58dc162f199d62edcJames Zern begin3_(g3.begin()), end3_(g3.end()), current3_(current3), 41678b92989c89bec8632aa47dc58dc162f199d62edcJames Zern begin4_(g4.begin()), end4_(g4.end()), current4_(current4), 41688b92989c89bec8632aa47dc58dc162f199d62edcJames Zern begin5_(g5.begin()), end5_(g5.end()), current5_(current5), 41698b92989c89bec8632aa47dc58dc162f199d62edcJames Zern begin6_(g6.begin()), end6_(g6.end()), current6_(current6), 41708b92989c89bec8632aa47dc58dc162f199d62edcJames Zern begin7_(g7.begin()), end7_(g7.end()), current7_(current7), 41718b92989c89bec8632aa47dc58dc162f199d62edcJames Zern begin8_(g8.begin()), end8_(g8.end()), current8_(current8) { 41728b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ComputeCurrentValue(); 41738b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 41748b92989c89bec8632aa47dc58dc162f199d62edcJames Zern virtual ~Iterator() {} 41758b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 41768b92989c89bec8632aa47dc58dc162f199d62edcJames Zern virtual const ParamGeneratorInterface<ParamType>* BaseGenerator() const { 41778b92989c89bec8632aa47dc58dc162f199d62edcJames Zern return base_; 41788b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 41798b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // Advance should not be called on beyond-of-range iterators 41808b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // so no component iterators must be beyond end of range, either. 41818b92989c89bec8632aa47dc58dc162f199d62edcJames Zern virtual void Advance() { 41828b92989c89bec8632aa47dc58dc162f199d62edcJames Zern assert(!AtEnd()); 41838b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ++current8_; 41848b92989c89bec8632aa47dc58dc162f199d62edcJames Zern if (current8_ == end8_) { 41858b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current8_ = begin8_; 41868b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ++current7_; 41878b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 41888b92989c89bec8632aa47dc58dc162f199d62edcJames Zern if (current7_ == end7_) { 41898b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current7_ = begin7_; 41908b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ++current6_; 41918b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 41928b92989c89bec8632aa47dc58dc162f199d62edcJames Zern if (current6_ == end6_) { 41938b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current6_ = begin6_; 41948b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ++current5_; 41958b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 41968b92989c89bec8632aa47dc58dc162f199d62edcJames Zern if (current5_ == end5_) { 41978b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current5_ = begin5_; 41988b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ++current4_; 41998b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 42008b92989c89bec8632aa47dc58dc162f199d62edcJames Zern if (current4_ == end4_) { 42018b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current4_ = begin4_; 42028b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ++current3_; 42038b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 42048b92989c89bec8632aa47dc58dc162f199d62edcJames Zern if (current3_ == end3_) { 42058b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current3_ = begin3_; 42068b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ++current2_; 42078b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 42088b92989c89bec8632aa47dc58dc162f199d62edcJames Zern if (current2_ == end2_) { 42098b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current2_ = begin2_; 42108b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ++current1_; 42118b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 42128b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ComputeCurrentValue(); 42138b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 42148b92989c89bec8632aa47dc58dc162f199d62edcJames Zern virtual ParamIteratorInterface<ParamType>* Clone() const { 42158b92989c89bec8632aa47dc58dc162f199d62edcJames Zern return new Iterator(*this); 42168b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 42178b92989c89bec8632aa47dc58dc162f199d62edcJames Zern virtual const ParamType* Current() const { return ¤t_value_; } 42188b92989c89bec8632aa47dc58dc162f199d62edcJames Zern virtual bool Equals(const ParamIteratorInterface<ParamType>& other) const { 42198b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // Having the same base generator guarantees that the other 42208b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // iterator is of the same type and we can downcast. 42218b92989c89bec8632aa47dc58dc162f199d62edcJames Zern GTEST_CHECK_(BaseGenerator() == other.BaseGenerator()) 42228b92989c89bec8632aa47dc58dc162f199d62edcJames Zern << "The program attempted to compare iterators " 42238b92989c89bec8632aa47dc58dc162f199d62edcJames Zern << "from different generators." << std::endl; 42248b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const Iterator* typed_other = 42258b92989c89bec8632aa47dc58dc162f199d62edcJames Zern CheckedDowncastToActualType<const Iterator>(&other); 42268b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // We must report iterators equal if they both point beyond their 42278b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // respective ranges. That can happen in a variety of fashions, 42288b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // so we have to consult AtEnd(). 42298b92989c89bec8632aa47dc58dc162f199d62edcJames Zern return (AtEnd() && typed_other->AtEnd()) || 42308b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ( 42318b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current1_ == typed_other->current1_ && 42328b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current2_ == typed_other->current2_ && 42338b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current3_ == typed_other->current3_ && 42348b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current4_ == typed_other->current4_ && 42358b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current5_ == typed_other->current5_ && 42368b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current6_ == typed_other->current6_ && 42378b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current7_ == typed_other->current7_ && 42388b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current8_ == typed_other->current8_); 42398b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 42408b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 42418b92989c89bec8632aa47dc58dc162f199d62edcJames Zern private: 42428b92989c89bec8632aa47dc58dc162f199d62edcJames Zern Iterator(const Iterator& other) 42438b92989c89bec8632aa47dc58dc162f199d62edcJames Zern : base_(other.base_), 42448b92989c89bec8632aa47dc58dc162f199d62edcJames Zern begin1_(other.begin1_), 42458b92989c89bec8632aa47dc58dc162f199d62edcJames Zern end1_(other.end1_), 42468b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current1_(other.current1_), 42478b92989c89bec8632aa47dc58dc162f199d62edcJames Zern begin2_(other.begin2_), 42488b92989c89bec8632aa47dc58dc162f199d62edcJames Zern end2_(other.end2_), 42498b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current2_(other.current2_), 42508b92989c89bec8632aa47dc58dc162f199d62edcJames Zern begin3_(other.begin3_), 42518b92989c89bec8632aa47dc58dc162f199d62edcJames Zern end3_(other.end3_), 42528b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current3_(other.current3_), 42538b92989c89bec8632aa47dc58dc162f199d62edcJames Zern begin4_(other.begin4_), 42548b92989c89bec8632aa47dc58dc162f199d62edcJames Zern end4_(other.end4_), 42558b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current4_(other.current4_), 42568b92989c89bec8632aa47dc58dc162f199d62edcJames Zern begin5_(other.begin5_), 42578b92989c89bec8632aa47dc58dc162f199d62edcJames Zern end5_(other.end5_), 42588b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current5_(other.current5_), 42598b92989c89bec8632aa47dc58dc162f199d62edcJames Zern begin6_(other.begin6_), 42608b92989c89bec8632aa47dc58dc162f199d62edcJames Zern end6_(other.end6_), 42618b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current6_(other.current6_), 42628b92989c89bec8632aa47dc58dc162f199d62edcJames Zern begin7_(other.begin7_), 42638b92989c89bec8632aa47dc58dc162f199d62edcJames Zern end7_(other.end7_), 42648b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current7_(other.current7_), 42658b92989c89bec8632aa47dc58dc162f199d62edcJames Zern begin8_(other.begin8_), 42668b92989c89bec8632aa47dc58dc162f199d62edcJames Zern end8_(other.end8_), 42678b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current8_(other.current8_) { 42688b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ComputeCurrentValue(); 42698b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 42708b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 42718b92989c89bec8632aa47dc58dc162f199d62edcJames Zern void ComputeCurrentValue() { 42728b92989c89bec8632aa47dc58dc162f199d62edcJames Zern if (!AtEnd()) 42738b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current_value_ = ParamType(*current1_, *current2_, *current3_, 42748b92989c89bec8632aa47dc58dc162f199d62edcJames Zern *current4_, *current5_, *current6_, *current7_, *current8_); 42758b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 42768b92989c89bec8632aa47dc58dc162f199d62edcJames Zern bool AtEnd() const { 42778b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // We must report iterator past the end of the range when either of the 42788b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // component iterators has reached the end of its range. 42798b92989c89bec8632aa47dc58dc162f199d62edcJames Zern return 42808b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current1_ == end1_ || 42818b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current2_ == end2_ || 42828b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current3_ == end3_ || 42838b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current4_ == end4_ || 42848b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current5_ == end5_ || 42858b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current6_ == end6_ || 42868b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current7_ == end7_ || 42878b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current8_ == end8_; 42888b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 42898b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 42908b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // No implementation - assignment is unsupported. 42918b92989c89bec8632aa47dc58dc162f199d62edcJames Zern void operator=(const Iterator& other); 42928b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 42938b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGeneratorInterface<ParamType>* const base_; 42948b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // begin[i]_ and end[i]_ define the i-th range that Iterator traverses. 42958b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // current[i]_ is the actual traversing iterator. 42968b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T1>::iterator begin1_; 42978b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T1>::iterator end1_; 42988b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename ParamGenerator<T1>::iterator current1_; 42998b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T2>::iterator begin2_; 43008b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T2>::iterator end2_; 43018b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename ParamGenerator<T2>::iterator current2_; 43028b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T3>::iterator begin3_; 43038b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T3>::iterator end3_; 43048b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename ParamGenerator<T3>::iterator current3_; 43058b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T4>::iterator begin4_; 43068b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T4>::iterator end4_; 43078b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename ParamGenerator<T4>::iterator current4_; 43088b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T5>::iterator begin5_; 43098b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T5>::iterator end5_; 43108b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename ParamGenerator<T5>::iterator current5_; 43118b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T6>::iterator begin6_; 43128b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T6>::iterator end6_; 43138b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename ParamGenerator<T6>::iterator current6_; 43148b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T7>::iterator begin7_; 43158b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T7>::iterator end7_; 43168b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename ParamGenerator<T7>::iterator current7_; 43178b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T8>::iterator begin8_; 43188b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T8>::iterator end8_; 43198b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename ParamGenerator<T8>::iterator current8_; 43208b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ParamType current_value_; 43218b92989c89bec8632aa47dc58dc162f199d62edcJames Zern }; // class CartesianProductGenerator8::Iterator 43228b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 43238b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // No implementation - assignment is unsupported. 43248b92989c89bec8632aa47dc58dc162f199d62edcJames Zern void operator=(const CartesianProductGenerator8& other); 43258b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 43268b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T1> g1_; 43278b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T2> g2_; 43288b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T3> g3_; 43298b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T4> g4_; 43308b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T5> g5_; 43318b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T6> g6_; 43328b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T7> g7_; 43338b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T8> g8_; 43348b92989c89bec8632aa47dc58dc162f199d62edcJames Zern}; // class CartesianProductGenerator8 43358b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 43368b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 43378b92989c89bec8632aa47dc58dc162f199d62edcJames Zerntemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 43388b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T6, typename T7, typename T8, typename T9> 43398b92989c89bec8632aa47dc58dc162f199d62edcJames Zernclass CartesianProductGenerator9 43408b92989c89bec8632aa47dc58dc162f199d62edcJames Zern : public ParamGeneratorInterface< ::testing::tuple<T1, T2, T3, T4, T5, T6, 43418b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T7, T8, T9> > { 43428b92989c89bec8632aa47dc58dc162f199d62edcJames Zern public: 43438b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typedef ::testing::tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9> ParamType; 43448b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 43458b92989c89bec8632aa47dc58dc162f199d62edcJames Zern CartesianProductGenerator9(const ParamGenerator<T1>& g1, 43468b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T2>& g2, const ParamGenerator<T3>& g3, 43478b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T4>& g4, const ParamGenerator<T5>& g5, 43488b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T6>& g6, const ParamGenerator<T7>& g7, 43498b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T8>& g8, const ParamGenerator<T9>& g9) 43508b92989c89bec8632aa47dc58dc162f199d62edcJames Zern : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7), g8_(g8), 43518b92989c89bec8632aa47dc58dc162f199d62edcJames Zern g9_(g9) {} 43528b92989c89bec8632aa47dc58dc162f199d62edcJames Zern virtual ~CartesianProductGenerator9() {} 43538b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 43548b92989c89bec8632aa47dc58dc162f199d62edcJames Zern virtual ParamIteratorInterface<ParamType>* Begin() const { 43558b92989c89bec8632aa47dc58dc162f199d62edcJames Zern return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_, 43568b92989c89bec8632aa47dc58dc162f199d62edcJames Zern g3_.begin(), g4_, g4_.begin(), g5_, g5_.begin(), g6_, g6_.begin(), g7_, 43578b92989c89bec8632aa47dc58dc162f199d62edcJames Zern g7_.begin(), g8_, g8_.begin(), g9_, g9_.begin()); 43588b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 43598b92989c89bec8632aa47dc58dc162f199d62edcJames Zern virtual ParamIteratorInterface<ParamType>* End() const { 43608b92989c89bec8632aa47dc58dc162f199d62edcJames Zern return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(), 43618b92989c89bec8632aa47dc58dc162f199d62edcJames Zern g4_, g4_.end(), g5_, g5_.end(), g6_, g6_.end(), g7_, g7_.end(), g8_, 43628b92989c89bec8632aa47dc58dc162f199d62edcJames Zern g8_.end(), g9_, g9_.end()); 43638b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 43648b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 43658b92989c89bec8632aa47dc58dc162f199d62edcJames Zern private: 43668b92989c89bec8632aa47dc58dc162f199d62edcJames Zern class Iterator : public ParamIteratorInterface<ParamType> { 43678b92989c89bec8632aa47dc58dc162f199d62edcJames Zern public: 43688b92989c89bec8632aa47dc58dc162f199d62edcJames Zern Iterator(const ParamGeneratorInterface<ParamType>* base, 43698b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T1>& g1, 43708b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T1>::iterator& current1, 43718b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T2>& g2, 43728b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T2>::iterator& current2, 43738b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T3>& g3, 43748b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T3>::iterator& current3, 43758b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T4>& g4, 43768b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T4>::iterator& current4, 43778b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T5>& g5, 43788b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T5>::iterator& current5, 43798b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T6>& g6, 43808b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T6>::iterator& current6, 43818b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T7>& g7, 43828b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T7>::iterator& current7, 43838b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T8>& g8, 43848b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T8>::iterator& current8, 43858b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T9>& g9, 43868b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T9>::iterator& current9) 43878b92989c89bec8632aa47dc58dc162f199d62edcJames Zern : base_(base), 43888b92989c89bec8632aa47dc58dc162f199d62edcJames Zern begin1_(g1.begin()), end1_(g1.end()), current1_(current1), 43898b92989c89bec8632aa47dc58dc162f199d62edcJames Zern begin2_(g2.begin()), end2_(g2.end()), current2_(current2), 43908b92989c89bec8632aa47dc58dc162f199d62edcJames Zern begin3_(g3.begin()), end3_(g3.end()), current3_(current3), 43918b92989c89bec8632aa47dc58dc162f199d62edcJames Zern begin4_(g4.begin()), end4_(g4.end()), current4_(current4), 43928b92989c89bec8632aa47dc58dc162f199d62edcJames Zern begin5_(g5.begin()), end5_(g5.end()), current5_(current5), 43938b92989c89bec8632aa47dc58dc162f199d62edcJames Zern begin6_(g6.begin()), end6_(g6.end()), current6_(current6), 43948b92989c89bec8632aa47dc58dc162f199d62edcJames Zern begin7_(g7.begin()), end7_(g7.end()), current7_(current7), 43958b92989c89bec8632aa47dc58dc162f199d62edcJames Zern begin8_(g8.begin()), end8_(g8.end()), current8_(current8), 43968b92989c89bec8632aa47dc58dc162f199d62edcJames Zern begin9_(g9.begin()), end9_(g9.end()), current9_(current9) { 43978b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ComputeCurrentValue(); 43988b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 43998b92989c89bec8632aa47dc58dc162f199d62edcJames Zern virtual ~Iterator() {} 44008b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 44018b92989c89bec8632aa47dc58dc162f199d62edcJames Zern virtual const ParamGeneratorInterface<ParamType>* BaseGenerator() const { 44028b92989c89bec8632aa47dc58dc162f199d62edcJames Zern return base_; 44038b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 44048b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // Advance should not be called on beyond-of-range iterators 44058b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // so no component iterators must be beyond end of range, either. 44068b92989c89bec8632aa47dc58dc162f199d62edcJames Zern virtual void Advance() { 44078b92989c89bec8632aa47dc58dc162f199d62edcJames Zern assert(!AtEnd()); 44088b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ++current9_; 44098b92989c89bec8632aa47dc58dc162f199d62edcJames Zern if (current9_ == end9_) { 44108b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current9_ = begin9_; 44118b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ++current8_; 44128b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 44138b92989c89bec8632aa47dc58dc162f199d62edcJames Zern if (current8_ == end8_) { 44148b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current8_ = begin8_; 44158b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ++current7_; 44168b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 44178b92989c89bec8632aa47dc58dc162f199d62edcJames Zern if (current7_ == end7_) { 44188b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current7_ = begin7_; 44198b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ++current6_; 44208b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 44218b92989c89bec8632aa47dc58dc162f199d62edcJames Zern if (current6_ == end6_) { 44228b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current6_ = begin6_; 44238b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ++current5_; 44248b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 44258b92989c89bec8632aa47dc58dc162f199d62edcJames Zern if (current5_ == end5_) { 44268b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current5_ = begin5_; 44278b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ++current4_; 44288b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 44298b92989c89bec8632aa47dc58dc162f199d62edcJames Zern if (current4_ == end4_) { 44308b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current4_ = begin4_; 44318b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ++current3_; 44328b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 44338b92989c89bec8632aa47dc58dc162f199d62edcJames Zern if (current3_ == end3_) { 44348b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current3_ = begin3_; 44358b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ++current2_; 44368b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 44378b92989c89bec8632aa47dc58dc162f199d62edcJames Zern if (current2_ == end2_) { 44388b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current2_ = begin2_; 44398b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ++current1_; 44408b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 44418b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ComputeCurrentValue(); 44428b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 44438b92989c89bec8632aa47dc58dc162f199d62edcJames Zern virtual ParamIteratorInterface<ParamType>* Clone() const { 44448b92989c89bec8632aa47dc58dc162f199d62edcJames Zern return new Iterator(*this); 44458b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 44468b92989c89bec8632aa47dc58dc162f199d62edcJames Zern virtual const ParamType* Current() const { return ¤t_value_; } 44478b92989c89bec8632aa47dc58dc162f199d62edcJames Zern virtual bool Equals(const ParamIteratorInterface<ParamType>& other) const { 44488b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // Having the same base generator guarantees that the other 44498b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // iterator is of the same type and we can downcast. 44508b92989c89bec8632aa47dc58dc162f199d62edcJames Zern GTEST_CHECK_(BaseGenerator() == other.BaseGenerator()) 44518b92989c89bec8632aa47dc58dc162f199d62edcJames Zern << "The program attempted to compare iterators " 44528b92989c89bec8632aa47dc58dc162f199d62edcJames Zern << "from different generators." << std::endl; 44538b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const Iterator* typed_other = 44548b92989c89bec8632aa47dc58dc162f199d62edcJames Zern CheckedDowncastToActualType<const Iterator>(&other); 44558b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // We must report iterators equal if they both point beyond their 44568b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // respective ranges. That can happen in a variety of fashions, 44578b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // so we have to consult AtEnd(). 44588b92989c89bec8632aa47dc58dc162f199d62edcJames Zern return (AtEnd() && typed_other->AtEnd()) || 44598b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ( 44608b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current1_ == typed_other->current1_ && 44618b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current2_ == typed_other->current2_ && 44628b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current3_ == typed_other->current3_ && 44638b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current4_ == typed_other->current4_ && 44648b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current5_ == typed_other->current5_ && 44658b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current6_ == typed_other->current6_ && 44668b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current7_ == typed_other->current7_ && 44678b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current8_ == typed_other->current8_ && 44688b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current9_ == typed_other->current9_); 44698b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 44708b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 44718b92989c89bec8632aa47dc58dc162f199d62edcJames Zern private: 44728b92989c89bec8632aa47dc58dc162f199d62edcJames Zern Iterator(const Iterator& other) 44738b92989c89bec8632aa47dc58dc162f199d62edcJames Zern : base_(other.base_), 44748b92989c89bec8632aa47dc58dc162f199d62edcJames Zern begin1_(other.begin1_), 44758b92989c89bec8632aa47dc58dc162f199d62edcJames Zern end1_(other.end1_), 44768b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current1_(other.current1_), 44778b92989c89bec8632aa47dc58dc162f199d62edcJames Zern begin2_(other.begin2_), 44788b92989c89bec8632aa47dc58dc162f199d62edcJames Zern end2_(other.end2_), 44798b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current2_(other.current2_), 44808b92989c89bec8632aa47dc58dc162f199d62edcJames Zern begin3_(other.begin3_), 44818b92989c89bec8632aa47dc58dc162f199d62edcJames Zern end3_(other.end3_), 44828b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current3_(other.current3_), 44838b92989c89bec8632aa47dc58dc162f199d62edcJames Zern begin4_(other.begin4_), 44848b92989c89bec8632aa47dc58dc162f199d62edcJames Zern end4_(other.end4_), 44858b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current4_(other.current4_), 44868b92989c89bec8632aa47dc58dc162f199d62edcJames Zern begin5_(other.begin5_), 44878b92989c89bec8632aa47dc58dc162f199d62edcJames Zern end5_(other.end5_), 44888b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current5_(other.current5_), 44898b92989c89bec8632aa47dc58dc162f199d62edcJames Zern begin6_(other.begin6_), 44908b92989c89bec8632aa47dc58dc162f199d62edcJames Zern end6_(other.end6_), 44918b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current6_(other.current6_), 44928b92989c89bec8632aa47dc58dc162f199d62edcJames Zern begin7_(other.begin7_), 44938b92989c89bec8632aa47dc58dc162f199d62edcJames Zern end7_(other.end7_), 44948b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current7_(other.current7_), 44958b92989c89bec8632aa47dc58dc162f199d62edcJames Zern begin8_(other.begin8_), 44968b92989c89bec8632aa47dc58dc162f199d62edcJames Zern end8_(other.end8_), 44978b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current8_(other.current8_), 44988b92989c89bec8632aa47dc58dc162f199d62edcJames Zern begin9_(other.begin9_), 44998b92989c89bec8632aa47dc58dc162f199d62edcJames Zern end9_(other.end9_), 45008b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current9_(other.current9_) { 45018b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ComputeCurrentValue(); 45028b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 45038b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 45048b92989c89bec8632aa47dc58dc162f199d62edcJames Zern void ComputeCurrentValue() { 45058b92989c89bec8632aa47dc58dc162f199d62edcJames Zern if (!AtEnd()) 45068b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current_value_ = ParamType(*current1_, *current2_, *current3_, 45078b92989c89bec8632aa47dc58dc162f199d62edcJames Zern *current4_, *current5_, *current6_, *current7_, *current8_, 45088b92989c89bec8632aa47dc58dc162f199d62edcJames Zern *current9_); 45098b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 45108b92989c89bec8632aa47dc58dc162f199d62edcJames Zern bool AtEnd() const { 45118b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // We must report iterator past the end of the range when either of the 45128b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // component iterators has reached the end of its range. 45138b92989c89bec8632aa47dc58dc162f199d62edcJames Zern return 45148b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current1_ == end1_ || 45158b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current2_ == end2_ || 45168b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current3_ == end3_ || 45178b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current4_ == end4_ || 45188b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current5_ == end5_ || 45198b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current6_ == end6_ || 45208b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current7_ == end7_ || 45218b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current8_ == end8_ || 45228b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current9_ == end9_; 45238b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 45248b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 45258b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // No implementation - assignment is unsupported. 45268b92989c89bec8632aa47dc58dc162f199d62edcJames Zern void operator=(const Iterator& other); 45278b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 45288b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGeneratorInterface<ParamType>* const base_; 45298b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // begin[i]_ and end[i]_ define the i-th range that Iterator traverses. 45308b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // current[i]_ is the actual traversing iterator. 45318b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T1>::iterator begin1_; 45328b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T1>::iterator end1_; 45338b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename ParamGenerator<T1>::iterator current1_; 45348b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T2>::iterator begin2_; 45358b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T2>::iterator end2_; 45368b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename ParamGenerator<T2>::iterator current2_; 45378b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T3>::iterator begin3_; 45388b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T3>::iterator end3_; 45398b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename ParamGenerator<T3>::iterator current3_; 45408b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T4>::iterator begin4_; 45418b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T4>::iterator end4_; 45428b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename ParamGenerator<T4>::iterator current4_; 45438b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T5>::iterator begin5_; 45448b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T5>::iterator end5_; 45458b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename ParamGenerator<T5>::iterator current5_; 45468b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T6>::iterator begin6_; 45478b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T6>::iterator end6_; 45488b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename ParamGenerator<T6>::iterator current6_; 45498b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T7>::iterator begin7_; 45508b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T7>::iterator end7_; 45518b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename ParamGenerator<T7>::iterator current7_; 45528b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T8>::iterator begin8_; 45538b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T8>::iterator end8_; 45548b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename ParamGenerator<T8>::iterator current8_; 45558b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T9>::iterator begin9_; 45568b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T9>::iterator end9_; 45578b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename ParamGenerator<T9>::iterator current9_; 45588b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ParamType current_value_; 45598b92989c89bec8632aa47dc58dc162f199d62edcJames Zern }; // class CartesianProductGenerator9::Iterator 45608b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 45618b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // No implementation - assignment is unsupported. 45628b92989c89bec8632aa47dc58dc162f199d62edcJames Zern void operator=(const CartesianProductGenerator9& other); 45638b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 45648b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T1> g1_; 45658b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T2> g2_; 45668b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T3> g3_; 45678b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T4> g4_; 45688b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T5> g5_; 45698b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T6> g6_; 45708b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T7> g7_; 45718b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T8> g8_; 45728b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T9> g9_; 45738b92989c89bec8632aa47dc58dc162f199d62edcJames Zern}; // class CartesianProductGenerator9 45748b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 45758b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 45768b92989c89bec8632aa47dc58dc162f199d62edcJames Zerntemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 45778b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T6, typename T7, typename T8, typename T9, typename T10> 45788b92989c89bec8632aa47dc58dc162f199d62edcJames Zernclass CartesianProductGenerator10 45798b92989c89bec8632aa47dc58dc162f199d62edcJames Zern : public ParamGeneratorInterface< ::testing::tuple<T1, T2, T3, T4, T5, T6, 45808b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T7, T8, T9, T10> > { 45818b92989c89bec8632aa47dc58dc162f199d62edcJames Zern public: 45828b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typedef ::testing::tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> ParamType; 45838b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 45848b92989c89bec8632aa47dc58dc162f199d62edcJames Zern CartesianProductGenerator10(const ParamGenerator<T1>& g1, 45858b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T2>& g2, const ParamGenerator<T3>& g3, 45868b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T4>& g4, const ParamGenerator<T5>& g5, 45878b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T6>& g6, const ParamGenerator<T7>& g7, 45888b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T8>& g8, const ParamGenerator<T9>& g9, 45898b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T10>& g10) 45908b92989c89bec8632aa47dc58dc162f199d62edcJames Zern : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7), g8_(g8), 45918b92989c89bec8632aa47dc58dc162f199d62edcJames Zern g9_(g9), g10_(g10) {} 45928b92989c89bec8632aa47dc58dc162f199d62edcJames Zern virtual ~CartesianProductGenerator10() {} 45938b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 45948b92989c89bec8632aa47dc58dc162f199d62edcJames Zern virtual ParamIteratorInterface<ParamType>* Begin() const { 45958b92989c89bec8632aa47dc58dc162f199d62edcJames Zern return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_, 45968b92989c89bec8632aa47dc58dc162f199d62edcJames Zern g3_.begin(), g4_, g4_.begin(), g5_, g5_.begin(), g6_, g6_.begin(), g7_, 45978b92989c89bec8632aa47dc58dc162f199d62edcJames Zern g7_.begin(), g8_, g8_.begin(), g9_, g9_.begin(), g10_, g10_.begin()); 45988b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 45998b92989c89bec8632aa47dc58dc162f199d62edcJames Zern virtual ParamIteratorInterface<ParamType>* End() const { 46008b92989c89bec8632aa47dc58dc162f199d62edcJames Zern return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(), 46018b92989c89bec8632aa47dc58dc162f199d62edcJames Zern g4_, g4_.end(), g5_, g5_.end(), g6_, g6_.end(), g7_, g7_.end(), g8_, 46028b92989c89bec8632aa47dc58dc162f199d62edcJames Zern g8_.end(), g9_, g9_.end(), g10_, g10_.end()); 46038b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 46048b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 46058b92989c89bec8632aa47dc58dc162f199d62edcJames Zern private: 46068b92989c89bec8632aa47dc58dc162f199d62edcJames Zern class Iterator : public ParamIteratorInterface<ParamType> { 46078b92989c89bec8632aa47dc58dc162f199d62edcJames Zern public: 46088b92989c89bec8632aa47dc58dc162f199d62edcJames Zern Iterator(const ParamGeneratorInterface<ParamType>* base, 46098b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T1>& g1, 46108b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T1>::iterator& current1, 46118b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T2>& g2, 46128b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T2>::iterator& current2, 46138b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T3>& g3, 46148b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T3>::iterator& current3, 46158b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T4>& g4, 46168b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T4>::iterator& current4, 46178b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T5>& g5, 46188b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T5>::iterator& current5, 46198b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T6>& g6, 46208b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T6>::iterator& current6, 46218b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T7>& g7, 46228b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T7>::iterator& current7, 46238b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T8>& g8, 46248b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T8>::iterator& current8, 46258b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T9>& g9, 46268b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T9>::iterator& current9, 46278b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T10>& g10, 46288b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T10>::iterator& current10) 46298b92989c89bec8632aa47dc58dc162f199d62edcJames Zern : base_(base), 46308b92989c89bec8632aa47dc58dc162f199d62edcJames Zern begin1_(g1.begin()), end1_(g1.end()), current1_(current1), 46318b92989c89bec8632aa47dc58dc162f199d62edcJames Zern begin2_(g2.begin()), end2_(g2.end()), current2_(current2), 46328b92989c89bec8632aa47dc58dc162f199d62edcJames Zern begin3_(g3.begin()), end3_(g3.end()), current3_(current3), 46338b92989c89bec8632aa47dc58dc162f199d62edcJames Zern begin4_(g4.begin()), end4_(g4.end()), current4_(current4), 46348b92989c89bec8632aa47dc58dc162f199d62edcJames Zern begin5_(g5.begin()), end5_(g5.end()), current5_(current5), 46358b92989c89bec8632aa47dc58dc162f199d62edcJames Zern begin6_(g6.begin()), end6_(g6.end()), current6_(current6), 46368b92989c89bec8632aa47dc58dc162f199d62edcJames Zern begin7_(g7.begin()), end7_(g7.end()), current7_(current7), 46378b92989c89bec8632aa47dc58dc162f199d62edcJames Zern begin8_(g8.begin()), end8_(g8.end()), current8_(current8), 46388b92989c89bec8632aa47dc58dc162f199d62edcJames Zern begin9_(g9.begin()), end9_(g9.end()), current9_(current9), 46398b92989c89bec8632aa47dc58dc162f199d62edcJames Zern begin10_(g10.begin()), end10_(g10.end()), current10_(current10) { 46408b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ComputeCurrentValue(); 46418b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 46428b92989c89bec8632aa47dc58dc162f199d62edcJames Zern virtual ~Iterator() {} 46438b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 46448b92989c89bec8632aa47dc58dc162f199d62edcJames Zern virtual const ParamGeneratorInterface<ParamType>* BaseGenerator() const { 46458b92989c89bec8632aa47dc58dc162f199d62edcJames Zern return base_; 46468b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 46478b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // Advance should not be called on beyond-of-range iterators 46488b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // so no component iterators must be beyond end of range, either. 46498b92989c89bec8632aa47dc58dc162f199d62edcJames Zern virtual void Advance() { 46508b92989c89bec8632aa47dc58dc162f199d62edcJames Zern assert(!AtEnd()); 46518b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ++current10_; 46528b92989c89bec8632aa47dc58dc162f199d62edcJames Zern if (current10_ == end10_) { 46538b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current10_ = begin10_; 46548b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ++current9_; 46558b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 46568b92989c89bec8632aa47dc58dc162f199d62edcJames Zern if (current9_ == end9_) { 46578b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current9_ = begin9_; 46588b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ++current8_; 46598b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 46608b92989c89bec8632aa47dc58dc162f199d62edcJames Zern if (current8_ == end8_) { 46618b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current8_ = begin8_; 46628b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ++current7_; 46638b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 46648b92989c89bec8632aa47dc58dc162f199d62edcJames Zern if (current7_ == end7_) { 46658b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current7_ = begin7_; 46668b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ++current6_; 46678b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 46688b92989c89bec8632aa47dc58dc162f199d62edcJames Zern if (current6_ == end6_) { 46698b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current6_ = begin6_; 46708b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ++current5_; 46718b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 46728b92989c89bec8632aa47dc58dc162f199d62edcJames Zern if (current5_ == end5_) { 46738b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current5_ = begin5_; 46748b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ++current4_; 46758b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 46768b92989c89bec8632aa47dc58dc162f199d62edcJames Zern if (current4_ == end4_) { 46778b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current4_ = begin4_; 46788b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ++current3_; 46798b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 46808b92989c89bec8632aa47dc58dc162f199d62edcJames Zern if (current3_ == end3_) { 46818b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current3_ = begin3_; 46828b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ++current2_; 46838b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 46848b92989c89bec8632aa47dc58dc162f199d62edcJames Zern if (current2_ == end2_) { 46858b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current2_ = begin2_; 46868b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ++current1_; 46878b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 46888b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ComputeCurrentValue(); 46898b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 46908b92989c89bec8632aa47dc58dc162f199d62edcJames Zern virtual ParamIteratorInterface<ParamType>* Clone() const { 46918b92989c89bec8632aa47dc58dc162f199d62edcJames Zern return new Iterator(*this); 46928b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 46938b92989c89bec8632aa47dc58dc162f199d62edcJames Zern virtual const ParamType* Current() const { return ¤t_value_; } 46948b92989c89bec8632aa47dc58dc162f199d62edcJames Zern virtual bool Equals(const ParamIteratorInterface<ParamType>& other) const { 46958b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // Having the same base generator guarantees that the other 46968b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // iterator is of the same type and we can downcast. 46978b92989c89bec8632aa47dc58dc162f199d62edcJames Zern GTEST_CHECK_(BaseGenerator() == other.BaseGenerator()) 46988b92989c89bec8632aa47dc58dc162f199d62edcJames Zern << "The program attempted to compare iterators " 46998b92989c89bec8632aa47dc58dc162f199d62edcJames Zern << "from different generators." << std::endl; 47008b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const Iterator* typed_other = 47018b92989c89bec8632aa47dc58dc162f199d62edcJames Zern CheckedDowncastToActualType<const Iterator>(&other); 47028b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // We must report iterators equal if they both point beyond their 47038b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // respective ranges. That can happen in a variety of fashions, 47048b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // so we have to consult AtEnd(). 47058b92989c89bec8632aa47dc58dc162f199d62edcJames Zern return (AtEnd() && typed_other->AtEnd()) || 47068b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ( 47078b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current1_ == typed_other->current1_ && 47088b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current2_ == typed_other->current2_ && 47098b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current3_ == typed_other->current3_ && 47108b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current4_ == typed_other->current4_ && 47118b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current5_ == typed_other->current5_ && 47128b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current6_ == typed_other->current6_ && 47138b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current7_ == typed_other->current7_ && 47148b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current8_ == typed_other->current8_ && 47158b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current9_ == typed_other->current9_ && 47168b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current10_ == typed_other->current10_); 47178b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 47188b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 47198b92989c89bec8632aa47dc58dc162f199d62edcJames Zern private: 47208b92989c89bec8632aa47dc58dc162f199d62edcJames Zern Iterator(const Iterator& other) 47218b92989c89bec8632aa47dc58dc162f199d62edcJames Zern : base_(other.base_), 47228b92989c89bec8632aa47dc58dc162f199d62edcJames Zern begin1_(other.begin1_), 47238b92989c89bec8632aa47dc58dc162f199d62edcJames Zern end1_(other.end1_), 47248b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current1_(other.current1_), 47258b92989c89bec8632aa47dc58dc162f199d62edcJames Zern begin2_(other.begin2_), 47268b92989c89bec8632aa47dc58dc162f199d62edcJames Zern end2_(other.end2_), 47278b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current2_(other.current2_), 47288b92989c89bec8632aa47dc58dc162f199d62edcJames Zern begin3_(other.begin3_), 47298b92989c89bec8632aa47dc58dc162f199d62edcJames Zern end3_(other.end3_), 47308b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current3_(other.current3_), 47318b92989c89bec8632aa47dc58dc162f199d62edcJames Zern begin4_(other.begin4_), 47328b92989c89bec8632aa47dc58dc162f199d62edcJames Zern end4_(other.end4_), 47338b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current4_(other.current4_), 47348b92989c89bec8632aa47dc58dc162f199d62edcJames Zern begin5_(other.begin5_), 47358b92989c89bec8632aa47dc58dc162f199d62edcJames Zern end5_(other.end5_), 47368b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current5_(other.current5_), 47378b92989c89bec8632aa47dc58dc162f199d62edcJames Zern begin6_(other.begin6_), 47388b92989c89bec8632aa47dc58dc162f199d62edcJames Zern end6_(other.end6_), 47398b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current6_(other.current6_), 47408b92989c89bec8632aa47dc58dc162f199d62edcJames Zern begin7_(other.begin7_), 47418b92989c89bec8632aa47dc58dc162f199d62edcJames Zern end7_(other.end7_), 47428b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current7_(other.current7_), 47438b92989c89bec8632aa47dc58dc162f199d62edcJames Zern begin8_(other.begin8_), 47448b92989c89bec8632aa47dc58dc162f199d62edcJames Zern end8_(other.end8_), 47458b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current8_(other.current8_), 47468b92989c89bec8632aa47dc58dc162f199d62edcJames Zern begin9_(other.begin9_), 47478b92989c89bec8632aa47dc58dc162f199d62edcJames Zern end9_(other.end9_), 47488b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current9_(other.current9_), 47498b92989c89bec8632aa47dc58dc162f199d62edcJames Zern begin10_(other.begin10_), 47508b92989c89bec8632aa47dc58dc162f199d62edcJames Zern end10_(other.end10_), 47518b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current10_(other.current10_) { 47528b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ComputeCurrentValue(); 47538b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 47548b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 47558b92989c89bec8632aa47dc58dc162f199d62edcJames Zern void ComputeCurrentValue() { 47568b92989c89bec8632aa47dc58dc162f199d62edcJames Zern if (!AtEnd()) 47578b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current_value_ = ParamType(*current1_, *current2_, *current3_, 47588b92989c89bec8632aa47dc58dc162f199d62edcJames Zern *current4_, *current5_, *current6_, *current7_, *current8_, 47598b92989c89bec8632aa47dc58dc162f199d62edcJames Zern *current9_, *current10_); 47608b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 47618b92989c89bec8632aa47dc58dc162f199d62edcJames Zern bool AtEnd() const { 47628b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // We must report iterator past the end of the range when either of the 47638b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // component iterators has reached the end of its range. 47648b92989c89bec8632aa47dc58dc162f199d62edcJames Zern return 47658b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current1_ == end1_ || 47668b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current2_ == end2_ || 47678b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current3_ == end3_ || 47688b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current4_ == end4_ || 47698b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current5_ == end5_ || 47708b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current6_ == end6_ || 47718b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current7_ == end7_ || 47728b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current8_ == end8_ || 47738b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current9_ == end9_ || 47748b92989c89bec8632aa47dc58dc162f199d62edcJames Zern current10_ == end10_; 47758b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 47768b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 47778b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // No implementation - assignment is unsupported. 47788b92989c89bec8632aa47dc58dc162f199d62edcJames Zern void operator=(const Iterator& other); 47798b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 47808b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGeneratorInterface<ParamType>* const base_; 47818b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // begin[i]_ and end[i]_ define the i-th range that Iterator traverses. 47828b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // current[i]_ is the actual traversing iterator. 47838b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T1>::iterator begin1_; 47848b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T1>::iterator end1_; 47858b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename ParamGenerator<T1>::iterator current1_; 47868b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T2>::iterator begin2_; 47878b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T2>::iterator end2_; 47888b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename ParamGenerator<T2>::iterator current2_; 47898b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T3>::iterator begin3_; 47908b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T3>::iterator end3_; 47918b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename ParamGenerator<T3>::iterator current3_; 47928b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T4>::iterator begin4_; 47938b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T4>::iterator end4_; 47948b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename ParamGenerator<T4>::iterator current4_; 47958b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T5>::iterator begin5_; 47968b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T5>::iterator end5_; 47978b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename ParamGenerator<T5>::iterator current5_; 47988b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T6>::iterator begin6_; 47998b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T6>::iterator end6_; 48008b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename ParamGenerator<T6>::iterator current6_; 48018b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T7>::iterator begin7_; 48028b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T7>::iterator end7_; 48038b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename ParamGenerator<T7>::iterator current7_; 48048b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T8>::iterator begin8_; 48058b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T8>::iterator end8_; 48068b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename ParamGenerator<T8>::iterator current8_; 48078b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T9>::iterator begin9_; 48088b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T9>::iterator end9_; 48098b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename ParamGenerator<T9>::iterator current9_; 48108b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T10>::iterator begin10_; 48118b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const typename ParamGenerator<T10>::iterator end10_; 48128b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename ParamGenerator<T10>::iterator current10_; 48138b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ParamType current_value_; 48148b92989c89bec8632aa47dc58dc162f199d62edcJames Zern }; // class CartesianProductGenerator10::Iterator 48158b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 48168b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // No implementation - assignment is unsupported. 48178b92989c89bec8632aa47dc58dc162f199d62edcJames Zern void operator=(const CartesianProductGenerator10& other); 48188b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 48198b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T1> g1_; 48208b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T2> g2_; 48218b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T3> g3_; 48228b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T4> g4_; 48238b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T5> g5_; 48248b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T6> g6_; 48258b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T7> g7_; 48268b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T8> g8_; 48278b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T9> g9_; 48288b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const ParamGenerator<T10> g10_; 48298b92989c89bec8632aa47dc58dc162f199d62edcJames Zern}; // class CartesianProductGenerator10 48308b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 48318b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 48328b92989c89bec8632aa47dc58dc162f199d62edcJames Zern// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE. 48338b92989c89bec8632aa47dc58dc162f199d62edcJames Zern// 48348b92989c89bec8632aa47dc58dc162f199d62edcJames Zern// Helper classes providing Combine() with polymorphic features. They allow 48358b92989c89bec8632aa47dc58dc162f199d62edcJames Zern// casting CartesianProductGeneratorN<T> to ParamGenerator<U> if T is 48368b92989c89bec8632aa47dc58dc162f199d62edcJames Zern// convertible to U. 48378b92989c89bec8632aa47dc58dc162f199d62edcJames Zern// 48388b92989c89bec8632aa47dc58dc162f199d62edcJames Zerntemplate <class Generator1, class Generator2> 48398b92989c89bec8632aa47dc58dc162f199d62edcJames Zernclass CartesianProductHolder2 { 48408b92989c89bec8632aa47dc58dc162f199d62edcJames Zern public: 48418b92989c89bec8632aa47dc58dc162f199d62edcJames ZernCartesianProductHolder2(const Generator1& g1, const Generator2& g2) 48428b92989c89bec8632aa47dc58dc162f199d62edcJames Zern : g1_(g1), g2_(g2) {} 48438b92989c89bec8632aa47dc58dc162f199d62edcJames Zern template <typename T1, typename T2> 48448b92989c89bec8632aa47dc58dc162f199d62edcJames Zern operator ParamGenerator< ::testing::tuple<T1, T2> >() const { 48458b92989c89bec8632aa47dc58dc162f199d62edcJames Zern return ParamGenerator< ::testing::tuple<T1, T2> >( 48468b92989c89bec8632aa47dc58dc162f199d62edcJames Zern new CartesianProductGenerator2<T1, T2>( 48478b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<ParamGenerator<T1> >(g1_), 48488b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<ParamGenerator<T2> >(g2_))); 48498b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 48508b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 48518b92989c89bec8632aa47dc58dc162f199d62edcJames Zern private: 48528b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // No implementation - assignment is unsupported. 48538b92989c89bec8632aa47dc58dc162f199d62edcJames Zern void operator=(const CartesianProductHolder2& other); 48548b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 48558b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const Generator1 g1_; 48568b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const Generator2 g2_; 48578b92989c89bec8632aa47dc58dc162f199d62edcJames Zern}; // class CartesianProductHolder2 48588b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 48598b92989c89bec8632aa47dc58dc162f199d62edcJames Zerntemplate <class Generator1, class Generator2, class Generator3> 48608b92989c89bec8632aa47dc58dc162f199d62edcJames Zernclass CartesianProductHolder3 { 48618b92989c89bec8632aa47dc58dc162f199d62edcJames Zern public: 48628b92989c89bec8632aa47dc58dc162f199d62edcJames ZernCartesianProductHolder3(const Generator1& g1, const Generator2& g2, 48638b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const Generator3& g3) 48648b92989c89bec8632aa47dc58dc162f199d62edcJames Zern : g1_(g1), g2_(g2), g3_(g3) {} 48658b92989c89bec8632aa47dc58dc162f199d62edcJames Zern template <typename T1, typename T2, typename T3> 48668b92989c89bec8632aa47dc58dc162f199d62edcJames Zern operator ParamGenerator< ::testing::tuple<T1, T2, T3> >() const { 48678b92989c89bec8632aa47dc58dc162f199d62edcJames Zern return ParamGenerator< ::testing::tuple<T1, T2, T3> >( 48688b92989c89bec8632aa47dc58dc162f199d62edcJames Zern new CartesianProductGenerator3<T1, T2, T3>( 48698b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<ParamGenerator<T1> >(g1_), 48708b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<ParamGenerator<T2> >(g2_), 48718b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<ParamGenerator<T3> >(g3_))); 48728b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 48738b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 48748b92989c89bec8632aa47dc58dc162f199d62edcJames Zern private: 48758b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // No implementation - assignment is unsupported. 48768b92989c89bec8632aa47dc58dc162f199d62edcJames Zern void operator=(const CartesianProductHolder3& other); 48778b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 48788b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const Generator1 g1_; 48798b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const Generator2 g2_; 48808b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const Generator3 g3_; 48818b92989c89bec8632aa47dc58dc162f199d62edcJames Zern}; // class CartesianProductHolder3 48828b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 48838b92989c89bec8632aa47dc58dc162f199d62edcJames Zerntemplate <class Generator1, class Generator2, class Generator3, 48848b92989c89bec8632aa47dc58dc162f199d62edcJames Zern class Generator4> 48858b92989c89bec8632aa47dc58dc162f199d62edcJames Zernclass CartesianProductHolder4 { 48868b92989c89bec8632aa47dc58dc162f199d62edcJames Zern public: 48878b92989c89bec8632aa47dc58dc162f199d62edcJames ZernCartesianProductHolder4(const Generator1& g1, const Generator2& g2, 48888b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const Generator3& g3, const Generator4& g4) 48898b92989c89bec8632aa47dc58dc162f199d62edcJames Zern : g1_(g1), g2_(g2), g3_(g3), g4_(g4) {} 48908b92989c89bec8632aa47dc58dc162f199d62edcJames Zern template <typename T1, typename T2, typename T3, typename T4> 48918b92989c89bec8632aa47dc58dc162f199d62edcJames Zern operator ParamGenerator< ::testing::tuple<T1, T2, T3, T4> >() const { 48928b92989c89bec8632aa47dc58dc162f199d62edcJames Zern return ParamGenerator< ::testing::tuple<T1, T2, T3, T4> >( 48938b92989c89bec8632aa47dc58dc162f199d62edcJames Zern new CartesianProductGenerator4<T1, T2, T3, T4>( 48948b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<ParamGenerator<T1> >(g1_), 48958b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<ParamGenerator<T2> >(g2_), 48968b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<ParamGenerator<T3> >(g3_), 48978b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<ParamGenerator<T4> >(g4_))); 48988b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 48998b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 49008b92989c89bec8632aa47dc58dc162f199d62edcJames Zern private: 49018b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // No implementation - assignment is unsupported. 49028b92989c89bec8632aa47dc58dc162f199d62edcJames Zern void operator=(const CartesianProductHolder4& other); 49038b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 49048b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const Generator1 g1_; 49058b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const Generator2 g2_; 49068b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const Generator3 g3_; 49078b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const Generator4 g4_; 49088b92989c89bec8632aa47dc58dc162f199d62edcJames Zern}; // class CartesianProductHolder4 49098b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 49108b92989c89bec8632aa47dc58dc162f199d62edcJames Zerntemplate <class Generator1, class Generator2, class Generator3, 49118b92989c89bec8632aa47dc58dc162f199d62edcJames Zern class Generator4, class Generator5> 49128b92989c89bec8632aa47dc58dc162f199d62edcJames Zernclass CartesianProductHolder5 { 49138b92989c89bec8632aa47dc58dc162f199d62edcJames Zern public: 49148b92989c89bec8632aa47dc58dc162f199d62edcJames ZernCartesianProductHolder5(const Generator1& g1, const Generator2& g2, 49158b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const Generator3& g3, const Generator4& g4, const Generator5& g5) 49168b92989c89bec8632aa47dc58dc162f199d62edcJames Zern : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5) {} 49178b92989c89bec8632aa47dc58dc162f199d62edcJames Zern template <typename T1, typename T2, typename T3, typename T4, typename T5> 49188b92989c89bec8632aa47dc58dc162f199d62edcJames Zern operator ParamGenerator< ::testing::tuple<T1, T2, T3, T4, T5> >() const { 49198b92989c89bec8632aa47dc58dc162f199d62edcJames Zern return ParamGenerator< ::testing::tuple<T1, T2, T3, T4, T5> >( 49208b92989c89bec8632aa47dc58dc162f199d62edcJames Zern new CartesianProductGenerator5<T1, T2, T3, T4, T5>( 49218b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<ParamGenerator<T1> >(g1_), 49228b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<ParamGenerator<T2> >(g2_), 49238b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<ParamGenerator<T3> >(g3_), 49248b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<ParamGenerator<T4> >(g4_), 49258b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<ParamGenerator<T5> >(g5_))); 49268b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 49278b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 49288b92989c89bec8632aa47dc58dc162f199d62edcJames Zern private: 49298b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // No implementation - assignment is unsupported. 49308b92989c89bec8632aa47dc58dc162f199d62edcJames Zern void operator=(const CartesianProductHolder5& other); 49318b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 49328b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const Generator1 g1_; 49338b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const Generator2 g2_; 49348b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const Generator3 g3_; 49358b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const Generator4 g4_; 49368b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const Generator5 g5_; 49378b92989c89bec8632aa47dc58dc162f199d62edcJames Zern}; // class CartesianProductHolder5 49388b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 49398b92989c89bec8632aa47dc58dc162f199d62edcJames Zerntemplate <class Generator1, class Generator2, class Generator3, 49408b92989c89bec8632aa47dc58dc162f199d62edcJames Zern class Generator4, class Generator5, class Generator6> 49418b92989c89bec8632aa47dc58dc162f199d62edcJames Zernclass CartesianProductHolder6 { 49428b92989c89bec8632aa47dc58dc162f199d62edcJames Zern public: 49438b92989c89bec8632aa47dc58dc162f199d62edcJames ZernCartesianProductHolder6(const Generator1& g1, const Generator2& g2, 49448b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const Generator3& g3, const Generator4& g4, const Generator5& g5, 49458b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const Generator6& g6) 49468b92989c89bec8632aa47dc58dc162f199d62edcJames Zern : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6) {} 49478b92989c89bec8632aa47dc58dc162f199d62edcJames Zern template <typename T1, typename T2, typename T3, typename T4, typename T5, 49488b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T6> 49498b92989c89bec8632aa47dc58dc162f199d62edcJames Zern operator ParamGenerator< ::testing::tuple<T1, T2, T3, T4, T5, T6> >() const { 49508b92989c89bec8632aa47dc58dc162f199d62edcJames Zern return ParamGenerator< ::testing::tuple<T1, T2, T3, T4, T5, T6> >( 49518b92989c89bec8632aa47dc58dc162f199d62edcJames Zern new CartesianProductGenerator6<T1, T2, T3, T4, T5, T6>( 49528b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<ParamGenerator<T1> >(g1_), 49538b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<ParamGenerator<T2> >(g2_), 49548b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<ParamGenerator<T3> >(g3_), 49558b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<ParamGenerator<T4> >(g4_), 49568b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<ParamGenerator<T5> >(g5_), 49578b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<ParamGenerator<T6> >(g6_))); 49588b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 49598b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 49608b92989c89bec8632aa47dc58dc162f199d62edcJames Zern private: 49618b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // No implementation - assignment is unsupported. 49628b92989c89bec8632aa47dc58dc162f199d62edcJames Zern void operator=(const CartesianProductHolder6& other); 49638b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 49648b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const Generator1 g1_; 49658b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const Generator2 g2_; 49668b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const Generator3 g3_; 49678b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const Generator4 g4_; 49688b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const Generator5 g5_; 49698b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const Generator6 g6_; 49708b92989c89bec8632aa47dc58dc162f199d62edcJames Zern}; // class CartesianProductHolder6 49718b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 49728b92989c89bec8632aa47dc58dc162f199d62edcJames Zerntemplate <class Generator1, class Generator2, class Generator3, 49738b92989c89bec8632aa47dc58dc162f199d62edcJames Zern class Generator4, class Generator5, class Generator6, class Generator7> 49748b92989c89bec8632aa47dc58dc162f199d62edcJames Zernclass CartesianProductHolder7 { 49758b92989c89bec8632aa47dc58dc162f199d62edcJames Zern public: 49768b92989c89bec8632aa47dc58dc162f199d62edcJames ZernCartesianProductHolder7(const Generator1& g1, const Generator2& g2, 49778b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const Generator3& g3, const Generator4& g4, const Generator5& g5, 49788b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const Generator6& g6, const Generator7& g7) 49798b92989c89bec8632aa47dc58dc162f199d62edcJames Zern : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7) {} 49808b92989c89bec8632aa47dc58dc162f199d62edcJames Zern template <typename T1, typename T2, typename T3, typename T4, typename T5, 49818b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T6, typename T7> 49828b92989c89bec8632aa47dc58dc162f199d62edcJames Zern operator ParamGenerator< ::testing::tuple<T1, T2, T3, T4, T5, T6, 49838b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T7> >() const { 49848b92989c89bec8632aa47dc58dc162f199d62edcJames Zern return ParamGenerator< ::testing::tuple<T1, T2, T3, T4, T5, T6, T7> >( 49858b92989c89bec8632aa47dc58dc162f199d62edcJames Zern new CartesianProductGenerator7<T1, T2, T3, T4, T5, T6, T7>( 49868b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<ParamGenerator<T1> >(g1_), 49878b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<ParamGenerator<T2> >(g2_), 49888b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<ParamGenerator<T3> >(g3_), 49898b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<ParamGenerator<T4> >(g4_), 49908b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<ParamGenerator<T5> >(g5_), 49918b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<ParamGenerator<T6> >(g6_), 49928b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<ParamGenerator<T7> >(g7_))); 49938b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 49948b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 49958b92989c89bec8632aa47dc58dc162f199d62edcJames Zern private: 49968b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // No implementation - assignment is unsupported. 49978b92989c89bec8632aa47dc58dc162f199d62edcJames Zern void operator=(const CartesianProductHolder7& other); 49988b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 49998b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const Generator1 g1_; 50008b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const Generator2 g2_; 50018b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const Generator3 g3_; 50028b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const Generator4 g4_; 50038b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const Generator5 g5_; 50048b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const Generator6 g6_; 50058b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const Generator7 g7_; 50068b92989c89bec8632aa47dc58dc162f199d62edcJames Zern}; // class CartesianProductHolder7 50078b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 50088b92989c89bec8632aa47dc58dc162f199d62edcJames Zerntemplate <class Generator1, class Generator2, class Generator3, 50098b92989c89bec8632aa47dc58dc162f199d62edcJames Zern class Generator4, class Generator5, class Generator6, class Generator7, 50108b92989c89bec8632aa47dc58dc162f199d62edcJames Zern class Generator8> 50118b92989c89bec8632aa47dc58dc162f199d62edcJames Zernclass CartesianProductHolder8 { 50128b92989c89bec8632aa47dc58dc162f199d62edcJames Zern public: 50138b92989c89bec8632aa47dc58dc162f199d62edcJames ZernCartesianProductHolder8(const Generator1& g1, const Generator2& g2, 50148b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const Generator3& g3, const Generator4& g4, const Generator5& g5, 50158b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const Generator6& g6, const Generator7& g7, const Generator8& g8) 50168b92989c89bec8632aa47dc58dc162f199d62edcJames Zern : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7), 50178b92989c89bec8632aa47dc58dc162f199d62edcJames Zern g8_(g8) {} 50188b92989c89bec8632aa47dc58dc162f199d62edcJames Zern template <typename T1, typename T2, typename T3, typename T4, typename T5, 50198b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T6, typename T7, typename T8> 50208b92989c89bec8632aa47dc58dc162f199d62edcJames Zern operator ParamGenerator< ::testing::tuple<T1, T2, T3, T4, T5, T6, T7, 50218b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T8> >() const { 50228b92989c89bec8632aa47dc58dc162f199d62edcJames Zern return ParamGenerator< ::testing::tuple<T1, T2, T3, T4, T5, T6, T7, T8> >( 50238b92989c89bec8632aa47dc58dc162f199d62edcJames Zern new CartesianProductGenerator8<T1, T2, T3, T4, T5, T6, T7, T8>( 50248b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<ParamGenerator<T1> >(g1_), 50258b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<ParamGenerator<T2> >(g2_), 50268b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<ParamGenerator<T3> >(g3_), 50278b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<ParamGenerator<T4> >(g4_), 50288b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<ParamGenerator<T5> >(g5_), 50298b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<ParamGenerator<T6> >(g6_), 50308b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<ParamGenerator<T7> >(g7_), 50318b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<ParamGenerator<T8> >(g8_))); 50328b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 50338b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 50348b92989c89bec8632aa47dc58dc162f199d62edcJames Zern private: 50358b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // No implementation - assignment is unsupported. 50368b92989c89bec8632aa47dc58dc162f199d62edcJames Zern void operator=(const CartesianProductHolder8& other); 50378b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 50388b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const Generator1 g1_; 50398b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const Generator2 g2_; 50408b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const Generator3 g3_; 50418b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const Generator4 g4_; 50428b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const Generator5 g5_; 50438b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const Generator6 g6_; 50448b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const Generator7 g7_; 50458b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const Generator8 g8_; 50468b92989c89bec8632aa47dc58dc162f199d62edcJames Zern}; // class CartesianProductHolder8 50478b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 50488b92989c89bec8632aa47dc58dc162f199d62edcJames Zerntemplate <class Generator1, class Generator2, class Generator3, 50498b92989c89bec8632aa47dc58dc162f199d62edcJames Zern class Generator4, class Generator5, class Generator6, class Generator7, 50508b92989c89bec8632aa47dc58dc162f199d62edcJames Zern class Generator8, class Generator9> 50518b92989c89bec8632aa47dc58dc162f199d62edcJames Zernclass CartesianProductHolder9 { 50528b92989c89bec8632aa47dc58dc162f199d62edcJames Zern public: 50538b92989c89bec8632aa47dc58dc162f199d62edcJames ZernCartesianProductHolder9(const Generator1& g1, const Generator2& g2, 50548b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const Generator3& g3, const Generator4& g4, const Generator5& g5, 50558b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const Generator6& g6, const Generator7& g7, const Generator8& g8, 50568b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const Generator9& g9) 50578b92989c89bec8632aa47dc58dc162f199d62edcJames Zern : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7), g8_(g8), 50588b92989c89bec8632aa47dc58dc162f199d62edcJames Zern g9_(g9) {} 50598b92989c89bec8632aa47dc58dc162f199d62edcJames Zern template <typename T1, typename T2, typename T3, typename T4, typename T5, 50608b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T6, typename T7, typename T8, typename T9> 50618b92989c89bec8632aa47dc58dc162f199d62edcJames Zern operator ParamGenerator< ::testing::tuple<T1, T2, T3, T4, T5, T6, T7, T8, 50628b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T9> >() const { 50638b92989c89bec8632aa47dc58dc162f199d62edcJames Zern return ParamGenerator< ::testing::tuple<T1, T2, T3, T4, T5, T6, T7, T8, 50648b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T9> >( 50658b92989c89bec8632aa47dc58dc162f199d62edcJames Zern new CartesianProductGenerator9<T1, T2, T3, T4, T5, T6, T7, T8, T9>( 50668b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<ParamGenerator<T1> >(g1_), 50678b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<ParamGenerator<T2> >(g2_), 50688b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<ParamGenerator<T3> >(g3_), 50698b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<ParamGenerator<T4> >(g4_), 50708b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<ParamGenerator<T5> >(g5_), 50718b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<ParamGenerator<T6> >(g6_), 50728b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<ParamGenerator<T7> >(g7_), 50738b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<ParamGenerator<T8> >(g8_), 50748b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<ParamGenerator<T9> >(g9_))); 50758b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 50768b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 50778b92989c89bec8632aa47dc58dc162f199d62edcJames Zern private: 50788b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // No implementation - assignment is unsupported. 50798b92989c89bec8632aa47dc58dc162f199d62edcJames Zern void operator=(const CartesianProductHolder9& other); 50808b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 50818b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const Generator1 g1_; 50828b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const Generator2 g2_; 50838b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const Generator3 g3_; 50848b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const Generator4 g4_; 50858b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const Generator5 g5_; 50868b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const Generator6 g6_; 50878b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const Generator7 g7_; 50888b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const Generator8 g8_; 50898b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const Generator9 g9_; 50908b92989c89bec8632aa47dc58dc162f199d62edcJames Zern}; // class CartesianProductHolder9 50918b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 50928b92989c89bec8632aa47dc58dc162f199d62edcJames Zerntemplate <class Generator1, class Generator2, class Generator3, 50938b92989c89bec8632aa47dc58dc162f199d62edcJames Zern class Generator4, class Generator5, class Generator6, class Generator7, 50948b92989c89bec8632aa47dc58dc162f199d62edcJames Zern class Generator8, class Generator9, class Generator10> 50958b92989c89bec8632aa47dc58dc162f199d62edcJames Zernclass CartesianProductHolder10 { 50968b92989c89bec8632aa47dc58dc162f199d62edcJames Zern public: 50978b92989c89bec8632aa47dc58dc162f199d62edcJames ZernCartesianProductHolder10(const Generator1& g1, const Generator2& g2, 50988b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const Generator3& g3, const Generator4& g4, const Generator5& g5, 50998b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const Generator6& g6, const Generator7& g7, const Generator8& g8, 51008b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const Generator9& g9, const Generator10& g10) 51018b92989c89bec8632aa47dc58dc162f199d62edcJames Zern : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7), g8_(g8), 51028b92989c89bec8632aa47dc58dc162f199d62edcJames Zern g9_(g9), g10_(g10) {} 51038b92989c89bec8632aa47dc58dc162f199d62edcJames Zern template <typename T1, typename T2, typename T3, typename T4, typename T5, 51048b92989c89bec8632aa47dc58dc162f199d62edcJames Zern typename T6, typename T7, typename T8, typename T9, typename T10> 51058b92989c89bec8632aa47dc58dc162f199d62edcJames Zern operator ParamGenerator< ::testing::tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, 51068b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T10> >() const { 51078b92989c89bec8632aa47dc58dc162f199d62edcJames Zern return ParamGenerator< ::testing::tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, 51088b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T10> >( 51098b92989c89bec8632aa47dc58dc162f199d62edcJames Zern new CartesianProductGenerator10<T1, T2, T3, T4, T5, T6, T7, T8, T9, 51108b92989c89bec8632aa47dc58dc162f199d62edcJames Zern T10>( 51118b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<ParamGenerator<T1> >(g1_), 51128b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<ParamGenerator<T2> >(g2_), 51138b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<ParamGenerator<T3> >(g3_), 51148b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<ParamGenerator<T4> >(g4_), 51158b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<ParamGenerator<T5> >(g5_), 51168b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<ParamGenerator<T6> >(g6_), 51178b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<ParamGenerator<T7> >(g7_), 51188b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<ParamGenerator<T8> >(g8_), 51198b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<ParamGenerator<T9> >(g9_), 51208b92989c89bec8632aa47dc58dc162f199d62edcJames Zern static_cast<ParamGenerator<T10> >(g10_))); 51218b92989c89bec8632aa47dc58dc162f199d62edcJames Zern } 51228b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 51238b92989c89bec8632aa47dc58dc162f199d62edcJames Zern private: 51248b92989c89bec8632aa47dc58dc162f199d62edcJames Zern // No implementation - assignment is unsupported. 51258b92989c89bec8632aa47dc58dc162f199d62edcJames Zern void operator=(const CartesianProductHolder10& other); 51268b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 51278b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const Generator1 g1_; 51288b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const Generator2 g2_; 51298b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const Generator3 g3_; 51308b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const Generator4 g4_; 51318b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const Generator5 g5_; 51328b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const Generator6 g6_; 51338b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const Generator7 g7_; 51348b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const Generator8 g8_; 51358b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const Generator9 g9_; 51368b92989c89bec8632aa47dc58dc162f199d62edcJames Zern const Generator10 g10_; 51378b92989c89bec8632aa47dc58dc162f199d62edcJames Zern}; // class CartesianProductHolder10 51388b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 51398b92989c89bec8632aa47dc58dc162f199d62edcJames Zern# endif // GTEST_HAS_COMBINE 51408b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 51418b92989c89bec8632aa47dc58dc162f199d62edcJames Zern} // namespace internal 51428b92989c89bec8632aa47dc58dc162f199d62edcJames Zern} // namespace testing 51438b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 51448b92989c89bec8632aa47dc58dc162f199d62edcJames Zern#endif // GTEST_HAS_PARAM_TEST 51458b92989c89bec8632aa47dc58dc162f199d62edcJames Zern 51468b92989c89bec8632aa47dc58dc162f199d62edcJames Zern#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_GENERATED_H_ 5147