1aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// This file was GENERATED by command: 2aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// pump.py gtest-param-util-generated.h.pump 3aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// DO NOT EDIT BY HAND!!! 4aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 5aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// Copyright 2008 Google Inc. 6aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// All Rights Reserved. 7aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// 8aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// Redistribution and use in source and binary forms, with or without 9aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// modification, are permitted provided that the following conditions are 10aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// met: 11aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// 12aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// * Redistributions of source code must retain the above copyright 13aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// notice, this list of conditions and the following disclaimer. 14aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// * Redistributions in binary form must reproduce the above 15aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// copyright notice, this list of conditions and the following disclaimer 16aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// in the documentation and/or other materials provided with the 17aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// distribution. 18aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// * Neither the name of Google Inc. nor the names of its 19aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// contributors may be used to endorse or promote products derived from 20aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// this software without specific prior written permission. 21aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// 22aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 23aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 24aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 25aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 26aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 27aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 28aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 29aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 30aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 31aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 32aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 33aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// 34aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// Author: vladl@google.com (Vlad Losev) 35aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 36aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// Type and function utilities for implementing parameterized tests. 37aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// This file is generated by a SCRIPT. DO NOT EDIT BY HAND! 38aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// 39aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// Currently Google Test supports at most 50 arguments in Values, 40aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// and at most 10 arguments in Combine. Please contact 41aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// googletestframework@googlegroups.com if you need more. 42aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// Please note that the number of arguments to Combine is limited 43aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// by the maximum arity of the implementation of tr1::tuple which is 44aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// currently set at 10. 45aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 46aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_GENERATED_H_ 47aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_GENERATED_H_ 48aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 49aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// scripts/fuse_gtest.py depends on gtest's own header being #included 50aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// *unconditionally*. Therefore these #includes cannot be moved 51aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// inside #if GTEST_HAS_PARAM_TEST. 52aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter#include "gtest/internal/gtest-param-util.h" 53aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter#include "gtest/internal/gtest-port.h" 54aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 55aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter#if GTEST_HAS_PARAM_TEST 56aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 57aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchternamespace testing { 58aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 59aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// Forward declarations of ValuesIn(), which is implemented in 60aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// include/gtest/gtest-param-test.h. 61aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename ForwardIterator> 62aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterinternal::ParamGenerator< 63aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename ::testing::internal::IteratorTraits<ForwardIterator>::value_type> 64aa46da279e2426caf1e103eb079dfec8124c5feeCourtney GoeltzenleuchterValuesIn(ForwardIterator begin, ForwardIterator end); 65aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 66aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename T, size_t N> 67aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterinternal::ParamGenerator<T> ValuesIn(const T (&array)[N]); 68aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 69aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <class Container> 70aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterinternal::ParamGenerator<typename Container::value_type> ValuesIn( 71aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const Container& container); 72aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 73aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchternamespace internal { 74aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 75aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// Used in the Values() function to provide polymorphic capabilities. 76aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename T1> 77aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterclass ValueArray1 { 78aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter public: 79aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter explicit ValueArray1(T1 v1) : v1_(v1) {} 80aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 81aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter template <typename T> 82aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter operator ParamGenerator<T>() const { return ValuesIn(&v1_, &v1_ + 1); } 83aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 84aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter private: 85aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // No implementation - assignment is unsupported. 86aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter void operator=(const ValueArray1& other); 87aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 88aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T1 v1_; 89aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter}; 90aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 91aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename T1, typename T2> 92aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterclass ValueArray2 { 93aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter public: 94aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ValueArray2(T1 v1, T2 v2) : v1_(v1), v2_(v2) {} 95aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 96aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter template <typename T> 97aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter operator ParamGenerator<T>() const { 98aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_)}; 99aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return ValuesIn(array); 100aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 101aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 102aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter private: 103aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // No implementation - assignment is unsupported. 104aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter void operator=(const ValueArray2& other); 105aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 106aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T1 v1_; 107aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T2 v2_; 108aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter}; 109aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 110aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename T1, typename T2, typename T3> 111aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterclass ValueArray3 { 112aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter public: 113aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ValueArray3(T1 v1, T2 v2, T3 v3) : v1_(v1), v2_(v2), v3_(v3) {} 114aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 115aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter template <typename T> 116aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter operator ParamGenerator<T>() const { 117aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 118aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v3_)}; 119aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return ValuesIn(array); 120aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 121aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 122aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter private: 123aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // No implementation - assignment is unsupported. 124aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter void operator=(const ValueArray3& other); 125aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 126aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T1 v1_; 127aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T2 v2_; 128aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T3 v3_; 129aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter}; 130aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 131aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename T1, typename T2, typename T3, typename T4> 132aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterclass ValueArray4 { 133aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter public: 134aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ValueArray4(T1 v1, T2 v2, T3 v3, T4 v4) : v1_(v1), v2_(v2), v3_(v3), 135aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v4_(v4) {} 136aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 137aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter template <typename T> 138aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter operator ParamGenerator<T>() const { 139aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 140aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v3_), static_cast<T>(v4_)}; 141aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return ValuesIn(array); 142aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 143aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 144aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter private: 145aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // No implementation - assignment is unsupported. 146aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter void operator=(const ValueArray4& other); 147aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 148aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T1 v1_; 149aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T2 v2_; 150aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T3 v3_; 151aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T4 v4_; 152aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter}; 153aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 154aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename T1, typename T2, typename T3, typename T4, typename T5> 155aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterclass ValueArray5 { 156aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter public: 157aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ValueArray5(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5) : v1_(v1), v2_(v2), v3_(v3), 158aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v4_(v4), v5_(v5) {} 159aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 160aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter template <typename T> 161aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter operator ParamGenerator<T>() const { 162aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 163aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_)}; 164aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return ValuesIn(array); 165aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 166aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 167aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter private: 168aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // No implementation - assignment is unsupported. 169aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter void operator=(const ValueArray5& other); 170aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 171aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T1 v1_; 172aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T2 v2_; 173aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T3 v3_; 174aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T4 v4_; 175aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T5 v5_; 176aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter}; 177aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 178aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 179aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T6> 180aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterclass ValueArray6 { 181aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter public: 182aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ValueArray6(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6) : v1_(v1), v2_(v2), 183aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v3_(v3), v4_(v4), v5_(v5), v6_(v6) {} 184aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 185aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter template <typename T> 186aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter operator ParamGenerator<T>() const { 187aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 188aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 189aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v6_)}; 190aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return ValuesIn(array); 191aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 192aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 193aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter private: 194aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // No implementation - assignment is unsupported. 195aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter void operator=(const ValueArray6& other); 196aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 197aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T1 v1_; 198aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T2 v2_; 199aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T3 v3_; 200aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T4 v4_; 201aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T5 v5_; 202aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T6 v6_; 203aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter}; 204aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 205aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 206aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T6, typename T7> 207aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterclass ValueArray7 { 208aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter public: 209aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ValueArray7(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7) : v1_(v1), 210aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7) {} 211aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 212aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter template <typename T> 213aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter operator ParamGenerator<T>() const { 214aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 215aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 216aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v6_), static_cast<T>(v7_)}; 217aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return ValuesIn(array); 218aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 219aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 220aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter private: 221aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // No implementation - assignment is unsupported. 222aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter void operator=(const ValueArray7& other); 223aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 224aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T1 v1_; 225aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T2 v2_; 226aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T3 v3_; 227aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T4 v4_; 228aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T5 v5_; 229aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T6 v6_; 230aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T7 v7_; 231aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter}; 232aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 233aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 234aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T6, typename T7, typename T8> 235aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterclass ValueArray8 { 236aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter public: 237aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ValueArray8(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, 238aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T8 v8) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), 239aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v8_(v8) {} 240aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 241aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter template <typename T> 242aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter operator ParamGenerator<T>() const { 243aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 244aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 245aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_)}; 246aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return ValuesIn(array); 247aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 248aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 249aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter private: 250aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // No implementation - assignment is unsupported. 251aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter void operator=(const ValueArray8& other); 252aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 253aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T1 v1_; 254aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T2 v2_; 255aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T3 v3_; 256aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T4 v4_; 257aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T5 v5_; 258aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T6 v6_; 259aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T7 v7_; 260aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T8 v8_; 261aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter}; 262aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 263aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 264aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T6, typename T7, typename T8, typename T9> 265aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterclass ValueArray9 { 266aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter public: 267aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ValueArray9(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, 268aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T9 v9) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), 269aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v8_(v8), v9_(v9) {} 270aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 271aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter template <typename T> 272aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter operator ParamGenerator<T>() const { 273aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 274aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 275aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 276aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v9_)}; 277aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return ValuesIn(array); 278aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 279aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 280aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter private: 281aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // No implementation - assignment is unsupported. 282aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter void operator=(const ValueArray9& other); 283aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 284aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T1 v1_; 285aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T2 v2_; 286aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T3 v3_; 287aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T4 v4_; 288aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T5 v5_; 289aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T6 v6_; 290aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T7 v7_; 291aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T8 v8_; 292aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T9 v9_; 293aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter}; 294aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 295aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 296aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T6, typename T7, typename T8, typename T9, typename T10> 297aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterclass ValueArray10 { 298aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter public: 299aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ValueArray10(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 300aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T10 v10) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), 301aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v8_(v8), v9_(v9), v10_(v10) {} 302aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 303aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter template <typename T> 304aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter operator ParamGenerator<T>() const { 305aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 306aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 307aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 308aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v9_), static_cast<T>(v10_)}; 309aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return ValuesIn(array); 310aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 311aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 312aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter private: 313aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // No implementation - assignment is unsupported. 314aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter void operator=(const ValueArray10& other); 315aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 316aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T1 v1_; 317aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T2 v2_; 318aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T3 v3_; 319aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T4 v4_; 320aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T5 v5_; 321aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T6 v6_; 322aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T7 v7_; 323aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T8 v8_; 324aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T9 v9_; 325aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T10 v10_; 326aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter}; 327aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 328aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 329aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T6, typename T7, typename T8, typename T9, typename T10, 330aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T11> 331aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterclass ValueArray11 { 332aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter public: 333aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ValueArray11(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 334aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T10 v10, T11 v11) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), 335aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11) {} 336aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 337aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter template <typename T> 338aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter operator ParamGenerator<T>() const { 339aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 340aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 341aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 342aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_)}; 343aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return ValuesIn(array); 344aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 345aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 346aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter private: 347aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // No implementation - assignment is unsupported. 348aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter void operator=(const ValueArray11& other); 349aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 350aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T1 v1_; 351aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T2 v2_; 352aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T3 v3_; 353aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T4 v4_; 354aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T5 v5_; 355aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T6 v6_; 356aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T7 v7_; 357aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T8 v8_; 358aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T9 v9_; 359aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T10 v10_; 360aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T11 v11_; 361aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter}; 362aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 363aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 364aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T6, typename T7, typename T8, typename T9, typename T10, 365aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T11, typename T12> 366aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterclass ValueArray12 { 367aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter public: 368aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ValueArray12(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 369aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T10 v10, T11 v11, T12 v12) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), 370aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12) {} 371aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 372aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter template <typename T> 373aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter operator ParamGenerator<T>() const { 374aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 375aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 376aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 377aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), 378aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v12_)}; 379aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return ValuesIn(array); 380aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 381aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 382aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter private: 383aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // No implementation - assignment is unsupported. 384aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter void operator=(const ValueArray12& other); 385aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 386aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T1 v1_; 387aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T2 v2_; 388aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T3 v3_; 389aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T4 v4_; 390aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T5 v5_; 391aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T6 v6_; 392aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T7 v7_; 393aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T8 v8_; 394aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T9 v9_; 395aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T10 v10_; 396aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T11 v11_; 397aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T12 v12_; 398aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter}; 399aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 400aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 401aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T6, typename T7, typename T8, typename T9, typename T10, 402aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T11, typename T12, typename T13> 403aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterclass ValueArray13 { 404aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter public: 405aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ValueArray13(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 406aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T10 v10, T11 v11, T12 v12, T13 v13) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), 407aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), 408aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v12_(v12), v13_(v13) {} 409aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 410aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter template <typename T> 411aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter operator ParamGenerator<T>() const { 412aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 413aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 414aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 415aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), 416aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v12_), static_cast<T>(v13_)}; 417aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return ValuesIn(array); 418aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 419aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 420aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter private: 421aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // No implementation - assignment is unsupported. 422aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter void operator=(const ValueArray13& other); 423aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 424aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T1 v1_; 425aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T2 v2_; 426aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T3 v3_; 427aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T4 v4_; 428aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T5 v5_; 429aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T6 v6_; 430aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T7 v7_; 431aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T8 v8_; 432aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T9 v9_; 433aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T10 v10_; 434aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T11 v11_; 435aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T12 v12_; 436aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T13 v13_; 437aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter}; 438aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 439aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 440aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T6, typename T7, typename T8, typename T9, typename T10, 441aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T11, typename T12, typename T13, typename T14> 442aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterclass ValueArray14 { 443aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter public: 444aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ValueArray14(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 445aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T10 v10, T11 v11, T12 v12, T13 v13, T14 v14) : v1_(v1), v2_(v2), v3_(v3), 446aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), 447aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v11_(v11), v12_(v12), v13_(v13), v14_(v14) {} 448aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 449aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter template <typename T> 450aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter operator ParamGenerator<T>() const { 451aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 452aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 453aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 454aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), 455aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_)}; 456aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return ValuesIn(array); 457aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 458aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 459aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter private: 460aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // No implementation - assignment is unsupported. 461aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter void operator=(const ValueArray14& other); 462aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 463aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T1 v1_; 464aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T2 v2_; 465aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T3 v3_; 466aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T4 v4_; 467aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T5 v5_; 468aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T6 v6_; 469aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T7 v7_; 470aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T8 v8_; 471aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T9 v9_; 472aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T10 v10_; 473aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T11 v11_; 474aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T12 v12_; 475aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T13 v13_; 476aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T14 v14_; 477aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter}; 478aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 479aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 480aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T6, typename T7, typename T8, typename T9, typename T10, 481aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T11, typename T12, typename T13, typename T14, typename T15> 482aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterclass ValueArray15 { 483aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter public: 484aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ValueArray15(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 485aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15) : v1_(v1), v2_(v2), 486aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), 487aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15) {} 488aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 489aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter template <typename T> 490aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter operator ParamGenerator<T>() const { 491aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 492aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 493aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 494aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), 495aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), 496aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v15_)}; 497aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return ValuesIn(array); 498aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 499aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 500aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter private: 501aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // No implementation - assignment is unsupported. 502aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter void operator=(const ValueArray15& other); 503aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 504aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T1 v1_; 505aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T2 v2_; 506aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T3 v3_; 507aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T4 v4_; 508aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T5 v5_; 509aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T6 v6_; 510aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T7 v7_; 511aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T8 v8_; 512aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T9 v9_; 513aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T10 v10_; 514aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T11 v11_; 515aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T12 v12_; 516aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T13 v13_; 517aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T14 v14_; 518aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T15 v15_; 519aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter}; 520aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 521aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 522aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T6, typename T7, typename T8, typename T9, typename T10, 523aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T11, typename T12, typename T13, typename T14, typename T15, 524aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T16> 525aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterclass ValueArray16 { 526aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter public: 527aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ValueArray16(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 528aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16) : v1_(v1), 529aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), 530aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), 531aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v16_(v16) {} 532aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 533aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter template <typename T> 534aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter operator ParamGenerator<T>() const { 535aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 536aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 537aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 538aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), 539aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), 540aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v15_), static_cast<T>(v16_)}; 541aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return ValuesIn(array); 542aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 543aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 544aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter private: 545aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // No implementation - assignment is unsupported. 546aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter void operator=(const ValueArray16& other); 547aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 548aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T1 v1_; 549aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T2 v2_; 550aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T3 v3_; 551aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T4 v4_; 552aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T5 v5_; 553aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T6 v6_; 554aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T7 v7_; 555aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T8 v8_; 556aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T9 v9_; 557aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T10 v10_; 558aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T11 v11_; 559aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T12 v12_; 560aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T13 v13_; 561aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T14 v14_; 562aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T15 v15_; 563aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T16 v16_; 564aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter}; 565aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 566aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 567aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T6, typename T7, typename T8, typename T9, typename T10, 568aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T11, typename T12, typename T13, typename T14, typename T15, 569aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T16, typename T17> 570aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterclass ValueArray17 { 571aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter public: 572aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ValueArray17(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 573aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, 574aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T17 v17) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), 575aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), 576aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v15_(v15), v16_(v16), v17_(v17) {} 577aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 578aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter template <typename T> 579aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter operator ParamGenerator<T>() const { 580aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 581aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 582aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 583aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), 584aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), 585aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_)}; 586aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return ValuesIn(array); 587aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 588aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 589aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter private: 590aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // No implementation - assignment is unsupported. 591aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter void operator=(const ValueArray17& other); 592aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 593aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T1 v1_; 594aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T2 v2_; 595aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T3 v3_; 596aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T4 v4_; 597aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T5 v5_; 598aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T6 v6_; 599aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T7 v7_; 600aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T8 v8_; 601aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T9 v9_; 602aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T10 v10_; 603aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T11 v11_; 604aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T12 v12_; 605aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T13 v13_; 606aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T14 v14_; 607aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T15 v15_; 608aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T16 v16_; 609aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T17 v17_; 610aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter}; 611aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 612aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 613aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T6, typename T7, typename T8, typename T9, typename T10, 614aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T11, typename T12, typename T13, typename T14, typename T15, 615aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T16, typename T17, typename T18> 616aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterclass ValueArray18 { 617aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter public: 618aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ValueArray18(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 619aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 620aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T18 v18) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), 621aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), 622aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v15_(v15), v16_(v16), v17_(v17), v18_(v18) {} 623aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 624aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter template <typename T> 625aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter operator ParamGenerator<T>() const { 626aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 627aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 628aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 629aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), 630aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), 631aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), 632aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v18_)}; 633aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return ValuesIn(array); 634aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 635aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 636aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter private: 637aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // No implementation - assignment is unsupported. 638aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter void operator=(const ValueArray18& other); 639aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 640aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T1 v1_; 641aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T2 v2_; 642aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T3 v3_; 643aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T4 v4_; 644aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T5 v5_; 645aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T6 v6_; 646aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T7 v7_; 647aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T8 v8_; 648aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T9 v9_; 649aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T10 v10_; 650aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T11 v11_; 651aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T12 v12_; 652aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T13 v13_; 653aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T14 v14_; 654aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T15 v15_; 655aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T16 v16_; 656aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T17 v17_; 657aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T18 v18_; 658aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter}; 659aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 660aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 661aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T6, typename T7, typename T8, typename T9, typename T10, 662aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T11, typename T12, typename T13, typename T14, typename T15, 663aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T16, typename T17, typename T18, typename T19> 664aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterclass ValueArray19 { 665aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter public: 666aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ValueArray19(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 667aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 668aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T18 v18, T19 v19) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), 669aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), 670aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19) {} 671aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 672aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter template <typename T> 673aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter operator ParamGenerator<T>() const { 674aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 675aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 676aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 677aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), 678aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), 679aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), 680aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v18_), static_cast<T>(v19_)}; 681aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return ValuesIn(array); 682aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 683aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 684aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter private: 685aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // No implementation - assignment is unsupported. 686aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter void operator=(const ValueArray19& other); 687aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 688aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T1 v1_; 689aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T2 v2_; 690aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T3 v3_; 691aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T4 v4_; 692aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T5 v5_; 693aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T6 v6_; 694aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T7 v7_; 695aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T8 v8_; 696aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T9 v9_; 697aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T10 v10_; 698aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T11 v11_; 699aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T12 v12_; 700aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T13 v13_; 701aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T14 v14_; 702aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T15 v15_; 703aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T16 v16_; 704aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T17 v17_; 705aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T18 v18_; 706aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T19 v19_; 707aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter}; 708aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 709aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 710aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T6, typename T7, typename T8, typename T9, typename T10, 711aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T11, typename T12, typename T13, typename T14, typename T15, 712aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T16, typename T17, typename T18, typename T19, typename T20> 713aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterclass ValueArray20 { 714aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter public: 715aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ValueArray20(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 716aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 717aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T18 v18, T19 v19, T20 v20) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), 718aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), 719aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18), 720aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v19_(v19), v20_(v20) {} 721aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 722aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter template <typename T> 723aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter operator ParamGenerator<T>() const { 724aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 725aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 726aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 727aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), 728aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), 729aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), 730aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_)}; 731aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return ValuesIn(array); 732aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 733aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 734aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter private: 735aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // No implementation - assignment is unsupported. 736aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter void operator=(const ValueArray20& other); 737aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 738aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T1 v1_; 739aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T2 v2_; 740aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T3 v3_; 741aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T4 v4_; 742aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T5 v5_; 743aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T6 v6_; 744aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T7 v7_; 745aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T8 v8_; 746aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T9 v9_; 747aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T10 v10_; 748aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T11 v11_; 749aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T12 v12_; 750aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T13 v13_; 751aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T14 v14_; 752aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T15 v15_; 753aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T16 v16_; 754aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T17 v17_; 755aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T18 v18_; 756aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T19 v19_; 757aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T20 v20_; 758aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter}; 759aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 760aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 761aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T6, typename T7, typename T8, typename T9, typename T10, 762aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T11, typename T12, typename T13, typename T14, typename T15, 763aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T16, typename T17, typename T18, typename T19, typename T20, 764aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T21> 765aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterclass ValueArray21 { 766aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter public: 767aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ValueArray21(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 768aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 769aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T18 v18, T19 v19, T20 v20, T21 v21) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), 770aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), 771aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17), 772aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v18_(v18), v19_(v19), v20_(v20), v21_(v21) {} 773aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 774aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter template <typename T> 775aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter operator ParamGenerator<T>() const { 776aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 777aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 778aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 779aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), 780aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), 781aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), 782aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), 783aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v21_)}; 784aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return ValuesIn(array); 785aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 786aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 787aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter private: 788aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // No implementation - assignment is unsupported. 789aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter void operator=(const ValueArray21& other); 790aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 791aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T1 v1_; 792aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T2 v2_; 793aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T3 v3_; 794aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T4 v4_; 795aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T5 v5_; 796aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T6 v6_; 797aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T7 v7_; 798aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T8 v8_; 799aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T9 v9_; 800aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T10 v10_; 801aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T11 v11_; 802aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T12 v12_; 803aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T13 v13_; 804aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T14 v14_; 805aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T15 v15_; 806aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T16 v16_; 807aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T17 v17_; 808aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T18 v18_; 809aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T19 v19_; 810aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T20 v20_; 811aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T21 v21_; 812aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter}; 813aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 814aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 815aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T6, typename T7, typename T8, typename T9, typename T10, 816aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T11, typename T12, typename T13, typename T14, typename T15, 817aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T16, typename T17, typename T18, typename T19, typename T20, 818aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T21, typename T22> 819aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterclass ValueArray22 { 820aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter public: 821aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ValueArray22(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 822aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 823aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T18 v18, T19 v19, T20 v20, T21 v21, T22 v22) : v1_(v1), v2_(v2), v3_(v3), 824aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), 825aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), 826aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22) {} 827aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 828aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter template <typename T> 829aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter operator ParamGenerator<T>() const { 830aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 831aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 832aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 833aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), 834aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), 835aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), 836aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), 837aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v21_), static_cast<T>(v22_)}; 838aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return ValuesIn(array); 839aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 840aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 841aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter private: 842aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // No implementation - assignment is unsupported. 843aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter void operator=(const ValueArray22& other); 844aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 845aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T1 v1_; 846aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T2 v2_; 847aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T3 v3_; 848aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T4 v4_; 849aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T5 v5_; 850aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T6 v6_; 851aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T7 v7_; 852aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T8 v8_; 853aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T9 v9_; 854aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T10 v10_; 855aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T11 v11_; 856aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T12 v12_; 857aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T13 v13_; 858aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T14 v14_; 859aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T15 v15_; 860aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T16 v16_; 861aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T17 v17_; 862aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T18 v18_; 863aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T19 v19_; 864aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T20 v20_; 865aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T21 v21_; 866aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T22 v22_; 867aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter}; 868aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 869aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 870aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T6, typename T7, typename T8, typename T9, typename T10, 871aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T11, typename T12, typename T13, typename T14, typename T15, 872aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T16, typename T17, typename T18, typename T19, typename T20, 873aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T21, typename T22, typename T23> 874aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterclass ValueArray23 { 875aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter public: 876aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ValueArray23(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 877aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 878aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23) : v1_(v1), v2_(v2), 879aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), 880aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), 881aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), 882aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v23_(v23) {} 883aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 884aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter template <typename T> 885aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter operator ParamGenerator<T>() const { 886aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 887aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 888aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 889aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), 890aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), 891aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), 892aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), 893aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_)}; 894aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return ValuesIn(array); 895aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 896aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 897aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter private: 898aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // No implementation - assignment is unsupported. 899aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter void operator=(const ValueArray23& other); 900aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 901aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T1 v1_; 902aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T2 v2_; 903aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T3 v3_; 904aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T4 v4_; 905aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T5 v5_; 906aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T6 v6_; 907aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T7 v7_; 908aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T8 v8_; 909aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T9 v9_; 910aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T10 v10_; 911aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T11 v11_; 912aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T12 v12_; 913aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T13 v13_; 914aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T14 v14_; 915aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T15 v15_; 916aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T16 v16_; 917aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T17 v17_; 918aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T18 v18_; 919aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T19 v19_; 920aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T20 v20_; 921aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T21 v21_; 922aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T22 v22_; 923aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T23 v23_; 924aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter}; 925aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 926aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 927aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T6, typename T7, typename T8, typename T9, typename T10, 928aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T11, typename T12, typename T13, typename T14, typename T15, 929aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T16, typename T17, typename T18, typename T19, typename T20, 930aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T21, typename T22, typename T23, typename T24> 931aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterclass ValueArray24 { 932aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter public: 933aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ValueArray24(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 934aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 935aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24) : v1_(v1), 936aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), 937aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), 938aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), 939aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v22_(v22), v23_(v23), v24_(v24) {} 940aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 941aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter template <typename T> 942aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter operator ParamGenerator<T>() const { 943aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 944aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 945aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 946aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), 947aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), 948aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), 949aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), 950aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), 951aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v24_)}; 952aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return ValuesIn(array); 953aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 954aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 955aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter private: 956aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // No implementation - assignment is unsupported. 957aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter void operator=(const ValueArray24& other); 958aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 959aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T1 v1_; 960aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T2 v2_; 961aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T3 v3_; 962aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T4 v4_; 963aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T5 v5_; 964aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T6 v6_; 965aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T7 v7_; 966aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T8 v8_; 967aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T9 v9_; 968aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T10 v10_; 969aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T11 v11_; 970aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T12 v12_; 971aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T13 v13_; 972aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T14 v14_; 973aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T15 v15_; 974aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T16 v16_; 975aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T17 v17_; 976aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T18 v18_; 977aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T19 v19_; 978aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T20 v20_; 979aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T21 v21_; 980aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T22 v22_; 981aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T23 v23_; 982aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T24 v24_; 983aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter}; 984aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 985aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 986aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T6, typename T7, typename T8, typename T9, typename T10, 987aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T11, typename T12, typename T13, typename T14, typename T15, 988aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T16, typename T17, typename T18, typename T19, typename T20, 989aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T21, typename T22, typename T23, typename T24, typename T25> 990aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterclass ValueArray25 { 991aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter public: 992aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ValueArray25(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 993aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 994aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, 995aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T25 v25) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), 996aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), 997aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), 998aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25) {} 999aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 1000aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter template <typename T> 1001aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter operator ParamGenerator<T>() const { 1002aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 1003aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 1004aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 1005aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), 1006aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), 1007aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), 1008aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), 1009aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), 1010aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v24_), static_cast<T>(v25_)}; 1011aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return ValuesIn(array); 1012aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 1013aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 1014aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter private: 1015aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // No implementation - assignment is unsupported. 1016aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter void operator=(const ValueArray25& other); 1017aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 1018aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T1 v1_; 1019aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T2 v2_; 1020aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T3 v3_; 1021aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T4 v4_; 1022aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T5 v5_; 1023aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T6 v6_; 1024aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T7 v7_; 1025aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T8 v8_; 1026aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T9 v9_; 1027aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T10 v10_; 1028aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T11 v11_; 1029aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T12 v12_; 1030aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T13 v13_; 1031aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T14 v14_; 1032aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T15 v15_; 1033aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T16 v16_; 1034aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T17 v17_; 1035aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T18 v18_; 1036aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T19 v19_; 1037aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T20 v20_; 1038aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T21 v21_; 1039aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T22 v22_; 1040aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T23 v23_; 1041aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T24 v24_; 1042aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T25 v25_; 1043aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter}; 1044aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 1045aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 1046aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T6, typename T7, typename T8, typename T9, typename T10, 1047aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T11, typename T12, typename T13, typename T14, typename T15, 1048aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T16, typename T17, typename T18, typename T19, typename T20, 1049aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T21, typename T22, typename T23, typename T24, typename T25, 1050aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T26> 1051aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterclass ValueArray26 { 1052aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter public: 1053aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ValueArray26(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 1054aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 1055aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 1056aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T26 v26) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), 1057aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), 1058aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), 1059aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26) {} 1060aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 1061aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter template <typename T> 1062aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter operator ParamGenerator<T>() const { 1063aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 1064aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 1065aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 1066aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), 1067aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), 1068aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), 1069aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), 1070aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), 1071aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_)}; 1072aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return ValuesIn(array); 1073aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 1074aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 1075aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter private: 1076aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // No implementation - assignment is unsupported. 1077aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter void operator=(const ValueArray26& other); 1078aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 1079aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T1 v1_; 1080aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T2 v2_; 1081aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T3 v3_; 1082aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T4 v4_; 1083aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T5 v5_; 1084aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T6 v6_; 1085aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T7 v7_; 1086aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T8 v8_; 1087aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T9 v9_; 1088aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T10 v10_; 1089aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T11 v11_; 1090aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T12 v12_; 1091aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T13 v13_; 1092aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T14 v14_; 1093aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T15 v15_; 1094aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T16 v16_; 1095aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T17 v17_; 1096aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T18 v18_; 1097aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T19 v19_; 1098aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T20 v20_; 1099aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T21 v21_; 1100aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T22 v22_; 1101aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T23 v23_; 1102aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T24 v24_; 1103aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T25 v25_; 1104aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T26 v26_; 1105aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter}; 1106aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 1107aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 1108aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T6, typename T7, typename T8, typename T9, typename T10, 1109aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T11, typename T12, typename T13, typename T14, typename T15, 1110aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T16, typename T17, typename T18, typename T19, typename T20, 1111aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T21, typename T22, typename T23, typename T24, typename T25, 1112aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T26, typename T27> 1113aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterclass ValueArray27 { 1114aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter public: 1115aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ValueArray27(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 1116aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 1117aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 1118aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T26 v26, T27 v27) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), 1119aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), 1120aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), 1121aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v20_(v20), v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), 1122aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v26_(v26), v27_(v27) {} 1123aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 1124aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter template <typename T> 1125aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter operator ParamGenerator<T>() const { 1126aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 1127aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 1128aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 1129aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), 1130aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), 1131aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), 1132aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), 1133aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), 1134aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_), 1135aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v27_)}; 1136aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return ValuesIn(array); 1137aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 1138aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 1139aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter private: 1140aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // No implementation - assignment is unsupported. 1141aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter void operator=(const ValueArray27& other); 1142aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 1143aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T1 v1_; 1144aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T2 v2_; 1145aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T3 v3_; 1146aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T4 v4_; 1147aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T5 v5_; 1148aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T6 v6_; 1149aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T7 v7_; 1150aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T8 v8_; 1151aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T9 v9_; 1152aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T10 v10_; 1153aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T11 v11_; 1154aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T12 v12_; 1155aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T13 v13_; 1156aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T14 v14_; 1157aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T15 v15_; 1158aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T16 v16_; 1159aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T17 v17_; 1160aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T18 v18_; 1161aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T19 v19_; 1162aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T20 v20_; 1163aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T21 v21_; 1164aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T22 v22_; 1165aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T23 v23_; 1166aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T24 v24_; 1167aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T25 v25_; 1168aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T26 v26_; 1169aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T27 v27_; 1170aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter}; 1171aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 1172aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 1173aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T6, typename T7, typename T8, typename T9, typename T10, 1174aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T11, typename T12, typename T13, typename T14, typename T15, 1175aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T16, typename T17, typename T18, typename T19, typename T20, 1176aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T21, typename T22, typename T23, typename T24, typename T25, 1177aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T26, typename T27, typename T28> 1178aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterclass ValueArray28 { 1179aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter public: 1180aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ValueArray28(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 1181aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 1182aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 1183aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T26 v26, T27 v27, T28 v28) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), 1184aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), 1185aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18), 1186aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v19_(v19), v20_(v20), v21_(v21), v22_(v22), v23_(v23), v24_(v24), 1187aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v25_(v25), v26_(v26), v27_(v27), v28_(v28) {} 1188aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 1189aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter template <typename T> 1190aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter operator ParamGenerator<T>() const { 1191aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 1192aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 1193aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 1194aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), 1195aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), 1196aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), 1197aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), 1198aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), 1199aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_), 1200aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v27_), static_cast<T>(v28_)}; 1201aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return ValuesIn(array); 1202aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 1203aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 1204aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter private: 1205aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // No implementation - assignment is unsupported. 1206aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter void operator=(const ValueArray28& other); 1207aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 1208aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T1 v1_; 1209aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T2 v2_; 1210aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T3 v3_; 1211aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T4 v4_; 1212aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T5 v5_; 1213aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T6 v6_; 1214aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T7 v7_; 1215aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T8 v8_; 1216aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T9 v9_; 1217aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T10 v10_; 1218aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T11 v11_; 1219aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T12 v12_; 1220aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T13 v13_; 1221aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T14 v14_; 1222aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T15 v15_; 1223aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T16 v16_; 1224aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T17 v17_; 1225aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T18 v18_; 1226aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T19 v19_; 1227aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T20 v20_; 1228aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T21 v21_; 1229aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T22 v22_; 1230aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T23 v23_; 1231aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T24 v24_; 1232aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T25 v25_; 1233aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T26 v26_; 1234aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T27 v27_; 1235aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T28 v28_; 1236aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter}; 1237aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 1238aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 1239aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T6, typename T7, typename T8, typename T9, typename T10, 1240aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T11, typename T12, typename T13, typename T14, typename T15, 1241aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T16, typename T17, typename T18, typename T19, typename T20, 1242aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T21, typename T22, typename T23, typename T24, typename T25, 1243aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T26, typename T27, typename T28, typename T29> 1244aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterclass ValueArray29 { 1245aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter public: 1246aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ValueArray29(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 1247aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 1248aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 1249aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T26 v26, T27 v27, T28 v28, T29 v29) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), 1250aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), 1251aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17), 1252aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), v23_(v23), 1253aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28), v29_(v29) {} 1254aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 1255aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter template <typename T> 1256aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter operator ParamGenerator<T>() const { 1257aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 1258aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 1259aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 1260aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), 1261aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), 1262aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), 1263aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), 1264aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), 1265aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_), 1266aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_)}; 1267aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return ValuesIn(array); 1268aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 1269aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 1270aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter private: 1271aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // No implementation - assignment is unsupported. 1272aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter void operator=(const ValueArray29& other); 1273aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 1274aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T1 v1_; 1275aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T2 v2_; 1276aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T3 v3_; 1277aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T4 v4_; 1278aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T5 v5_; 1279aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T6 v6_; 1280aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T7 v7_; 1281aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T8 v8_; 1282aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T9 v9_; 1283aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T10 v10_; 1284aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T11 v11_; 1285aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T12 v12_; 1286aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T13 v13_; 1287aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T14 v14_; 1288aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T15 v15_; 1289aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T16 v16_; 1290aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T17 v17_; 1291aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T18 v18_; 1292aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T19 v19_; 1293aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T20 v20_; 1294aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T21 v21_; 1295aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T22 v22_; 1296aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T23 v23_; 1297aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T24 v24_; 1298aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T25 v25_; 1299aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T26 v26_; 1300aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T27 v27_; 1301aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T28 v28_; 1302aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T29 v29_; 1303aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter}; 1304aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 1305aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 1306aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T6, typename T7, typename T8, typename T9, typename T10, 1307aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T11, typename T12, typename T13, typename T14, typename T15, 1308aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T16, typename T17, typename T18, typename T19, typename T20, 1309aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T21, typename T22, typename T23, typename T24, typename T25, 1310aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T26, typename T27, typename T28, typename T29, typename T30> 1311aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterclass ValueArray30 { 1312aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter public: 1313aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ValueArray30(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 1314aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 1315aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 1316aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T26 v26, T27 v27, T28 v28, T29 v29, T30 v30) : v1_(v1), v2_(v2), v3_(v3), 1317aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), 1318aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), 1319aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), 1320aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28), 1321aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v29_(v29), v30_(v30) {} 1322aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 1323aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter template <typename T> 1324aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter operator ParamGenerator<T>() const { 1325aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 1326aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 1327aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 1328aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), 1329aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), 1330aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), 1331aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), 1332aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), 1333aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_), 1334aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_), 1335aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v30_)}; 1336aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return ValuesIn(array); 1337aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 1338aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 1339aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter private: 1340aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // No implementation - assignment is unsupported. 1341aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter void operator=(const ValueArray30& other); 1342aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 1343aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T1 v1_; 1344aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T2 v2_; 1345aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T3 v3_; 1346aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T4 v4_; 1347aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T5 v5_; 1348aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T6 v6_; 1349aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T7 v7_; 1350aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T8 v8_; 1351aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T9 v9_; 1352aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T10 v10_; 1353aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T11 v11_; 1354aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T12 v12_; 1355aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T13 v13_; 1356aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T14 v14_; 1357aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T15 v15_; 1358aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T16 v16_; 1359aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T17 v17_; 1360aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T18 v18_; 1361aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T19 v19_; 1362aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T20 v20_; 1363aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T21 v21_; 1364aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T22 v22_; 1365aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T23 v23_; 1366aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T24 v24_; 1367aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T25 v25_; 1368aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T26 v26_; 1369aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T27 v27_; 1370aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T28 v28_; 1371aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T29 v29_; 1372aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T30 v30_; 1373aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter}; 1374aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 1375aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 1376aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T6, typename T7, typename T8, typename T9, typename T10, 1377aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T11, typename T12, typename T13, typename T14, typename T15, 1378aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T16, typename T17, typename T18, typename T19, typename T20, 1379aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T21, typename T22, typename T23, typename T24, typename T25, 1380aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T26, typename T27, typename T28, typename T29, typename T30, 1381aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T31> 1382aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterclass ValueArray31 { 1383aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter public: 1384aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ValueArray31(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 1385aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 1386aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 1387aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31) : v1_(v1), v2_(v2), 1388aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), 1389aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), 1390aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), 1391aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28), 1392aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v29_(v29), v30_(v30), v31_(v31) {} 1393aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 1394aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter template <typename T> 1395aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter operator ParamGenerator<T>() const { 1396aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 1397aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 1398aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 1399aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), 1400aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), 1401aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), 1402aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), 1403aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), 1404aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_), 1405aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_), 1406aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v30_), static_cast<T>(v31_)}; 1407aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return ValuesIn(array); 1408aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 1409aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 1410aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter private: 1411aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // No implementation - assignment is unsupported. 1412aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter void operator=(const ValueArray31& other); 1413aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 1414aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T1 v1_; 1415aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T2 v2_; 1416aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T3 v3_; 1417aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T4 v4_; 1418aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T5 v5_; 1419aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T6 v6_; 1420aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T7 v7_; 1421aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T8 v8_; 1422aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T9 v9_; 1423aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T10 v10_; 1424aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T11 v11_; 1425aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T12 v12_; 1426aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T13 v13_; 1427aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T14 v14_; 1428aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T15 v15_; 1429aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T16 v16_; 1430aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T17 v17_; 1431aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T18 v18_; 1432aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T19 v19_; 1433aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T20 v20_; 1434aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T21 v21_; 1435aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T22 v22_; 1436aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T23 v23_; 1437aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T24 v24_; 1438aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T25 v25_; 1439aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T26 v26_; 1440aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T27 v27_; 1441aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T28 v28_; 1442aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T29 v29_; 1443aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T30 v30_; 1444aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T31 v31_; 1445aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter}; 1446aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 1447aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 1448aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T6, typename T7, typename T8, typename T9, typename T10, 1449aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T11, typename T12, typename T13, typename T14, typename T15, 1450aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T16, typename T17, typename T18, typename T19, typename T20, 1451aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T21, typename T22, typename T23, typename T24, typename T25, 1452aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T26, typename T27, typename T28, typename T29, typename T30, 1453aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T31, typename T32> 1454aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterclass ValueArray32 { 1455aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter public: 1456aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ValueArray32(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 1457aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 1458aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 1459aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32) : v1_(v1), 1460aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), 1461aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), 1462aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), 1463aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), 1464aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32) {} 1465aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 1466aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter template <typename T> 1467aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter operator ParamGenerator<T>() const { 1468aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 1469aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 1470aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 1471aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), 1472aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), 1473aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), 1474aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), 1475aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), 1476aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_), 1477aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_), 1478aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_)}; 1479aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return ValuesIn(array); 1480aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 1481aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 1482aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter private: 1483aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // No implementation - assignment is unsupported. 1484aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter void operator=(const ValueArray32& other); 1485aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 1486aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T1 v1_; 1487aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T2 v2_; 1488aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T3 v3_; 1489aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T4 v4_; 1490aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T5 v5_; 1491aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T6 v6_; 1492aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T7 v7_; 1493aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T8 v8_; 1494aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T9 v9_; 1495aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T10 v10_; 1496aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T11 v11_; 1497aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T12 v12_; 1498aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T13 v13_; 1499aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T14 v14_; 1500aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T15 v15_; 1501aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T16 v16_; 1502aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T17 v17_; 1503aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T18 v18_; 1504aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T19 v19_; 1505aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T20 v20_; 1506aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T21 v21_; 1507aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T22 v22_; 1508aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T23 v23_; 1509aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T24 v24_; 1510aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T25 v25_; 1511aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T26 v26_; 1512aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T27 v27_; 1513aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T28 v28_; 1514aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T29 v29_; 1515aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T30 v30_; 1516aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T31 v31_; 1517aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T32 v32_; 1518aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter}; 1519aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 1520aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 1521aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T6, typename T7, typename T8, typename T9, typename T10, 1522aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T11, typename T12, typename T13, typename T14, typename T15, 1523aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T16, typename T17, typename T18, typename T19, typename T20, 1524aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T21, typename T22, typename T23, typename T24, typename T25, 1525aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T26, typename T27, typename T28, typename T29, typename T30, 1526aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T31, typename T32, typename T33> 1527aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterclass ValueArray33 { 1528aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter public: 1529aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ValueArray33(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 1530aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 1531aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 1532aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, 1533aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T33 v33) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), 1534aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), 1535aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), 1536aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26), 1537aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32), 1538aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v33_(v33) {} 1539aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 1540aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter template <typename T> 1541aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter operator ParamGenerator<T>() const { 1542aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 1543aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 1544aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 1545aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), 1546aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), 1547aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), 1548aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), 1549aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), 1550aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_), 1551aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_), 1552aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_), 1553aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v33_)}; 1554aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return ValuesIn(array); 1555aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 1556aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 1557aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter private: 1558aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // No implementation - assignment is unsupported. 1559aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter void operator=(const ValueArray33& other); 1560aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 1561aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T1 v1_; 1562aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T2 v2_; 1563aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T3 v3_; 1564aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T4 v4_; 1565aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T5 v5_; 1566aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T6 v6_; 1567aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T7 v7_; 1568aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T8 v8_; 1569aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T9 v9_; 1570aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T10 v10_; 1571aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T11 v11_; 1572aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T12 v12_; 1573aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T13 v13_; 1574aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T14 v14_; 1575aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T15 v15_; 1576aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T16 v16_; 1577aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T17 v17_; 1578aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T18 v18_; 1579aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T19 v19_; 1580aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T20 v20_; 1581aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T21 v21_; 1582aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T22 v22_; 1583aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T23 v23_; 1584aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T24 v24_; 1585aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T25 v25_; 1586aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T26 v26_; 1587aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T27 v27_; 1588aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T28 v28_; 1589aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T29 v29_; 1590aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T30 v30_; 1591aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T31 v31_; 1592aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T32 v32_; 1593aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T33 v33_; 1594aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter}; 1595aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 1596aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 1597aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T6, typename T7, typename T8, typename T9, typename T10, 1598aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T11, typename T12, typename T13, typename T14, typename T15, 1599aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T16, typename T17, typename T18, typename T19, typename T20, 1600aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T21, typename T22, typename T23, typename T24, typename T25, 1601aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T26, typename T27, typename T28, typename T29, typename T30, 1602aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T31, typename T32, typename T33, typename T34> 1603aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterclass ValueArray34 { 1604aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter public: 1605aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ValueArray34(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 1606aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 1607aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 1608aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, 1609aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T34 v34) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), 1610aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), 1611aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), 1612aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26), 1613aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32), 1614aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v33_(v33), v34_(v34) {} 1615aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 1616aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter template <typename T> 1617aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter operator ParamGenerator<T>() const { 1618aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 1619aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 1620aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 1621aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), 1622aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), 1623aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), 1624aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), 1625aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), 1626aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_), 1627aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_), 1628aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_), 1629aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v33_), static_cast<T>(v34_)}; 1630aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return ValuesIn(array); 1631aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 1632aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 1633aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter private: 1634aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // No implementation - assignment is unsupported. 1635aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter void operator=(const ValueArray34& other); 1636aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 1637aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T1 v1_; 1638aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T2 v2_; 1639aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T3 v3_; 1640aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T4 v4_; 1641aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T5 v5_; 1642aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T6 v6_; 1643aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T7 v7_; 1644aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T8 v8_; 1645aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T9 v9_; 1646aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T10 v10_; 1647aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T11 v11_; 1648aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T12 v12_; 1649aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T13 v13_; 1650aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T14 v14_; 1651aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T15 v15_; 1652aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T16 v16_; 1653aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T17 v17_; 1654aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T18 v18_; 1655aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T19 v19_; 1656aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T20 v20_; 1657aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T21 v21_; 1658aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T22 v22_; 1659aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T23 v23_; 1660aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T24 v24_; 1661aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T25 v25_; 1662aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T26 v26_; 1663aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T27 v27_; 1664aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T28 v28_; 1665aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T29 v29_; 1666aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T30 v30_; 1667aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T31 v31_; 1668aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T32 v32_; 1669aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T33 v33_; 1670aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T34 v34_; 1671aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter}; 1672aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 1673aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 1674aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T6, typename T7, typename T8, typename T9, typename T10, 1675aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T11, typename T12, typename T13, typename T14, typename T15, 1676aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T16, typename T17, typename T18, typename T19, typename T20, 1677aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T21, typename T22, typename T23, typename T24, typename T25, 1678aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T26, typename T27, typename T28, typename T29, typename T30, 1679aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T31, typename T32, typename T33, typename T34, typename T35> 1680aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterclass ValueArray35 { 1681aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter public: 1682aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ValueArray35(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 1683aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 1684aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 1685aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, 1686aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T34 v34, T35 v35) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), 1687aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), 1688aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), 1689aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v20_(v20), v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), 1690aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v26_(v26), v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), 1691aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v32_(v32), v33_(v33), v34_(v34), v35_(v35) {} 1692aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 1693aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter template <typename T> 1694aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter operator ParamGenerator<T>() const { 1695aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 1696aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 1697aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 1698aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), 1699aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), 1700aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), 1701aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), 1702aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), 1703aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_), 1704aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_), 1705aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_), 1706aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_)}; 1707aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return ValuesIn(array); 1708aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 1709aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 1710aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter private: 1711aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // No implementation - assignment is unsupported. 1712aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter void operator=(const ValueArray35& other); 1713aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 1714aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T1 v1_; 1715aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T2 v2_; 1716aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T3 v3_; 1717aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T4 v4_; 1718aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T5 v5_; 1719aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T6 v6_; 1720aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T7 v7_; 1721aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T8 v8_; 1722aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T9 v9_; 1723aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T10 v10_; 1724aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T11 v11_; 1725aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T12 v12_; 1726aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T13 v13_; 1727aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T14 v14_; 1728aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T15 v15_; 1729aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T16 v16_; 1730aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T17 v17_; 1731aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T18 v18_; 1732aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T19 v19_; 1733aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T20 v20_; 1734aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T21 v21_; 1735aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T22 v22_; 1736aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T23 v23_; 1737aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T24 v24_; 1738aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T25 v25_; 1739aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T26 v26_; 1740aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T27 v27_; 1741aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T28 v28_; 1742aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T29 v29_; 1743aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T30 v30_; 1744aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T31 v31_; 1745aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T32 v32_; 1746aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T33 v33_; 1747aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T34 v34_; 1748aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T35 v35_; 1749aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter}; 1750aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 1751aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 1752aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T6, typename T7, typename T8, typename T9, typename T10, 1753aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T11, typename T12, typename T13, typename T14, typename T15, 1754aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T16, typename T17, typename T18, typename T19, typename T20, 1755aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T21, typename T22, typename T23, typename T24, typename T25, 1756aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T26, typename T27, typename T28, typename T29, typename T30, 1757aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T31, typename T32, typename T33, typename T34, typename T35, 1758aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T36> 1759aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterclass ValueArray36 { 1760aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter public: 1761aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ValueArray36(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 1762aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 1763aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 1764aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, 1765aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T34 v34, T35 v35, T36 v36) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), 1766aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), 1767aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18), 1768aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v19_(v19), v20_(v20), v21_(v21), v22_(v22), v23_(v23), v24_(v24), 1769aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v25_(v25), v26_(v26), v27_(v27), v28_(v28), v29_(v29), v30_(v30), 1770aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v31_(v31), v32_(v32), v33_(v33), v34_(v34), v35_(v35), v36_(v36) {} 1771aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 1772aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter template <typename T> 1773aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter operator ParamGenerator<T>() const { 1774aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 1775aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 1776aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 1777aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), 1778aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), 1779aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), 1780aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), 1781aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), 1782aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_), 1783aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_), 1784aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_), 1785aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_), 1786aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v36_)}; 1787aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return ValuesIn(array); 1788aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 1789aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 1790aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter private: 1791aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // No implementation - assignment is unsupported. 1792aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter void operator=(const ValueArray36& other); 1793aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 1794aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T1 v1_; 1795aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T2 v2_; 1796aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T3 v3_; 1797aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T4 v4_; 1798aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T5 v5_; 1799aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T6 v6_; 1800aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T7 v7_; 1801aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T8 v8_; 1802aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T9 v9_; 1803aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T10 v10_; 1804aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T11 v11_; 1805aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T12 v12_; 1806aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T13 v13_; 1807aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T14 v14_; 1808aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T15 v15_; 1809aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T16 v16_; 1810aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T17 v17_; 1811aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T18 v18_; 1812aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T19 v19_; 1813aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T20 v20_; 1814aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T21 v21_; 1815aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T22 v22_; 1816aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T23 v23_; 1817aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T24 v24_; 1818aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T25 v25_; 1819aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T26 v26_; 1820aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T27 v27_; 1821aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T28 v28_; 1822aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T29 v29_; 1823aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T30 v30_; 1824aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T31 v31_; 1825aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T32 v32_; 1826aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T33 v33_; 1827aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T34 v34_; 1828aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T35 v35_; 1829aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T36 v36_; 1830aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter}; 1831aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 1832aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 1833aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T6, typename T7, typename T8, typename T9, typename T10, 1834aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T11, typename T12, typename T13, typename T14, typename T15, 1835aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T16, typename T17, typename T18, typename T19, typename T20, 1836aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T21, typename T22, typename T23, typename T24, typename T25, 1837aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T26, typename T27, typename T28, typename T29, typename T30, 1838aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T31, typename T32, typename T33, typename T34, typename T35, 1839aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T36, typename T37> 1840aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterclass ValueArray37 { 1841aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter public: 1842aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ValueArray37(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 1843aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 1844aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 1845aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, 1846aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T34 v34, T35 v35, T36 v36, T37 v37) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), 1847aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), 1848aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17), 1849aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), v23_(v23), 1850aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28), v29_(v29), 1851aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v30_(v30), v31_(v31), v32_(v32), v33_(v33), v34_(v34), v35_(v35), 1852aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v36_(v36), v37_(v37) {} 1853aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 1854aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter template <typename T> 1855aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter operator ParamGenerator<T>() const { 1856aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 1857aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 1858aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 1859aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), 1860aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), 1861aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), 1862aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), 1863aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), 1864aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_), 1865aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_), 1866aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_), 1867aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_), 1868aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v36_), static_cast<T>(v37_)}; 1869aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return ValuesIn(array); 1870aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 1871aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 1872aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter private: 1873aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // No implementation - assignment is unsupported. 1874aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter void operator=(const ValueArray37& other); 1875aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 1876aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T1 v1_; 1877aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T2 v2_; 1878aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T3 v3_; 1879aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T4 v4_; 1880aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T5 v5_; 1881aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T6 v6_; 1882aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T7 v7_; 1883aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T8 v8_; 1884aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T9 v9_; 1885aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T10 v10_; 1886aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T11 v11_; 1887aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T12 v12_; 1888aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T13 v13_; 1889aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T14 v14_; 1890aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T15 v15_; 1891aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T16 v16_; 1892aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T17 v17_; 1893aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T18 v18_; 1894aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T19 v19_; 1895aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T20 v20_; 1896aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T21 v21_; 1897aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T22 v22_; 1898aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T23 v23_; 1899aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T24 v24_; 1900aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T25 v25_; 1901aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T26 v26_; 1902aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T27 v27_; 1903aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T28 v28_; 1904aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T29 v29_; 1905aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T30 v30_; 1906aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T31 v31_; 1907aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T32 v32_; 1908aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T33 v33_; 1909aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T34 v34_; 1910aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T35 v35_; 1911aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T36 v36_; 1912aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T37 v37_; 1913aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter}; 1914aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 1915aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 1916aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T6, typename T7, typename T8, typename T9, typename T10, 1917aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T11, typename T12, typename T13, typename T14, typename T15, 1918aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T16, typename T17, typename T18, typename T19, typename T20, 1919aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T21, typename T22, typename T23, typename T24, typename T25, 1920aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T26, typename T27, typename T28, typename T29, typename T30, 1921aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T31, typename T32, typename T33, typename T34, typename T35, 1922aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T36, typename T37, typename T38> 1923aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterclass ValueArray38 { 1924aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter public: 1925aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ValueArray38(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 1926aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 1927aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 1928aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, 1929aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T34 v34, T35 v35, T36 v36, T37 v37, T38 v38) : v1_(v1), v2_(v2), v3_(v3), 1930aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), 1931aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), 1932aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), 1933aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28), 1934aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v29_(v29), v30_(v30), v31_(v31), v32_(v32), v33_(v33), v34_(v34), 1935aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v35_(v35), v36_(v36), v37_(v37), v38_(v38) {} 1936aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 1937aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter template <typename T> 1938aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter operator ParamGenerator<T>() const { 1939aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 1940aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 1941aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 1942aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), 1943aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), 1944aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), 1945aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), 1946aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), 1947aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_), 1948aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_), 1949aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_), 1950aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_), 1951aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_)}; 1952aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return ValuesIn(array); 1953aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 1954aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 1955aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter private: 1956aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // No implementation - assignment is unsupported. 1957aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter void operator=(const ValueArray38& other); 1958aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 1959aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T1 v1_; 1960aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T2 v2_; 1961aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T3 v3_; 1962aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T4 v4_; 1963aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T5 v5_; 1964aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T6 v6_; 1965aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T7 v7_; 1966aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T8 v8_; 1967aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T9 v9_; 1968aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T10 v10_; 1969aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T11 v11_; 1970aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T12 v12_; 1971aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T13 v13_; 1972aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T14 v14_; 1973aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T15 v15_; 1974aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T16 v16_; 1975aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T17 v17_; 1976aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T18 v18_; 1977aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T19 v19_; 1978aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T20 v20_; 1979aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T21 v21_; 1980aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T22 v22_; 1981aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T23 v23_; 1982aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T24 v24_; 1983aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T25 v25_; 1984aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T26 v26_; 1985aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T27 v27_; 1986aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T28 v28_; 1987aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T29 v29_; 1988aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T30 v30_; 1989aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T31 v31_; 1990aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T32 v32_; 1991aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T33 v33_; 1992aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T34 v34_; 1993aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T35 v35_; 1994aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T36 v36_; 1995aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T37 v37_; 1996aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T38 v38_; 1997aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter}; 1998aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 1999aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 2000aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T6, typename T7, typename T8, typename T9, typename T10, 2001aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T11, typename T12, typename T13, typename T14, typename T15, 2002aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T16, typename T17, typename T18, typename T19, typename T20, 2003aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T21, typename T22, typename T23, typename T24, typename T25, 2004aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T26, typename T27, typename T28, typename T29, typename T30, 2005aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T31, typename T32, typename T33, typename T34, typename T35, 2006aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T36, typename T37, typename T38, typename T39> 2007aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterclass ValueArray39 { 2008aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter public: 2009aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ValueArray39(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 2010aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 2011aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 2012aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, 2013aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39) : v1_(v1), v2_(v2), 2014aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), 2015aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), 2016aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), 2017aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28), 2018aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v29_(v29), v30_(v30), v31_(v31), v32_(v32), v33_(v33), v34_(v34), 2019aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v35_(v35), v36_(v36), v37_(v37), v38_(v38), v39_(v39) {} 2020aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 2021aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter template <typename T> 2022aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter operator ParamGenerator<T>() const { 2023aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 2024aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 2025aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 2026aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), 2027aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), 2028aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), 2029aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), 2030aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), 2031aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_), 2032aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_), 2033aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_), 2034aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_), 2035aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_), 2036aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v39_)}; 2037aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return ValuesIn(array); 2038aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 2039aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 2040aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter private: 2041aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // No implementation - assignment is unsupported. 2042aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter void operator=(const ValueArray39& other); 2043aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 2044aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T1 v1_; 2045aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T2 v2_; 2046aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T3 v3_; 2047aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T4 v4_; 2048aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T5 v5_; 2049aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T6 v6_; 2050aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T7 v7_; 2051aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T8 v8_; 2052aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T9 v9_; 2053aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T10 v10_; 2054aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T11 v11_; 2055aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T12 v12_; 2056aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T13 v13_; 2057aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T14 v14_; 2058aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T15 v15_; 2059aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T16 v16_; 2060aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T17 v17_; 2061aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T18 v18_; 2062aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T19 v19_; 2063aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T20 v20_; 2064aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T21 v21_; 2065aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T22 v22_; 2066aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T23 v23_; 2067aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T24 v24_; 2068aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T25 v25_; 2069aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T26 v26_; 2070aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T27 v27_; 2071aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T28 v28_; 2072aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T29 v29_; 2073aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T30 v30_; 2074aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T31 v31_; 2075aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T32 v32_; 2076aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T33 v33_; 2077aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T34 v34_; 2078aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T35 v35_; 2079aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T36 v36_; 2080aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T37 v37_; 2081aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T38 v38_; 2082aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T39 v39_; 2083aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter}; 2084aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 2085aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 2086aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T6, typename T7, typename T8, typename T9, typename T10, 2087aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T11, typename T12, typename T13, typename T14, typename T15, 2088aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T16, typename T17, typename T18, typename T19, typename T20, 2089aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T21, typename T22, typename T23, typename T24, typename T25, 2090aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T26, typename T27, typename T28, typename T29, typename T30, 2091aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T31, typename T32, typename T33, typename T34, typename T35, 2092aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T36, typename T37, typename T38, typename T39, typename T40> 2093aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterclass ValueArray40 { 2094aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter public: 2095aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ValueArray40(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 2096aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 2097aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 2098aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, 2099aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40) : v1_(v1), 2100aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), 2101aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), 2102aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), 2103aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), 2104aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32), v33_(v33), 2105aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v34_(v34), v35_(v35), v36_(v36), v37_(v37), v38_(v38), v39_(v39), 2106aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v40_(v40) {} 2107aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 2108aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter template <typename T> 2109aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter operator ParamGenerator<T>() const { 2110aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 2111aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 2112aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 2113aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), 2114aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), 2115aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), 2116aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), 2117aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), 2118aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_), 2119aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_), 2120aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_), 2121aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_), 2122aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_), 2123aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v39_), static_cast<T>(v40_)}; 2124aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return ValuesIn(array); 2125aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 2126aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 2127aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter private: 2128aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // No implementation - assignment is unsupported. 2129aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter void operator=(const ValueArray40& other); 2130aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 2131aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T1 v1_; 2132aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T2 v2_; 2133aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T3 v3_; 2134aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T4 v4_; 2135aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T5 v5_; 2136aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T6 v6_; 2137aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T7 v7_; 2138aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T8 v8_; 2139aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T9 v9_; 2140aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T10 v10_; 2141aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T11 v11_; 2142aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T12 v12_; 2143aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T13 v13_; 2144aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T14 v14_; 2145aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T15 v15_; 2146aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T16 v16_; 2147aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T17 v17_; 2148aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T18 v18_; 2149aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T19 v19_; 2150aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T20 v20_; 2151aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T21 v21_; 2152aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T22 v22_; 2153aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T23 v23_; 2154aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T24 v24_; 2155aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T25 v25_; 2156aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T26 v26_; 2157aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T27 v27_; 2158aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T28 v28_; 2159aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T29 v29_; 2160aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T30 v30_; 2161aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T31 v31_; 2162aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T32 v32_; 2163aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T33 v33_; 2164aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T34 v34_; 2165aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T35 v35_; 2166aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T36 v36_; 2167aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T37 v37_; 2168aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T38 v38_; 2169aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T39 v39_; 2170aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T40 v40_; 2171aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter}; 2172aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 2173aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 2174aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T6, typename T7, typename T8, typename T9, typename T10, 2175aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T11, typename T12, typename T13, typename T14, typename T15, 2176aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T16, typename T17, typename T18, typename T19, typename T20, 2177aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T21, typename T22, typename T23, typename T24, typename T25, 2178aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T26, typename T27, typename T28, typename T29, typename T30, 2179aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T31, typename T32, typename T33, typename T34, typename T35, 2180aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T36, typename T37, typename T38, typename T39, typename T40, 2181aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T41> 2182aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterclass ValueArray41 { 2183aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter public: 2184aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ValueArray41(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 2185aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 2186aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 2187aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, 2188aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, 2189aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T41 v41) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), 2190aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), 2191aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), 2192aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26), 2193aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32), 2194aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v33_(v33), v34_(v34), v35_(v35), v36_(v36), v37_(v37), v38_(v38), 2195aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v39_(v39), v40_(v40), v41_(v41) {} 2196aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 2197aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter template <typename T> 2198aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter operator ParamGenerator<T>() const { 2199aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 2200aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 2201aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 2202aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), 2203aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), 2204aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), 2205aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), 2206aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), 2207aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_), 2208aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_), 2209aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_), 2210aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_), 2211aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_), 2212aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v39_), static_cast<T>(v40_), static_cast<T>(v41_)}; 2213aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return ValuesIn(array); 2214aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 2215aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 2216aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter private: 2217aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // No implementation - assignment is unsupported. 2218aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter void operator=(const ValueArray41& other); 2219aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 2220aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T1 v1_; 2221aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T2 v2_; 2222aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T3 v3_; 2223aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T4 v4_; 2224aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T5 v5_; 2225aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T6 v6_; 2226aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T7 v7_; 2227aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T8 v8_; 2228aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T9 v9_; 2229aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T10 v10_; 2230aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T11 v11_; 2231aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T12 v12_; 2232aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T13 v13_; 2233aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T14 v14_; 2234aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T15 v15_; 2235aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T16 v16_; 2236aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T17 v17_; 2237aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T18 v18_; 2238aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T19 v19_; 2239aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T20 v20_; 2240aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T21 v21_; 2241aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T22 v22_; 2242aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T23 v23_; 2243aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T24 v24_; 2244aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T25 v25_; 2245aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T26 v26_; 2246aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T27 v27_; 2247aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T28 v28_; 2248aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T29 v29_; 2249aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T30 v30_; 2250aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T31 v31_; 2251aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T32 v32_; 2252aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T33 v33_; 2253aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T34 v34_; 2254aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T35 v35_; 2255aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T36 v36_; 2256aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T37 v37_; 2257aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T38 v38_; 2258aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T39 v39_; 2259aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T40 v40_; 2260aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T41 v41_; 2261aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter}; 2262aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 2263aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 2264aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T6, typename T7, typename T8, typename T9, typename T10, 2265aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T11, typename T12, typename T13, typename T14, typename T15, 2266aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T16, typename T17, typename T18, typename T19, typename T20, 2267aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T21, typename T22, typename T23, typename T24, typename T25, 2268aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T26, typename T27, typename T28, typename T29, typename T30, 2269aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T31, typename T32, typename T33, typename T34, typename T35, 2270aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T36, typename T37, typename T38, typename T39, typename T40, 2271aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T41, typename T42> 2272aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterclass ValueArray42 { 2273aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter public: 2274aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ValueArray42(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 2275aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 2276aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 2277aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, 2278aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, 2279aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T42 v42) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), 2280aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), 2281aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), 2282aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26), 2283aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32), 2284aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v33_(v33), v34_(v34), v35_(v35), v36_(v36), v37_(v37), v38_(v38), 2285aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v39_(v39), v40_(v40), v41_(v41), v42_(v42) {} 2286aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 2287aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter template <typename T> 2288aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter operator ParamGenerator<T>() const { 2289aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 2290aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 2291aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 2292aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), 2293aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), 2294aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), 2295aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), 2296aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), 2297aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_), 2298aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_), 2299aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_), 2300aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_), 2301aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_), 2302aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v39_), static_cast<T>(v40_), static_cast<T>(v41_), 2303aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v42_)}; 2304aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return ValuesIn(array); 2305aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 2306aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 2307aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter private: 2308aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // No implementation - assignment is unsupported. 2309aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter void operator=(const ValueArray42& other); 2310aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 2311aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T1 v1_; 2312aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T2 v2_; 2313aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T3 v3_; 2314aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T4 v4_; 2315aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T5 v5_; 2316aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T6 v6_; 2317aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T7 v7_; 2318aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T8 v8_; 2319aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T9 v9_; 2320aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T10 v10_; 2321aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T11 v11_; 2322aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T12 v12_; 2323aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T13 v13_; 2324aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T14 v14_; 2325aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T15 v15_; 2326aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T16 v16_; 2327aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T17 v17_; 2328aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T18 v18_; 2329aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T19 v19_; 2330aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T20 v20_; 2331aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T21 v21_; 2332aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T22 v22_; 2333aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T23 v23_; 2334aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T24 v24_; 2335aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T25 v25_; 2336aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T26 v26_; 2337aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T27 v27_; 2338aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T28 v28_; 2339aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T29 v29_; 2340aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T30 v30_; 2341aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T31 v31_; 2342aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T32 v32_; 2343aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T33 v33_; 2344aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T34 v34_; 2345aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T35 v35_; 2346aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T36 v36_; 2347aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T37 v37_; 2348aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T38 v38_; 2349aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T39 v39_; 2350aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T40 v40_; 2351aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T41 v41_; 2352aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T42 v42_; 2353aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter}; 2354aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 2355aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 2356aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T6, typename T7, typename T8, typename T9, typename T10, 2357aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T11, typename T12, typename T13, typename T14, typename T15, 2358aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T16, typename T17, typename T18, typename T19, typename T20, 2359aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T21, typename T22, typename T23, typename T24, typename T25, 2360aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T26, typename T27, typename T28, typename T29, typename T30, 2361aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T31, typename T32, typename T33, typename T34, typename T35, 2362aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T36, typename T37, typename T38, typename T39, typename T40, 2363aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T41, typename T42, typename T43> 2364aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterclass ValueArray43 { 2365aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter public: 2366aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ValueArray43(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 2367aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 2368aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 2369aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, 2370aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, 2371aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T42 v42, T43 v43) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), 2372aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), 2373aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), 2374aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v20_(v20), v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), 2375aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v26_(v26), v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), 2376aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v32_(v32), v33_(v33), v34_(v34), v35_(v35), v36_(v36), v37_(v37), 2377aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v38_(v38), v39_(v39), v40_(v40), v41_(v41), v42_(v42), v43_(v43) {} 2378aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 2379aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter template <typename T> 2380aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter operator ParamGenerator<T>() const { 2381aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 2382aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 2383aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 2384aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), 2385aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), 2386aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), 2387aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), 2388aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), 2389aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_), 2390aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_), 2391aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_), 2392aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_), 2393aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_), 2394aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v39_), static_cast<T>(v40_), static_cast<T>(v41_), 2395aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v42_), static_cast<T>(v43_)}; 2396aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return ValuesIn(array); 2397aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 2398aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 2399aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter private: 2400aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // No implementation - assignment is unsupported. 2401aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter void operator=(const ValueArray43& other); 2402aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 2403aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T1 v1_; 2404aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T2 v2_; 2405aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T3 v3_; 2406aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T4 v4_; 2407aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T5 v5_; 2408aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T6 v6_; 2409aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T7 v7_; 2410aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T8 v8_; 2411aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T9 v9_; 2412aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T10 v10_; 2413aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T11 v11_; 2414aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T12 v12_; 2415aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T13 v13_; 2416aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T14 v14_; 2417aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T15 v15_; 2418aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T16 v16_; 2419aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T17 v17_; 2420aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T18 v18_; 2421aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T19 v19_; 2422aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T20 v20_; 2423aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T21 v21_; 2424aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T22 v22_; 2425aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T23 v23_; 2426aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T24 v24_; 2427aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T25 v25_; 2428aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T26 v26_; 2429aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T27 v27_; 2430aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T28 v28_; 2431aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T29 v29_; 2432aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T30 v30_; 2433aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T31 v31_; 2434aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T32 v32_; 2435aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T33 v33_; 2436aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T34 v34_; 2437aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T35 v35_; 2438aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T36 v36_; 2439aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T37 v37_; 2440aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T38 v38_; 2441aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T39 v39_; 2442aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T40 v40_; 2443aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T41 v41_; 2444aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T42 v42_; 2445aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T43 v43_; 2446aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter}; 2447aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 2448aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 2449aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T6, typename T7, typename T8, typename T9, typename T10, 2450aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T11, typename T12, typename T13, typename T14, typename T15, 2451aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T16, typename T17, typename T18, typename T19, typename T20, 2452aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T21, typename T22, typename T23, typename T24, typename T25, 2453aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T26, typename T27, typename T28, typename T29, typename T30, 2454aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T31, typename T32, typename T33, typename T34, typename T35, 2455aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T36, typename T37, typename T38, typename T39, typename T40, 2456aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T41, typename T42, typename T43, typename T44> 2457aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterclass ValueArray44 { 2458aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter public: 2459aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ValueArray44(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 2460aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 2461aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 2462aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, 2463aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, 2464aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T42 v42, T43 v43, T44 v44) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), 2465aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), 2466aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18), 2467aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v19_(v19), v20_(v20), v21_(v21), v22_(v22), v23_(v23), v24_(v24), 2468aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v25_(v25), v26_(v26), v27_(v27), v28_(v28), v29_(v29), v30_(v30), 2469aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v31_(v31), v32_(v32), v33_(v33), v34_(v34), v35_(v35), v36_(v36), 2470aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v37_(v37), v38_(v38), v39_(v39), v40_(v40), v41_(v41), v42_(v42), 2471aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v43_(v43), v44_(v44) {} 2472aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 2473aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter template <typename T> 2474aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter operator ParamGenerator<T>() const { 2475aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 2476aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 2477aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 2478aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), 2479aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), 2480aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), 2481aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), 2482aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), 2483aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_), 2484aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_), 2485aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_), 2486aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_), 2487aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_), 2488aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v39_), static_cast<T>(v40_), static_cast<T>(v41_), 2489aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v42_), static_cast<T>(v43_), static_cast<T>(v44_)}; 2490aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return ValuesIn(array); 2491aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 2492aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 2493aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter private: 2494aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // No implementation - assignment is unsupported. 2495aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter void operator=(const ValueArray44& other); 2496aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 2497aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T1 v1_; 2498aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T2 v2_; 2499aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T3 v3_; 2500aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T4 v4_; 2501aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T5 v5_; 2502aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T6 v6_; 2503aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T7 v7_; 2504aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T8 v8_; 2505aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T9 v9_; 2506aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T10 v10_; 2507aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T11 v11_; 2508aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T12 v12_; 2509aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T13 v13_; 2510aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T14 v14_; 2511aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T15 v15_; 2512aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T16 v16_; 2513aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T17 v17_; 2514aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T18 v18_; 2515aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T19 v19_; 2516aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T20 v20_; 2517aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T21 v21_; 2518aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T22 v22_; 2519aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T23 v23_; 2520aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T24 v24_; 2521aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T25 v25_; 2522aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T26 v26_; 2523aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T27 v27_; 2524aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T28 v28_; 2525aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T29 v29_; 2526aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T30 v30_; 2527aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T31 v31_; 2528aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T32 v32_; 2529aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T33 v33_; 2530aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T34 v34_; 2531aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T35 v35_; 2532aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T36 v36_; 2533aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T37 v37_; 2534aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T38 v38_; 2535aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T39 v39_; 2536aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T40 v40_; 2537aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T41 v41_; 2538aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T42 v42_; 2539aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T43 v43_; 2540aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T44 v44_; 2541aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter}; 2542aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 2543aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 2544aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T6, typename T7, typename T8, typename T9, typename T10, 2545aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T11, typename T12, typename T13, typename T14, typename T15, 2546aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T16, typename T17, typename T18, typename T19, typename T20, 2547aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T21, typename T22, typename T23, typename T24, typename T25, 2548aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T26, typename T27, typename T28, typename T29, typename T30, 2549aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T31, typename T32, typename T33, typename T34, typename T35, 2550aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T36, typename T37, typename T38, typename T39, typename T40, 2551aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T41, typename T42, typename T43, typename T44, typename T45> 2552aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterclass ValueArray45 { 2553aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter public: 2554aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ValueArray45(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 2555aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 2556aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 2557aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, 2558aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, 2559aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T42 v42, T43 v43, T44 v44, T45 v45) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), 2560aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), 2561aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17), 2562aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), v23_(v23), 2563aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28), v29_(v29), 2564aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v30_(v30), v31_(v31), v32_(v32), v33_(v33), v34_(v34), v35_(v35), 2565aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v36_(v36), v37_(v37), v38_(v38), v39_(v39), v40_(v40), v41_(v41), 2566aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v42_(v42), v43_(v43), v44_(v44), v45_(v45) {} 2567aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 2568aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter template <typename T> 2569aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter operator ParamGenerator<T>() const { 2570aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 2571aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 2572aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 2573aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), 2574aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), 2575aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), 2576aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), 2577aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), 2578aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_), 2579aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_), 2580aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_), 2581aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_), 2582aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_), 2583aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v39_), static_cast<T>(v40_), static_cast<T>(v41_), 2584aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v42_), static_cast<T>(v43_), static_cast<T>(v44_), 2585aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v45_)}; 2586aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return ValuesIn(array); 2587aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 2588aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 2589aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter private: 2590aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // No implementation - assignment is unsupported. 2591aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter void operator=(const ValueArray45& other); 2592aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 2593aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T1 v1_; 2594aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T2 v2_; 2595aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T3 v3_; 2596aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T4 v4_; 2597aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T5 v5_; 2598aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T6 v6_; 2599aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T7 v7_; 2600aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T8 v8_; 2601aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T9 v9_; 2602aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T10 v10_; 2603aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T11 v11_; 2604aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T12 v12_; 2605aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T13 v13_; 2606aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T14 v14_; 2607aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T15 v15_; 2608aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T16 v16_; 2609aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T17 v17_; 2610aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T18 v18_; 2611aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T19 v19_; 2612aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T20 v20_; 2613aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T21 v21_; 2614aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T22 v22_; 2615aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T23 v23_; 2616aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T24 v24_; 2617aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T25 v25_; 2618aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T26 v26_; 2619aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T27 v27_; 2620aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T28 v28_; 2621aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T29 v29_; 2622aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T30 v30_; 2623aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T31 v31_; 2624aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T32 v32_; 2625aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T33 v33_; 2626aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T34 v34_; 2627aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T35 v35_; 2628aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T36 v36_; 2629aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T37 v37_; 2630aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T38 v38_; 2631aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T39 v39_; 2632aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T40 v40_; 2633aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T41 v41_; 2634aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T42 v42_; 2635aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T43 v43_; 2636aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T44 v44_; 2637aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T45 v45_; 2638aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter}; 2639aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 2640aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 2641aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T6, typename T7, typename T8, typename T9, typename T10, 2642aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T11, typename T12, typename T13, typename T14, typename T15, 2643aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T16, typename T17, typename T18, typename T19, typename T20, 2644aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T21, typename T22, typename T23, typename T24, typename T25, 2645aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T26, typename T27, typename T28, typename T29, typename T30, 2646aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T31, typename T32, typename T33, typename T34, typename T35, 2647aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T36, typename T37, typename T38, typename T39, typename T40, 2648aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T41, typename T42, typename T43, typename T44, typename T45, 2649aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T46> 2650aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterclass ValueArray46 { 2651aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter public: 2652aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ValueArray46(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 2653aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 2654aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 2655aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, 2656aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, 2657aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T42 v42, T43 v43, T44 v44, T45 v45, T46 v46) : v1_(v1), v2_(v2), v3_(v3), 2658aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), 2659aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), 2660aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), 2661aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28), 2662aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v29_(v29), v30_(v30), v31_(v31), v32_(v32), v33_(v33), v34_(v34), 2663aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v35_(v35), v36_(v36), v37_(v37), v38_(v38), v39_(v39), v40_(v40), 2664aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v41_(v41), v42_(v42), v43_(v43), v44_(v44), v45_(v45), v46_(v46) {} 2665aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 2666aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter template <typename T> 2667aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter operator ParamGenerator<T>() const { 2668aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 2669aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 2670aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 2671aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), 2672aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), 2673aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), 2674aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), 2675aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), 2676aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_), 2677aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_), 2678aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_), 2679aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_), 2680aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_), 2681aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v39_), static_cast<T>(v40_), static_cast<T>(v41_), 2682aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v42_), static_cast<T>(v43_), static_cast<T>(v44_), 2683aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v45_), static_cast<T>(v46_)}; 2684aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return ValuesIn(array); 2685aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 2686aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 2687aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter private: 2688aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // No implementation - assignment is unsupported. 2689aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter void operator=(const ValueArray46& other); 2690aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 2691aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T1 v1_; 2692aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T2 v2_; 2693aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T3 v3_; 2694aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T4 v4_; 2695aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T5 v5_; 2696aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T6 v6_; 2697aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T7 v7_; 2698aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T8 v8_; 2699aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T9 v9_; 2700aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T10 v10_; 2701aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T11 v11_; 2702aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T12 v12_; 2703aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T13 v13_; 2704aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T14 v14_; 2705aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T15 v15_; 2706aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T16 v16_; 2707aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T17 v17_; 2708aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T18 v18_; 2709aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T19 v19_; 2710aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T20 v20_; 2711aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T21 v21_; 2712aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T22 v22_; 2713aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T23 v23_; 2714aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T24 v24_; 2715aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T25 v25_; 2716aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T26 v26_; 2717aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T27 v27_; 2718aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T28 v28_; 2719aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T29 v29_; 2720aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T30 v30_; 2721aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T31 v31_; 2722aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T32 v32_; 2723aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T33 v33_; 2724aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T34 v34_; 2725aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T35 v35_; 2726aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T36 v36_; 2727aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T37 v37_; 2728aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T38 v38_; 2729aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T39 v39_; 2730aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T40 v40_; 2731aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T41 v41_; 2732aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T42 v42_; 2733aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T43 v43_; 2734aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T44 v44_; 2735aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T45 v45_; 2736aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T46 v46_; 2737aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter}; 2738aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 2739aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 2740aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T6, typename T7, typename T8, typename T9, typename T10, 2741aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T11, typename T12, typename T13, typename T14, typename T15, 2742aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T16, typename T17, typename T18, typename T19, typename T20, 2743aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T21, typename T22, typename T23, typename T24, typename T25, 2744aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T26, typename T27, typename T28, typename T29, typename T30, 2745aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T31, typename T32, typename T33, typename T34, typename T35, 2746aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T36, typename T37, typename T38, typename T39, typename T40, 2747aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T41, typename T42, typename T43, typename T44, typename T45, 2748aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T46, typename T47> 2749aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterclass ValueArray47 { 2750aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter public: 2751aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ValueArray47(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 2752aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 2753aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 2754aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, 2755aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, 2756aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47) : v1_(v1), v2_(v2), 2757aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), 2758aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), 2759aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), 2760aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28), 2761aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v29_(v29), v30_(v30), v31_(v31), v32_(v32), v33_(v33), v34_(v34), 2762aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v35_(v35), v36_(v36), v37_(v37), v38_(v38), v39_(v39), v40_(v40), 2763aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v41_(v41), v42_(v42), v43_(v43), v44_(v44), v45_(v45), v46_(v46), 2764aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v47_(v47) {} 2765aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 2766aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter template <typename T> 2767aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter operator ParamGenerator<T>() const { 2768aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 2769aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 2770aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 2771aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), 2772aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), 2773aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), 2774aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), 2775aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), 2776aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_), 2777aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_), 2778aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_), 2779aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_), 2780aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_), 2781aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v39_), static_cast<T>(v40_), static_cast<T>(v41_), 2782aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v42_), static_cast<T>(v43_), static_cast<T>(v44_), 2783aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v45_), static_cast<T>(v46_), static_cast<T>(v47_)}; 2784aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return ValuesIn(array); 2785aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 2786aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 2787aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter private: 2788aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // No implementation - assignment is unsupported. 2789aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter void operator=(const ValueArray47& other); 2790aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 2791aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T1 v1_; 2792aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T2 v2_; 2793aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T3 v3_; 2794aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T4 v4_; 2795aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T5 v5_; 2796aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T6 v6_; 2797aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T7 v7_; 2798aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T8 v8_; 2799aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T9 v9_; 2800aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T10 v10_; 2801aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T11 v11_; 2802aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T12 v12_; 2803aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T13 v13_; 2804aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T14 v14_; 2805aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T15 v15_; 2806aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T16 v16_; 2807aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T17 v17_; 2808aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T18 v18_; 2809aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T19 v19_; 2810aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T20 v20_; 2811aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T21 v21_; 2812aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T22 v22_; 2813aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T23 v23_; 2814aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T24 v24_; 2815aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T25 v25_; 2816aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T26 v26_; 2817aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T27 v27_; 2818aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T28 v28_; 2819aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T29 v29_; 2820aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T30 v30_; 2821aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T31 v31_; 2822aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T32 v32_; 2823aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T33 v33_; 2824aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T34 v34_; 2825aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T35 v35_; 2826aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T36 v36_; 2827aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T37 v37_; 2828aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T38 v38_; 2829aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T39 v39_; 2830aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T40 v40_; 2831aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T41 v41_; 2832aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T42 v42_; 2833aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T43 v43_; 2834aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T44 v44_; 2835aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T45 v45_; 2836aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T46 v46_; 2837aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T47 v47_; 2838aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter}; 2839aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 2840aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 2841aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T6, typename T7, typename T8, typename T9, typename T10, 2842aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T11, typename T12, typename T13, typename T14, typename T15, 2843aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T16, typename T17, typename T18, typename T19, typename T20, 2844aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T21, typename T22, typename T23, typename T24, typename T25, 2845aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T26, typename T27, typename T28, typename T29, typename T30, 2846aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T31, typename T32, typename T33, typename T34, typename T35, 2847aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T36, typename T37, typename T38, typename T39, typename T40, 2848aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T41, typename T42, typename T43, typename T44, typename T45, 2849aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T46, typename T47, typename T48> 2850aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterclass ValueArray48 { 2851aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter public: 2852aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ValueArray48(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 2853aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 2854aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 2855aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, 2856aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, 2857aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47, T48 v48) : v1_(v1), 2858aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), 2859aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), 2860aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), 2861aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), 2862aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32), v33_(v33), 2863aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v34_(v34), v35_(v35), v36_(v36), v37_(v37), v38_(v38), v39_(v39), 2864aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v40_(v40), v41_(v41), v42_(v42), v43_(v43), v44_(v44), v45_(v45), 2865aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v46_(v46), v47_(v47), v48_(v48) {} 2866aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 2867aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter template <typename T> 2868aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter operator ParamGenerator<T>() const { 2869aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 2870aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 2871aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 2872aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), 2873aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), 2874aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), 2875aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), 2876aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), 2877aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_), 2878aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_), 2879aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_), 2880aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_), 2881aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_), 2882aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v39_), static_cast<T>(v40_), static_cast<T>(v41_), 2883aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v42_), static_cast<T>(v43_), static_cast<T>(v44_), 2884aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v45_), static_cast<T>(v46_), static_cast<T>(v47_), 2885aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v48_)}; 2886aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return ValuesIn(array); 2887aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 2888aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 2889aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter private: 2890aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // No implementation - assignment is unsupported. 2891aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter void operator=(const ValueArray48& other); 2892aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 2893aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T1 v1_; 2894aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T2 v2_; 2895aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T3 v3_; 2896aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T4 v4_; 2897aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T5 v5_; 2898aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T6 v6_; 2899aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T7 v7_; 2900aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T8 v8_; 2901aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T9 v9_; 2902aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T10 v10_; 2903aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T11 v11_; 2904aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T12 v12_; 2905aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T13 v13_; 2906aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T14 v14_; 2907aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T15 v15_; 2908aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T16 v16_; 2909aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T17 v17_; 2910aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T18 v18_; 2911aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T19 v19_; 2912aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T20 v20_; 2913aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T21 v21_; 2914aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T22 v22_; 2915aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T23 v23_; 2916aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T24 v24_; 2917aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T25 v25_; 2918aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T26 v26_; 2919aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T27 v27_; 2920aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T28 v28_; 2921aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T29 v29_; 2922aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T30 v30_; 2923aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T31 v31_; 2924aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T32 v32_; 2925aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T33 v33_; 2926aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T34 v34_; 2927aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T35 v35_; 2928aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T36 v36_; 2929aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T37 v37_; 2930aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T38 v38_; 2931aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T39 v39_; 2932aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T40 v40_; 2933aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T41 v41_; 2934aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T42 v42_; 2935aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T43 v43_; 2936aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T44 v44_; 2937aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T45 v45_; 2938aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T46 v46_; 2939aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T47 v47_; 2940aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T48 v48_; 2941aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter}; 2942aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 2943aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 2944aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T6, typename T7, typename T8, typename T9, typename T10, 2945aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T11, typename T12, typename T13, typename T14, typename T15, 2946aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T16, typename T17, typename T18, typename T19, typename T20, 2947aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T21, typename T22, typename T23, typename T24, typename T25, 2948aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T26, typename T27, typename T28, typename T29, typename T30, 2949aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T31, typename T32, typename T33, typename T34, typename T35, 2950aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T36, typename T37, typename T38, typename T39, typename T40, 2951aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T41, typename T42, typename T43, typename T44, typename T45, 2952aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T46, typename T47, typename T48, typename T49> 2953aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterclass ValueArray49 { 2954aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter public: 2955aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ValueArray49(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 2956aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 2957aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 2958aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, 2959aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, 2960aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47, T48 v48, 2961aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T49 v49) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), 2962aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), 2963aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), 2964aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26), 2965aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32), 2966aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v33_(v33), v34_(v34), v35_(v35), v36_(v36), v37_(v37), v38_(v38), 2967aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v39_(v39), v40_(v40), v41_(v41), v42_(v42), v43_(v43), v44_(v44), 2968aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v45_(v45), v46_(v46), v47_(v47), v48_(v48), v49_(v49) {} 2969aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 2970aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter template <typename T> 2971aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter operator ParamGenerator<T>() const { 2972aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 2973aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 2974aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 2975aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), 2976aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), 2977aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), 2978aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), 2979aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), 2980aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_), 2981aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_), 2982aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_), 2983aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_), 2984aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_), 2985aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v39_), static_cast<T>(v40_), static_cast<T>(v41_), 2986aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v42_), static_cast<T>(v43_), static_cast<T>(v44_), 2987aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v45_), static_cast<T>(v46_), static_cast<T>(v47_), 2988aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v48_), static_cast<T>(v49_)}; 2989aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return ValuesIn(array); 2990aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 2991aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 2992aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter private: 2993aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // No implementation - assignment is unsupported. 2994aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter void operator=(const ValueArray49& other); 2995aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 2996aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T1 v1_; 2997aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T2 v2_; 2998aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T3 v3_; 2999aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T4 v4_; 3000aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T5 v5_; 3001aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T6 v6_; 3002aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T7 v7_; 3003aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T8 v8_; 3004aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T9 v9_; 3005aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T10 v10_; 3006aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T11 v11_; 3007aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T12 v12_; 3008aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T13 v13_; 3009aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T14 v14_; 3010aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T15 v15_; 3011aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T16 v16_; 3012aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T17 v17_; 3013aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T18 v18_; 3014aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T19 v19_; 3015aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T20 v20_; 3016aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T21 v21_; 3017aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T22 v22_; 3018aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T23 v23_; 3019aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T24 v24_; 3020aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T25 v25_; 3021aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T26 v26_; 3022aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T27 v27_; 3023aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T28 v28_; 3024aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T29 v29_; 3025aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T30 v30_; 3026aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T31 v31_; 3027aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T32 v32_; 3028aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T33 v33_; 3029aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T34 v34_; 3030aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T35 v35_; 3031aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T36 v36_; 3032aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T37 v37_; 3033aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T38 v38_; 3034aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T39 v39_; 3035aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T40 v40_; 3036aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T41 v41_; 3037aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T42 v42_; 3038aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T43 v43_; 3039aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T44 v44_; 3040aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T45 v45_; 3041aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T46 v46_; 3042aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T47 v47_; 3043aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T48 v48_; 3044aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T49 v49_; 3045aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter}; 3046aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 3047aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 3048aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T6, typename T7, typename T8, typename T9, typename T10, 3049aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T11, typename T12, typename T13, typename T14, typename T15, 3050aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T16, typename T17, typename T18, typename T19, typename T20, 3051aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T21, typename T22, typename T23, typename T24, typename T25, 3052aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T26, typename T27, typename T28, typename T29, typename T30, 3053aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T31, typename T32, typename T33, typename T34, typename T35, 3054aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T36, typename T37, typename T38, typename T39, typename T40, 3055aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T41, typename T42, typename T43, typename T44, typename T45, 3056aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T46, typename T47, typename T48, typename T49, typename T50> 3057aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterclass ValueArray50 { 3058aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter public: 3059aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ValueArray50(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 3060aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 3061aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 3062aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, 3063aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, 3064aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47, T48 v48, T49 v49, 3065aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T50 v50) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), 3066aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), 3067aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), 3068aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26), 3069aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32), 3070aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v33_(v33), v34_(v34), v35_(v35), v36_(v36), v37_(v37), v38_(v38), 3071aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v39_(v39), v40_(v40), v41_(v41), v42_(v42), v43_(v43), v44_(v44), 3072aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v45_(v45), v46_(v46), v47_(v47), v48_(v48), v49_(v49), v50_(v50) {} 3073aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 3074aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter template <typename T> 3075aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter operator ParamGenerator<T>() const { 3076aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), 3077aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), 3078aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), 3079aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), 3080aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), 3081aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), 3082aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), 3083aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), 3084aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_), 3085aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_), 3086aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_), 3087aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_), 3088aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_), 3089aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v39_), static_cast<T>(v40_), static_cast<T>(v41_), 3090aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v42_), static_cast<T>(v43_), static_cast<T>(v44_), 3091aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v45_), static_cast<T>(v46_), static_cast<T>(v47_), 3092aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<T>(v48_), static_cast<T>(v49_), static_cast<T>(v50_)}; 3093aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return ValuesIn(array); 3094aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 3095aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 3096aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter private: 3097aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // No implementation - assignment is unsupported. 3098aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter void operator=(const ValueArray50& other); 3099aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 3100aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T1 v1_; 3101aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T2 v2_; 3102aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T3 v3_; 3103aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T4 v4_; 3104aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T5 v5_; 3105aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T6 v6_; 3106aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T7 v7_; 3107aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T8 v8_; 3108aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T9 v9_; 3109aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T10 v10_; 3110aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T11 v11_; 3111aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T12 v12_; 3112aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T13 v13_; 3113aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T14 v14_; 3114aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T15 v15_; 3115aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T16 v16_; 3116aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T17 v17_; 3117aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T18 v18_; 3118aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T19 v19_; 3119aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T20 v20_; 3120aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T21 v21_; 3121aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T22 v22_; 3122aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T23 v23_; 3123aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T24 v24_; 3124aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T25 v25_; 3125aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T26 v26_; 3126aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T27 v27_; 3127aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T28 v28_; 3128aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T29 v29_; 3129aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T30 v30_; 3130aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T31 v31_; 3131aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T32 v32_; 3132aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T33 v33_; 3133aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T34 v34_; 3134aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T35 v35_; 3135aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T36 v36_; 3136aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T37 v37_; 3137aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T38 v38_; 3138aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T39 v39_; 3139aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T40 v40_; 3140aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T41 v41_; 3141aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T42 v42_; 3142aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T43 v43_; 3143aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T44 v44_; 3144aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T45 v45_; 3145aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T46 v46_; 3146aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T47 v47_; 3147aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T48 v48_; 3148aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T49 v49_; 3149aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const T50 v50_; 3150aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter}; 3151aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 3152aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter# if GTEST_HAS_COMBINE 3153aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE. 3154aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// 3155aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// Generates values from the Cartesian product of values produced 3156aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// by the argument generators. 3157aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// 3158aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename T1, typename T2> 3159aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterclass CartesianProductGenerator2 3160aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter : public ParamGeneratorInterface< ::std::tr1::tuple<T1, T2> > { 3161aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter public: 3162aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typedef ::std::tr1::tuple<T1, T2> ParamType; 3163aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 3164aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter CartesianProductGenerator2(const ParamGenerator<T1>& g1, 3165aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T2>& g2) 3166aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter : g1_(g1), g2_(g2) {} 3167aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter virtual ~CartesianProductGenerator2() {} 3168aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 3169aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter virtual ParamIteratorInterface<ParamType>* Begin() const { 3170aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin()); 3171aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 3172aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter virtual ParamIteratorInterface<ParamType>* End() const { 3173aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return new Iterator(this, g1_, g1_.end(), g2_, g2_.end()); 3174aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 3175aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 3176aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter private: 3177aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter class Iterator : public ParamIteratorInterface<ParamType> { 3178aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter public: 3179aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter Iterator(const ParamGeneratorInterface<ParamType>* base, 3180aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T1>& g1, 3181aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T1>::iterator& current1, 3182aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T2>& g2, 3183aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T2>::iterator& current2) 3184aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter : base_(base), 3185aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter begin1_(g1.begin()), end1_(g1.end()), current1_(current1), 3186aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter begin2_(g2.begin()), end2_(g2.end()), current2_(current2) { 3187aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ComputeCurrentValue(); 3188aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 3189aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter virtual ~Iterator() {} 3190aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 3191aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter virtual const ParamGeneratorInterface<ParamType>* BaseGenerator() const { 3192aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return base_; 3193aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 3194aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // Advance should not be called on beyond-of-range iterators 3195aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // so no component iterators must be beyond end of range, either. 3196aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter virtual void Advance() { 3197aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter assert(!AtEnd()); 3198aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ++current2_; 3199aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter if (current2_ == end2_) { 3200aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current2_ = begin2_; 3201aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ++current1_; 3202aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 3203aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ComputeCurrentValue(); 3204aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 3205aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter virtual ParamIteratorInterface<ParamType>* Clone() const { 3206aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return new Iterator(*this); 3207aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 3208aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter virtual const ParamType* Current() const { return ¤t_value_; } 3209aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter virtual bool Equals(const ParamIteratorInterface<ParamType>& other) const { 3210aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // Having the same base generator guarantees that the other 3211aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // iterator is of the same type and we can downcast. 3212aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter GTEST_CHECK_(BaseGenerator() == other.BaseGenerator()) 3213aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter << "The program attempted to compare iterators " 3214aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter << "from different generators." << std::endl; 3215aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const Iterator* typed_other = 3216aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter CheckedDowncastToActualType<const Iterator>(&other); 3217aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // We must report iterators equal if they both point beyond their 3218aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // respective ranges. That can happen in a variety of fashions, 3219aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // so we have to consult AtEnd(). 3220aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return (AtEnd() && typed_other->AtEnd()) || 3221aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ( 3222aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current1_ == typed_other->current1_ && 3223aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current2_ == typed_other->current2_); 3224aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 3225aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 3226aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter private: 3227aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter Iterator(const Iterator& other) 3228aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter : base_(other.base_), 3229aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter begin1_(other.begin1_), 3230aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter end1_(other.end1_), 3231aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current1_(other.current1_), 3232aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter begin2_(other.begin2_), 3233aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter end2_(other.end2_), 3234aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current2_(other.current2_) { 3235aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ComputeCurrentValue(); 3236aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 3237aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 3238aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter void ComputeCurrentValue() { 3239aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter if (!AtEnd()) 3240aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current_value_ = ParamType(*current1_, *current2_); 3241aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 3242aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter bool AtEnd() const { 3243aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // We must report iterator past the end of the range when either of the 3244aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // component iterators has reached the end of its range. 3245aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return 3246aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current1_ == end1_ || 3247aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current2_ == end2_; 3248aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 3249aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 3250aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // No implementation - assignment is unsupported. 3251aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter void operator=(const Iterator& other); 3252aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 3253aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGeneratorInterface<ParamType>* const base_; 3254aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // begin[i]_ and end[i]_ define the i-th range that Iterator traverses. 3255aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // current[i]_ is the actual traversing iterator. 3256aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T1>::iterator begin1_; 3257aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T1>::iterator end1_; 3258aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename ParamGenerator<T1>::iterator current1_; 3259aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T2>::iterator begin2_; 3260aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T2>::iterator end2_; 3261aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename ParamGenerator<T2>::iterator current2_; 3262aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ParamType current_value_; 3263aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter }; // class CartesianProductGenerator2::Iterator 3264aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 3265aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // No implementation - assignment is unsupported. 3266aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter void operator=(const CartesianProductGenerator2& other); 3267aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 3268aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T1> g1_; 3269aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T2> g2_; 3270aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter}; // class CartesianProductGenerator2 3271aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 3272aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 3273aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename T1, typename T2, typename T3> 3274aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterclass CartesianProductGenerator3 3275aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter : public ParamGeneratorInterface< ::std::tr1::tuple<T1, T2, T3> > { 3276aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter public: 3277aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typedef ::std::tr1::tuple<T1, T2, T3> ParamType; 3278aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 3279aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter CartesianProductGenerator3(const ParamGenerator<T1>& g1, 3280aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T2>& g2, const ParamGenerator<T3>& g3) 3281aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter : g1_(g1), g2_(g2), g3_(g3) {} 3282aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter virtual ~CartesianProductGenerator3() {} 3283aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 3284aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter virtual ParamIteratorInterface<ParamType>* Begin() const { 3285aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_, 3286aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter g3_.begin()); 3287aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 3288aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter virtual ParamIteratorInterface<ParamType>* End() const { 3289aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end()); 3290aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 3291aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 3292aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter private: 3293aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter class Iterator : public ParamIteratorInterface<ParamType> { 3294aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter public: 3295aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter Iterator(const ParamGeneratorInterface<ParamType>* base, 3296aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T1>& g1, 3297aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T1>::iterator& current1, 3298aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T2>& g2, 3299aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T2>::iterator& current2, 3300aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T3>& g3, 3301aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T3>::iterator& current3) 3302aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter : base_(base), 3303aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter begin1_(g1.begin()), end1_(g1.end()), current1_(current1), 3304aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter begin2_(g2.begin()), end2_(g2.end()), current2_(current2), 3305aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter begin3_(g3.begin()), end3_(g3.end()), current3_(current3) { 3306aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ComputeCurrentValue(); 3307aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 3308aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter virtual ~Iterator() {} 3309aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 3310aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter virtual const ParamGeneratorInterface<ParamType>* BaseGenerator() const { 3311aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return base_; 3312aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 3313aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // Advance should not be called on beyond-of-range iterators 3314aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // so no component iterators must be beyond end of range, either. 3315aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter virtual void Advance() { 3316aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter assert(!AtEnd()); 3317aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ++current3_; 3318aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter if (current3_ == end3_) { 3319aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current3_ = begin3_; 3320aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ++current2_; 3321aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 3322aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter if (current2_ == end2_) { 3323aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current2_ = begin2_; 3324aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ++current1_; 3325aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 3326aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ComputeCurrentValue(); 3327aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 3328aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter virtual ParamIteratorInterface<ParamType>* Clone() const { 3329aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return new Iterator(*this); 3330aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 3331aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter virtual const ParamType* Current() const { return ¤t_value_; } 3332aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter virtual bool Equals(const ParamIteratorInterface<ParamType>& other) const { 3333aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // Having the same base generator guarantees that the other 3334aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // iterator is of the same type and we can downcast. 3335aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter GTEST_CHECK_(BaseGenerator() == other.BaseGenerator()) 3336aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter << "The program attempted to compare iterators " 3337aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter << "from different generators." << std::endl; 3338aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const Iterator* typed_other = 3339aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter CheckedDowncastToActualType<const Iterator>(&other); 3340aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // We must report iterators equal if they both point beyond their 3341aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // respective ranges. That can happen in a variety of fashions, 3342aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // so we have to consult AtEnd(). 3343aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return (AtEnd() && typed_other->AtEnd()) || 3344aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ( 3345aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current1_ == typed_other->current1_ && 3346aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current2_ == typed_other->current2_ && 3347aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current3_ == typed_other->current3_); 3348aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 3349aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 3350aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter private: 3351aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter Iterator(const Iterator& other) 3352aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter : base_(other.base_), 3353aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter begin1_(other.begin1_), 3354aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter end1_(other.end1_), 3355aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current1_(other.current1_), 3356aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter begin2_(other.begin2_), 3357aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter end2_(other.end2_), 3358aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current2_(other.current2_), 3359aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter begin3_(other.begin3_), 3360aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter end3_(other.end3_), 3361aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current3_(other.current3_) { 3362aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ComputeCurrentValue(); 3363aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 3364aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 3365aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter void ComputeCurrentValue() { 3366aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter if (!AtEnd()) 3367aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current_value_ = ParamType(*current1_, *current2_, *current3_); 3368aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 3369aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter bool AtEnd() const { 3370aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // We must report iterator past the end of the range when either of the 3371aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // component iterators has reached the end of its range. 3372aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return 3373aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current1_ == end1_ || 3374aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current2_ == end2_ || 3375aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current3_ == end3_; 3376aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 3377aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 3378aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // No implementation - assignment is unsupported. 3379aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter void operator=(const Iterator& other); 3380aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 3381aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGeneratorInterface<ParamType>* const base_; 3382aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // begin[i]_ and end[i]_ define the i-th range that Iterator traverses. 3383aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // current[i]_ is the actual traversing iterator. 3384aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T1>::iterator begin1_; 3385aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T1>::iterator end1_; 3386aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename ParamGenerator<T1>::iterator current1_; 3387aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T2>::iterator begin2_; 3388aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T2>::iterator end2_; 3389aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename ParamGenerator<T2>::iterator current2_; 3390aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T3>::iterator begin3_; 3391aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T3>::iterator end3_; 3392aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename ParamGenerator<T3>::iterator current3_; 3393aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ParamType current_value_; 3394aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter }; // class CartesianProductGenerator3::Iterator 3395aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 3396aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // No implementation - assignment is unsupported. 3397aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter void operator=(const CartesianProductGenerator3& other); 3398aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 3399aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T1> g1_; 3400aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T2> g2_; 3401aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T3> g3_; 3402aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter}; // class CartesianProductGenerator3 3403aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 3404aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 3405aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename T1, typename T2, typename T3, typename T4> 3406aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterclass CartesianProductGenerator4 3407aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter : public ParamGeneratorInterface< ::std::tr1::tuple<T1, T2, T3, T4> > { 3408aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter public: 3409aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typedef ::std::tr1::tuple<T1, T2, T3, T4> ParamType; 3410aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 3411aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter CartesianProductGenerator4(const ParamGenerator<T1>& g1, 3412aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T2>& g2, const ParamGenerator<T3>& g3, 3413aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T4>& g4) 3414aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter : g1_(g1), g2_(g2), g3_(g3), g4_(g4) {} 3415aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter virtual ~CartesianProductGenerator4() {} 3416aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 3417aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter virtual ParamIteratorInterface<ParamType>* Begin() const { 3418aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_, 3419aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter g3_.begin(), g4_, g4_.begin()); 3420aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 3421aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter virtual ParamIteratorInterface<ParamType>* End() const { 3422aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(), 3423aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter g4_, g4_.end()); 3424aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 3425aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 3426aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter private: 3427aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter class Iterator : public ParamIteratorInterface<ParamType> { 3428aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter public: 3429aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter Iterator(const ParamGeneratorInterface<ParamType>* base, 3430aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T1>& g1, 3431aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T1>::iterator& current1, 3432aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T2>& g2, 3433aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T2>::iterator& current2, 3434aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T3>& g3, 3435aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T3>::iterator& current3, 3436aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T4>& g4, 3437aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T4>::iterator& current4) 3438aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter : base_(base), 3439aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter begin1_(g1.begin()), end1_(g1.end()), current1_(current1), 3440aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter begin2_(g2.begin()), end2_(g2.end()), current2_(current2), 3441aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter begin3_(g3.begin()), end3_(g3.end()), current3_(current3), 3442aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter begin4_(g4.begin()), end4_(g4.end()), current4_(current4) { 3443aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ComputeCurrentValue(); 3444aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 3445aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter virtual ~Iterator() {} 3446aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 3447aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter virtual const ParamGeneratorInterface<ParamType>* BaseGenerator() const { 3448aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return base_; 3449aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 3450aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // Advance should not be called on beyond-of-range iterators 3451aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // so no component iterators must be beyond end of range, either. 3452aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter virtual void Advance() { 3453aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter assert(!AtEnd()); 3454aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ++current4_; 3455aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter if (current4_ == end4_) { 3456aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current4_ = begin4_; 3457aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ++current3_; 3458aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 3459aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter if (current3_ == end3_) { 3460aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current3_ = begin3_; 3461aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ++current2_; 3462aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 3463aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter if (current2_ == end2_) { 3464aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current2_ = begin2_; 3465aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ++current1_; 3466aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 3467aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ComputeCurrentValue(); 3468aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 3469aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter virtual ParamIteratorInterface<ParamType>* Clone() const { 3470aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return new Iterator(*this); 3471aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 3472aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter virtual const ParamType* Current() const { return ¤t_value_; } 3473aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter virtual bool Equals(const ParamIteratorInterface<ParamType>& other) const { 3474aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // Having the same base generator guarantees that the other 3475aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // iterator is of the same type and we can downcast. 3476aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter GTEST_CHECK_(BaseGenerator() == other.BaseGenerator()) 3477aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter << "The program attempted to compare iterators " 3478aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter << "from different generators." << std::endl; 3479aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const Iterator* typed_other = 3480aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter CheckedDowncastToActualType<const Iterator>(&other); 3481aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // We must report iterators equal if they both point beyond their 3482aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // respective ranges. That can happen in a variety of fashions, 3483aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // so we have to consult AtEnd(). 3484aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return (AtEnd() && typed_other->AtEnd()) || 3485aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ( 3486aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current1_ == typed_other->current1_ && 3487aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current2_ == typed_other->current2_ && 3488aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current3_ == typed_other->current3_ && 3489aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current4_ == typed_other->current4_); 3490aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 3491aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 3492aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter private: 3493aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter Iterator(const Iterator& other) 3494aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter : base_(other.base_), 3495aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter begin1_(other.begin1_), 3496aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter end1_(other.end1_), 3497aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current1_(other.current1_), 3498aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter begin2_(other.begin2_), 3499aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter end2_(other.end2_), 3500aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current2_(other.current2_), 3501aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter begin3_(other.begin3_), 3502aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter end3_(other.end3_), 3503aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current3_(other.current3_), 3504aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter begin4_(other.begin4_), 3505aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter end4_(other.end4_), 3506aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current4_(other.current4_) { 3507aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ComputeCurrentValue(); 3508aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 3509aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 3510aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter void ComputeCurrentValue() { 3511aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter if (!AtEnd()) 3512aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current_value_ = ParamType(*current1_, *current2_, *current3_, 3513aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter *current4_); 3514aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 3515aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter bool AtEnd() const { 3516aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // We must report iterator past the end of the range when either of the 3517aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // component iterators has reached the end of its range. 3518aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return 3519aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current1_ == end1_ || 3520aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current2_ == end2_ || 3521aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current3_ == end3_ || 3522aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current4_ == end4_; 3523aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 3524aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 3525aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // No implementation - assignment is unsupported. 3526aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter void operator=(const Iterator& other); 3527aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 3528aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGeneratorInterface<ParamType>* const base_; 3529aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // begin[i]_ and end[i]_ define the i-th range that Iterator traverses. 3530aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // current[i]_ is the actual traversing iterator. 3531aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T1>::iterator begin1_; 3532aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T1>::iterator end1_; 3533aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename ParamGenerator<T1>::iterator current1_; 3534aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T2>::iterator begin2_; 3535aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T2>::iterator end2_; 3536aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename ParamGenerator<T2>::iterator current2_; 3537aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T3>::iterator begin3_; 3538aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T3>::iterator end3_; 3539aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename ParamGenerator<T3>::iterator current3_; 3540aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T4>::iterator begin4_; 3541aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T4>::iterator end4_; 3542aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename ParamGenerator<T4>::iterator current4_; 3543aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ParamType current_value_; 3544aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter }; // class CartesianProductGenerator4::Iterator 3545aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 3546aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // No implementation - assignment is unsupported. 3547aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter void operator=(const CartesianProductGenerator4& other); 3548aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 3549aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T1> g1_; 3550aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T2> g2_; 3551aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T3> g3_; 3552aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T4> g4_; 3553aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter}; // class CartesianProductGenerator4 3554aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 3555aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 3556aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename T1, typename T2, typename T3, typename T4, typename T5> 3557aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterclass CartesianProductGenerator5 3558aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter : public ParamGeneratorInterface< ::std::tr1::tuple<T1, T2, T3, T4, T5> > { 3559aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter public: 3560aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typedef ::std::tr1::tuple<T1, T2, T3, T4, T5> ParamType; 3561aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 3562aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter CartesianProductGenerator5(const ParamGenerator<T1>& g1, 3563aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T2>& g2, const ParamGenerator<T3>& g3, 3564aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T4>& g4, const ParamGenerator<T5>& g5) 3565aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5) {} 3566aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter virtual ~CartesianProductGenerator5() {} 3567aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 3568aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter virtual ParamIteratorInterface<ParamType>* Begin() const { 3569aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_, 3570aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter g3_.begin(), g4_, g4_.begin(), g5_, g5_.begin()); 3571aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 3572aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter virtual ParamIteratorInterface<ParamType>* End() const { 3573aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(), 3574aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter g4_, g4_.end(), g5_, g5_.end()); 3575aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 3576aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 3577aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter private: 3578aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter class Iterator : public ParamIteratorInterface<ParamType> { 3579aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter public: 3580aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter Iterator(const ParamGeneratorInterface<ParamType>* base, 3581aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T1>& g1, 3582aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T1>::iterator& current1, 3583aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T2>& g2, 3584aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T2>::iterator& current2, 3585aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T3>& g3, 3586aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T3>::iterator& current3, 3587aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T4>& g4, 3588aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T4>::iterator& current4, 3589aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T5>& g5, 3590aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T5>::iterator& current5) 3591aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter : base_(base), 3592aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter begin1_(g1.begin()), end1_(g1.end()), current1_(current1), 3593aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter begin2_(g2.begin()), end2_(g2.end()), current2_(current2), 3594aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter begin3_(g3.begin()), end3_(g3.end()), current3_(current3), 3595aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter begin4_(g4.begin()), end4_(g4.end()), current4_(current4), 3596aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter begin5_(g5.begin()), end5_(g5.end()), current5_(current5) { 3597aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ComputeCurrentValue(); 3598aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 3599aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter virtual ~Iterator() {} 3600aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 3601aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter virtual const ParamGeneratorInterface<ParamType>* BaseGenerator() const { 3602aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return base_; 3603aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 3604aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // Advance should not be called on beyond-of-range iterators 3605aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // so no component iterators must be beyond end of range, either. 3606aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter virtual void Advance() { 3607aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter assert(!AtEnd()); 3608aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ++current5_; 3609aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter if (current5_ == end5_) { 3610aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current5_ = begin5_; 3611aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ++current4_; 3612aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 3613aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter if (current4_ == end4_) { 3614aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current4_ = begin4_; 3615aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ++current3_; 3616aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 3617aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter if (current3_ == end3_) { 3618aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current3_ = begin3_; 3619aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ++current2_; 3620aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 3621aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter if (current2_ == end2_) { 3622aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current2_ = begin2_; 3623aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ++current1_; 3624aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 3625aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ComputeCurrentValue(); 3626aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 3627aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter virtual ParamIteratorInterface<ParamType>* Clone() const { 3628aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return new Iterator(*this); 3629aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 3630aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter virtual const ParamType* Current() const { return ¤t_value_; } 3631aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter virtual bool Equals(const ParamIteratorInterface<ParamType>& other) const { 3632aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // Having the same base generator guarantees that the other 3633aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // iterator is of the same type and we can downcast. 3634aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter GTEST_CHECK_(BaseGenerator() == other.BaseGenerator()) 3635aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter << "The program attempted to compare iterators " 3636aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter << "from different generators." << std::endl; 3637aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const Iterator* typed_other = 3638aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter CheckedDowncastToActualType<const Iterator>(&other); 3639aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // We must report iterators equal if they both point beyond their 3640aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // respective ranges. That can happen in a variety of fashions, 3641aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // so we have to consult AtEnd(). 3642aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return (AtEnd() && typed_other->AtEnd()) || 3643aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ( 3644aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current1_ == typed_other->current1_ && 3645aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current2_ == typed_other->current2_ && 3646aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current3_ == typed_other->current3_ && 3647aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current4_ == typed_other->current4_ && 3648aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current5_ == typed_other->current5_); 3649aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 3650aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 3651aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter private: 3652aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter Iterator(const Iterator& other) 3653aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter : base_(other.base_), 3654aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter begin1_(other.begin1_), 3655aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter end1_(other.end1_), 3656aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current1_(other.current1_), 3657aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter begin2_(other.begin2_), 3658aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter end2_(other.end2_), 3659aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current2_(other.current2_), 3660aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter begin3_(other.begin3_), 3661aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter end3_(other.end3_), 3662aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current3_(other.current3_), 3663aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter begin4_(other.begin4_), 3664aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter end4_(other.end4_), 3665aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current4_(other.current4_), 3666aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter begin5_(other.begin5_), 3667aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter end5_(other.end5_), 3668aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current5_(other.current5_) { 3669aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ComputeCurrentValue(); 3670aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 3671aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 3672aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter void ComputeCurrentValue() { 3673aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter if (!AtEnd()) 3674aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current_value_ = ParamType(*current1_, *current2_, *current3_, 3675aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter *current4_, *current5_); 3676aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 3677aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter bool AtEnd() const { 3678aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // We must report iterator past the end of the range when either of the 3679aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // component iterators has reached the end of its range. 3680aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return 3681aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current1_ == end1_ || 3682aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current2_ == end2_ || 3683aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current3_ == end3_ || 3684aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current4_ == end4_ || 3685aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current5_ == end5_; 3686aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 3687aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 3688aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // No implementation - assignment is unsupported. 3689aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter void operator=(const Iterator& other); 3690aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 3691aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGeneratorInterface<ParamType>* const base_; 3692aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // begin[i]_ and end[i]_ define the i-th range that Iterator traverses. 3693aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // current[i]_ is the actual traversing iterator. 3694aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T1>::iterator begin1_; 3695aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T1>::iterator end1_; 3696aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename ParamGenerator<T1>::iterator current1_; 3697aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T2>::iterator begin2_; 3698aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T2>::iterator end2_; 3699aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename ParamGenerator<T2>::iterator current2_; 3700aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T3>::iterator begin3_; 3701aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T3>::iterator end3_; 3702aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename ParamGenerator<T3>::iterator current3_; 3703aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T4>::iterator begin4_; 3704aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T4>::iterator end4_; 3705aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename ParamGenerator<T4>::iterator current4_; 3706aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T5>::iterator begin5_; 3707aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T5>::iterator end5_; 3708aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename ParamGenerator<T5>::iterator current5_; 3709aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ParamType current_value_; 3710aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter }; // class CartesianProductGenerator5::Iterator 3711aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 3712aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // No implementation - assignment is unsupported. 3713aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter void operator=(const CartesianProductGenerator5& other); 3714aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 3715aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T1> g1_; 3716aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T2> g2_; 3717aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T3> g3_; 3718aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T4> g4_; 3719aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T5> g5_; 3720aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter}; // class CartesianProductGenerator5 3721aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 3722aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 3723aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 3724aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T6> 3725aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterclass CartesianProductGenerator6 3726aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter : public ParamGeneratorInterface< ::std::tr1::tuple<T1, T2, T3, T4, T5, 3727aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T6> > { 3728aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter public: 3729aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typedef ::std::tr1::tuple<T1, T2, T3, T4, T5, T6> ParamType; 3730aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 3731aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter CartesianProductGenerator6(const ParamGenerator<T1>& g1, 3732aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T2>& g2, const ParamGenerator<T3>& g3, 3733aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T4>& g4, const ParamGenerator<T5>& g5, 3734aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T6>& g6) 3735aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6) {} 3736aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter virtual ~CartesianProductGenerator6() {} 3737aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 3738aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter virtual ParamIteratorInterface<ParamType>* Begin() const { 3739aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_, 3740aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter g3_.begin(), g4_, g4_.begin(), g5_, g5_.begin(), g6_, g6_.begin()); 3741aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 3742aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter virtual ParamIteratorInterface<ParamType>* End() const { 3743aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(), 3744aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter g4_, g4_.end(), g5_, g5_.end(), g6_, g6_.end()); 3745aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 3746aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 3747aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter private: 3748aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter class Iterator : public ParamIteratorInterface<ParamType> { 3749aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter public: 3750aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter Iterator(const ParamGeneratorInterface<ParamType>* base, 3751aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T1>& g1, 3752aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T1>::iterator& current1, 3753aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T2>& g2, 3754aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T2>::iterator& current2, 3755aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T3>& g3, 3756aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T3>::iterator& current3, 3757aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T4>& g4, 3758aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T4>::iterator& current4, 3759aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T5>& g5, 3760aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T5>::iterator& current5, 3761aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T6>& g6, 3762aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T6>::iterator& current6) 3763aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter : base_(base), 3764aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter begin1_(g1.begin()), end1_(g1.end()), current1_(current1), 3765aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter begin2_(g2.begin()), end2_(g2.end()), current2_(current2), 3766aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter begin3_(g3.begin()), end3_(g3.end()), current3_(current3), 3767aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter begin4_(g4.begin()), end4_(g4.end()), current4_(current4), 3768aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter begin5_(g5.begin()), end5_(g5.end()), current5_(current5), 3769aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter begin6_(g6.begin()), end6_(g6.end()), current6_(current6) { 3770aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ComputeCurrentValue(); 3771aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 3772aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter virtual ~Iterator() {} 3773aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 3774aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter virtual const ParamGeneratorInterface<ParamType>* BaseGenerator() const { 3775aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return base_; 3776aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 3777aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // Advance should not be called on beyond-of-range iterators 3778aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // so no component iterators must be beyond end of range, either. 3779aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter virtual void Advance() { 3780aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter assert(!AtEnd()); 3781aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ++current6_; 3782aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter if (current6_ == end6_) { 3783aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current6_ = begin6_; 3784aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ++current5_; 3785aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 3786aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter if (current5_ == end5_) { 3787aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current5_ = begin5_; 3788aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ++current4_; 3789aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 3790aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter if (current4_ == end4_) { 3791aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current4_ = begin4_; 3792aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ++current3_; 3793aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 3794aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter if (current3_ == end3_) { 3795aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current3_ = begin3_; 3796aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ++current2_; 3797aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 3798aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter if (current2_ == end2_) { 3799aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current2_ = begin2_; 3800aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ++current1_; 3801aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 3802aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ComputeCurrentValue(); 3803aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 3804aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter virtual ParamIteratorInterface<ParamType>* Clone() const { 3805aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return new Iterator(*this); 3806aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 3807aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter virtual const ParamType* Current() const { return ¤t_value_; } 3808aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter virtual bool Equals(const ParamIteratorInterface<ParamType>& other) const { 3809aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // Having the same base generator guarantees that the other 3810aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // iterator is of the same type and we can downcast. 3811aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter GTEST_CHECK_(BaseGenerator() == other.BaseGenerator()) 3812aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter << "The program attempted to compare iterators " 3813aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter << "from different generators." << std::endl; 3814aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const Iterator* typed_other = 3815aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter CheckedDowncastToActualType<const Iterator>(&other); 3816aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // We must report iterators equal if they both point beyond their 3817aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // respective ranges. That can happen in a variety of fashions, 3818aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // so we have to consult AtEnd(). 3819aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return (AtEnd() && typed_other->AtEnd()) || 3820aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ( 3821aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current1_ == typed_other->current1_ && 3822aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current2_ == typed_other->current2_ && 3823aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current3_ == typed_other->current3_ && 3824aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current4_ == typed_other->current4_ && 3825aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current5_ == typed_other->current5_ && 3826aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current6_ == typed_other->current6_); 3827aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 3828aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 3829aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter private: 3830aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter Iterator(const Iterator& other) 3831aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter : base_(other.base_), 3832aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter begin1_(other.begin1_), 3833aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter end1_(other.end1_), 3834aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current1_(other.current1_), 3835aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter begin2_(other.begin2_), 3836aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter end2_(other.end2_), 3837aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current2_(other.current2_), 3838aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter begin3_(other.begin3_), 3839aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter end3_(other.end3_), 3840aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current3_(other.current3_), 3841aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter begin4_(other.begin4_), 3842aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter end4_(other.end4_), 3843aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current4_(other.current4_), 3844aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter begin5_(other.begin5_), 3845aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter end5_(other.end5_), 3846aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current5_(other.current5_), 3847aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter begin6_(other.begin6_), 3848aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter end6_(other.end6_), 3849aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current6_(other.current6_) { 3850aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ComputeCurrentValue(); 3851aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 3852aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 3853aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter void ComputeCurrentValue() { 3854aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter if (!AtEnd()) 3855aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current_value_ = ParamType(*current1_, *current2_, *current3_, 3856aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter *current4_, *current5_, *current6_); 3857aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 3858aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter bool AtEnd() const { 3859aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // We must report iterator past the end of the range when either of the 3860aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // component iterators has reached the end of its range. 3861aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return 3862aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current1_ == end1_ || 3863aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current2_ == end2_ || 3864aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current3_ == end3_ || 3865aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current4_ == end4_ || 3866aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current5_ == end5_ || 3867aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current6_ == end6_; 3868aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 3869aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 3870aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // No implementation - assignment is unsupported. 3871aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter void operator=(const Iterator& other); 3872aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 3873aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGeneratorInterface<ParamType>* const base_; 3874aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // begin[i]_ and end[i]_ define the i-th range that Iterator traverses. 3875aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // current[i]_ is the actual traversing iterator. 3876aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T1>::iterator begin1_; 3877aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T1>::iterator end1_; 3878aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename ParamGenerator<T1>::iterator current1_; 3879aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T2>::iterator begin2_; 3880aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T2>::iterator end2_; 3881aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename ParamGenerator<T2>::iterator current2_; 3882aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T3>::iterator begin3_; 3883aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T3>::iterator end3_; 3884aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename ParamGenerator<T3>::iterator current3_; 3885aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T4>::iterator begin4_; 3886aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T4>::iterator end4_; 3887aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename ParamGenerator<T4>::iterator current4_; 3888aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T5>::iterator begin5_; 3889aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T5>::iterator end5_; 3890aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename ParamGenerator<T5>::iterator current5_; 3891aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T6>::iterator begin6_; 3892aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T6>::iterator end6_; 3893aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename ParamGenerator<T6>::iterator current6_; 3894aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ParamType current_value_; 3895aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter }; // class CartesianProductGenerator6::Iterator 3896aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 3897aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // No implementation - assignment is unsupported. 3898aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter void operator=(const CartesianProductGenerator6& other); 3899aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 3900aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T1> g1_; 3901aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T2> g2_; 3902aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T3> g3_; 3903aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T4> g4_; 3904aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T5> g5_; 3905aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T6> g6_; 3906aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter}; // class CartesianProductGenerator6 3907aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 3908aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 3909aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 3910aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T6, typename T7> 3911aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterclass CartesianProductGenerator7 3912aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter : public ParamGeneratorInterface< ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, 3913aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T7> > { 3914aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter public: 3915aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typedef ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7> ParamType; 3916aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 3917aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter CartesianProductGenerator7(const ParamGenerator<T1>& g1, 3918aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T2>& g2, const ParamGenerator<T3>& g3, 3919aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T4>& g4, const ParamGenerator<T5>& g5, 3920aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T6>& g6, const ParamGenerator<T7>& g7) 3921aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7) {} 3922aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter virtual ~CartesianProductGenerator7() {} 3923aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 3924aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter virtual ParamIteratorInterface<ParamType>* Begin() const { 3925aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_, 3926aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter g3_.begin(), g4_, g4_.begin(), g5_, g5_.begin(), g6_, g6_.begin(), g7_, 3927aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter g7_.begin()); 3928aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 3929aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter virtual ParamIteratorInterface<ParamType>* End() const { 3930aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(), 3931aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter g4_, g4_.end(), g5_, g5_.end(), g6_, g6_.end(), g7_, g7_.end()); 3932aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 3933aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 3934aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter private: 3935aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter class Iterator : public ParamIteratorInterface<ParamType> { 3936aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter public: 3937aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter Iterator(const ParamGeneratorInterface<ParamType>* base, 3938aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T1>& g1, 3939aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T1>::iterator& current1, 3940aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T2>& g2, 3941aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T2>::iterator& current2, 3942aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T3>& g3, 3943aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T3>::iterator& current3, 3944aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T4>& g4, 3945aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T4>::iterator& current4, 3946aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T5>& g5, 3947aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T5>::iterator& current5, 3948aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T6>& g6, 3949aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T6>::iterator& current6, 3950aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T7>& g7, 3951aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T7>::iterator& current7) 3952aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter : base_(base), 3953aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter begin1_(g1.begin()), end1_(g1.end()), current1_(current1), 3954aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter begin2_(g2.begin()), end2_(g2.end()), current2_(current2), 3955aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter begin3_(g3.begin()), end3_(g3.end()), current3_(current3), 3956aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter begin4_(g4.begin()), end4_(g4.end()), current4_(current4), 3957aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter begin5_(g5.begin()), end5_(g5.end()), current5_(current5), 3958aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter begin6_(g6.begin()), end6_(g6.end()), current6_(current6), 3959aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter begin7_(g7.begin()), end7_(g7.end()), current7_(current7) { 3960aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ComputeCurrentValue(); 3961aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 3962aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter virtual ~Iterator() {} 3963aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 3964aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter virtual const ParamGeneratorInterface<ParamType>* BaseGenerator() const { 3965aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return base_; 3966aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 3967aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // Advance should not be called on beyond-of-range iterators 3968aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // so no component iterators must be beyond end of range, either. 3969aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter virtual void Advance() { 3970aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter assert(!AtEnd()); 3971aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ++current7_; 3972aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter if (current7_ == end7_) { 3973aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current7_ = begin7_; 3974aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ++current6_; 3975aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 3976aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter if (current6_ == end6_) { 3977aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current6_ = begin6_; 3978aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ++current5_; 3979aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 3980aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter if (current5_ == end5_) { 3981aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current5_ = begin5_; 3982aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ++current4_; 3983aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 3984aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter if (current4_ == end4_) { 3985aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current4_ = begin4_; 3986aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ++current3_; 3987aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 3988aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter if (current3_ == end3_) { 3989aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current3_ = begin3_; 3990aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ++current2_; 3991aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 3992aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter if (current2_ == end2_) { 3993aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current2_ = begin2_; 3994aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ++current1_; 3995aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 3996aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ComputeCurrentValue(); 3997aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 3998aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter virtual ParamIteratorInterface<ParamType>* Clone() const { 3999aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return new Iterator(*this); 4000aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 4001aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter virtual const ParamType* Current() const { return ¤t_value_; } 4002aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter virtual bool Equals(const ParamIteratorInterface<ParamType>& other) const { 4003aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // Having the same base generator guarantees that the other 4004aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // iterator is of the same type and we can downcast. 4005aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter GTEST_CHECK_(BaseGenerator() == other.BaseGenerator()) 4006aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter << "The program attempted to compare iterators " 4007aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter << "from different generators." << std::endl; 4008aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const Iterator* typed_other = 4009aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter CheckedDowncastToActualType<const Iterator>(&other); 4010aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // We must report iterators equal if they both point beyond their 4011aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // respective ranges. That can happen in a variety of fashions, 4012aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // so we have to consult AtEnd(). 4013aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return (AtEnd() && typed_other->AtEnd()) || 4014aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ( 4015aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current1_ == typed_other->current1_ && 4016aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current2_ == typed_other->current2_ && 4017aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current3_ == typed_other->current3_ && 4018aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current4_ == typed_other->current4_ && 4019aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current5_ == typed_other->current5_ && 4020aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current6_ == typed_other->current6_ && 4021aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current7_ == typed_other->current7_); 4022aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 4023aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 4024aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter private: 4025aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter Iterator(const Iterator& other) 4026aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter : base_(other.base_), 4027aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter begin1_(other.begin1_), 4028aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter end1_(other.end1_), 4029aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current1_(other.current1_), 4030aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter begin2_(other.begin2_), 4031aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter end2_(other.end2_), 4032aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current2_(other.current2_), 4033aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter begin3_(other.begin3_), 4034aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter end3_(other.end3_), 4035aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current3_(other.current3_), 4036aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter begin4_(other.begin4_), 4037aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter end4_(other.end4_), 4038aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current4_(other.current4_), 4039aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter begin5_(other.begin5_), 4040aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter end5_(other.end5_), 4041aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current5_(other.current5_), 4042aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter begin6_(other.begin6_), 4043aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter end6_(other.end6_), 4044aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current6_(other.current6_), 4045aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter begin7_(other.begin7_), 4046aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter end7_(other.end7_), 4047aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current7_(other.current7_) { 4048aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ComputeCurrentValue(); 4049aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 4050aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 4051aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter void ComputeCurrentValue() { 4052aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter if (!AtEnd()) 4053aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current_value_ = ParamType(*current1_, *current2_, *current3_, 4054aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter *current4_, *current5_, *current6_, *current7_); 4055aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 4056aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter bool AtEnd() const { 4057aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // We must report iterator past the end of the range when either of the 4058aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // component iterators has reached the end of its range. 4059aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return 4060aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current1_ == end1_ || 4061aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current2_ == end2_ || 4062aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current3_ == end3_ || 4063aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current4_ == end4_ || 4064aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current5_ == end5_ || 4065aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current6_ == end6_ || 4066aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current7_ == end7_; 4067aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 4068aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 4069aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // No implementation - assignment is unsupported. 4070aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter void operator=(const Iterator& other); 4071aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 4072aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGeneratorInterface<ParamType>* const base_; 4073aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // begin[i]_ and end[i]_ define the i-th range that Iterator traverses. 4074aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // current[i]_ is the actual traversing iterator. 4075aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T1>::iterator begin1_; 4076aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T1>::iterator end1_; 4077aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename ParamGenerator<T1>::iterator current1_; 4078aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T2>::iterator begin2_; 4079aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T2>::iterator end2_; 4080aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename ParamGenerator<T2>::iterator current2_; 4081aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T3>::iterator begin3_; 4082aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T3>::iterator end3_; 4083aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename ParamGenerator<T3>::iterator current3_; 4084aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T4>::iterator begin4_; 4085aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T4>::iterator end4_; 4086aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename ParamGenerator<T4>::iterator current4_; 4087aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T5>::iterator begin5_; 4088aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T5>::iterator end5_; 4089aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename ParamGenerator<T5>::iterator current5_; 4090aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T6>::iterator begin6_; 4091aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T6>::iterator end6_; 4092aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename ParamGenerator<T6>::iterator current6_; 4093aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T7>::iterator begin7_; 4094aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T7>::iterator end7_; 4095aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename ParamGenerator<T7>::iterator current7_; 4096aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ParamType current_value_; 4097aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter }; // class CartesianProductGenerator7::Iterator 4098aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 4099aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // No implementation - assignment is unsupported. 4100aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter void operator=(const CartesianProductGenerator7& other); 4101aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 4102aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T1> g1_; 4103aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T2> g2_; 4104aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T3> g3_; 4105aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T4> g4_; 4106aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T5> g5_; 4107aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T6> g6_; 4108aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T7> g7_; 4109aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter}; // class CartesianProductGenerator7 4110aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 4111aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 4112aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 4113aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T6, typename T7, typename T8> 4114aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterclass CartesianProductGenerator8 4115aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter : public ParamGeneratorInterface< ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, 4116aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T7, T8> > { 4117aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter public: 4118aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typedef ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7, T8> ParamType; 4119aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 4120aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter CartesianProductGenerator8(const ParamGenerator<T1>& g1, 4121aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T2>& g2, const ParamGenerator<T3>& g3, 4122aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T4>& g4, const ParamGenerator<T5>& g5, 4123aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T6>& g6, const ParamGenerator<T7>& g7, 4124aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T8>& g8) 4125aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7), 4126aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter g8_(g8) {} 4127aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter virtual ~CartesianProductGenerator8() {} 4128aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 4129aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter virtual ParamIteratorInterface<ParamType>* Begin() const { 4130aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_, 4131aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter g3_.begin(), g4_, g4_.begin(), g5_, g5_.begin(), g6_, g6_.begin(), g7_, 4132aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter g7_.begin(), g8_, g8_.begin()); 4133aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 4134aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter virtual ParamIteratorInterface<ParamType>* End() const { 4135aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(), 4136aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter g4_, g4_.end(), g5_, g5_.end(), g6_, g6_.end(), g7_, g7_.end(), g8_, 4137aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter g8_.end()); 4138aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 4139aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 4140aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter private: 4141aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter class Iterator : public ParamIteratorInterface<ParamType> { 4142aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter public: 4143aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter Iterator(const ParamGeneratorInterface<ParamType>* base, 4144aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T1>& g1, 4145aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T1>::iterator& current1, 4146aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T2>& g2, 4147aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T2>::iterator& current2, 4148aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T3>& g3, 4149aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T3>::iterator& current3, 4150aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T4>& g4, 4151aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T4>::iterator& current4, 4152aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T5>& g5, 4153aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T5>::iterator& current5, 4154aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T6>& g6, 4155aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T6>::iterator& current6, 4156aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T7>& g7, 4157aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T7>::iterator& current7, 4158aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T8>& g8, 4159aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T8>::iterator& current8) 4160aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter : base_(base), 4161aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter begin1_(g1.begin()), end1_(g1.end()), current1_(current1), 4162aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter begin2_(g2.begin()), end2_(g2.end()), current2_(current2), 4163aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter begin3_(g3.begin()), end3_(g3.end()), current3_(current3), 4164aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter begin4_(g4.begin()), end4_(g4.end()), current4_(current4), 4165aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter begin5_(g5.begin()), end5_(g5.end()), current5_(current5), 4166aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter begin6_(g6.begin()), end6_(g6.end()), current6_(current6), 4167aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter begin7_(g7.begin()), end7_(g7.end()), current7_(current7), 4168aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter begin8_(g8.begin()), end8_(g8.end()), current8_(current8) { 4169aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ComputeCurrentValue(); 4170aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 4171aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter virtual ~Iterator() {} 4172aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 4173aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter virtual const ParamGeneratorInterface<ParamType>* BaseGenerator() const { 4174aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return base_; 4175aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 4176aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // Advance should not be called on beyond-of-range iterators 4177aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // so no component iterators must be beyond end of range, either. 4178aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter virtual void Advance() { 4179aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter assert(!AtEnd()); 4180aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ++current8_; 4181aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter if (current8_ == end8_) { 4182aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current8_ = begin8_; 4183aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ++current7_; 4184aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 4185aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter if (current7_ == end7_) { 4186aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current7_ = begin7_; 4187aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ++current6_; 4188aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 4189aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter if (current6_ == end6_) { 4190aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current6_ = begin6_; 4191aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ++current5_; 4192aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 4193aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter if (current5_ == end5_) { 4194aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current5_ = begin5_; 4195aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ++current4_; 4196aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 4197aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter if (current4_ == end4_) { 4198aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current4_ = begin4_; 4199aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ++current3_; 4200aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 4201aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter if (current3_ == end3_) { 4202aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current3_ = begin3_; 4203aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ++current2_; 4204aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 4205aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter if (current2_ == end2_) { 4206aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current2_ = begin2_; 4207aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ++current1_; 4208aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 4209aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ComputeCurrentValue(); 4210aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 4211aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter virtual ParamIteratorInterface<ParamType>* Clone() const { 4212aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return new Iterator(*this); 4213aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 4214aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter virtual const ParamType* Current() const { return ¤t_value_; } 4215aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter virtual bool Equals(const ParamIteratorInterface<ParamType>& other) const { 4216aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // Having the same base generator guarantees that the other 4217aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // iterator is of the same type and we can downcast. 4218aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter GTEST_CHECK_(BaseGenerator() == other.BaseGenerator()) 4219aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter << "The program attempted to compare iterators " 4220aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter << "from different generators." << std::endl; 4221aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const Iterator* typed_other = 4222aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter CheckedDowncastToActualType<const Iterator>(&other); 4223aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // We must report iterators equal if they both point beyond their 4224aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // respective ranges. That can happen in a variety of fashions, 4225aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // so we have to consult AtEnd(). 4226aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return (AtEnd() && typed_other->AtEnd()) || 4227aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ( 4228aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current1_ == typed_other->current1_ && 4229aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current2_ == typed_other->current2_ && 4230aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current3_ == typed_other->current3_ && 4231aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current4_ == typed_other->current4_ && 4232aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current5_ == typed_other->current5_ && 4233aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current6_ == typed_other->current6_ && 4234aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current7_ == typed_other->current7_ && 4235aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current8_ == typed_other->current8_); 4236aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 4237aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 4238aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter private: 4239aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter Iterator(const Iterator& other) 4240aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter : base_(other.base_), 4241aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter begin1_(other.begin1_), 4242aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter end1_(other.end1_), 4243aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current1_(other.current1_), 4244aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter begin2_(other.begin2_), 4245aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter end2_(other.end2_), 4246aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current2_(other.current2_), 4247aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter begin3_(other.begin3_), 4248aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter end3_(other.end3_), 4249aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current3_(other.current3_), 4250aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter begin4_(other.begin4_), 4251aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter end4_(other.end4_), 4252aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current4_(other.current4_), 4253aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter begin5_(other.begin5_), 4254aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter end5_(other.end5_), 4255aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current5_(other.current5_), 4256aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter begin6_(other.begin6_), 4257aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter end6_(other.end6_), 4258aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current6_(other.current6_), 4259aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter begin7_(other.begin7_), 4260aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter end7_(other.end7_), 4261aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current7_(other.current7_), 4262aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter begin8_(other.begin8_), 4263aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter end8_(other.end8_), 4264aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current8_(other.current8_) { 4265aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ComputeCurrentValue(); 4266aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 4267aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 4268aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter void ComputeCurrentValue() { 4269aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter if (!AtEnd()) 4270aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current_value_ = ParamType(*current1_, *current2_, *current3_, 4271aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter *current4_, *current5_, *current6_, *current7_, *current8_); 4272aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 4273aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter bool AtEnd() const { 4274aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // We must report iterator past the end of the range when either of the 4275aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // component iterators has reached the end of its range. 4276aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return 4277aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current1_ == end1_ || 4278aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current2_ == end2_ || 4279aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current3_ == end3_ || 4280aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current4_ == end4_ || 4281aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current5_ == end5_ || 4282aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current6_ == end6_ || 4283aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current7_ == end7_ || 4284aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current8_ == end8_; 4285aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 4286aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 4287aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // No implementation - assignment is unsupported. 4288aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter void operator=(const Iterator& other); 4289aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 4290aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGeneratorInterface<ParamType>* const base_; 4291aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // begin[i]_ and end[i]_ define the i-th range that Iterator traverses. 4292aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // current[i]_ is the actual traversing iterator. 4293aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T1>::iterator begin1_; 4294aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T1>::iterator end1_; 4295aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename ParamGenerator<T1>::iterator current1_; 4296aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T2>::iterator begin2_; 4297aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T2>::iterator end2_; 4298aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename ParamGenerator<T2>::iterator current2_; 4299aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T3>::iterator begin3_; 4300aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T3>::iterator end3_; 4301aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename ParamGenerator<T3>::iterator current3_; 4302aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T4>::iterator begin4_; 4303aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T4>::iterator end4_; 4304aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename ParamGenerator<T4>::iterator current4_; 4305aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T5>::iterator begin5_; 4306aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T5>::iterator end5_; 4307aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename ParamGenerator<T5>::iterator current5_; 4308aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T6>::iterator begin6_; 4309aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T6>::iterator end6_; 4310aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename ParamGenerator<T6>::iterator current6_; 4311aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T7>::iterator begin7_; 4312aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T7>::iterator end7_; 4313aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename ParamGenerator<T7>::iterator current7_; 4314aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T8>::iterator begin8_; 4315aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T8>::iterator end8_; 4316aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename ParamGenerator<T8>::iterator current8_; 4317aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ParamType current_value_; 4318aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter }; // class CartesianProductGenerator8::Iterator 4319aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 4320aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // No implementation - assignment is unsupported. 4321aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter void operator=(const CartesianProductGenerator8& other); 4322aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 4323aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T1> g1_; 4324aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T2> g2_; 4325aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T3> g3_; 4326aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T4> g4_; 4327aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T5> g5_; 4328aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T6> g6_; 4329aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T7> g7_; 4330aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T8> g8_; 4331aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter}; // class CartesianProductGenerator8 4332aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 4333aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 4334aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 4335aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T6, typename T7, typename T8, typename T9> 4336aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterclass CartesianProductGenerator9 4337aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter : public ParamGeneratorInterface< ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, 4338aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T7, T8, T9> > { 4339aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter public: 4340aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typedef ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9> ParamType; 4341aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 4342aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter CartesianProductGenerator9(const ParamGenerator<T1>& g1, 4343aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T2>& g2, const ParamGenerator<T3>& g3, 4344aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T4>& g4, const ParamGenerator<T5>& g5, 4345aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T6>& g6, const ParamGenerator<T7>& g7, 4346aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T8>& g8, const ParamGenerator<T9>& g9) 4347aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7), g8_(g8), 4348aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter g9_(g9) {} 4349aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter virtual ~CartesianProductGenerator9() {} 4350aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 4351aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter virtual ParamIteratorInterface<ParamType>* Begin() const { 4352aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_, 4353aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter g3_.begin(), g4_, g4_.begin(), g5_, g5_.begin(), g6_, g6_.begin(), g7_, 4354aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter g7_.begin(), g8_, g8_.begin(), g9_, g9_.begin()); 4355aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 4356aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter virtual ParamIteratorInterface<ParamType>* End() const { 4357aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(), 4358aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter g4_, g4_.end(), g5_, g5_.end(), g6_, g6_.end(), g7_, g7_.end(), g8_, 4359aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter g8_.end(), g9_, g9_.end()); 4360aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 4361aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 4362aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter private: 4363aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter class Iterator : public ParamIteratorInterface<ParamType> { 4364aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter public: 4365aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter Iterator(const ParamGeneratorInterface<ParamType>* base, 4366aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T1>& g1, 4367aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T1>::iterator& current1, 4368aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T2>& g2, 4369aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T2>::iterator& current2, 4370aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T3>& g3, 4371aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T3>::iterator& current3, 4372aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T4>& g4, 4373aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T4>::iterator& current4, 4374aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T5>& g5, 4375aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T5>::iterator& current5, 4376aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T6>& g6, 4377aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T6>::iterator& current6, 4378aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T7>& g7, 4379aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T7>::iterator& current7, 4380aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T8>& g8, 4381aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T8>::iterator& current8, 4382aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T9>& g9, 4383aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T9>::iterator& current9) 4384aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter : base_(base), 4385aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter begin1_(g1.begin()), end1_(g1.end()), current1_(current1), 4386aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter begin2_(g2.begin()), end2_(g2.end()), current2_(current2), 4387aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter begin3_(g3.begin()), end3_(g3.end()), current3_(current3), 4388aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter begin4_(g4.begin()), end4_(g4.end()), current4_(current4), 4389aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter begin5_(g5.begin()), end5_(g5.end()), current5_(current5), 4390aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter begin6_(g6.begin()), end6_(g6.end()), current6_(current6), 4391aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter begin7_(g7.begin()), end7_(g7.end()), current7_(current7), 4392aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter begin8_(g8.begin()), end8_(g8.end()), current8_(current8), 4393aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter begin9_(g9.begin()), end9_(g9.end()), current9_(current9) { 4394aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ComputeCurrentValue(); 4395aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 4396aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter virtual ~Iterator() {} 4397aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 4398aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter virtual const ParamGeneratorInterface<ParamType>* BaseGenerator() const { 4399aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return base_; 4400aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 4401aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // Advance should not be called on beyond-of-range iterators 4402aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // so no component iterators must be beyond end of range, either. 4403aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter virtual void Advance() { 4404aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter assert(!AtEnd()); 4405aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ++current9_; 4406aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter if (current9_ == end9_) { 4407aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current9_ = begin9_; 4408aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ++current8_; 4409aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 4410aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter if (current8_ == end8_) { 4411aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current8_ = begin8_; 4412aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ++current7_; 4413aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 4414aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter if (current7_ == end7_) { 4415aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current7_ = begin7_; 4416aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ++current6_; 4417aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 4418aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter if (current6_ == end6_) { 4419aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current6_ = begin6_; 4420aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ++current5_; 4421aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 4422aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter if (current5_ == end5_) { 4423aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current5_ = begin5_; 4424aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ++current4_; 4425aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 4426aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter if (current4_ == end4_) { 4427aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current4_ = begin4_; 4428aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ++current3_; 4429aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 4430aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter if (current3_ == end3_) { 4431aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current3_ = begin3_; 4432aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ++current2_; 4433aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 4434aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter if (current2_ == end2_) { 4435aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current2_ = begin2_; 4436aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ++current1_; 4437aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 4438aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ComputeCurrentValue(); 4439aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 4440aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter virtual ParamIteratorInterface<ParamType>* Clone() const { 4441aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return new Iterator(*this); 4442aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 4443aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter virtual const ParamType* Current() const { return ¤t_value_; } 4444aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter virtual bool Equals(const ParamIteratorInterface<ParamType>& other) const { 4445aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // Having the same base generator guarantees that the other 4446aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // iterator is of the same type and we can downcast. 4447aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter GTEST_CHECK_(BaseGenerator() == other.BaseGenerator()) 4448aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter << "The program attempted to compare iterators " 4449aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter << "from different generators." << std::endl; 4450aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const Iterator* typed_other = 4451aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter CheckedDowncastToActualType<const Iterator>(&other); 4452aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // We must report iterators equal if they both point beyond their 4453aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // respective ranges. That can happen in a variety of fashions, 4454aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // so we have to consult AtEnd(). 4455aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return (AtEnd() && typed_other->AtEnd()) || 4456aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ( 4457aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current1_ == typed_other->current1_ && 4458aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current2_ == typed_other->current2_ && 4459aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current3_ == typed_other->current3_ && 4460aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current4_ == typed_other->current4_ && 4461aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current5_ == typed_other->current5_ && 4462aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current6_ == typed_other->current6_ && 4463aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current7_ == typed_other->current7_ && 4464aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current8_ == typed_other->current8_ && 4465aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current9_ == typed_other->current9_); 4466aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 4467aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 4468aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter private: 4469aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter Iterator(const Iterator& other) 4470aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter : base_(other.base_), 4471aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter begin1_(other.begin1_), 4472aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter end1_(other.end1_), 4473aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current1_(other.current1_), 4474aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter begin2_(other.begin2_), 4475aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter end2_(other.end2_), 4476aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current2_(other.current2_), 4477aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter begin3_(other.begin3_), 4478aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter end3_(other.end3_), 4479aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current3_(other.current3_), 4480aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter begin4_(other.begin4_), 4481aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter end4_(other.end4_), 4482aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current4_(other.current4_), 4483aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter begin5_(other.begin5_), 4484aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter end5_(other.end5_), 4485aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current5_(other.current5_), 4486aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter begin6_(other.begin6_), 4487aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter end6_(other.end6_), 4488aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current6_(other.current6_), 4489aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter begin7_(other.begin7_), 4490aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter end7_(other.end7_), 4491aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current7_(other.current7_), 4492aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter begin8_(other.begin8_), 4493aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter end8_(other.end8_), 4494aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current8_(other.current8_), 4495aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter begin9_(other.begin9_), 4496aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter end9_(other.end9_), 4497aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current9_(other.current9_) { 4498aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ComputeCurrentValue(); 4499aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 4500aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 4501aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter void ComputeCurrentValue() { 4502aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter if (!AtEnd()) 4503aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current_value_ = ParamType(*current1_, *current2_, *current3_, 4504aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter *current4_, *current5_, *current6_, *current7_, *current8_, 4505aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter *current9_); 4506aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 4507aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter bool AtEnd() const { 4508aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // We must report iterator past the end of the range when either of the 4509aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // component iterators has reached the end of its range. 4510aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return 4511aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current1_ == end1_ || 4512aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current2_ == end2_ || 4513aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current3_ == end3_ || 4514aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current4_ == end4_ || 4515aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current5_ == end5_ || 4516aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current6_ == end6_ || 4517aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current7_ == end7_ || 4518aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current8_ == end8_ || 4519aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current9_ == end9_; 4520aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 4521aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 4522aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // No implementation - assignment is unsupported. 4523aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter void operator=(const Iterator& other); 4524aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 4525aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGeneratorInterface<ParamType>* const base_; 4526aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // begin[i]_ and end[i]_ define the i-th range that Iterator traverses. 4527aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // current[i]_ is the actual traversing iterator. 4528aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T1>::iterator begin1_; 4529aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T1>::iterator end1_; 4530aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename ParamGenerator<T1>::iterator current1_; 4531aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T2>::iterator begin2_; 4532aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T2>::iterator end2_; 4533aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename ParamGenerator<T2>::iterator current2_; 4534aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T3>::iterator begin3_; 4535aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T3>::iterator end3_; 4536aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename ParamGenerator<T3>::iterator current3_; 4537aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T4>::iterator begin4_; 4538aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T4>::iterator end4_; 4539aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename ParamGenerator<T4>::iterator current4_; 4540aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T5>::iterator begin5_; 4541aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T5>::iterator end5_; 4542aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename ParamGenerator<T5>::iterator current5_; 4543aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T6>::iterator begin6_; 4544aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T6>::iterator end6_; 4545aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename ParamGenerator<T6>::iterator current6_; 4546aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T7>::iterator begin7_; 4547aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T7>::iterator end7_; 4548aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename ParamGenerator<T7>::iterator current7_; 4549aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T8>::iterator begin8_; 4550aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T8>::iterator end8_; 4551aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename ParamGenerator<T8>::iterator current8_; 4552aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T9>::iterator begin9_; 4553aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T9>::iterator end9_; 4554aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename ParamGenerator<T9>::iterator current9_; 4555aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ParamType current_value_; 4556aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter }; // class CartesianProductGenerator9::Iterator 4557aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 4558aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // No implementation - assignment is unsupported. 4559aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter void operator=(const CartesianProductGenerator9& other); 4560aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 4561aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T1> g1_; 4562aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T2> g2_; 4563aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T3> g3_; 4564aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T4> g4_; 4565aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T5> g5_; 4566aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T6> g6_; 4567aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T7> g7_; 4568aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T8> g8_; 4569aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T9> g9_; 4570aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter}; // class CartesianProductGenerator9 4571aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 4572aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 4573aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 4574aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T6, typename T7, typename T8, typename T9, typename T10> 4575aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterclass CartesianProductGenerator10 4576aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter : public ParamGeneratorInterface< ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, 4577aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T7, T8, T9, T10> > { 4578aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter public: 4579aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typedef ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> ParamType; 4580aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 4581aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter CartesianProductGenerator10(const ParamGenerator<T1>& g1, 4582aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T2>& g2, const ParamGenerator<T3>& g3, 4583aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T4>& g4, const ParamGenerator<T5>& g5, 4584aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T6>& g6, const ParamGenerator<T7>& g7, 4585aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T8>& g8, const ParamGenerator<T9>& g9, 4586aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T10>& g10) 4587aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7), g8_(g8), 4588aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter g9_(g9), g10_(g10) {} 4589aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter virtual ~CartesianProductGenerator10() {} 4590aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 4591aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter virtual ParamIteratorInterface<ParamType>* Begin() const { 4592aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_, 4593aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter g3_.begin(), g4_, g4_.begin(), g5_, g5_.begin(), g6_, g6_.begin(), g7_, 4594aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter g7_.begin(), g8_, g8_.begin(), g9_, g9_.begin(), g10_, g10_.begin()); 4595aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 4596aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter virtual ParamIteratorInterface<ParamType>* End() const { 4597aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(), 4598aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter g4_, g4_.end(), g5_, g5_.end(), g6_, g6_.end(), g7_, g7_.end(), g8_, 4599aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter g8_.end(), g9_, g9_.end(), g10_, g10_.end()); 4600aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 4601aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 4602aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter private: 4603aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter class Iterator : public ParamIteratorInterface<ParamType> { 4604aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter public: 4605aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter Iterator(const ParamGeneratorInterface<ParamType>* base, 4606aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T1>& g1, 4607aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T1>::iterator& current1, 4608aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T2>& g2, 4609aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T2>::iterator& current2, 4610aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T3>& g3, 4611aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T3>::iterator& current3, 4612aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T4>& g4, 4613aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T4>::iterator& current4, 4614aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T5>& g5, 4615aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T5>::iterator& current5, 4616aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T6>& g6, 4617aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T6>::iterator& current6, 4618aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T7>& g7, 4619aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T7>::iterator& current7, 4620aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T8>& g8, 4621aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T8>::iterator& current8, 4622aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T9>& g9, 4623aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T9>::iterator& current9, 4624aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T10>& g10, 4625aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T10>::iterator& current10) 4626aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter : base_(base), 4627aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter begin1_(g1.begin()), end1_(g1.end()), current1_(current1), 4628aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter begin2_(g2.begin()), end2_(g2.end()), current2_(current2), 4629aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter begin3_(g3.begin()), end3_(g3.end()), current3_(current3), 4630aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter begin4_(g4.begin()), end4_(g4.end()), current4_(current4), 4631aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter begin5_(g5.begin()), end5_(g5.end()), current5_(current5), 4632aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter begin6_(g6.begin()), end6_(g6.end()), current6_(current6), 4633aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter begin7_(g7.begin()), end7_(g7.end()), current7_(current7), 4634aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter begin8_(g8.begin()), end8_(g8.end()), current8_(current8), 4635aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter begin9_(g9.begin()), end9_(g9.end()), current9_(current9), 4636aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter begin10_(g10.begin()), end10_(g10.end()), current10_(current10) { 4637aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ComputeCurrentValue(); 4638aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 4639aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter virtual ~Iterator() {} 4640aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 4641aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter virtual const ParamGeneratorInterface<ParamType>* BaseGenerator() const { 4642aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return base_; 4643aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 4644aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // Advance should not be called on beyond-of-range iterators 4645aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // so no component iterators must be beyond end of range, either. 4646aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter virtual void Advance() { 4647aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter assert(!AtEnd()); 4648aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ++current10_; 4649aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter if (current10_ == end10_) { 4650aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current10_ = begin10_; 4651aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ++current9_; 4652aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 4653aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter if (current9_ == end9_) { 4654aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current9_ = begin9_; 4655aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ++current8_; 4656aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 4657aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter if (current8_ == end8_) { 4658aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current8_ = begin8_; 4659aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ++current7_; 4660aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 4661aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter if (current7_ == end7_) { 4662aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current7_ = begin7_; 4663aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ++current6_; 4664aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 4665aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter if (current6_ == end6_) { 4666aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current6_ = begin6_; 4667aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ++current5_; 4668aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 4669aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter if (current5_ == end5_) { 4670aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current5_ = begin5_; 4671aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ++current4_; 4672aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 4673aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter if (current4_ == end4_) { 4674aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current4_ = begin4_; 4675aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ++current3_; 4676aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 4677aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter if (current3_ == end3_) { 4678aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current3_ = begin3_; 4679aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ++current2_; 4680aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 4681aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter if (current2_ == end2_) { 4682aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current2_ = begin2_; 4683aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ++current1_; 4684aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 4685aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ComputeCurrentValue(); 4686aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 4687aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter virtual ParamIteratorInterface<ParamType>* Clone() const { 4688aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return new Iterator(*this); 4689aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 4690aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter virtual const ParamType* Current() const { return ¤t_value_; } 4691aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter virtual bool Equals(const ParamIteratorInterface<ParamType>& other) const { 4692aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // Having the same base generator guarantees that the other 4693aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // iterator is of the same type and we can downcast. 4694aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter GTEST_CHECK_(BaseGenerator() == other.BaseGenerator()) 4695aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter << "The program attempted to compare iterators " 4696aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter << "from different generators." << std::endl; 4697aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const Iterator* typed_other = 4698aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter CheckedDowncastToActualType<const Iterator>(&other); 4699aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // We must report iterators equal if they both point beyond their 4700aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // respective ranges. That can happen in a variety of fashions, 4701aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // so we have to consult AtEnd(). 4702aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return (AtEnd() && typed_other->AtEnd()) || 4703aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ( 4704aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current1_ == typed_other->current1_ && 4705aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current2_ == typed_other->current2_ && 4706aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current3_ == typed_other->current3_ && 4707aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current4_ == typed_other->current4_ && 4708aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current5_ == typed_other->current5_ && 4709aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current6_ == typed_other->current6_ && 4710aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current7_ == typed_other->current7_ && 4711aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current8_ == typed_other->current8_ && 4712aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current9_ == typed_other->current9_ && 4713aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current10_ == typed_other->current10_); 4714aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 4715aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 4716aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter private: 4717aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter Iterator(const Iterator& other) 4718aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter : base_(other.base_), 4719aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter begin1_(other.begin1_), 4720aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter end1_(other.end1_), 4721aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current1_(other.current1_), 4722aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter begin2_(other.begin2_), 4723aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter end2_(other.end2_), 4724aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current2_(other.current2_), 4725aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter begin3_(other.begin3_), 4726aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter end3_(other.end3_), 4727aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current3_(other.current3_), 4728aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter begin4_(other.begin4_), 4729aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter end4_(other.end4_), 4730aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current4_(other.current4_), 4731aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter begin5_(other.begin5_), 4732aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter end5_(other.end5_), 4733aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current5_(other.current5_), 4734aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter begin6_(other.begin6_), 4735aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter end6_(other.end6_), 4736aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current6_(other.current6_), 4737aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter begin7_(other.begin7_), 4738aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter end7_(other.end7_), 4739aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current7_(other.current7_), 4740aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter begin8_(other.begin8_), 4741aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter end8_(other.end8_), 4742aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current8_(other.current8_), 4743aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter begin9_(other.begin9_), 4744aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter end9_(other.end9_), 4745aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current9_(other.current9_), 4746aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter begin10_(other.begin10_), 4747aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter end10_(other.end10_), 4748aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current10_(other.current10_) { 4749aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ComputeCurrentValue(); 4750aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 4751aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 4752aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter void ComputeCurrentValue() { 4753aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter if (!AtEnd()) 4754aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current_value_ = ParamType(*current1_, *current2_, *current3_, 4755aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter *current4_, *current5_, *current6_, *current7_, *current8_, 4756aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter *current9_, *current10_); 4757aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 4758aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter bool AtEnd() const { 4759aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // We must report iterator past the end of the range when either of the 4760aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // component iterators has reached the end of its range. 4761aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return 4762aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current1_ == end1_ || 4763aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current2_ == end2_ || 4764aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current3_ == end3_ || 4765aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current4_ == end4_ || 4766aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current5_ == end5_ || 4767aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current6_ == end6_ || 4768aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current7_ == end7_ || 4769aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current8_ == end8_ || 4770aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current9_ == end9_ || 4771aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter current10_ == end10_; 4772aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 4773aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 4774aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // No implementation - assignment is unsupported. 4775aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter void operator=(const Iterator& other); 4776aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 4777aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGeneratorInterface<ParamType>* const base_; 4778aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // begin[i]_ and end[i]_ define the i-th range that Iterator traverses. 4779aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // current[i]_ is the actual traversing iterator. 4780aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T1>::iterator begin1_; 4781aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T1>::iterator end1_; 4782aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename ParamGenerator<T1>::iterator current1_; 4783aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T2>::iterator begin2_; 4784aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T2>::iterator end2_; 4785aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename ParamGenerator<T2>::iterator current2_; 4786aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T3>::iterator begin3_; 4787aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T3>::iterator end3_; 4788aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename ParamGenerator<T3>::iterator current3_; 4789aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T4>::iterator begin4_; 4790aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T4>::iterator end4_; 4791aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename ParamGenerator<T4>::iterator current4_; 4792aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T5>::iterator begin5_; 4793aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T5>::iterator end5_; 4794aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename ParamGenerator<T5>::iterator current5_; 4795aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T6>::iterator begin6_; 4796aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T6>::iterator end6_; 4797aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename ParamGenerator<T6>::iterator current6_; 4798aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T7>::iterator begin7_; 4799aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T7>::iterator end7_; 4800aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename ParamGenerator<T7>::iterator current7_; 4801aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T8>::iterator begin8_; 4802aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T8>::iterator end8_; 4803aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename ParamGenerator<T8>::iterator current8_; 4804aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T9>::iterator begin9_; 4805aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T9>::iterator end9_; 4806aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename ParamGenerator<T9>::iterator current9_; 4807aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T10>::iterator begin10_; 4808aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const typename ParamGenerator<T10>::iterator end10_; 4809aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename ParamGenerator<T10>::iterator current10_; 4810aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ParamType current_value_; 4811aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter }; // class CartesianProductGenerator10::Iterator 4812aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 4813aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // No implementation - assignment is unsupported. 4814aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter void operator=(const CartesianProductGenerator10& other); 4815aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 4816aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T1> g1_; 4817aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T2> g2_; 4818aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T3> g3_; 4819aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T4> g4_; 4820aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T5> g5_; 4821aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T6> g6_; 4822aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T7> g7_; 4823aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T8> g8_; 4824aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T9> g9_; 4825aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const ParamGenerator<T10> g10_; 4826aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter}; // class CartesianProductGenerator10 4827aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 4828aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 4829aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE. 4830aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// 4831aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// Helper classes providing Combine() with polymorphic features. They allow 4832aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// casting CartesianProductGeneratorN<T> to ParamGenerator<U> if T is 4833aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// convertible to U. 4834aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// 4835aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <class Generator1, class Generator2> 4836aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterclass CartesianProductHolder2 { 4837aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter public: 4838aa46da279e2426caf1e103eb079dfec8124c5feeCourtney GoeltzenleuchterCartesianProductHolder2(const Generator1& g1, const Generator2& g2) 4839aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter : g1_(g1), g2_(g2) {} 4840aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter template <typename T1, typename T2> 4841aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter operator ParamGenerator< ::std::tr1::tuple<T1, T2> >() const { 4842aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return ParamGenerator< ::std::tr1::tuple<T1, T2> >( 4843aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter new CartesianProductGenerator2<T1, T2>( 4844aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<ParamGenerator<T1> >(g1_), 4845aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<ParamGenerator<T2> >(g2_))); 4846aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 4847aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 4848aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter private: 4849aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // No implementation - assignment is unsupported. 4850aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter void operator=(const CartesianProductHolder2& other); 4851aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 4852aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const Generator1 g1_; 4853aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const Generator2 g2_; 4854aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter}; // class CartesianProductHolder2 4855aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 4856aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <class Generator1, class Generator2, class Generator3> 4857aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterclass CartesianProductHolder3 { 4858aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter public: 4859aa46da279e2426caf1e103eb079dfec8124c5feeCourtney GoeltzenleuchterCartesianProductHolder3(const Generator1& g1, const Generator2& g2, 4860aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const Generator3& g3) 4861aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter : g1_(g1), g2_(g2), g3_(g3) {} 4862aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter template <typename T1, typename T2, typename T3> 4863aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter operator ParamGenerator< ::std::tr1::tuple<T1, T2, T3> >() const { 4864aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return ParamGenerator< ::std::tr1::tuple<T1, T2, T3> >( 4865aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter new CartesianProductGenerator3<T1, T2, T3>( 4866aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<ParamGenerator<T1> >(g1_), 4867aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<ParamGenerator<T2> >(g2_), 4868aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<ParamGenerator<T3> >(g3_))); 4869aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 4870aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 4871aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter private: 4872aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // No implementation - assignment is unsupported. 4873aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter void operator=(const CartesianProductHolder3& other); 4874aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 4875aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const Generator1 g1_; 4876aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const Generator2 g2_; 4877aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const Generator3 g3_; 4878aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter}; // class CartesianProductHolder3 4879aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 4880aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <class Generator1, class Generator2, class Generator3, 4881aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter class Generator4> 4882aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterclass CartesianProductHolder4 { 4883aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter public: 4884aa46da279e2426caf1e103eb079dfec8124c5feeCourtney GoeltzenleuchterCartesianProductHolder4(const Generator1& g1, const Generator2& g2, 4885aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const Generator3& g3, const Generator4& g4) 4886aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter : g1_(g1), g2_(g2), g3_(g3), g4_(g4) {} 4887aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter template <typename T1, typename T2, typename T3, typename T4> 4888aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter operator ParamGenerator< ::std::tr1::tuple<T1, T2, T3, T4> >() const { 4889aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return ParamGenerator< ::std::tr1::tuple<T1, T2, T3, T4> >( 4890aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter new CartesianProductGenerator4<T1, T2, T3, T4>( 4891aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<ParamGenerator<T1> >(g1_), 4892aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<ParamGenerator<T2> >(g2_), 4893aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<ParamGenerator<T3> >(g3_), 4894aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<ParamGenerator<T4> >(g4_))); 4895aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 4896aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 4897aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter private: 4898aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // No implementation - assignment is unsupported. 4899aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter void operator=(const CartesianProductHolder4& other); 4900aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 4901aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const Generator1 g1_; 4902aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const Generator2 g2_; 4903aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const Generator3 g3_; 4904aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const Generator4 g4_; 4905aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter}; // class CartesianProductHolder4 4906aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 4907aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <class Generator1, class Generator2, class Generator3, 4908aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter class Generator4, class Generator5> 4909aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterclass CartesianProductHolder5 { 4910aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter public: 4911aa46da279e2426caf1e103eb079dfec8124c5feeCourtney GoeltzenleuchterCartesianProductHolder5(const Generator1& g1, const Generator2& g2, 4912aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const Generator3& g3, const Generator4& g4, const Generator5& g5) 4913aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5) {} 4914aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter template <typename T1, typename T2, typename T3, typename T4, typename T5> 4915aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter operator ParamGenerator< ::std::tr1::tuple<T1, T2, T3, T4, T5> >() const { 4916aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return ParamGenerator< ::std::tr1::tuple<T1, T2, T3, T4, T5> >( 4917aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter new CartesianProductGenerator5<T1, T2, T3, T4, T5>( 4918aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<ParamGenerator<T1> >(g1_), 4919aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<ParamGenerator<T2> >(g2_), 4920aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<ParamGenerator<T3> >(g3_), 4921aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<ParamGenerator<T4> >(g4_), 4922aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<ParamGenerator<T5> >(g5_))); 4923aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 4924aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 4925aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter private: 4926aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // No implementation - assignment is unsupported. 4927aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter void operator=(const CartesianProductHolder5& other); 4928aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 4929aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const Generator1 g1_; 4930aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const Generator2 g2_; 4931aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const Generator3 g3_; 4932aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const Generator4 g4_; 4933aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const Generator5 g5_; 4934aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter}; // class CartesianProductHolder5 4935aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 4936aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <class Generator1, class Generator2, class Generator3, 4937aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter class Generator4, class Generator5, class Generator6> 4938aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterclass CartesianProductHolder6 { 4939aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter public: 4940aa46da279e2426caf1e103eb079dfec8124c5feeCourtney GoeltzenleuchterCartesianProductHolder6(const Generator1& g1, const Generator2& g2, 4941aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const Generator3& g3, const Generator4& g4, const Generator5& g5, 4942aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const Generator6& g6) 4943aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6) {} 4944aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter template <typename T1, typename T2, typename T3, typename T4, typename T5, 4945aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T6> 4946aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter operator ParamGenerator< ::std::tr1::tuple<T1, T2, T3, T4, T5, T6> >() const { 4947aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return ParamGenerator< ::std::tr1::tuple<T1, T2, T3, T4, T5, T6> >( 4948aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter new CartesianProductGenerator6<T1, T2, T3, T4, T5, T6>( 4949aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<ParamGenerator<T1> >(g1_), 4950aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<ParamGenerator<T2> >(g2_), 4951aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<ParamGenerator<T3> >(g3_), 4952aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<ParamGenerator<T4> >(g4_), 4953aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<ParamGenerator<T5> >(g5_), 4954aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<ParamGenerator<T6> >(g6_))); 4955aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 4956aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 4957aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter private: 4958aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // No implementation - assignment is unsupported. 4959aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter void operator=(const CartesianProductHolder6& other); 4960aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 4961aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const Generator1 g1_; 4962aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const Generator2 g2_; 4963aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const Generator3 g3_; 4964aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const Generator4 g4_; 4965aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const Generator5 g5_; 4966aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const Generator6 g6_; 4967aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter}; // class CartesianProductHolder6 4968aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 4969aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <class Generator1, class Generator2, class Generator3, 4970aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter class Generator4, class Generator5, class Generator6, class Generator7> 4971aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterclass CartesianProductHolder7 { 4972aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter public: 4973aa46da279e2426caf1e103eb079dfec8124c5feeCourtney GoeltzenleuchterCartesianProductHolder7(const Generator1& g1, const Generator2& g2, 4974aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const Generator3& g3, const Generator4& g4, const Generator5& g5, 4975aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const Generator6& g6, const Generator7& g7) 4976aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7) {} 4977aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter template <typename T1, typename T2, typename T3, typename T4, typename T5, 4978aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T6, typename T7> 4979aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter operator ParamGenerator< ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, 4980aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T7> >() const { 4981aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return ParamGenerator< ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7> >( 4982aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter new CartesianProductGenerator7<T1, T2, T3, T4, T5, T6, T7>( 4983aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<ParamGenerator<T1> >(g1_), 4984aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<ParamGenerator<T2> >(g2_), 4985aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<ParamGenerator<T3> >(g3_), 4986aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<ParamGenerator<T4> >(g4_), 4987aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<ParamGenerator<T5> >(g5_), 4988aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<ParamGenerator<T6> >(g6_), 4989aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<ParamGenerator<T7> >(g7_))); 4990aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 4991aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 4992aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter private: 4993aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // No implementation - assignment is unsupported. 4994aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter void operator=(const CartesianProductHolder7& other); 4995aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 4996aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const Generator1 g1_; 4997aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const Generator2 g2_; 4998aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const Generator3 g3_; 4999aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const Generator4 g4_; 5000aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const Generator5 g5_; 5001aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const Generator6 g6_; 5002aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const Generator7 g7_; 5003aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter}; // class CartesianProductHolder7 5004aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 5005aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <class Generator1, class Generator2, class Generator3, 5006aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter class Generator4, class Generator5, class Generator6, class Generator7, 5007aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter class Generator8> 5008aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterclass CartesianProductHolder8 { 5009aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter public: 5010aa46da279e2426caf1e103eb079dfec8124c5feeCourtney GoeltzenleuchterCartesianProductHolder8(const Generator1& g1, const Generator2& g2, 5011aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const Generator3& g3, const Generator4& g4, const Generator5& g5, 5012aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const Generator6& g6, const Generator7& g7, const Generator8& g8) 5013aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7), 5014aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter g8_(g8) {} 5015aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter template <typename T1, typename T2, typename T3, typename T4, typename T5, 5016aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T6, typename T7, typename T8> 5017aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter operator ParamGenerator< ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7, 5018aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T8> >() const { 5019aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return ParamGenerator< ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7, T8> >( 5020aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter new CartesianProductGenerator8<T1, T2, T3, T4, T5, T6, T7, T8>( 5021aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<ParamGenerator<T1> >(g1_), 5022aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<ParamGenerator<T2> >(g2_), 5023aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<ParamGenerator<T3> >(g3_), 5024aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<ParamGenerator<T4> >(g4_), 5025aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<ParamGenerator<T5> >(g5_), 5026aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<ParamGenerator<T6> >(g6_), 5027aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<ParamGenerator<T7> >(g7_), 5028aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<ParamGenerator<T8> >(g8_))); 5029aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 5030aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 5031aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter private: 5032aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // No implementation - assignment is unsupported. 5033aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter void operator=(const CartesianProductHolder8& other); 5034aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 5035aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const Generator1 g1_; 5036aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const Generator2 g2_; 5037aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const Generator3 g3_; 5038aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const Generator4 g4_; 5039aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const Generator5 g5_; 5040aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const Generator6 g6_; 5041aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const Generator7 g7_; 5042aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const Generator8 g8_; 5043aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter}; // class CartesianProductHolder8 5044aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 5045aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <class Generator1, class Generator2, class Generator3, 5046aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter class Generator4, class Generator5, class Generator6, class Generator7, 5047aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter class Generator8, class Generator9> 5048aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterclass CartesianProductHolder9 { 5049aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter public: 5050aa46da279e2426caf1e103eb079dfec8124c5feeCourtney GoeltzenleuchterCartesianProductHolder9(const Generator1& g1, const Generator2& g2, 5051aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const Generator3& g3, const Generator4& g4, const Generator5& g5, 5052aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const Generator6& g6, const Generator7& g7, const Generator8& g8, 5053aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const Generator9& g9) 5054aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7), g8_(g8), 5055aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter g9_(g9) {} 5056aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter template <typename T1, typename T2, typename T3, typename T4, typename T5, 5057aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T6, typename T7, typename T8, typename T9> 5058aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter operator ParamGenerator< ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7, T8, 5059aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T9> >() const { 5060aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return ParamGenerator< ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7, T8, 5061aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T9> >( 5062aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter new CartesianProductGenerator9<T1, T2, T3, T4, T5, T6, T7, T8, T9>( 5063aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<ParamGenerator<T1> >(g1_), 5064aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<ParamGenerator<T2> >(g2_), 5065aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<ParamGenerator<T3> >(g3_), 5066aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<ParamGenerator<T4> >(g4_), 5067aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<ParamGenerator<T5> >(g5_), 5068aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<ParamGenerator<T6> >(g6_), 5069aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<ParamGenerator<T7> >(g7_), 5070aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<ParamGenerator<T8> >(g8_), 5071aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<ParamGenerator<T9> >(g9_))); 5072aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 5073aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 5074aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter private: 5075aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // No implementation - assignment is unsupported. 5076aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter void operator=(const CartesianProductHolder9& other); 5077aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 5078aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const Generator1 g1_; 5079aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const Generator2 g2_; 5080aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const Generator3 g3_; 5081aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const Generator4 g4_; 5082aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const Generator5 g5_; 5083aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const Generator6 g6_; 5084aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const Generator7 g7_; 5085aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const Generator8 g8_; 5086aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const Generator9 g9_; 5087aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter}; // class CartesianProductHolder9 5088aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 5089aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <class Generator1, class Generator2, class Generator3, 5090aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter class Generator4, class Generator5, class Generator6, class Generator7, 5091aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter class Generator8, class Generator9, class Generator10> 5092aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterclass CartesianProductHolder10 { 5093aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter public: 5094aa46da279e2426caf1e103eb079dfec8124c5feeCourtney GoeltzenleuchterCartesianProductHolder10(const Generator1& g1, const Generator2& g2, 5095aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const Generator3& g3, const Generator4& g4, const Generator5& g5, 5096aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const Generator6& g6, const Generator7& g7, const Generator8& g8, 5097aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const Generator9& g9, const Generator10& g10) 5098aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7), g8_(g8), 5099aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter g9_(g9), g10_(g10) {} 5100aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter template <typename T1, typename T2, typename T3, typename T4, typename T5, 5101aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T6, typename T7, typename T8, typename T9, typename T10> 5102aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter operator ParamGenerator< ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7, T8, 5103aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T9, T10> >() const { 5104aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return ParamGenerator< ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7, T8, 5105aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T9, T10> >( 5106aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter new CartesianProductGenerator10<T1, T2, T3, T4, T5, T6, T7, T8, T9, 5107aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T10>( 5108aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<ParamGenerator<T1> >(g1_), 5109aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<ParamGenerator<T2> >(g2_), 5110aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<ParamGenerator<T3> >(g3_), 5111aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<ParamGenerator<T4> >(g4_), 5112aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<ParamGenerator<T5> >(g5_), 5113aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<ParamGenerator<T6> >(g6_), 5114aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<ParamGenerator<T7> >(g7_), 5115aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<ParamGenerator<T8> >(g8_), 5116aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<ParamGenerator<T9> >(g9_), 5117aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static_cast<ParamGenerator<T10> >(g10_))); 5118aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } 5119aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 5120aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter private: 5121aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // No implementation - assignment is unsupported. 5122aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter void operator=(const CartesianProductHolder10& other); 5123aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 5124aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const Generator1 g1_; 5125aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const Generator2 g2_; 5126aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const Generator3 g3_; 5127aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const Generator4 g4_; 5128aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const Generator5 g5_; 5129aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const Generator6 g6_; 5130aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const Generator7 g7_; 5131aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const Generator8 g8_; 5132aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const Generator9 g9_; 5133aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const Generator10 g10_; 5134aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter}; // class CartesianProductHolder10 5135aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 5136aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter# endif // GTEST_HAS_COMBINE 5137aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 5138aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter} // namespace internal 5139aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter} // namespace testing 5140aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 5141aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter#endif // GTEST_HAS_PARAM_TEST 5142aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 5143aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_GENERATED_H_ 5144