1 // This file was GENERATED by command:
2 // pump.py gtest-param-util-generated.h.pump
3 // DO NOT EDIT BY HAND!!!
5 // Copyright 2008 Google Inc.
6 // All Rights Reserved.
8 // Redistribution and use in source and binary forms, with or without
9 // modification, are permitted provided that the following conditions are
12 // * Redistributions of source code must retain the above copyright
13 // notice, this list of conditions and the following disclaimer.
14 // * Redistributions in binary form must reproduce the above
15 // copyright notice, this list of conditions and the following disclaimer
16 // in the documentation and/or other materials provided with the
18 // * Neither the name of Google Inc. nor the names of its
19 // contributors may be used to endorse or promote products derived from
20 // this software without specific prior written permission.
22 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
23 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
24 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
25 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
26 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
27 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
28 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
29 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
30 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
31 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
32 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
34 // Author: vladl@google.com (Vlad Losev)
36 // Type and function utilities for implementing parameterized tests.
37 // This file is generated by a SCRIPT. DO NOT EDIT BY HAND!
39 // Currently Google Test supports at most 50 arguments in Values,
40 // and at most 10 arguments in Combine. Please contact
41 // googletestframework@googlegroups.com if you need more.
42 // Please note that the number of arguments to Combine is limited
43 // by the maximum arity of the implementation of tuple which is
44 // currently set at 10.
46 #ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_GENERATED_H_
47 #define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_GENERATED_H_
49 #include "gtest/internal/gtest-param-util.h"
50 #include "gtest/internal/gtest-port.h"
54 // Forward declarations of ValuesIn(), which is implemented in
55 // include/gtest/gtest-param-test.h.
56 template <typename ForwardIterator
>
57 internal::ParamGenerator
<
58 typename ::testing::internal::IteratorTraits
<ForwardIterator
>::value_type
>
59 ValuesIn(ForwardIterator begin
, ForwardIterator end
);
61 template <typename T
, size_t N
>
62 internal::ParamGenerator
<T
> ValuesIn(const T (&array
)[N
]);
64 template <class Container
>
65 internal::ParamGenerator
<typename
Container::value_type
> ValuesIn(
66 const Container
& container
);
70 // Used in the Values() function to provide polymorphic capabilities.
71 template <typename T1
>
74 explicit ValueArray1(T1 v1
) : v1_(v1
) {}
77 operator ParamGenerator
<T
>() const {
78 const T array
[] = {static_cast<T
>(v1_
)};
79 return ValuesIn(array
);
83 // No implementation - assignment is unsupported.
84 void operator=(const ValueArray1
& other
);
89 template <typename T1
, typename T2
>
92 ValueArray2(T1 v1
, T2 v2
) : v1_(v1
), v2_(v2
) {}
95 operator ParamGenerator
<T
>() const {
96 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
)};
97 return ValuesIn(array
);
101 // No implementation - assignment is unsupported.
102 void operator=(const ValueArray2
& other
);
108 template <typename T1
, typename T2
, typename T3
>
111 ValueArray3(T1 v1
, T2 v2
, T3 v3
) : v1_(v1
), v2_(v2
), v3_(v3
) {}
113 template <typename T
>
114 operator ParamGenerator
<T
>() const {
115 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
116 static_cast<T
>(v3_
)};
117 return ValuesIn(array
);
121 // No implementation - assignment is unsupported.
122 void operator=(const ValueArray3
& other
);
129 template <typename T1
, typename T2
, typename T3
, typename T4
>
132 ValueArray4(T1 v1
, T2 v2
, T3 v3
, T4 v4
) : v1_(v1
), v2_(v2
), v3_(v3
),
135 template <typename T
>
136 operator ParamGenerator
<T
>() const {
137 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
138 static_cast<T
>(v3_
), static_cast<T
>(v4_
)};
139 return ValuesIn(array
);
143 // No implementation - assignment is unsupported.
144 void operator=(const ValueArray4
& other
);
152 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
>
155 ValueArray5(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
) : v1_(v1
), v2_(v2
), v3_(v3
),
158 template <typename T
>
159 operator ParamGenerator
<T
>() const {
160 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
161 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
)};
162 return ValuesIn(array
);
166 // No implementation - assignment is unsupported.
167 void operator=(const ValueArray5
& other
);
176 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
180 ValueArray6(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
) : v1_(v1
), v2_(v2
),
181 v3_(v3
), v4_(v4
), v5_(v5
), v6_(v6
) {}
183 template <typename T
>
184 operator ParamGenerator
<T
>() const {
185 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
186 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
187 static_cast<T
>(v6_
)};
188 return ValuesIn(array
);
192 // No implementation - assignment is unsupported.
193 void operator=(const ValueArray6
& other
);
203 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
204 typename T6
, typename T7
>
207 ValueArray7(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
) : v1_(v1
),
208 v2_(v2
), v3_(v3
), v4_(v4
), v5_(v5
), v6_(v6
), v7_(v7
) {}
210 template <typename T
>
211 operator ParamGenerator
<T
>() const {
212 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
213 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
214 static_cast<T
>(v6_
), static_cast<T
>(v7_
)};
215 return ValuesIn(array
);
219 // No implementation - assignment is unsupported.
220 void operator=(const ValueArray7
& other
);
231 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
232 typename T6
, typename T7
, typename T8
>
235 ValueArray8(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
,
236 T8 v8
) : v1_(v1
), v2_(v2
), v3_(v3
), v4_(v4
), v5_(v5
), v6_(v6
), v7_(v7
),
239 template <typename T
>
240 operator ParamGenerator
<T
>() const {
241 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
242 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
243 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
)};
244 return ValuesIn(array
);
248 // No implementation - assignment is unsupported.
249 void operator=(const ValueArray8
& other
);
261 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
262 typename T6
, typename T7
, typename T8
, typename T9
>
265 ValueArray9(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
,
266 T9 v9
) : v1_(v1
), v2_(v2
), v3_(v3
), v4_(v4
), v5_(v5
), v6_(v6
), v7_(v7
),
269 template <typename T
>
270 operator ParamGenerator
<T
>() const {
271 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
272 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
273 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
274 static_cast<T
>(v9_
)};
275 return ValuesIn(array
);
279 // No implementation - assignment is unsupported.
280 void operator=(const ValueArray9
& other
);
293 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
294 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
>
297 ValueArray10(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
298 T10 v10
) : v1_(v1
), v2_(v2
), v3_(v3
), v4_(v4
), v5_(v5
), v6_(v6
), v7_(v7
),
299 v8_(v8
), v9_(v9
), v10_(v10
) {}
301 template <typename T
>
302 operator ParamGenerator
<T
>() const {
303 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
304 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
305 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
306 static_cast<T
>(v9_
), static_cast<T
>(v10_
)};
307 return ValuesIn(array
);
311 // No implementation - assignment is unsupported.
312 void operator=(const ValueArray10
& other
);
326 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
327 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
331 ValueArray11(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
332 T10 v10
, T11 v11
) : v1_(v1
), v2_(v2
), v3_(v3
), v4_(v4
), v5_(v5
), v6_(v6
),
333 v7_(v7
), v8_(v8
), v9_(v9
), v10_(v10
), v11_(v11
) {}
335 template <typename T
>
336 operator ParamGenerator
<T
>() const {
337 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
338 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
339 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
340 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
)};
341 return ValuesIn(array
);
345 // No implementation - assignment is unsupported.
346 void operator=(const ValueArray11
& other
);
361 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
362 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
363 typename T11
, typename T12
>
366 ValueArray12(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
367 T10 v10
, T11 v11
, T12 v12
) : v1_(v1
), v2_(v2
), v3_(v3
), v4_(v4
), v5_(v5
),
368 v6_(v6
), v7_(v7
), v8_(v8
), v9_(v9
), v10_(v10
), v11_(v11
), v12_(v12
) {}
370 template <typename T
>
371 operator ParamGenerator
<T
>() const {
372 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
373 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
374 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
375 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
),
376 static_cast<T
>(v12_
)};
377 return ValuesIn(array
);
381 // No implementation - assignment is unsupported.
382 void operator=(const ValueArray12
& other
);
398 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
399 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
400 typename T11
, typename T12
, typename T13
>
403 ValueArray13(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
404 T10 v10
, T11 v11
, T12 v12
, T13 v13
) : v1_(v1
), v2_(v2
), v3_(v3
), v4_(v4
),
405 v5_(v5
), v6_(v6
), v7_(v7
), v8_(v8
), v9_(v9
), v10_(v10
), v11_(v11
),
406 v12_(v12
), v13_(v13
) {}
408 template <typename T
>
409 operator ParamGenerator
<T
>() const {
410 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
411 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
412 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
413 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
),
414 static_cast<T
>(v12_
), static_cast<T
>(v13_
)};
415 return ValuesIn(array
);
419 // No implementation - assignment is unsupported.
420 void operator=(const ValueArray13
& other
);
437 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
438 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
439 typename T11
, typename T12
, typename T13
, typename T14
>
442 ValueArray14(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
443 T10 v10
, T11 v11
, T12 v12
, T13 v13
, T14 v14
) : v1_(v1
), v2_(v2
), v3_(v3
),
444 v4_(v4
), v5_(v5
), v6_(v6
), v7_(v7
), v8_(v8
), v9_(v9
), v10_(v10
),
445 v11_(v11
), v12_(v12
), v13_(v13
), v14_(v14
) {}
447 template <typename T
>
448 operator ParamGenerator
<T
>() const {
449 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
450 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
451 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
452 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
),
453 static_cast<T
>(v12_
), static_cast<T
>(v13_
), static_cast<T
>(v14_
)};
454 return ValuesIn(array
);
458 // No implementation - assignment is unsupported.
459 void operator=(const ValueArray14
& other
);
477 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
478 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
479 typename T11
, typename T12
, typename T13
, typename T14
, typename T15
>
482 ValueArray15(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
483 T10 v10
, T11 v11
, T12 v12
, T13 v13
, T14 v14
, T15 v15
) : v1_(v1
), v2_(v2
),
484 v3_(v3
), v4_(v4
), v5_(v5
), v6_(v6
), v7_(v7
), v8_(v8
), v9_(v9
), v10_(v10
),
485 v11_(v11
), v12_(v12
), v13_(v13
), v14_(v14
), v15_(v15
) {}
487 template <typename T
>
488 operator ParamGenerator
<T
>() const {
489 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
490 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
491 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
492 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
),
493 static_cast<T
>(v12_
), static_cast<T
>(v13_
), static_cast<T
>(v14_
),
494 static_cast<T
>(v15_
)};
495 return ValuesIn(array
);
499 // No implementation - assignment is unsupported.
500 void operator=(const ValueArray15
& other
);
519 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
520 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
521 typename T11
, typename T12
, typename T13
, typename T14
, typename T15
,
525 ValueArray16(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
526 T10 v10
, T11 v11
, T12 v12
, T13 v13
, T14 v14
, T15 v15
, T16 v16
) : v1_(v1
),
527 v2_(v2
), v3_(v3
), v4_(v4
), v5_(v5
), v6_(v6
), v7_(v7
), v8_(v8
), v9_(v9
),
528 v10_(v10
), v11_(v11
), v12_(v12
), v13_(v13
), v14_(v14
), v15_(v15
),
531 template <typename T
>
532 operator ParamGenerator
<T
>() const {
533 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
534 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
535 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
536 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
),
537 static_cast<T
>(v12_
), static_cast<T
>(v13_
), static_cast<T
>(v14_
),
538 static_cast<T
>(v15_
), static_cast<T
>(v16_
)};
539 return ValuesIn(array
);
543 // No implementation - assignment is unsupported.
544 void operator=(const ValueArray16
& other
);
564 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
565 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
566 typename T11
, typename T12
, typename T13
, typename T14
, typename T15
,
567 typename T16
, typename T17
>
570 ValueArray17(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
571 T10 v10
, T11 v11
, T12 v12
, T13 v13
, T14 v14
, T15 v15
, T16 v16
,
572 T17 v17
) : v1_(v1
), v2_(v2
), v3_(v3
), v4_(v4
), v5_(v5
), v6_(v6
), v7_(v7
),
573 v8_(v8
), v9_(v9
), v10_(v10
), v11_(v11
), v12_(v12
), v13_(v13
), v14_(v14
),
574 v15_(v15
), v16_(v16
), v17_(v17
) {}
576 template <typename T
>
577 operator ParamGenerator
<T
>() const {
578 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
579 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
580 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
581 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
),
582 static_cast<T
>(v12_
), static_cast<T
>(v13_
), static_cast<T
>(v14_
),
583 static_cast<T
>(v15_
), static_cast<T
>(v16_
), static_cast<T
>(v17_
)};
584 return ValuesIn(array
);
588 // No implementation - assignment is unsupported.
589 void operator=(const ValueArray17
& other
);
610 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
611 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
612 typename T11
, typename T12
, typename T13
, typename T14
, typename T15
,
613 typename T16
, typename T17
, typename T18
>
616 ValueArray18(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
617 T10 v10
, T11 v11
, T12 v12
, T13 v13
, T14 v14
, T15 v15
, T16 v16
, T17 v17
,
618 T18 v18
) : v1_(v1
), v2_(v2
), v3_(v3
), v4_(v4
), v5_(v5
), v6_(v6
), v7_(v7
),
619 v8_(v8
), v9_(v9
), v10_(v10
), v11_(v11
), v12_(v12
), v13_(v13
), v14_(v14
),
620 v15_(v15
), v16_(v16
), v17_(v17
), v18_(v18
) {}
622 template <typename T
>
623 operator ParamGenerator
<T
>() const {
624 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
625 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
626 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
627 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
),
628 static_cast<T
>(v12_
), static_cast<T
>(v13_
), static_cast<T
>(v14_
),
629 static_cast<T
>(v15_
), static_cast<T
>(v16_
), static_cast<T
>(v17_
),
630 static_cast<T
>(v18_
)};
631 return ValuesIn(array
);
635 // No implementation - assignment is unsupported.
636 void operator=(const ValueArray18
& other
);
658 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
659 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
660 typename T11
, typename T12
, typename T13
, typename T14
, typename T15
,
661 typename T16
, typename T17
, typename T18
, typename T19
>
664 ValueArray19(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
665 T10 v10
, T11 v11
, T12 v12
, T13 v13
, T14 v14
, T15 v15
, T16 v16
, T17 v17
,
666 T18 v18
, T19 v19
) : v1_(v1
), v2_(v2
), v3_(v3
), v4_(v4
), v5_(v5
), v6_(v6
),
667 v7_(v7
), v8_(v8
), v9_(v9
), v10_(v10
), v11_(v11
), v12_(v12
), v13_(v13
),
668 v14_(v14
), v15_(v15
), v16_(v16
), v17_(v17
), v18_(v18
), v19_(v19
) {}
670 template <typename T
>
671 operator ParamGenerator
<T
>() const {
672 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
673 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
674 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
675 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
),
676 static_cast<T
>(v12_
), static_cast<T
>(v13_
), static_cast<T
>(v14_
),
677 static_cast<T
>(v15_
), static_cast<T
>(v16_
), static_cast<T
>(v17_
),
678 static_cast<T
>(v18_
), static_cast<T
>(v19_
)};
679 return ValuesIn(array
);
683 // No implementation - assignment is unsupported.
684 void operator=(const ValueArray19
& other
);
707 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
708 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
709 typename T11
, typename T12
, typename T13
, typename T14
, typename T15
,
710 typename T16
, typename T17
, typename T18
, typename T19
, typename T20
>
713 ValueArray20(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
714 T10 v10
, T11 v11
, T12 v12
, T13 v13
, T14 v14
, T15 v15
, T16 v16
, T17 v17
,
715 T18 v18
, T19 v19
, T20 v20
) : v1_(v1
), v2_(v2
), v3_(v3
), v4_(v4
), v5_(v5
),
716 v6_(v6
), v7_(v7
), v8_(v8
), v9_(v9
), v10_(v10
), v11_(v11
), v12_(v12
),
717 v13_(v13
), v14_(v14
), v15_(v15
), v16_(v16
), v17_(v17
), v18_(v18
),
718 v19_(v19
), v20_(v20
) {}
720 template <typename T
>
721 operator ParamGenerator
<T
>() const {
722 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
723 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
724 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
725 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
),
726 static_cast<T
>(v12_
), static_cast<T
>(v13_
), static_cast<T
>(v14_
),
727 static_cast<T
>(v15_
), static_cast<T
>(v16_
), static_cast<T
>(v17_
),
728 static_cast<T
>(v18_
), static_cast<T
>(v19_
), static_cast<T
>(v20_
)};
729 return ValuesIn(array
);
733 // No implementation - assignment is unsupported.
734 void operator=(const ValueArray20
& other
);
758 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
759 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
760 typename T11
, typename T12
, typename T13
, typename T14
, typename T15
,
761 typename T16
, typename T17
, typename T18
, typename T19
, typename T20
,
765 ValueArray21(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
766 T10 v10
, T11 v11
, T12 v12
, T13 v13
, T14 v14
, T15 v15
, T16 v16
, T17 v17
,
767 T18 v18
, T19 v19
, T20 v20
, T21 v21
) : v1_(v1
), v2_(v2
), v3_(v3
), v4_(v4
),
768 v5_(v5
), v6_(v6
), v7_(v7
), v8_(v8
), v9_(v9
), v10_(v10
), v11_(v11
),
769 v12_(v12
), v13_(v13
), v14_(v14
), v15_(v15
), v16_(v16
), v17_(v17
),
770 v18_(v18
), v19_(v19
), v20_(v20
), v21_(v21
) {}
772 template <typename T
>
773 operator ParamGenerator
<T
>() const {
774 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
775 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
776 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
777 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
),
778 static_cast<T
>(v12_
), static_cast<T
>(v13_
), static_cast<T
>(v14_
),
779 static_cast<T
>(v15_
), static_cast<T
>(v16_
), static_cast<T
>(v17_
),
780 static_cast<T
>(v18_
), static_cast<T
>(v19_
), static_cast<T
>(v20_
),
781 static_cast<T
>(v21_
)};
782 return ValuesIn(array
);
786 // No implementation - assignment is unsupported.
787 void operator=(const ValueArray21
& other
);
812 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
813 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
814 typename T11
, typename T12
, typename T13
, typename T14
, typename T15
,
815 typename T16
, typename T17
, typename T18
, typename T19
, typename T20
,
816 typename T21
, typename T22
>
819 ValueArray22(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
820 T10 v10
, T11 v11
, T12 v12
, T13 v13
, T14 v14
, T15 v15
, T16 v16
, T17 v17
,
821 T18 v18
, T19 v19
, T20 v20
, T21 v21
, T22 v22
) : v1_(v1
), v2_(v2
), v3_(v3
),
822 v4_(v4
), v5_(v5
), v6_(v6
), v7_(v7
), v8_(v8
), v9_(v9
), v10_(v10
),
823 v11_(v11
), v12_(v12
), v13_(v13
), v14_(v14
), v15_(v15
), v16_(v16
),
824 v17_(v17
), v18_(v18
), v19_(v19
), v20_(v20
), v21_(v21
), v22_(v22
) {}
826 template <typename T
>
827 operator ParamGenerator
<T
>() const {
828 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
829 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
830 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
831 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
),
832 static_cast<T
>(v12_
), static_cast<T
>(v13_
), static_cast<T
>(v14_
),
833 static_cast<T
>(v15_
), static_cast<T
>(v16_
), static_cast<T
>(v17_
),
834 static_cast<T
>(v18_
), static_cast<T
>(v19_
), static_cast<T
>(v20_
),
835 static_cast<T
>(v21_
), static_cast<T
>(v22_
)};
836 return ValuesIn(array
);
840 // No implementation - assignment is unsupported.
841 void operator=(const ValueArray22
& other
);
867 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
868 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
869 typename T11
, typename T12
, typename T13
, typename T14
, typename T15
,
870 typename T16
, typename T17
, typename T18
, typename T19
, typename T20
,
871 typename T21
, typename T22
, typename T23
>
874 ValueArray23(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
875 T10 v10
, T11 v11
, T12 v12
, T13 v13
, T14 v14
, T15 v15
, T16 v16
, T17 v17
,
876 T18 v18
, T19 v19
, T20 v20
, T21 v21
, T22 v22
, T23 v23
) : v1_(v1
), v2_(v2
),
877 v3_(v3
), v4_(v4
), v5_(v5
), v6_(v6
), v7_(v7
), v8_(v8
), v9_(v9
), v10_(v10
),
878 v11_(v11
), v12_(v12
), v13_(v13
), v14_(v14
), v15_(v15
), v16_(v16
),
879 v17_(v17
), v18_(v18
), v19_(v19
), v20_(v20
), v21_(v21
), v22_(v22
),
882 template <typename T
>
883 operator ParamGenerator
<T
>() const {
884 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
885 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
886 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
887 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
),
888 static_cast<T
>(v12_
), static_cast<T
>(v13_
), static_cast<T
>(v14_
),
889 static_cast<T
>(v15_
), static_cast<T
>(v16_
), static_cast<T
>(v17_
),
890 static_cast<T
>(v18_
), static_cast<T
>(v19_
), static_cast<T
>(v20_
),
891 static_cast<T
>(v21_
), static_cast<T
>(v22_
), static_cast<T
>(v23_
)};
892 return ValuesIn(array
);
896 // No implementation - assignment is unsupported.
897 void operator=(const ValueArray23
& other
);
924 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
925 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
926 typename T11
, typename T12
, typename T13
, typename T14
, typename T15
,
927 typename T16
, typename T17
, typename T18
, typename T19
, typename T20
,
928 typename T21
, typename T22
, typename T23
, typename T24
>
931 ValueArray24(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
932 T10 v10
, T11 v11
, T12 v12
, T13 v13
, T14 v14
, T15 v15
, T16 v16
, T17 v17
,
933 T18 v18
, T19 v19
, T20 v20
, T21 v21
, T22 v22
, T23 v23
, T24 v24
) : v1_(v1
),
934 v2_(v2
), v3_(v3
), v4_(v4
), v5_(v5
), v6_(v6
), v7_(v7
), v8_(v8
), v9_(v9
),
935 v10_(v10
), v11_(v11
), v12_(v12
), v13_(v13
), v14_(v14
), v15_(v15
),
936 v16_(v16
), v17_(v17
), v18_(v18
), v19_(v19
), v20_(v20
), v21_(v21
),
937 v22_(v22
), v23_(v23
), v24_(v24
) {}
939 template <typename T
>
940 operator ParamGenerator
<T
>() const {
941 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
942 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
943 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
944 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
),
945 static_cast<T
>(v12_
), static_cast<T
>(v13_
), static_cast<T
>(v14_
),
946 static_cast<T
>(v15_
), static_cast<T
>(v16_
), static_cast<T
>(v17_
),
947 static_cast<T
>(v18_
), static_cast<T
>(v19_
), static_cast<T
>(v20_
),
948 static_cast<T
>(v21_
), static_cast<T
>(v22_
), static_cast<T
>(v23_
),
949 static_cast<T
>(v24_
)};
950 return ValuesIn(array
);
954 // No implementation - assignment is unsupported.
955 void operator=(const ValueArray24
& other
);
983 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
984 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
985 typename T11
, typename T12
, typename T13
, typename T14
, typename T15
,
986 typename T16
, typename T17
, typename T18
, typename T19
, typename T20
,
987 typename T21
, typename T22
, typename T23
, typename T24
, typename T25
>
990 ValueArray25(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
991 T10 v10
, T11 v11
, T12 v12
, T13 v13
, T14 v14
, T15 v15
, T16 v16
, T17 v17
,
992 T18 v18
, T19 v19
, T20 v20
, T21 v21
, T22 v22
, T23 v23
, T24 v24
,
993 T25 v25
) : v1_(v1
), v2_(v2
), v3_(v3
), v4_(v4
), v5_(v5
), v6_(v6
), v7_(v7
),
994 v8_(v8
), v9_(v9
), v10_(v10
), v11_(v11
), v12_(v12
), v13_(v13
), v14_(v14
),
995 v15_(v15
), v16_(v16
), v17_(v17
), v18_(v18
), v19_(v19
), v20_(v20
),
996 v21_(v21
), v22_(v22
), v23_(v23
), v24_(v24
), v25_(v25
) {}
998 template <typename T
>
999 operator ParamGenerator
<T
>() const {
1000 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
1001 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
1002 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
1003 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
),
1004 static_cast<T
>(v12_
), static_cast<T
>(v13_
), static_cast<T
>(v14_
),
1005 static_cast<T
>(v15_
), static_cast<T
>(v16_
), static_cast<T
>(v17_
),
1006 static_cast<T
>(v18_
), static_cast<T
>(v19_
), static_cast<T
>(v20_
),
1007 static_cast<T
>(v21_
), static_cast<T
>(v22_
), static_cast<T
>(v23_
),
1008 static_cast<T
>(v24_
), static_cast<T
>(v25_
)};
1009 return ValuesIn(array
);
1013 // No implementation - assignment is unsupported.
1014 void operator=(const ValueArray25
& other
);
1043 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
1044 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
1045 typename T11
, typename T12
, typename T13
, typename T14
, typename T15
,
1046 typename T16
, typename T17
, typename T18
, typename T19
, typename T20
,
1047 typename T21
, typename T22
, typename T23
, typename T24
, typename T25
,
1049 class ValueArray26
{
1051 ValueArray26(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
1052 T10 v10
, T11 v11
, T12 v12
, T13 v13
, T14 v14
, T15 v15
, T16 v16
, T17 v17
,
1053 T18 v18
, T19 v19
, T20 v20
, T21 v21
, T22 v22
, T23 v23
, T24 v24
, T25 v25
,
1054 T26 v26
) : v1_(v1
), v2_(v2
), v3_(v3
), v4_(v4
), v5_(v5
), v6_(v6
), v7_(v7
),
1055 v8_(v8
), v9_(v9
), v10_(v10
), v11_(v11
), v12_(v12
), v13_(v13
), v14_(v14
),
1056 v15_(v15
), v16_(v16
), v17_(v17
), v18_(v18
), v19_(v19
), v20_(v20
),
1057 v21_(v21
), v22_(v22
), v23_(v23
), v24_(v24
), v25_(v25
), v26_(v26
) {}
1059 template <typename T
>
1060 operator ParamGenerator
<T
>() const {
1061 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
1062 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
1063 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
1064 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
),
1065 static_cast<T
>(v12_
), static_cast<T
>(v13_
), static_cast<T
>(v14_
),
1066 static_cast<T
>(v15_
), static_cast<T
>(v16_
), static_cast<T
>(v17_
),
1067 static_cast<T
>(v18_
), static_cast<T
>(v19_
), static_cast<T
>(v20_
),
1068 static_cast<T
>(v21_
), static_cast<T
>(v22_
), static_cast<T
>(v23_
),
1069 static_cast<T
>(v24_
), static_cast<T
>(v25_
), static_cast<T
>(v26_
)};
1070 return ValuesIn(array
);
1074 // No implementation - assignment is unsupported.
1075 void operator=(const ValueArray26
& other
);
1105 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
1106 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
1107 typename T11
, typename T12
, typename T13
, typename T14
, typename T15
,
1108 typename T16
, typename T17
, typename T18
, typename T19
, typename T20
,
1109 typename T21
, typename T22
, typename T23
, typename T24
, typename T25
,
1110 typename T26
, typename T27
>
1111 class ValueArray27
{
1113 ValueArray27(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
1114 T10 v10
, T11 v11
, T12 v12
, T13 v13
, T14 v14
, T15 v15
, T16 v16
, T17 v17
,
1115 T18 v18
, T19 v19
, T20 v20
, T21 v21
, T22 v22
, T23 v23
, T24 v24
, T25 v25
,
1116 T26 v26
, T27 v27
) : v1_(v1
), v2_(v2
), v3_(v3
), v4_(v4
), v5_(v5
), v6_(v6
),
1117 v7_(v7
), v8_(v8
), v9_(v9
), v10_(v10
), v11_(v11
), v12_(v12
), v13_(v13
),
1118 v14_(v14
), v15_(v15
), v16_(v16
), v17_(v17
), v18_(v18
), v19_(v19
),
1119 v20_(v20
), v21_(v21
), v22_(v22
), v23_(v23
), v24_(v24
), v25_(v25
),
1120 v26_(v26
), v27_(v27
) {}
1122 template <typename T
>
1123 operator ParamGenerator
<T
>() const {
1124 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
1125 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
1126 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
1127 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
),
1128 static_cast<T
>(v12_
), static_cast<T
>(v13_
), static_cast<T
>(v14_
),
1129 static_cast<T
>(v15_
), static_cast<T
>(v16_
), static_cast<T
>(v17_
),
1130 static_cast<T
>(v18_
), static_cast<T
>(v19_
), static_cast<T
>(v20_
),
1131 static_cast<T
>(v21_
), static_cast<T
>(v22_
), static_cast<T
>(v23_
),
1132 static_cast<T
>(v24_
), static_cast<T
>(v25_
), static_cast<T
>(v26_
),
1133 static_cast<T
>(v27_
)};
1134 return ValuesIn(array
);
1138 // No implementation - assignment is unsupported.
1139 void operator=(const ValueArray27
& other
);
1170 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
1171 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
1172 typename T11
, typename T12
, typename T13
, typename T14
, typename T15
,
1173 typename T16
, typename T17
, typename T18
, typename T19
, typename T20
,
1174 typename T21
, typename T22
, typename T23
, typename T24
, typename T25
,
1175 typename T26
, typename T27
, typename T28
>
1176 class ValueArray28
{
1178 ValueArray28(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
1179 T10 v10
, T11 v11
, T12 v12
, T13 v13
, T14 v14
, T15 v15
, T16 v16
, T17 v17
,
1180 T18 v18
, T19 v19
, T20 v20
, T21 v21
, T22 v22
, T23 v23
, T24 v24
, T25 v25
,
1181 T26 v26
, T27 v27
, T28 v28
) : v1_(v1
), v2_(v2
), v3_(v3
), v4_(v4
), v5_(v5
),
1182 v6_(v6
), v7_(v7
), v8_(v8
), v9_(v9
), v10_(v10
), v11_(v11
), v12_(v12
),
1183 v13_(v13
), v14_(v14
), v15_(v15
), v16_(v16
), v17_(v17
), v18_(v18
),
1184 v19_(v19
), v20_(v20
), v21_(v21
), v22_(v22
), v23_(v23
), v24_(v24
),
1185 v25_(v25
), v26_(v26
), v27_(v27
), v28_(v28
) {}
1187 template <typename T
>
1188 operator ParamGenerator
<T
>() const {
1189 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
1190 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
1191 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
1192 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
),
1193 static_cast<T
>(v12_
), static_cast<T
>(v13_
), static_cast<T
>(v14_
),
1194 static_cast<T
>(v15_
), static_cast<T
>(v16_
), static_cast<T
>(v17_
),
1195 static_cast<T
>(v18_
), static_cast<T
>(v19_
), static_cast<T
>(v20_
),
1196 static_cast<T
>(v21_
), static_cast<T
>(v22_
), static_cast<T
>(v23_
),
1197 static_cast<T
>(v24_
), static_cast<T
>(v25_
), static_cast<T
>(v26_
),
1198 static_cast<T
>(v27_
), static_cast<T
>(v28_
)};
1199 return ValuesIn(array
);
1203 // No implementation - assignment is unsupported.
1204 void operator=(const ValueArray28
& other
);
1236 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
1237 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
1238 typename T11
, typename T12
, typename T13
, typename T14
, typename T15
,
1239 typename T16
, typename T17
, typename T18
, typename T19
, typename T20
,
1240 typename T21
, typename T22
, typename T23
, typename T24
, typename T25
,
1241 typename T26
, typename T27
, typename T28
, typename T29
>
1242 class ValueArray29
{
1244 ValueArray29(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
1245 T10 v10
, T11 v11
, T12 v12
, T13 v13
, T14 v14
, T15 v15
, T16 v16
, T17 v17
,
1246 T18 v18
, T19 v19
, T20 v20
, T21 v21
, T22 v22
, T23 v23
, T24 v24
, T25 v25
,
1247 T26 v26
, T27 v27
, T28 v28
, T29 v29
) : v1_(v1
), v2_(v2
), v3_(v3
), v4_(v4
),
1248 v5_(v5
), v6_(v6
), v7_(v7
), v8_(v8
), v9_(v9
), v10_(v10
), v11_(v11
),
1249 v12_(v12
), v13_(v13
), v14_(v14
), v15_(v15
), v16_(v16
), v17_(v17
),
1250 v18_(v18
), v19_(v19
), v20_(v20
), v21_(v21
), v22_(v22
), v23_(v23
),
1251 v24_(v24
), v25_(v25
), v26_(v26
), v27_(v27
), v28_(v28
), v29_(v29
) {}
1253 template <typename T
>
1254 operator ParamGenerator
<T
>() const {
1255 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
1256 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
1257 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
1258 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
),
1259 static_cast<T
>(v12_
), static_cast<T
>(v13_
), static_cast<T
>(v14_
),
1260 static_cast<T
>(v15_
), static_cast<T
>(v16_
), static_cast<T
>(v17_
),
1261 static_cast<T
>(v18_
), static_cast<T
>(v19_
), static_cast<T
>(v20_
),
1262 static_cast<T
>(v21_
), static_cast<T
>(v22_
), static_cast<T
>(v23_
),
1263 static_cast<T
>(v24_
), static_cast<T
>(v25_
), static_cast<T
>(v26_
),
1264 static_cast<T
>(v27_
), static_cast<T
>(v28_
), static_cast<T
>(v29_
)};
1265 return ValuesIn(array
);
1269 // No implementation - assignment is unsupported.
1270 void operator=(const ValueArray29
& other
);
1303 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
1304 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
1305 typename T11
, typename T12
, typename T13
, typename T14
, typename T15
,
1306 typename T16
, typename T17
, typename T18
, typename T19
, typename T20
,
1307 typename T21
, typename T22
, typename T23
, typename T24
, typename T25
,
1308 typename T26
, typename T27
, typename T28
, typename T29
, typename T30
>
1309 class ValueArray30
{
1311 ValueArray30(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
1312 T10 v10
, T11 v11
, T12 v12
, T13 v13
, T14 v14
, T15 v15
, T16 v16
, T17 v17
,
1313 T18 v18
, T19 v19
, T20 v20
, T21 v21
, T22 v22
, T23 v23
, T24 v24
, T25 v25
,
1314 T26 v26
, T27 v27
, T28 v28
, T29 v29
, T30 v30
) : v1_(v1
), v2_(v2
), v3_(v3
),
1315 v4_(v4
), v5_(v5
), v6_(v6
), v7_(v7
), v8_(v8
), v9_(v9
), v10_(v10
),
1316 v11_(v11
), v12_(v12
), v13_(v13
), v14_(v14
), v15_(v15
), v16_(v16
),
1317 v17_(v17
), v18_(v18
), v19_(v19
), v20_(v20
), v21_(v21
), v22_(v22
),
1318 v23_(v23
), v24_(v24
), v25_(v25
), v26_(v26
), v27_(v27
), v28_(v28
),
1319 v29_(v29
), v30_(v30
) {}
1321 template <typename T
>
1322 operator ParamGenerator
<T
>() const {
1323 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
1324 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
1325 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
1326 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
),
1327 static_cast<T
>(v12_
), static_cast<T
>(v13_
), static_cast<T
>(v14_
),
1328 static_cast<T
>(v15_
), static_cast<T
>(v16_
), static_cast<T
>(v17_
),
1329 static_cast<T
>(v18_
), static_cast<T
>(v19_
), static_cast<T
>(v20_
),
1330 static_cast<T
>(v21_
), static_cast<T
>(v22_
), static_cast<T
>(v23_
),
1331 static_cast<T
>(v24_
), static_cast<T
>(v25_
), static_cast<T
>(v26_
),
1332 static_cast<T
>(v27_
), static_cast<T
>(v28_
), static_cast<T
>(v29_
),
1333 static_cast<T
>(v30_
)};
1334 return ValuesIn(array
);
1338 // No implementation - assignment is unsupported.
1339 void operator=(const ValueArray30
& other
);
1373 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
1374 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
1375 typename T11
, typename T12
, typename T13
, typename T14
, typename T15
,
1376 typename T16
, typename T17
, typename T18
, typename T19
, typename T20
,
1377 typename T21
, typename T22
, typename T23
, typename T24
, typename T25
,
1378 typename T26
, typename T27
, typename T28
, typename T29
, typename T30
,
1380 class ValueArray31
{
1382 ValueArray31(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
1383 T10 v10
, T11 v11
, T12 v12
, T13 v13
, T14 v14
, T15 v15
, T16 v16
, T17 v17
,
1384 T18 v18
, T19 v19
, T20 v20
, T21 v21
, T22 v22
, T23 v23
, T24 v24
, T25 v25
,
1385 T26 v26
, T27 v27
, T28 v28
, T29 v29
, T30 v30
, T31 v31
) : v1_(v1
), v2_(v2
),
1386 v3_(v3
), v4_(v4
), v5_(v5
), v6_(v6
), v7_(v7
), v8_(v8
), v9_(v9
), v10_(v10
),
1387 v11_(v11
), v12_(v12
), v13_(v13
), v14_(v14
), v15_(v15
), v16_(v16
),
1388 v17_(v17
), v18_(v18
), v19_(v19
), v20_(v20
), v21_(v21
), v22_(v22
),
1389 v23_(v23
), v24_(v24
), v25_(v25
), v26_(v26
), v27_(v27
), v28_(v28
),
1390 v29_(v29
), v30_(v30
), v31_(v31
) {}
1392 template <typename T
>
1393 operator ParamGenerator
<T
>() const {
1394 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
1395 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
1396 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
1397 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
),
1398 static_cast<T
>(v12_
), static_cast<T
>(v13_
), static_cast<T
>(v14_
),
1399 static_cast<T
>(v15_
), static_cast<T
>(v16_
), static_cast<T
>(v17_
),
1400 static_cast<T
>(v18_
), static_cast<T
>(v19_
), static_cast<T
>(v20_
),
1401 static_cast<T
>(v21_
), static_cast<T
>(v22_
), static_cast<T
>(v23_
),
1402 static_cast<T
>(v24_
), static_cast<T
>(v25_
), static_cast<T
>(v26_
),
1403 static_cast<T
>(v27_
), static_cast<T
>(v28_
), static_cast<T
>(v29_
),
1404 static_cast<T
>(v30_
), static_cast<T
>(v31_
)};
1405 return ValuesIn(array
);
1409 // No implementation - assignment is unsupported.
1410 void operator=(const ValueArray31
& other
);
1445 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
1446 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
1447 typename T11
, typename T12
, typename T13
, typename T14
, typename T15
,
1448 typename T16
, typename T17
, typename T18
, typename T19
, typename T20
,
1449 typename T21
, typename T22
, typename T23
, typename T24
, typename T25
,
1450 typename T26
, typename T27
, typename T28
, typename T29
, typename T30
,
1451 typename T31
, typename T32
>
1452 class ValueArray32
{
1454 ValueArray32(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
1455 T10 v10
, T11 v11
, T12 v12
, T13 v13
, T14 v14
, T15 v15
, T16 v16
, T17 v17
,
1456 T18 v18
, T19 v19
, T20 v20
, T21 v21
, T22 v22
, T23 v23
, T24 v24
, T25 v25
,
1457 T26 v26
, T27 v27
, T28 v28
, T29 v29
, T30 v30
, T31 v31
, T32 v32
) : v1_(v1
),
1458 v2_(v2
), v3_(v3
), v4_(v4
), v5_(v5
), v6_(v6
), v7_(v7
), v8_(v8
), v9_(v9
),
1459 v10_(v10
), v11_(v11
), v12_(v12
), v13_(v13
), v14_(v14
), v15_(v15
),
1460 v16_(v16
), v17_(v17
), v18_(v18
), v19_(v19
), v20_(v20
), v21_(v21
),
1461 v22_(v22
), v23_(v23
), v24_(v24
), v25_(v25
), v26_(v26
), v27_(v27
),
1462 v28_(v28
), v29_(v29
), v30_(v30
), v31_(v31
), v32_(v32
) {}
1464 template <typename T
>
1465 operator ParamGenerator
<T
>() const {
1466 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
1467 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
1468 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
1469 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
),
1470 static_cast<T
>(v12_
), static_cast<T
>(v13_
), static_cast<T
>(v14_
),
1471 static_cast<T
>(v15_
), static_cast<T
>(v16_
), static_cast<T
>(v17_
),
1472 static_cast<T
>(v18_
), static_cast<T
>(v19_
), static_cast<T
>(v20_
),
1473 static_cast<T
>(v21_
), static_cast<T
>(v22_
), static_cast<T
>(v23_
),
1474 static_cast<T
>(v24_
), static_cast<T
>(v25_
), static_cast<T
>(v26_
),
1475 static_cast<T
>(v27_
), static_cast<T
>(v28_
), static_cast<T
>(v29_
),
1476 static_cast<T
>(v30_
), static_cast<T
>(v31_
), static_cast<T
>(v32_
)};
1477 return ValuesIn(array
);
1481 // No implementation - assignment is unsupported.
1482 void operator=(const ValueArray32
& other
);
1518 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
1519 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
1520 typename T11
, typename T12
, typename T13
, typename T14
, typename T15
,
1521 typename T16
, typename T17
, typename T18
, typename T19
, typename T20
,
1522 typename T21
, typename T22
, typename T23
, typename T24
, typename T25
,
1523 typename T26
, typename T27
, typename T28
, typename T29
, typename T30
,
1524 typename T31
, typename T32
, typename T33
>
1525 class ValueArray33
{
1527 ValueArray33(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
1528 T10 v10
, T11 v11
, T12 v12
, T13 v13
, T14 v14
, T15 v15
, T16 v16
, T17 v17
,
1529 T18 v18
, T19 v19
, T20 v20
, T21 v21
, T22 v22
, T23 v23
, T24 v24
, T25 v25
,
1530 T26 v26
, T27 v27
, T28 v28
, T29 v29
, T30 v30
, T31 v31
, T32 v32
,
1531 T33 v33
) : v1_(v1
), v2_(v2
), v3_(v3
), v4_(v4
), v5_(v5
), v6_(v6
), v7_(v7
),
1532 v8_(v8
), v9_(v9
), v10_(v10
), v11_(v11
), v12_(v12
), v13_(v13
), v14_(v14
),
1533 v15_(v15
), v16_(v16
), v17_(v17
), v18_(v18
), v19_(v19
), v20_(v20
),
1534 v21_(v21
), v22_(v22
), v23_(v23
), v24_(v24
), v25_(v25
), v26_(v26
),
1535 v27_(v27
), v28_(v28
), v29_(v29
), v30_(v30
), v31_(v31
), v32_(v32
),
1538 template <typename T
>
1539 operator ParamGenerator
<T
>() const {
1540 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
1541 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
1542 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
1543 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
),
1544 static_cast<T
>(v12_
), static_cast<T
>(v13_
), static_cast<T
>(v14_
),
1545 static_cast<T
>(v15_
), static_cast<T
>(v16_
), static_cast<T
>(v17_
),
1546 static_cast<T
>(v18_
), static_cast<T
>(v19_
), static_cast<T
>(v20_
),
1547 static_cast<T
>(v21_
), static_cast<T
>(v22_
), static_cast<T
>(v23_
),
1548 static_cast<T
>(v24_
), static_cast<T
>(v25_
), static_cast<T
>(v26_
),
1549 static_cast<T
>(v27_
), static_cast<T
>(v28_
), static_cast<T
>(v29_
),
1550 static_cast<T
>(v30_
), static_cast<T
>(v31_
), static_cast<T
>(v32_
),
1551 static_cast<T
>(v33_
)};
1552 return ValuesIn(array
);
1556 // No implementation - assignment is unsupported.
1557 void operator=(const ValueArray33
& other
);
1594 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
1595 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
1596 typename T11
, typename T12
, typename T13
, typename T14
, typename T15
,
1597 typename T16
, typename T17
, typename T18
, typename T19
, typename T20
,
1598 typename T21
, typename T22
, typename T23
, typename T24
, typename T25
,
1599 typename T26
, typename T27
, typename T28
, typename T29
, typename T30
,
1600 typename T31
, typename T32
, typename T33
, typename T34
>
1601 class ValueArray34
{
1603 ValueArray34(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
1604 T10 v10
, T11 v11
, T12 v12
, T13 v13
, T14 v14
, T15 v15
, T16 v16
, T17 v17
,
1605 T18 v18
, T19 v19
, T20 v20
, T21 v21
, T22 v22
, T23 v23
, T24 v24
, T25 v25
,
1606 T26 v26
, T27 v27
, T28 v28
, T29 v29
, T30 v30
, T31 v31
, T32 v32
, T33 v33
,
1607 T34 v34
) : v1_(v1
), v2_(v2
), v3_(v3
), v4_(v4
), v5_(v5
), v6_(v6
), v7_(v7
),
1608 v8_(v8
), v9_(v9
), v10_(v10
), v11_(v11
), v12_(v12
), v13_(v13
), v14_(v14
),
1609 v15_(v15
), v16_(v16
), v17_(v17
), v18_(v18
), v19_(v19
), v20_(v20
),
1610 v21_(v21
), v22_(v22
), v23_(v23
), v24_(v24
), v25_(v25
), v26_(v26
),
1611 v27_(v27
), v28_(v28
), v29_(v29
), v30_(v30
), v31_(v31
), v32_(v32
),
1612 v33_(v33
), v34_(v34
) {}
1614 template <typename T
>
1615 operator ParamGenerator
<T
>() const {
1616 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
1617 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
1618 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
1619 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
),
1620 static_cast<T
>(v12_
), static_cast<T
>(v13_
), static_cast<T
>(v14_
),
1621 static_cast<T
>(v15_
), static_cast<T
>(v16_
), static_cast<T
>(v17_
),
1622 static_cast<T
>(v18_
), static_cast<T
>(v19_
), static_cast<T
>(v20_
),
1623 static_cast<T
>(v21_
), static_cast<T
>(v22_
), static_cast<T
>(v23_
),
1624 static_cast<T
>(v24_
), static_cast<T
>(v25_
), static_cast<T
>(v26_
),
1625 static_cast<T
>(v27_
), static_cast<T
>(v28_
), static_cast<T
>(v29_
),
1626 static_cast<T
>(v30_
), static_cast<T
>(v31_
), static_cast<T
>(v32_
),
1627 static_cast<T
>(v33_
), static_cast<T
>(v34_
)};
1628 return ValuesIn(array
);
1632 // No implementation - assignment is unsupported.
1633 void operator=(const ValueArray34
& other
);
1671 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
1672 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
1673 typename T11
, typename T12
, typename T13
, typename T14
, typename T15
,
1674 typename T16
, typename T17
, typename T18
, typename T19
, typename T20
,
1675 typename T21
, typename T22
, typename T23
, typename T24
, typename T25
,
1676 typename T26
, typename T27
, typename T28
, typename T29
, typename T30
,
1677 typename T31
, typename T32
, typename T33
, typename T34
, typename T35
>
1678 class ValueArray35
{
1680 ValueArray35(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
1681 T10 v10
, T11 v11
, T12 v12
, T13 v13
, T14 v14
, T15 v15
, T16 v16
, T17 v17
,
1682 T18 v18
, T19 v19
, T20 v20
, T21 v21
, T22 v22
, T23 v23
, T24 v24
, T25 v25
,
1683 T26 v26
, T27 v27
, T28 v28
, T29 v29
, T30 v30
, T31 v31
, T32 v32
, T33 v33
,
1684 T34 v34
, T35 v35
) : v1_(v1
), v2_(v2
), v3_(v3
), v4_(v4
), v5_(v5
), v6_(v6
),
1685 v7_(v7
), v8_(v8
), v9_(v9
), v10_(v10
), v11_(v11
), v12_(v12
), v13_(v13
),
1686 v14_(v14
), v15_(v15
), v16_(v16
), v17_(v17
), v18_(v18
), v19_(v19
),
1687 v20_(v20
), v21_(v21
), v22_(v22
), v23_(v23
), v24_(v24
), v25_(v25
),
1688 v26_(v26
), v27_(v27
), v28_(v28
), v29_(v29
), v30_(v30
), v31_(v31
),
1689 v32_(v32
), v33_(v33
), v34_(v34
), v35_(v35
) {}
1691 template <typename T
>
1692 operator ParamGenerator
<T
>() const {
1693 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
1694 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
1695 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
1696 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
),
1697 static_cast<T
>(v12_
), static_cast<T
>(v13_
), static_cast<T
>(v14_
),
1698 static_cast<T
>(v15_
), static_cast<T
>(v16_
), static_cast<T
>(v17_
),
1699 static_cast<T
>(v18_
), static_cast<T
>(v19_
), static_cast<T
>(v20_
),
1700 static_cast<T
>(v21_
), static_cast<T
>(v22_
), static_cast<T
>(v23_
),
1701 static_cast<T
>(v24_
), static_cast<T
>(v25_
), static_cast<T
>(v26_
),
1702 static_cast<T
>(v27_
), static_cast<T
>(v28_
), static_cast<T
>(v29_
),
1703 static_cast<T
>(v30_
), static_cast<T
>(v31_
), static_cast<T
>(v32_
),
1704 static_cast<T
>(v33_
), static_cast<T
>(v34_
), static_cast<T
>(v35_
)};
1705 return ValuesIn(array
);
1709 // No implementation - assignment is unsupported.
1710 void operator=(const ValueArray35
& other
);
1749 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
1750 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
1751 typename T11
, typename T12
, typename T13
, typename T14
, typename T15
,
1752 typename T16
, typename T17
, typename T18
, typename T19
, typename T20
,
1753 typename T21
, typename T22
, typename T23
, typename T24
, typename T25
,
1754 typename T26
, typename T27
, typename T28
, typename T29
, typename T30
,
1755 typename T31
, typename T32
, typename T33
, typename T34
, typename T35
,
1757 class ValueArray36
{
1759 ValueArray36(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
1760 T10 v10
, T11 v11
, T12 v12
, T13 v13
, T14 v14
, T15 v15
, T16 v16
, T17 v17
,
1761 T18 v18
, T19 v19
, T20 v20
, T21 v21
, T22 v22
, T23 v23
, T24 v24
, T25 v25
,
1762 T26 v26
, T27 v27
, T28 v28
, T29 v29
, T30 v30
, T31 v31
, T32 v32
, T33 v33
,
1763 T34 v34
, T35 v35
, T36 v36
) : v1_(v1
), v2_(v2
), v3_(v3
), v4_(v4
), v5_(v5
),
1764 v6_(v6
), v7_(v7
), v8_(v8
), v9_(v9
), v10_(v10
), v11_(v11
), v12_(v12
),
1765 v13_(v13
), v14_(v14
), v15_(v15
), v16_(v16
), v17_(v17
), v18_(v18
),
1766 v19_(v19
), v20_(v20
), v21_(v21
), v22_(v22
), v23_(v23
), v24_(v24
),
1767 v25_(v25
), v26_(v26
), v27_(v27
), v28_(v28
), v29_(v29
), v30_(v30
),
1768 v31_(v31
), v32_(v32
), v33_(v33
), v34_(v34
), v35_(v35
), v36_(v36
) {}
1770 template <typename T
>
1771 operator ParamGenerator
<T
>() const {
1772 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
1773 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
1774 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
1775 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
),
1776 static_cast<T
>(v12_
), static_cast<T
>(v13_
), static_cast<T
>(v14_
),
1777 static_cast<T
>(v15_
), static_cast<T
>(v16_
), static_cast<T
>(v17_
),
1778 static_cast<T
>(v18_
), static_cast<T
>(v19_
), static_cast<T
>(v20_
),
1779 static_cast<T
>(v21_
), static_cast<T
>(v22_
), static_cast<T
>(v23_
),
1780 static_cast<T
>(v24_
), static_cast<T
>(v25_
), static_cast<T
>(v26_
),
1781 static_cast<T
>(v27_
), static_cast<T
>(v28_
), static_cast<T
>(v29_
),
1782 static_cast<T
>(v30_
), static_cast<T
>(v31_
), static_cast<T
>(v32_
),
1783 static_cast<T
>(v33_
), static_cast<T
>(v34_
), static_cast<T
>(v35_
),
1784 static_cast<T
>(v36_
)};
1785 return ValuesIn(array
);
1789 // No implementation - assignment is unsupported.
1790 void operator=(const ValueArray36
& other
);
1830 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
1831 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
1832 typename T11
, typename T12
, typename T13
, typename T14
, typename T15
,
1833 typename T16
, typename T17
, typename T18
, typename T19
, typename T20
,
1834 typename T21
, typename T22
, typename T23
, typename T24
, typename T25
,
1835 typename T26
, typename T27
, typename T28
, typename T29
, typename T30
,
1836 typename T31
, typename T32
, typename T33
, typename T34
, typename T35
,
1837 typename T36
, typename T37
>
1838 class ValueArray37
{
1840 ValueArray37(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
1841 T10 v10
, T11 v11
, T12 v12
, T13 v13
, T14 v14
, T15 v15
, T16 v16
, T17 v17
,
1842 T18 v18
, T19 v19
, T20 v20
, T21 v21
, T22 v22
, T23 v23
, T24 v24
, T25 v25
,
1843 T26 v26
, T27 v27
, T28 v28
, T29 v29
, T30 v30
, T31 v31
, T32 v32
, T33 v33
,
1844 T34 v34
, T35 v35
, T36 v36
, T37 v37
) : v1_(v1
), v2_(v2
), v3_(v3
), v4_(v4
),
1845 v5_(v5
), v6_(v6
), v7_(v7
), v8_(v8
), v9_(v9
), v10_(v10
), v11_(v11
),
1846 v12_(v12
), v13_(v13
), v14_(v14
), v15_(v15
), v16_(v16
), v17_(v17
),
1847 v18_(v18
), v19_(v19
), v20_(v20
), v21_(v21
), v22_(v22
), v23_(v23
),
1848 v24_(v24
), v25_(v25
), v26_(v26
), v27_(v27
), v28_(v28
), v29_(v29
),
1849 v30_(v30
), v31_(v31
), v32_(v32
), v33_(v33
), v34_(v34
), v35_(v35
),
1850 v36_(v36
), v37_(v37
) {}
1852 template <typename T
>
1853 operator ParamGenerator
<T
>() const {
1854 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
1855 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
1856 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
1857 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
),
1858 static_cast<T
>(v12_
), static_cast<T
>(v13_
), static_cast<T
>(v14_
),
1859 static_cast<T
>(v15_
), static_cast<T
>(v16_
), static_cast<T
>(v17_
),
1860 static_cast<T
>(v18_
), static_cast<T
>(v19_
), static_cast<T
>(v20_
),
1861 static_cast<T
>(v21_
), static_cast<T
>(v22_
), static_cast<T
>(v23_
),
1862 static_cast<T
>(v24_
), static_cast<T
>(v25_
), static_cast<T
>(v26_
),
1863 static_cast<T
>(v27_
), static_cast<T
>(v28_
), static_cast<T
>(v29_
),
1864 static_cast<T
>(v30_
), static_cast<T
>(v31_
), static_cast<T
>(v32_
),
1865 static_cast<T
>(v33_
), static_cast<T
>(v34_
), static_cast<T
>(v35_
),
1866 static_cast<T
>(v36_
), static_cast<T
>(v37_
)};
1867 return ValuesIn(array
);
1871 // No implementation - assignment is unsupported.
1872 void operator=(const ValueArray37
& other
);
1913 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
1914 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
1915 typename T11
, typename T12
, typename T13
, typename T14
, typename T15
,
1916 typename T16
, typename T17
, typename T18
, typename T19
, typename T20
,
1917 typename T21
, typename T22
, typename T23
, typename T24
, typename T25
,
1918 typename T26
, typename T27
, typename T28
, typename T29
, typename T30
,
1919 typename T31
, typename T32
, typename T33
, typename T34
, typename T35
,
1920 typename T36
, typename T37
, typename T38
>
1921 class ValueArray38
{
1923 ValueArray38(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
1924 T10 v10
, T11 v11
, T12 v12
, T13 v13
, T14 v14
, T15 v15
, T16 v16
, T17 v17
,
1925 T18 v18
, T19 v19
, T20 v20
, T21 v21
, T22 v22
, T23 v23
, T24 v24
, T25 v25
,
1926 T26 v26
, T27 v27
, T28 v28
, T29 v29
, T30 v30
, T31 v31
, T32 v32
, T33 v33
,
1927 T34 v34
, T35 v35
, T36 v36
, T37 v37
, T38 v38
) : v1_(v1
), v2_(v2
), v3_(v3
),
1928 v4_(v4
), v5_(v5
), v6_(v6
), v7_(v7
), v8_(v8
), v9_(v9
), v10_(v10
),
1929 v11_(v11
), v12_(v12
), v13_(v13
), v14_(v14
), v15_(v15
), v16_(v16
),
1930 v17_(v17
), v18_(v18
), v19_(v19
), v20_(v20
), v21_(v21
), v22_(v22
),
1931 v23_(v23
), v24_(v24
), v25_(v25
), v26_(v26
), v27_(v27
), v28_(v28
),
1932 v29_(v29
), v30_(v30
), v31_(v31
), v32_(v32
), v33_(v33
), v34_(v34
),
1933 v35_(v35
), v36_(v36
), v37_(v37
), v38_(v38
) {}
1935 template <typename T
>
1936 operator ParamGenerator
<T
>() const {
1937 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
1938 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
1939 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
1940 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
),
1941 static_cast<T
>(v12_
), static_cast<T
>(v13_
), static_cast<T
>(v14_
),
1942 static_cast<T
>(v15_
), static_cast<T
>(v16_
), static_cast<T
>(v17_
),
1943 static_cast<T
>(v18_
), static_cast<T
>(v19_
), static_cast<T
>(v20_
),
1944 static_cast<T
>(v21_
), static_cast<T
>(v22_
), static_cast<T
>(v23_
),
1945 static_cast<T
>(v24_
), static_cast<T
>(v25_
), static_cast<T
>(v26_
),
1946 static_cast<T
>(v27_
), static_cast<T
>(v28_
), static_cast<T
>(v29_
),
1947 static_cast<T
>(v30_
), static_cast<T
>(v31_
), static_cast<T
>(v32_
),
1948 static_cast<T
>(v33_
), static_cast<T
>(v34_
), static_cast<T
>(v35_
),
1949 static_cast<T
>(v36_
), static_cast<T
>(v37_
), static_cast<T
>(v38_
)};
1950 return ValuesIn(array
);
1954 // No implementation - assignment is unsupported.
1955 void operator=(const ValueArray38
& other
);
1997 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
1998 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
1999 typename T11
, typename T12
, typename T13
, typename T14
, typename T15
,
2000 typename T16
, typename T17
, typename T18
, typename T19
, typename T20
,
2001 typename T21
, typename T22
, typename T23
, typename T24
, typename T25
,
2002 typename T26
, typename T27
, typename T28
, typename T29
, typename T30
,
2003 typename T31
, typename T32
, typename T33
, typename T34
, typename T35
,
2004 typename T36
, typename T37
, typename T38
, typename T39
>
2005 class ValueArray39
{
2007 ValueArray39(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
2008 T10 v10
, T11 v11
, T12 v12
, T13 v13
, T14 v14
, T15 v15
, T16 v16
, T17 v17
,
2009 T18 v18
, T19 v19
, T20 v20
, T21 v21
, T22 v22
, T23 v23
, T24 v24
, T25 v25
,
2010 T26 v26
, T27 v27
, T28 v28
, T29 v29
, T30 v30
, T31 v31
, T32 v32
, T33 v33
,
2011 T34 v34
, T35 v35
, T36 v36
, T37 v37
, T38 v38
, T39 v39
) : v1_(v1
), v2_(v2
),
2012 v3_(v3
), v4_(v4
), v5_(v5
), v6_(v6
), v7_(v7
), v8_(v8
), v9_(v9
), v10_(v10
),
2013 v11_(v11
), v12_(v12
), v13_(v13
), v14_(v14
), v15_(v15
), v16_(v16
),
2014 v17_(v17
), v18_(v18
), v19_(v19
), v20_(v20
), v21_(v21
), v22_(v22
),
2015 v23_(v23
), v24_(v24
), v25_(v25
), v26_(v26
), v27_(v27
), v28_(v28
),
2016 v29_(v29
), v30_(v30
), v31_(v31
), v32_(v32
), v33_(v33
), v34_(v34
),
2017 v35_(v35
), v36_(v36
), v37_(v37
), v38_(v38
), v39_(v39
) {}
2019 template <typename T
>
2020 operator ParamGenerator
<T
>() const {
2021 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
2022 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
2023 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
2024 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
),
2025 static_cast<T
>(v12_
), static_cast<T
>(v13_
), static_cast<T
>(v14_
),
2026 static_cast<T
>(v15_
), static_cast<T
>(v16_
), static_cast<T
>(v17_
),
2027 static_cast<T
>(v18_
), static_cast<T
>(v19_
), static_cast<T
>(v20_
),
2028 static_cast<T
>(v21_
), static_cast<T
>(v22_
), static_cast<T
>(v23_
),
2029 static_cast<T
>(v24_
), static_cast<T
>(v25_
), static_cast<T
>(v26_
),
2030 static_cast<T
>(v27_
), static_cast<T
>(v28_
), static_cast<T
>(v29_
),
2031 static_cast<T
>(v30_
), static_cast<T
>(v31_
), static_cast<T
>(v32_
),
2032 static_cast<T
>(v33_
), static_cast<T
>(v34_
), static_cast<T
>(v35_
),
2033 static_cast<T
>(v36_
), static_cast<T
>(v37_
), static_cast<T
>(v38_
),
2034 static_cast<T
>(v39_
)};
2035 return ValuesIn(array
);
2039 // No implementation - assignment is unsupported.
2040 void operator=(const ValueArray39
& other
);
2083 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
2084 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
2085 typename T11
, typename T12
, typename T13
, typename T14
, typename T15
,
2086 typename T16
, typename T17
, typename T18
, typename T19
, typename T20
,
2087 typename T21
, typename T22
, typename T23
, typename T24
, typename T25
,
2088 typename T26
, typename T27
, typename T28
, typename T29
, typename T30
,
2089 typename T31
, typename T32
, typename T33
, typename T34
, typename T35
,
2090 typename T36
, typename T37
, typename T38
, typename T39
, typename T40
>
2091 class ValueArray40
{
2093 ValueArray40(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
2094 T10 v10
, T11 v11
, T12 v12
, T13 v13
, T14 v14
, T15 v15
, T16 v16
, T17 v17
,
2095 T18 v18
, T19 v19
, T20 v20
, T21 v21
, T22 v22
, T23 v23
, T24 v24
, T25 v25
,
2096 T26 v26
, T27 v27
, T28 v28
, T29 v29
, T30 v30
, T31 v31
, T32 v32
, T33 v33
,
2097 T34 v34
, T35 v35
, T36 v36
, T37 v37
, T38 v38
, T39 v39
, T40 v40
) : v1_(v1
),
2098 v2_(v2
), v3_(v3
), v4_(v4
), v5_(v5
), v6_(v6
), v7_(v7
), v8_(v8
), v9_(v9
),
2099 v10_(v10
), v11_(v11
), v12_(v12
), v13_(v13
), v14_(v14
), v15_(v15
),
2100 v16_(v16
), v17_(v17
), v18_(v18
), v19_(v19
), v20_(v20
), v21_(v21
),
2101 v22_(v22
), v23_(v23
), v24_(v24
), v25_(v25
), v26_(v26
), v27_(v27
),
2102 v28_(v28
), v29_(v29
), v30_(v30
), v31_(v31
), v32_(v32
), v33_(v33
),
2103 v34_(v34
), v35_(v35
), v36_(v36
), v37_(v37
), v38_(v38
), v39_(v39
),
2106 template <typename T
>
2107 operator ParamGenerator
<T
>() const {
2108 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
2109 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
2110 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
2111 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
),
2112 static_cast<T
>(v12_
), static_cast<T
>(v13_
), static_cast<T
>(v14_
),
2113 static_cast<T
>(v15_
), static_cast<T
>(v16_
), static_cast<T
>(v17_
),
2114 static_cast<T
>(v18_
), static_cast<T
>(v19_
), static_cast<T
>(v20_
),
2115 static_cast<T
>(v21_
), static_cast<T
>(v22_
), static_cast<T
>(v23_
),
2116 static_cast<T
>(v24_
), static_cast<T
>(v25_
), static_cast<T
>(v26_
),
2117 static_cast<T
>(v27_
), static_cast<T
>(v28_
), static_cast<T
>(v29_
),
2118 static_cast<T
>(v30_
), static_cast<T
>(v31_
), static_cast<T
>(v32_
),
2119 static_cast<T
>(v33_
), static_cast<T
>(v34_
), static_cast<T
>(v35_
),
2120 static_cast<T
>(v36_
), static_cast<T
>(v37_
), static_cast<T
>(v38_
),
2121 static_cast<T
>(v39_
), static_cast<T
>(v40_
)};
2122 return ValuesIn(array
);
2126 // No implementation - assignment is unsupported.
2127 void operator=(const ValueArray40
& other
);
2171 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
2172 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
2173 typename T11
, typename T12
, typename T13
, typename T14
, typename T15
,
2174 typename T16
, typename T17
, typename T18
, typename T19
, typename T20
,
2175 typename T21
, typename T22
, typename T23
, typename T24
, typename T25
,
2176 typename T26
, typename T27
, typename T28
, typename T29
, typename T30
,
2177 typename T31
, typename T32
, typename T33
, typename T34
, typename T35
,
2178 typename T36
, typename T37
, typename T38
, typename T39
, typename T40
,
2180 class ValueArray41
{
2182 ValueArray41(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
2183 T10 v10
, T11 v11
, T12 v12
, T13 v13
, T14 v14
, T15 v15
, T16 v16
, T17 v17
,
2184 T18 v18
, T19 v19
, T20 v20
, T21 v21
, T22 v22
, T23 v23
, T24 v24
, T25 v25
,
2185 T26 v26
, T27 v27
, T28 v28
, T29 v29
, T30 v30
, T31 v31
, T32 v32
, T33 v33
,
2186 T34 v34
, T35 v35
, T36 v36
, T37 v37
, T38 v38
, T39 v39
, T40 v40
,
2187 T41 v41
) : v1_(v1
), v2_(v2
), v3_(v3
), v4_(v4
), v5_(v5
), v6_(v6
), v7_(v7
),
2188 v8_(v8
), v9_(v9
), v10_(v10
), v11_(v11
), v12_(v12
), v13_(v13
), v14_(v14
),
2189 v15_(v15
), v16_(v16
), v17_(v17
), v18_(v18
), v19_(v19
), v20_(v20
),
2190 v21_(v21
), v22_(v22
), v23_(v23
), v24_(v24
), v25_(v25
), v26_(v26
),
2191 v27_(v27
), v28_(v28
), v29_(v29
), v30_(v30
), v31_(v31
), v32_(v32
),
2192 v33_(v33
), v34_(v34
), v35_(v35
), v36_(v36
), v37_(v37
), v38_(v38
),
2193 v39_(v39
), v40_(v40
), v41_(v41
) {}
2195 template <typename T
>
2196 operator ParamGenerator
<T
>() const {
2197 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
2198 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
2199 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
2200 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
),
2201 static_cast<T
>(v12_
), static_cast<T
>(v13_
), static_cast<T
>(v14_
),
2202 static_cast<T
>(v15_
), static_cast<T
>(v16_
), static_cast<T
>(v17_
),
2203 static_cast<T
>(v18_
), static_cast<T
>(v19_
), static_cast<T
>(v20_
),
2204 static_cast<T
>(v21_
), static_cast<T
>(v22_
), static_cast<T
>(v23_
),
2205 static_cast<T
>(v24_
), static_cast<T
>(v25_
), static_cast<T
>(v26_
),
2206 static_cast<T
>(v27_
), static_cast<T
>(v28_
), static_cast<T
>(v29_
),
2207 static_cast<T
>(v30_
), static_cast<T
>(v31_
), static_cast<T
>(v32_
),
2208 static_cast<T
>(v33_
), static_cast<T
>(v34_
), static_cast<T
>(v35_
),
2209 static_cast<T
>(v36_
), static_cast<T
>(v37_
), static_cast<T
>(v38_
),
2210 static_cast<T
>(v39_
), static_cast<T
>(v40_
), static_cast<T
>(v41_
)};
2211 return ValuesIn(array
);
2215 // No implementation - assignment is unsupported.
2216 void operator=(const ValueArray41
& other
);
2261 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
2262 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
2263 typename T11
, typename T12
, typename T13
, typename T14
, typename T15
,
2264 typename T16
, typename T17
, typename T18
, typename T19
, typename T20
,
2265 typename T21
, typename T22
, typename T23
, typename T24
, typename T25
,
2266 typename T26
, typename T27
, typename T28
, typename T29
, typename T30
,
2267 typename T31
, typename T32
, typename T33
, typename T34
, typename T35
,
2268 typename T36
, typename T37
, typename T38
, typename T39
, typename T40
,
2269 typename T41
, typename T42
>
2270 class ValueArray42
{
2272 ValueArray42(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
2273 T10 v10
, T11 v11
, T12 v12
, T13 v13
, T14 v14
, T15 v15
, T16 v16
, T17 v17
,
2274 T18 v18
, T19 v19
, T20 v20
, T21 v21
, T22 v22
, T23 v23
, T24 v24
, T25 v25
,
2275 T26 v26
, T27 v27
, T28 v28
, T29 v29
, T30 v30
, T31 v31
, T32 v32
, T33 v33
,
2276 T34 v34
, T35 v35
, T36 v36
, T37 v37
, T38 v38
, T39 v39
, T40 v40
, T41 v41
,
2277 T42 v42
) : v1_(v1
), v2_(v2
), v3_(v3
), v4_(v4
), v5_(v5
), v6_(v6
), v7_(v7
),
2278 v8_(v8
), v9_(v9
), v10_(v10
), v11_(v11
), v12_(v12
), v13_(v13
), v14_(v14
),
2279 v15_(v15
), v16_(v16
), v17_(v17
), v18_(v18
), v19_(v19
), v20_(v20
),
2280 v21_(v21
), v22_(v22
), v23_(v23
), v24_(v24
), v25_(v25
), v26_(v26
),
2281 v27_(v27
), v28_(v28
), v29_(v29
), v30_(v30
), v31_(v31
), v32_(v32
),
2282 v33_(v33
), v34_(v34
), v35_(v35
), v36_(v36
), v37_(v37
), v38_(v38
),
2283 v39_(v39
), v40_(v40
), v41_(v41
), v42_(v42
) {}
2285 template <typename T
>
2286 operator ParamGenerator
<T
>() const {
2287 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
2288 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
2289 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
2290 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
),
2291 static_cast<T
>(v12_
), static_cast<T
>(v13_
), static_cast<T
>(v14_
),
2292 static_cast<T
>(v15_
), static_cast<T
>(v16_
), static_cast<T
>(v17_
),
2293 static_cast<T
>(v18_
), static_cast<T
>(v19_
), static_cast<T
>(v20_
),
2294 static_cast<T
>(v21_
), static_cast<T
>(v22_
), static_cast<T
>(v23_
),
2295 static_cast<T
>(v24_
), static_cast<T
>(v25_
), static_cast<T
>(v26_
),
2296 static_cast<T
>(v27_
), static_cast<T
>(v28_
), static_cast<T
>(v29_
),
2297 static_cast<T
>(v30_
), static_cast<T
>(v31_
), static_cast<T
>(v32_
),
2298 static_cast<T
>(v33_
), static_cast<T
>(v34_
), static_cast<T
>(v35_
),
2299 static_cast<T
>(v36_
), static_cast<T
>(v37_
), static_cast<T
>(v38_
),
2300 static_cast<T
>(v39_
), static_cast<T
>(v40_
), static_cast<T
>(v41_
),
2301 static_cast<T
>(v42_
)};
2302 return ValuesIn(array
);
2306 // No implementation - assignment is unsupported.
2307 void operator=(const ValueArray42
& other
);
2353 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
2354 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
2355 typename T11
, typename T12
, typename T13
, typename T14
, typename T15
,
2356 typename T16
, typename T17
, typename T18
, typename T19
, typename T20
,
2357 typename T21
, typename T22
, typename T23
, typename T24
, typename T25
,
2358 typename T26
, typename T27
, typename T28
, typename T29
, typename T30
,
2359 typename T31
, typename T32
, typename T33
, typename T34
, typename T35
,
2360 typename T36
, typename T37
, typename T38
, typename T39
, typename T40
,
2361 typename T41
, typename T42
, typename T43
>
2362 class ValueArray43
{
2364 ValueArray43(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
2365 T10 v10
, T11 v11
, T12 v12
, T13 v13
, T14 v14
, T15 v15
, T16 v16
, T17 v17
,
2366 T18 v18
, T19 v19
, T20 v20
, T21 v21
, T22 v22
, T23 v23
, T24 v24
, T25 v25
,
2367 T26 v26
, T27 v27
, T28 v28
, T29 v29
, T30 v30
, T31 v31
, T32 v32
, T33 v33
,
2368 T34 v34
, T35 v35
, T36 v36
, T37 v37
, T38 v38
, T39 v39
, T40 v40
, T41 v41
,
2369 T42 v42
, T43 v43
) : v1_(v1
), v2_(v2
), v3_(v3
), v4_(v4
), v5_(v5
), v6_(v6
),
2370 v7_(v7
), v8_(v8
), v9_(v9
), v10_(v10
), v11_(v11
), v12_(v12
), v13_(v13
),
2371 v14_(v14
), v15_(v15
), v16_(v16
), v17_(v17
), v18_(v18
), v19_(v19
),
2372 v20_(v20
), v21_(v21
), v22_(v22
), v23_(v23
), v24_(v24
), v25_(v25
),
2373 v26_(v26
), v27_(v27
), v28_(v28
), v29_(v29
), v30_(v30
), v31_(v31
),
2374 v32_(v32
), v33_(v33
), v34_(v34
), v35_(v35
), v36_(v36
), v37_(v37
),
2375 v38_(v38
), v39_(v39
), v40_(v40
), v41_(v41
), v42_(v42
), v43_(v43
) {}
2377 template <typename T
>
2378 operator ParamGenerator
<T
>() const {
2379 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
2380 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
2381 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
2382 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
),
2383 static_cast<T
>(v12_
), static_cast<T
>(v13_
), static_cast<T
>(v14_
),
2384 static_cast<T
>(v15_
), static_cast<T
>(v16_
), static_cast<T
>(v17_
),
2385 static_cast<T
>(v18_
), static_cast<T
>(v19_
), static_cast<T
>(v20_
),
2386 static_cast<T
>(v21_
), static_cast<T
>(v22_
), static_cast<T
>(v23_
),
2387 static_cast<T
>(v24_
), static_cast<T
>(v25_
), static_cast<T
>(v26_
),
2388 static_cast<T
>(v27_
), static_cast<T
>(v28_
), static_cast<T
>(v29_
),
2389 static_cast<T
>(v30_
), static_cast<T
>(v31_
), static_cast<T
>(v32_
),
2390 static_cast<T
>(v33_
), static_cast<T
>(v34_
), static_cast<T
>(v35_
),
2391 static_cast<T
>(v36_
), static_cast<T
>(v37_
), static_cast<T
>(v38_
),
2392 static_cast<T
>(v39_
), static_cast<T
>(v40_
), static_cast<T
>(v41_
),
2393 static_cast<T
>(v42_
), static_cast<T
>(v43_
)};
2394 return ValuesIn(array
);
2398 // No implementation - assignment is unsupported.
2399 void operator=(const ValueArray43
& other
);
2446 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
2447 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
2448 typename T11
, typename T12
, typename T13
, typename T14
, typename T15
,
2449 typename T16
, typename T17
, typename T18
, typename T19
, typename T20
,
2450 typename T21
, typename T22
, typename T23
, typename T24
, typename T25
,
2451 typename T26
, typename T27
, typename T28
, typename T29
, typename T30
,
2452 typename T31
, typename T32
, typename T33
, typename T34
, typename T35
,
2453 typename T36
, typename T37
, typename T38
, typename T39
, typename T40
,
2454 typename T41
, typename T42
, typename T43
, typename T44
>
2455 class ValueArray44
{
2457 ValueArray44(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
2458 T10 v10
, T11 v11
, T12 v12
, T13 v13
, T14 v14
, T15 v15
, T16 v16
, T17 v17
,
2459 T18 v18
, T19 v19
, T20 v20
, T21 v21
, T22 v22
, T23 v23
, T24 v24
, T25 v25
,
2460 T26 v26
, T27 v27
, T28 v28
, T29 v29
, T30 v30
, T31 v31
, T32 v32
, T33 v33
,
2461 T34 v34
, T35 v35
, T36 v36
, T37 v37
, T38 v38
, T39 v39
, T40 v40
, T41 v41
,
2462 T42 v42
, T43 v43
, T44 v44
) : v1_(v1
), v2_(v2
), v3_(v3
), v4_(v4
), v5_(v5
),
2463 v6_(v6
), v7_(v7
), v8_(v8
), v9_(v9
), v10_(v10
), v11_(v11
), v12_(v12
),
2464 v13_(v13
), v14_(v14
), v15_(v15
), v16_(v16
), v17_(v17
), v18_(v18
),
2465 v19_(v19
), v20_(v20
), v21_(v21
), v22_(v22
), v23_(v23
), v24_(v24
),
2466 v25_(v25
), v26_(v26
), v27_(v27
), v28_(v28
), v29_(v29
), v30_(v30
),
2467 v31_(v31
), v32_(v32
), v33_(v33
), v34_(v34
), v35_(v35
), v36_(v36
),
2468 v37_(v37
), v38_(v38
), v39_(v39
), v40_(v40
), v41_(v41
), v42_(v42
),
2469 v43_(v43
), v44_(v44
) {}
2471 template <typename T
>
2472 operator ParamGenerator
<T
>() const {
2473 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
2474 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
2475 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
2476 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
),
2477 static_cast<T
>(v12_
), static_cast<T
>(v13_
), static_cast<T
>(v14_
),
2478 static_cast<T
>(v15_
), static_cast<T
>(v16_
), static_cast<T
>(v17_
),
2479 static_cast<T
>(v18_
), static_cast<T
>(v19_
), static_cast<T
>(v20_
),
2480 static_cast<T
>(v21_
), static_cast<T
>(v22_
), static_cast<T
>(v23_
),
2481 static_cast<T
>(v24_
), static_cast<T
>(v25_
), static_cast<T
>(v26_
),
2482 static_cast<T
>(v27_
), static_cast<T
>(v28_
), static_cast<T
>(v29_
),
2483 static_cast<T
>(v30_
), static_cast<T
>(v31_
), static_cast<T
>(v32_
),
2484 static_cast<T
>(v33_
), static_cast<T
>(v34_
), static_cast<T
>(v35_
),
2485 static_cast<T
>(v36_
), static_cast<T
>(v37_
), static_cast<T
>(v38_
),
2486 static_cast<T
>(v39_
), static_cast<T
>(v40_
), static_cast<T
>(v41_
),
2487 static_cast<T
>(v42_
), static_cast<T
>(v43_
), static_cast<T
>(v44_
)};
2488 return ValuesIn(array
);
2492 // No implementation - assignment is unsupported.
2493 void operator=(const ValueArray44
& other
);
2541 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
2542 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
2543 typename T11
, typename T12
, typename T13
, typename T14
, typename T15
,
2544 typename T16
, typename T17
, typename T18
, typename T19
, typename T20
,
2545 typename T21
, typename T22
, typename T23
, typename T24
, typename T25
,
2546 typename T26
, typename T27
, typename T28
, typename T29
, typename T30
,
2547 typename T31
, typename T32
, typename T33
, typename T34
, typename T35
,
2548 typename T36
, typename T37
, typename T38
, typename T39
, typename T40
,
2549 typename T41
, typename T42
, typename T43
, typename T44
, typename T45
>
2550 class ValueArray45
{
2552 ValueArray45(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
2553 T10 v10
, T11 v11
, T12 v12
, T13 v13
, T14 v14
, T15 v15
, T16 v16
, T17 v17
,
2554 T18 v18
, T19 v19
, T20 v20
, T21 v21
, T22 v22
, T23 v23
, T24 v24
, T25 v25
,
2555 T26 v26
, T27 v27
, T28 v28
, T29 v29
, T30 v30
, T31 v31
, T32 v32
, T33 v33
,
2556 T34 v34
, T35 v35
, T36 v36
, T37 v37
, T38 v38
, T39 v39
, T40 v40
, T41 v41
,
2557 T42 v42
, T43 v43
, T44 v44
, T45 v45
) : v1_(v1
), v2_(v2
), v3_(v3
), v4_(v4
),
2558 v5_(v5
), v6_(v6
), v7_(v7
), v8_(v8
), v9_(v9
), v10_(v10
), v11_(v11
),
2559 v12_(v12
), v13_(v13
), v14_(v14
), v15_(v15
), v16_(v16
), v17_(v17
),
2560 v18_(v18
), v19_(v19
), v20_(v20
), v21_(v21
), v22_(v22
), v23_(v23
),
2561 v24_(v24
), v25_(v25
), v26_(v26
), v27_(v27
), v28_(v28
), v29_(v29
),
2562 v30_(v30
), v31_(v31
), v32_(v32
), v33_(v33
), v34_(v34
), v35_(v35
),
2563 v36_(v36
), v37_(v37
), v38_(v38
), v39_(v39
), v40_(v40
), v41_(v41
),
2564 v42_(v42
), v43_(v43
), v44_(v44
), v45_(v45
) {}
2566 template <typename T
>
2567 operator ParamGenerator
<T
>() const {
2568 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
2569 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
2570 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
2571 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
),
2572 static_cast<T
>(v12_
), static_cast<T
>(v13_
), static_cast<T
>(v14_
),
2573 static_cast<T
>(v15_
), static_cast<T
>(v16_
), static_cast<T
>(v17_
),
2574 static_cast<T
>(v18_
), static_cast<T
>(v19_
), static_cast<T
>(v20_
),
2575 static_cast<T
>(v21_
), static_cast<T
>(v22_
), static_cast<T
>(v23_
),
2576 static_cast<T
>(v24_
), static_cast<T
>(v25_
), static_cast<T
>(v26_
),
2577 static_cast<T
>(v27_
), static_cast<T
>(v28_
), static_cast<T
>(v29_
),
2578 static_cast<T
>(v30_
), static_cast<T
>(v31_
), static_cast<T
>(v32_
),
2579 static_cast<T
>(v33_
), static_cast<T
>(v34_
), static_cast<T
>(v35_
),
2580 static_cast<T
>(v36_
), static_cast<T
>(v37_
), static_cast<T
>(v38_
),
2581 static_cast<T
>(v39_
), static_cast<T
>(v40_
), static_cast<T
>(v41_
),
2582 static_cast<T
>(v42_
), static_cast<T
>(v43_
), static_cast<T
>(v44_
),
2583 static_cast<T
>(v45_
)};
2584 return ValuesIn(array
);
2588 // No implementation - assignment is unsupported.
2589 void operator=(const ValueArray45
& other
);
2638 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
2639 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
2640 typename T11
, typename T12
, typename T13
, typename T14
, typename T15
,
2641 typename T16
, typename T17
, typename T18
, typename T19
, typename T20
,
2642 typename T21
, typename T22
, typename T23
, typename T24
, typename T25
,
2643 typename T26
, typename T27
, typename T28
, typename T29
, typename T30
,
2644 typename T31
, typename T32
, typename T33
, typename T34
, typename T35
,
2645 typename T36
, typename T37
, typename T38
, typename T39
, typename T40
,
2646 typename T41
, typename T42
, typename T43
, typename T44
, typename T45
,
2648 class ValueArray46
{
2650 ValueArray46(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
2651 T10 v10
, T11 v11
, T12 v12
, T13 v13
, T14 v14
, T15 v15
, T16 v16
, T17 v17
,
2652 T18 v18
, T19 v19
, T20 v20
, T21 v21
, T22 v22
, T23 v23
, T24 v24
, T25 v25
,
2653 T26 v26
, T27 v27
, T28 v28
, T29 v29
, T30 v30
, T31 v31
, T32 v32
, T33 v33
,
2654 T34 v34
, T35 v35
, T36 v36
, T37 v37
, T38 v38
, T39 v39
, T40 v40
, T41 v41
,
2655 T42 v42
, T43 v43
, T44 v44
, T45 v45
, T46 v46
) : v1_(v1
), v2_(v2
), v3_(v3
),
2656 v4_(v4
), v5_(v5
), v6_(v6
), v7_(v7
), v8_(v8
), v9_(v9
), v10_(v10
),
2657 v11_(v11
), v12_(v12
), v13_(v13
), v14_(v14
), v15_(v15
), v16_(v16
),
2658 v17_(v17
), v18_(v18
), v19_(v19
), v20_(v20
), v21_(v21
), v22_(v22
),
2659 v23_(v23
), v24_(v24
), v25_(v25
), v26_(v26
), v27_(v27
), v28_(v28
),
2660 v29_(v29
), v30_(v30
), v31_(v31
), v32_(v32
), v33_(v33
), v34_(v34
),
2661 v35_(v35
), v36_(v36
), v37_(v37
), v38_(v38
), v39_(v39
), v40_(v40
),
2662 v41_(v41
), v42_(v42
), v43_(v43
), v44_(v44
), v45_(v45
), v46_(v46
) {}
2664 template <typename T
>
2665 operator ParamGenerator
<T
>() const {
2666 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
2667 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
2668 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
2669 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
),
2670 static_cast<T
>(v12_
), static_cast<T
>(v13_
), static_cast<T
>(v14_
),
2671 static_cast<T
>(v15_
), static_cast<T
>(v16_
), static_cast<T
>(v17_
),
2672 static_cast<T
>(v18_
), static_cast<T
>(v19_
), static_cast<T
>(v20_
),
2673 static_cast<T
>(v21_
), static_cast<T
>(v22_
), static_cast<T
>(v23_
),
2674 static_cast<T
>(v24_
), static_cast<T
>(v25_
), static_cast<T
>(v26_
),
2675 static_cast<T
>(v27_
), static_cast<T
>(v28_
), static_cast<T
>(v29_
),
2676 static_cast<T
>(v30_
), static_cast<T
>(v31_
), static_cast<T
>(v32_
),
2677 static_cast<T
>(v33_
), static_cast<T
>(v34_
), static_cast<T
>(v35_
),
2678 static_cast<T
>(v36_
), static_cast<T
>(v37_
), static_cast<T
>(v38_
),
2679 static_cast<T
>(v39_
), static_cast<T
>(v40_
), static_cast<T
>(v41_
),
2680 static_cast<T
>(v42_
), static_cast<T
>(v43_
), static_cast<T
>(v44_
),
2681 static_cast<T
>(v45_
), static_cast<T
>(v46_
)};
2682 return ValuesIn(array
);
2686 // No implementation - assignment is unsupported.
2687 void operator=(const ValueArray46
& other
);
2737 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
2738 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
2739 typename T11
, typename T12
, typename T13
, typename T14
, typename T15
,
2740 typename T16
, typename T17
, typename T18
, typename T19
, typename T20
,
2741 typename T21
, typename T22
, typename T23
, typename T24
, typename T25
,
2742 typename T26
, typename T27
, typename T28
, typename T29
, typename T30
,
2743 typename T31
, typename T32
, typename T33
, typename T34
, typename T35
,
2744 typename T36
, typename T37
, typename T38
, typename T39
, typename T40
,
2745 typename T41
, typename T42
, typename T43
, typename T44
, typename T45
,
2746 typename T46
, typename T47
>
2747 class ValueArray47
{
2749 ValueArray47(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
2750 T10 v10
, T11 v11
, T12 v12
, T13 v13
, T14 v14
, T15 v15
, T16 v16
, T17 v17
,
2751 T18 v18
, T19 v19
, T20 v20
, T21 v21
, T22 v22
, T23 v23
, T24 v24
, T25 v25
,
2752 T26 v26
, T27 v27
, T28 v28
, T29 v29
, T30 v30
, T31 v31
, T32 v32
, T33 v33
,
2753 T34 v34
, T35 v35
, T36 v36
, T37 v37
, T38 v38
, T39 v39
, T40 v40
, T41 v41
,
2754 T42 v42
, T43 v43
, T44 v44
, T45 v45
, T46 v46
, T47 v47
) : v1_(v1
), v2_(v2
),
2755 v3_(v3
), v4_(v4
), v5_(v5
), v6_(v6
), v7_(v7
), v8_(v8
), v9_(v9
), v10_(v10
),
2756 v11_(v11
), v12_(v12
), v13_(v13
), v14_(v14
), v15_(v15
), v16_(v16
),
2757 v17_(v17
), v18_(v18
), v19_(v19
), v20_(v20
), v21_(v21
), v22_(v22
),
2758 v23_(v23
), v24_(v24
), v25_(v25
), v26_(v26
), v27_(v27
), v28_(v28
),
2759 v29_(v29
), v30_(v30
), v31_(v31
), v32_(v32
), v33_(v33
), v34_(v34
),
2760 v35_(v35
), v36_(v36
), v37_(v37
), v38_(v38
), v39_(v39
), v40_(v40
),
2761 v41_(v41
), v42_(v42
), v43_(v43
), v44_(v44
), v45_(v45
), v46_(v46
),
2764 template <typename T
>
2765 operator ParamGenerator
<T
>() const {
2766 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
2767 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
2768 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
2769 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
),
2770 static_cast<T
>(v12_
), static_cast<T
>(v13_
), static_cast<T
>(v14_
),
2771 static_cast<T
>(v15_
), static_cast<T
>(v16_
), static_cast<T
>(v17_
),
2772 static_cast<T
>(v18_
), static_cast<T
>(v19_
), static_cast<T
>(v20_
),
2773 static_cast<T
>(v21_
), static_cast<T
>(v22_
), static_cast<T
>(v23_
),
2774 static_cast<T
>(v24_
), static_cast<T
>(v25_
), static_cast<T
>(v26_
),
2775 static_cast<T
>(v27_
), static_cast<T
>(v28_
), static_cast<T
>(v29_
),
2776 static_cast<T
>(v30_
), static_cast<T
>(v31_
), static_cast<T
>(v32_
),
2777 static_cast<T
>(v33_
), static_cast<T
>(v34_
), static_cast<T
>(v35_
),
2778 static_cast<T
>(v36_
), static_cast<T
>(v37_
), static_cast<T
>(v38_
),
2779 static_cast<T
>(v39_
), static_cast<T
>(v40_
), static_cast<T
>(v41_
),
2780 static_cast<T
>(v42_
), static_cast<T
>(v43_
), static_cast<T
>(v44_
),
2781 static_cast<T
>(v45_
), static_cast<T
>(v46_
), static_cast<T
>(v47_
)};
2782 return ValuesIn(array
);
2786 // No implementation - assignment is unsupported.
2787 void operator=(const ValueArray47
& other
);
2838 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
2839 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
2840 typename T11
, typename T12
, typename T13
, typename T14
, typename T15
,
2841 typename T16
, typename T17
, typename T18
, typename T19
, typename T20
,
2842 typename T21
, typename T22
, typename T23
, typename T24
, typename T25
,
2843 typename T26
, typename T27
, typename T28
, typename T29
, typename T30
,
2844 typename T31
, typename T32
, typename T33
, typename T34
, typename T35
,
2845 typename T36
, typename T37
, typename T38
, typename T39
, typename T40
,
2846 typename T41
, typename T42
, typename T43
, typename T44
, typename T45
,
2847 typename T46
, typename T47
, typename T48
>
2848 class ValueArray48
{
2850 ValueArray48(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
2851 T10 v10
, T11 v11
, T12 v12
, T13 v13
, T14 v14
, T15 v15
, T16 v16
, T17 v17
,
2852 T18 v18
, T19 v19
, T20 v20
, T21 v21
, T22 v22
, T23 v23
, T24 v24
, T25 v25
,
2853 T26 v26
, T27 v27
, T28 v28
, T29 v29
, T30 v30
, T31 v31
, T32 v32
, T33 v33
,
2854 T34 v34
, T35 v35
, T36 v36
, T37 v37
, T38 v38
, T39 v39
, T40 v40
, T41 v41
,
2855 T42 v42
, T43 v43
, T44 v44
, T45 v45
, T46 v46
, T47 v47
, T48 v48
) : v1_(v1
),
2856 v2_(v2
), v3_(v3
), v4_(v4
), v5_(v5
), v6_(v6
), v7_(v7
), v8_(v8
), v9_(v9
),
2857 v10_(v10
), v11_(v11
), v12_(v12
), v13_(v13
), v14_(v14
), v15_(v15
),
2858 v16_(v16
), v17_(v17
), v18_(v18
), v19_(v19
), v20_(v20
), v21_(v21
),
2859 v22_(v22
), v23_(v23
), v24_(v24
), v25_(v25
), v26_(v26
), v27_(v27
),
2860 v28_(v28
), v29_(v29
), v30_(v30
), v31_(v31
), v32_(v32
), v33_(v33
),
2861 v34_(v34
), v35_(v35
), v36_(v36
), v37_(v37
), v38_(v38
), v39_(v39
),
2862 v40_(v40
), v41_(v41
), v42_(v42
), v43_(v43
), v44_(v44
), v45_(v45
),
2863 v46_(v46
), v47_(v47
), v48_(v48
) {}
2865 template <typename T
>
2866 operator ParamGenerator
<T
>() const {
2867 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
2868 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
2869 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
2870 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
),
2871 static_cast<T
>(v12_
), static_cast<T
>(v13_
), static_cast<T
>(v14_
),
2872 static_cast<T
>(v15_
), static_cast<T
>(v16_
), static_cast<T
>(v17_
),
2873 static_cast<T
>(v18_
), static_cast<T
>(v19_
), static_cast<T
>(v20_
),
2874 static_cast<T
>(v21_
), static_cast<T
>(v22_
), static_cast<T
>(v23_
),
2875 static_cast<T
>(v24_
), static_cast<T
>(v25_
), static_cast<T
>(v26_
),
2876 static_cast<T
>(v27_
), static_cast<T
>(v28_
), static_cast<T
>(v29_
),
2877 static_cast<T
>(v30_
), static_cast<T
>(v31_
), static_cast<T
>(v32_
),
2878 static_cast<T
>(v33_
), static_cast<T
>(v34_
), static_cast<T
>(v35_
),
2879 static_cast<T
>(v36_
), static_cast<T
>(v37_
), static_cast<T
>(v38_
),
2880 static_cast<T
>(v39_
), static_cast<T
>(v40_
), static_cast<T
>(v41_
),
2881 static_cast<T
>(v42_
), static_cast<T
>(v43_
), static_cast<T
>(v44_
),
2882 static_cast<T
>(v45_
), static_cast<T
>(v46_
), static_cast<T
>(v47_
),
2883 static_cast<T
>(v48_
)};
2884 return ValuesIn(array
);
2888 // No implementation - assignment is unsupported.
2889 void operator=(const ValueArray48
& other
);
2941 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
2942 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
2943 typename T11
, typename T12
, typename T13
, typename T14
, typename T15
,
2944 typename T16
, typename T17
, typename T18
, typename T19
, typename T20
,
2945 typename T21
, typename T22
, typename T23
, typename T24
, typename T25
,
2946 typename T26
, typename T27
, typename T28
, typename T29
, typename T30
,
2947 typename T31
, typename T32
, typename T33
, typename T34
, typename T35
,
2948 typename T36
, typename T37
, typename T38
, typename T39
, typename T40
,
2949 typename T41
, typename T42
, typename T43
, typename T44
, typename T45
,
2950 typename T46
, typename T47
, typename T48
, typename T49
>
2951 class ValueArray49
{
2953 ValueArray49(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
2954 T10 v10
, T11 v11
, T12 v12
, T13 v13
, T14 v14
, T15 v15
, T16 v16
, T17 v17
,
2955 T18 v18
, T19 v19
, T20 v20
, T21 v21
, T22 v22
, T23 v23
, T24 v24
, T25 v25
,
2956 T26 v26
, T27 v27
, T28 v28
, T29 v29
, T30 v30
, T31 v31
, T32 v32
, T33 v33
,
2957 T34 v34
, T35 v35
, T36 v36
, T37 v37
, T38 v38
, T39 v39
, T40 v40
, T41 v41
,
2958 T42 v42
, T43 v43
, T44 v44
, T45 v45
, T46 v46
, T47 v47
, T48 v48
,
2959 T49 v49
) : v1_(v1
), v2_(v2
), v3_(v3
), v4_(v4
), v5_(v5
), v6_(v6
), v7_(v7
),
2960 v8_(v8
), v9_(v9
), v10_(v10
), v11_(v11
), v12_(v12
), v13_(v13
), v14_(v14
),
2961 v15_(v15
), v16_(v16
), v17_(v17
), v18_(v18
), v19_(v19
), v20_(v20
),
2962 v21_(v21
), v22_(v22
), v23_(v23
), v24_(v24
), v25_(v25
), v26_(v26
),
2963 v27_(v27
), v28_(v28
), v29_(v29
), v30_(v30
), v31_(v31
), v32_(v32
),
2964 v33_(v33
), v34_(v34
), v35_(v35
), v36_(v36
), v37_(v37
), v38_(v38
),
2965 v39_(v39
), v40_(v40
), v41_(v41
), v42_(v42
), v43_(v43
), v44_(v44
),
2966 v45_(v45
), v46_(v46
), v47_(v47
), v48_(v48
), v49_(v49
) {}
2968 template <typename T
>
2969 operator ParamGenerator
<T
>() const {
2970 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
2971 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
2972 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
2973 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
),
2974 static_cast<T
>(v12_
), static_cast<T
>(v13_
), static_cast<T
>(v14_
),
2975 static_cast<T
>(v15_
), static_cast<T
>(v16_
), static_cast<T
>(v17_
),
2976 static_cast<T
>(v18_
), static_cast<T
>(v19_
), static_cast<T
>(v20_
),
2977 static_cast<T
>(v21_
), static_cast<T
>(v22_
), static_cast<T
>(v23_
),
2978 static_cast<T
>(v24_
), static_cast<T
>(v25_
), static_cast<T
>(v26_
),
2979 static_cast<T
>(v27_
), static_cast<T
>(v28_
), static_cast<T
>(v29_
),
2980 static_cast<T
>(v30_
), static_cast<T
>(v31_
), static_cast<T
>(v32_
),
2981 static_cast<T
>(v33_
), static_cast<T
>(v34_
), static_cast<T
>(v35_
),
2982 static_cast<T
>(v36_
), static_cast<T
>(v37_
), static_cast<T
>(v38_
),
2983 static_cast<T
>(v39_
), static_cast<T
>(v40_
), static_cast<T
>(v41_
),
2984 static_cast<T
>(v42_
), static_cast<T
>(v43_
), static_cast<T
>(v44_
),
2985 static_cast<T
>(v45_
), static_cast<T
>(v46_
), static_cast<T
>(v47_
),
2986 static_cast<T
>(v48_
), static_cast<T
>(v49_
)};
2987 return ValuesIn(array
);
2991 // No implementation - assignment is unsupported.
2992 void operator=(const ValueArray49
& other
);
3045 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
3046 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
3047 typename T11
, typename T12
, typename T13
, typename T14
, typename T15
,
3048 typename T16
, typename T17
, typename T18
, typename T19
, typename T20
,
3049 typename T21
, typename T22
, typename T23
, typename T24
, typename T25
,
3050 typename T26
, typename T27
, typename T28
, typename T29
, typename T30
,
3051 typename T31
, typename T32
, typename T33
, typename T34
, typename T35
,
3052 typename T36
, typename T37
, typename T38
, typename T39
, typename T40
,
3053 typename T41
, typename T42
, typename T43
, typename T44
, typename T45
,
3054 typename T46
, typename T47
, typename T48
, typename T49
, typename T50
>
3055 class ValueArray50
{
3057 ValueArray50(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
3058 T10 v10
, T11 v11
, T12 v12
, T13 v13
, T14 v14
, T15 v15
, T16 v16
, T17 v17
,
3059 T18 v18
, T19 v19
, T20 v20
, T21 v21
, T22 v22
, T23 v23
, T24 v24
, T25 v25
,
3060 T26 v26
, T27 v27
, T28 v28
, T29 v29
, T30 v30
, T31 v31
, T32 v32
, T33 v33
,
3061 T34 v34
, T35 v35
, T36 v36
, T37 v37
, T38 v38
, T39 v39
, T40 v40
, T41 v41
,
3062 T42 v42
, T43 v43
, T44 v44
, T45 v45
, T46 v46
, T47 v47
, T48 v48
, T49 v49
,
3063 T50 v50
) : v1_(v1
), v2_(v2
), v3_(v3
), v4_(v4
), v5_(v5
), v6_(v6
), v7_(v7
),
3064 v8_(v8
), v9_(v9
), v10_(v10
), v11_(v11
), v12_(v12
), v13_(v13
), v14_(v14
),
3065 v15_(v15
), v16_(v16
), v17_(v17
), v18_(v18
), v19_(v19
), v20_(v20
),
3066 v21_(v21
), v22_(v22
), v23_(v23
), v24_(v24
), v25_(v25
), v26_(v26
),
3067 v27_(v27
), v28_(v28
), v29_(v29
), v30_(v30
), v31_(v31
), v32_(v32
),
3068 v33_(v33
), v34_(v34
), v35_(v35
), v36_(v36
), v37_(v37
), v38_(v38
),
3069 v39_(v39
), v40_(v40
), v41_(v41
), v42_(v42
), v43_(v43
), v44_(v44
),
3070 v45_(v45
), v46_(v46
), v47_(v47
), v48_(v48
), v49_(v49
), v50_(v50
) {}
3072 template <typename T
>
3073 operator ParamGenerator
<T
>() const {
3074 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
3075 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
3076 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
3077 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
),
3078 static_cast<T
>(v12_
), static_cast<T
>(v13_
), static_cast<T
>(v14_
),
3079 static_cast<T
>(v15_
), static_cast<T
>(v16_
), static_cast<T
>(v17_
),
3080 static_cast<T
>(v18_
), static_cast<T
>(v19_
), static_cast<T
>(v20_
),
3081 static_cast<T
>(v21_
), static_cast<T
>(v22_
), static_cast<T
>(v23_
),
3082 static_cast<T
>(v24_
), static_cast<T
>(v25_
), static_cast<T
>(v26_
),
3083 static_cast<T
>(v27_
), static_cast<T
>(v28_
), static_cast<T
>(v29_
),
3084 static_cast<T
>(v30_
), static_cast<T
>(v31_
), static_cast<T
>(v32_
),
3085 static_cast<T
>(v33_
), static_cast<T
>(v34_
), static_cast<T
>(v35_
),
3086 static_cast<T
>(v36_
), static_cast<T
>(v37_
), static_cast<T
>(v38_
),
3087 static_cast<T
>(v39_
), static_cast<T
>(v40_
), static_cast<T
>(v41_
),
3088 static_cast<T
>(v42_
), static_cast<T
>(v43_
), static_cast<T
>(v44_
),
3089 static_cast<T
>(v45_
), static_cast<T
>(v46_
), static_cast<T
>(v47_
),
3090 static_cast<T
>(v48_
), static_cast<T
>(v49_
), static_cast<T
>(v50_
)};
3091 return ValuesIn(array
);
3095 // No implementation - assignment is unsupported.
3096 void operator=(const ValueArray50
& other
);
3150 # if GTEST_HAS_COMBINE
3151 // INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
3153 // Generates values from the Cartesian product of values produced
3154 // by the argument generators.
3156 template <typename T1
, typename T2
>
3157 class CartesianProductGenerator2
3158 : public ParamGeneratorInterface
< ::testing::tuple
<T1
, T2
> > {
3160 typedef ::testing::tuple
<T1
, T2
> ParamType
;
3162 CartesianProductGenerator2(const ParamGenerator
<T1
>& g1
,
3163 const ParamGenerator
<T2
>& g2
)
3164 : g1_(g1
), g2_(g2
) {}
3165 virtual ~CartesianProductGenerator2() {}
3167 virtual ParamIteratorInterface
<ParamType
>* Begin() const {
3168 return new Iterator(this, g1_
, g1_
.begin(), g2_
, g2_
.begin());
3170 virtual ParamIteratorInterface
<ParamType
>* End() const {
3171 return new Iterator(this, g1_
, g1_
.end(), g2_
, g2_
.end());
3175 class Iterator
: public ParamIteratorInterface
<ParamType
> {
3177 Iterator(const ParamGeneratorInterface
<ParamType
>* base
,
3178 const ParamGenerator
<T1
>& g1
,
3179 const typename ParamGenerator
<T1
>::iterator
& current1
,
3180 const ParamGenerator
<T2
>& g2
,
3181 const typename ParamGenerator
<T2
>::iterator
& current2
)
3183 begin1_(g1
.begin()), end1_(g1
.end()), current1_(current1
),
3184 begin2_(g2
.begin()), end2_(g2
.end()), current2_(current2
) {
3185 ComputeCurrentValue();
3187 virtual ~Iterator() {}
3189 virtual const ParamGeneratorInterface
<ParamType
>* BaseGenerator() const {
3192 // Advance should not be called on beyond-of-range iterators
3193 // so no component iterators must be beyond end of range, either.
3194 virtual void Advance() {
3197 if (current2_
== end2_
) {
3198 current2_
= begin2_
;
3201 ComputeCurrentValue();
3203 virtual ParamIteratorInterface
<ParamType
>* Clone() const {
3204 return new Iterator(*this);
3206 virtual const ParamType
* Current() const { return current_value_
.get(); }
3207 virtual bool Equals(const ParamIteratorInterface
<ParamType
>& other
) const {
3208 // Having the same base generator guarantees that the other
3209 // iterator is of the same type and we can downcast.
3210 GTEST_CHECK_(BaseGenerator() == other
.BaseGenerator())
3211 << "The program attempted to compare iterators "
3212 << "from different generators." << std::endl
;
3213 const Iterator
* typed_other
=
3214 CheckedDowncastToActualType
<const Iterator
>(&other
);
3215 // We must report iterators equal if they both point beyond their
3216 // respective ranges. That can happen in a variety of fashions,
3217 // so we have to consult AtEnd().
3218 return (AtEnd() && typed_other
->AtEnd()) ||
3220 current1_
== typed_other
->current1_
&&
3221 current2_
== typed_other
->current2_
);
3225 Iterator(const Iterator
& other
)
3226 : base_(other
.base_
),
3227 begin1_(other
.begin1_
),
3229 current1_(other
.current1_
),
3230 begin2_(other
.begin2_
),
3232 current2_(other
.current2_
) {
3233 ComputeCurrentValue();
3236 void ComputeCurrentValue() {
3238 current_value_
.reset(new ParamType(*current1_
, *current2_
));
3240 bool AtEnd() const {
3241 // We must report iterator past the end of the range when either of the
3242 // component iterators has reached the end of its range.
3244 current1_
== end1_
||
3248 // No implementation - assignment is unsupported.
3249 void operator=(const Iterator
& other
);
3251 const ParamGeneratorInterface
<ParamType
>* const base_
;
3252 // begin[i]_ and end[i]_ define the i-th range that Iterator traverses.
3253 // current[i]_ is the actual traversing iterator.
3254 const typename ParamGenerator
<T1
>::iterator begin1_
;
3255 const typename ParamGenerator
<T1
>::iterator end1_
;
3256 typename ParamGenerator
<T1
>::iterator current1_
;
3257 const typename ParamGenerator
<T2
>::iterator begin2_
;
3258 const typename ParamGenerator
<T2
>::iterator end2_
;
3259 typename ParamGenerator
<T2
>::iterator current2_
;
3260 linked_ptr
<ParamType
> current_value_
;
3261 }; // class CartesianProductGenerator2::Iterator
3263 // No implementation - assignment is unsupported.
3264 void operator=(const CartesianProductGenerator2
& other
);
3266 const ParamGenerator
<T1
> g1_
;
3267 const ParamGenerator
<T2
> g2_
;
3268 }; // class CartesianProductGenerator2
3271 template <typename T1
, typename T2
, typename T3
>
3272 class CartesianProductGenerator3
3273 : public ParamGeneratorInterface
< ::testing::tuple
<T1
, T2
, T3
> > {
3275 typedef ::testing::tuple
<T1
, T2
, T3
> ParamType
;
3277 CartesianProductGenerator3(const ParamGenerator
<T1
>& g1
,
3278 const ParamGenerator
<T2
>& g2
, const ParamGenerator
<T3
>& g3
)
3279 : g1_(g1
), g2_(g2
), g3_(g3
) {}
3280 virtual ~CartesianProductGenerator3() {}
3282 virtual ParamIteratorInterface
<ParamType
>* Begin() const {
3283 return new Iterator(this, g1_
, g1_
.begin(), g2_
, g2_
.begin(), g3_
,
3286 virtual ParamIteratorInterface
<ParamType
>* End() const {
3287 return new Iterator(this, g1_
, g1_
.end(), g2_
, g2_
.end(), g3_
, g3_
.end());
3291 class Iterator
: public ParamIteratorInterface
<ParamType
> {
3293 Iterator(const ParamGeneratorInterface
<ParamType
>* base
,
3294 const ParamGenerator
<T1
>& g1
,
3295 const typename ParamGenerator
<T1
>::iterator
& current1
,
3296 const ParamGenerator
<T2
>& g2
,
3297 const typename ParamGenerator
<T2
>::iterator
& current2
,
3298 const ParamGenerator
<T3
>& g3
,
3299 const typename ParamGenerator
<T3
>::iterator
& current3
)
3301 begin1_(g1
.begin()), end1_(g1
.end()), current1_(current1
),
3302 begin2_(g2
.begin()), end2_(g2
.end()), current2_(current2
),
3303 begin3_(g3
.begin()), end3_(g3
.end()), current3_(current3
) {
3304 ComputeCurrentValue();
3306 virtual ~Iterator() {}
3308 virtual const ParamGeneratorInterface
<ParamType
>* BaseGenerator() const {
3311 // Advance should not be called on beyond-of-range iterators
3312 // so no component iterators must be beyond end of range, either.
3313 virtual void Advance() {
3316 if (current3_
== end3_
) {
3317 current3_
= begin3_
;
3320 if (current2_
== end2_
) {
3321 current2_
= begin2_
;
3324 ComputeCurrentValue();
3326 virtual ParamIteratorInterface
<ParamType
>* Clone() const {
3327 return new Iterator(*this);
3329 virtual const ParamType
* Current() const { return current_value_
.get(); }
3330 virtual bool Equals(const ParamIteratorInterface
<ParamType
>& other
) const {
3331 // Having the same base generator guarantees that the other
3332 // iterator is of the same type and we can downcast.
3333 GTEST_CHECK_(BaseGenerator() == other
.BaseGenerator())
3334 << "The program attempted to compare iterators "
3335 << "from different generators." << std::endl
;
3336 const Iterator
* typed_other
=
3337 CheckedDowncastToActualType
<const Iterator
>(&other
);
3338 // We must report iterators equal if they both point beyond their
3339 // respective ranges. That can happen in a variety of fashions,
3340 // so we have to consult AtEnd().
3341 return (AtEnd() && typed_other
->AtEnd()) ||
3343 current1_
== typed_other
->current1_
&&
3344 current2_
== typed_other
->current2_
&&
3345 current3_
== typed_other
->current3_
);
3349 Iterator(const Iterator
& other
)
3350 : base_(other
.base_
),
3351 begin1_(other
.begin1_
),
3353 current1_(other
.current1_
),
3354 begin2_(other
.begin2_
),
3356 current2_(other
.current2_
),
3357 begin3_(other
.begin3_
),
3359 current3_(other
.current3_
) {
3360 ComputeCurrentValue();
3363 void ComputeCurrentValue() {
3365 current_value_
.reset(new ParamType(*current1_
, *current2_
, *current3_
));
3367 bool AtEnd() const {
3368 // We must report iterator past the end of the range when either of the
3369 // component iterators has reached the end of its range.
3371 current1_
== end1_
||
3372 current2_
== end2_
||
3376 // No implementation - assignment is unsupported.
3377 void operator=(const Iterator
& other
);
3379 const ParamGeneratorInterface
<ParamType
>* const base_
;
3380 // begin[i]_ and end[i]_ define the i-th range that Iterator traverses.
3381 // current[i]_ is the actual traversing iterator.
3382 const typename ParamGenerator
<T1
>::iterator begin1_
;
3383 const typename ParamGenerator
<T1
>::iterator end1_
;
3384 typename ParamGenerator
<T1
>::iterator current1_
;
3385 const typename ParamGenerator
<T2
>::iterator begin2_
;
3386 const typename ParamGenerator
<T2
>::iterator end2_
;
3387 typename ParamGenerator
<T2
>::iterator current2_
;
3388 const typename ParamGenerator
<T3
>::iterator begin3_
;
3389 const typename ParamGenerator
<T3
>::iterator end3_
;
3390 typename ParamGenerator
<T3
>::iterator current3_
;
3391 linked_ptr
<ParamType
> current_value_
;
3392 }; // class CartesianProductGenerator3::Iterator
3394 // No implementation - assignment is unsupported.
3395 void operator=(const CartesianProductGenerator3
& other
);
3397 const ParamGenerator
<T1
> g1_
;
3398 const ParamGenerator
<T2
> g2_
;
3399 const ParamGenerator
<T3
> g3_
;
3400 }; // class CartesianProductGenerator3
3403 template <typename T1
, typename T2
, typename T3
, typename T4
>
3404 class CartesianProductGenerator4
3405 : public ParamGeneratorInterface
< ::testing::tuple
<T1
, T2
, T3
, T4
> > {
3407 typedef ::testing::tuple
<T1
, T2
, T3
, T4
> ParamType
;
3409 CartesianProductGenerator4(const ParamGenerator
<T1
>& g1
,
3410 const ParamGenerator
<T2
>& g2
, const ParamGenerator
<T3
>& g3
,
3411 const ParamGenerator
<T4
>& g4
)
3412 : g1_(g1
), g2_(g2
), g3_(g3
), g4_(g4
) {}
3413 virtual ~CartesianProductGenerator4() {}
3415 virtual ParamIteratorInterface
<ParamType
>* Begin() const {
3416 return new Iterator(this, g1_
, g1_
.begin(), g2_
, g2_
.begin(), g3_
,
3417 g3_
.begin(), g4_
, g4_
.begin());
3419 virtual ParamIteratorInterface
<ParamType
>* End() const {
3420 return new Iterator(this, g1_
, g1_
.end(), g2_
, g2_
.end(), g3_
, g3_
.end(),
3425 class Iterator
: public ParamIteratorInterface
<ParamType
> {
3427 Iterator(const ParamGeneratorInterface
<ParamType
>* base
,
3428 const ParamGenerator
<T1
>& g1
,
3429 const typename ParamGenerator
<T1
>::iterator
& current1
,
3430 const ParamGenerator
<T2
>& g2
,
3431 const typename ParamGenerator
<T2
>::iterator
& current2
,
3432 const ParamGenerator
<T3
>& g3
,
3433 const typename ParamGenerator
<T3
>::iterator
& current3
,
3434 const ParamGenerator
<T4
>& g4
,
3435 const typename ParamGenerator
<T4
>::iterator
& current4
)
3437 begin1_(g1
.begin()), end1_(g1
.end()), current1_(current1
),
3438 begin2_(g2
.begin()), end2_(g2
.end()), current2_(current2
),
3439 begin3_(g3
.begin()), end3_(g3
.end()), current3_(current3
),
3440 begin4_(g4
.begin()), end4_(g4
.end()), current4_(current4
) {
3441 ComputeCurrentValue();
3443 virtual ~Iterator() {}
3445 virtual const ParamGeneratorInterface
<ParamType
>* BaseGenerator() const {
3448 // Advance should not be called on beyond-of-range iterators
3449 // so no component iterators must be beyond end of range, either.
3450 virtual void Advance() {
3453 if (current4_
== end4_
) {
3454 current4_
= begin4_
;
3457 if (current3_
== end3_
) {
3458 current3_
= begin3_
;
3461 if (current2_
== end2_
) {
3462 current2_
= begin2_
;
3465 ComputeCurrentValue();
3467 virtual ParamIteratorInterface
<ParamType
>* Clone() const {
3468 return new Iterator(*this);
3470 virtual const ParamType
* Current() const { return current_value_
.get(); }
3471 virtual bool Equals(const ParamIteratorInterface
<ParamType
>& other
) const {
3472 // Having the same base generator guarantees that the other
3473 // iterator is of the same type and we can downcast.
3474 GTEST_CHECK_(BaseGenerator() == other
.BaseGenerator())
3475 << "The program attempted to compare iterators "
3476 << "from different generators." << std::endl
;
3477 const Iterator
* typed_other
=
3478 CheckedDowncastToActualType
<const Iterator
>(&other
);
3479 // We must report iterators equal if they both point beyond their
3480 // respective ranges. That can happen in a variety of fashions,
3481 // so we have to consult AtEnd().
3482 return (AtEnd() && typed_other
->AtEnd()) ||
3484 current1_
== typed_other
->current1_
&&
3485 current2_
== typed_other
->current2_
&&
3486 current3_
== typed_other
->current3_
&&
3487 current4_
== typed_other
->current4_
);
3491 Iterator(const Iterator
& other
)
3492 : base_(other
.base_
),
3493 begin1_(other
.begin1_
),
3495 current1_(other
.current1_
),
3496 begin2_(other
.begin2_
),
3498 current2_(other
.current2_
),
3499 begin3_(other
.begin3_
),
3501 current3_(other
.current3_
),
3502 begin4_(other
.begin4_
),
3504 current4_(other
.current4_
) {
3505 ComputeCurrentValue();
3508 void ComputeCurrentValue() {
3510 current_value_
.reset(new ParamType(*current1_
, *current2_
, *current3_
,
3513 bool AtEnd() const {
3514 // We must report iterator past the end of the range when either of the
3515 // component iterators has reached the end of its range.
3517 current1_
== end1_
||
3518 current2_
== end2_
||
3519 current3_
== end3_
||
3523 // No implementation - assignment is unsupported.
3524 void operator=(const Iterator
& other
);
3526 const ParamGeneratorInterface
<ParamType
>* const base_
;
3527 // begin[i]_ and end[i]_ define the i-th range that Iterator traverses.
3528 // current[i]_ is the actual traversing iterator.
3529 const typename ParamGenerator
<T1
>::iterator begin1_
;
3530 const typename ParamGenerator
<T1
>::iterator end1_
;
3531 typename ParamGenerator
<T1
>::iterator current1_
;
3532 const typename ParamGenerator
<T2
>::iterator begin2_
;
3533 const typename ParamGenerator
<T2
>::iterator end2_
;
3534 typename ParamGenerator
<T2
>::iterator current2_
;
3535 const typename ParamGenerator
<T3
>::iterator begin3_
;
3536 const typename ParamGenerator
<T3
>::iterator end3_
;
3537 typename ParamGenerator
<T3
>::iterator current3_
;
3538 const typename ParamGenerator
<T4
>::iterator begin4_
;
3539 const typename ParamGenerator
<T4
>::iterator end4_
;
3540 typename ParamGenerator
<T4
>::iterator current4_
;
3541 linked_ptr
<ParamType
> current_value_
;
3542 }; // class CartesianProductGenerator4::Iterator
3544 // No implementation - assignment is unsupported.
3545 void operator=(const CartesianProductGenerator4
& other
);
3547 const ParamGenerator
<T1
> g1_
;
3548 const ParamGenerator
<T2
> g2_
;
3549 const ParamGenerator
<T3
> g3_
;
3550 const ParamGenerator
<T4
> g4_
;
3551 }; // class CartesianProductGenerator4
3554 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
>
3555 class CartesianProductGenerator5
3556 : public ParamGeneratorInterface
< ::testing::tuple
<T1
, T2
, T3
, T4
, T5
> > {
3558 typedef ::testing::tuple
<T1
, T2
, T3
, T4
, T5
> ParamType
;
3560 CartesianProductGenerator5(const ParamGenerator
<T1
>& g1
,
3561 const ParamGenerator
<T2
>& g2
, const ParamGenerator
<T3
>& g3
,
3562 const ParamGenerator
<T4
>& g4
, const ParamGenerator
<T5
>& g5
)
3563 : g1_(g1
), g2_(g2
), g3_(g3
), g4_(g4
), g5_(g5
) {}
3564 virtual ~CartesianProductGenerator5() {}
3566 virtual ParamIteratorInterface
<ParamType
>* Begin() const {
3567 return new Iterator(this, g1_
, g1_
.begin(), g2_
, g2_
.begin(), g3_
,
3568 g3_
.begin(), g4_
, g4_
.begin(), g5_
, g5_
.begin());
3570 virtual ParamIteratorInterface
<ParamType
>* End() const {
3571 return new Iterator(this, g1_
, g1_
.end(), g2_
, g2_
.end(), g3_
, g3_
.end(),
3572 g4_
, g4_
.end(), g5_
, g5_
.end());
3576 class Iterator
: public ParamIteratorInterface
<ParamType
> {
3578 Iterator(const ParamGeneratorInterface
<ParamType
>* base
,
3579 const ParamGenerator
<T1
>& g1
,
3580 const typename ParamGenerator
<T1
>::iterator
& current1
,
3581 const ParamGenerator
<T2
>& g2
,
3582 const typename ParamGenerator
<T2
>::iterator
& current2
,
3583 const ParamGenerator
<T3
>& g3
,
3584 const typename ParamGenerator
<T3
>::iterator
& current3
,
3585 const ParamGenerator
<T4
>& g4
,
3586 const typename ParamGenerator
<T4
>::iterator
& current4
,
3587 const ParamGenerator
<T5
>& g5
,
3588 const typename ParamGenerator
<T5
>::iterator
& current5
)
3590 begin1_(g1
.begin()), end1_(g1
.end()), current1_(current1
),
3591 begin2_(g2
.begin()), end2_(g2
.end()), current2_(current2
),
3592 begin3_(g3
.begin()), end3_(g3
.end()), current3_(current3
),
3593 begin4_(g4
.begin()), end4_(g4
.end()), current4_(current4
),
3594 begin5_(g5
.begin()), end5_(g5
.end()), current5_(current5
) {
3595 ComputeCurrentValue();
3597 virtual ~Iterator() {}
3599 virtual const ParamGeneratorInterface
<ParamType
>* BaseGenerator() const {
3602 // Advance should not be called on beyond-of-range iterators
3603 // so no component iterators must be beyond end of range, either.
3604 virtual void Advance() {
3607 if (current5_
== end5_
) {
3608 current5_
= begin5_
;
3611 if (current4_
== end4_
) {
3612 current4_
= begin4_
;
3615 if (current3_
== end3_
) {
3616 current3_
= begin3_
;
3619 if (current2_
== end2_
) {
3620 current2_
= begin2_
;
3623 ComputeCurrentValue();
3625 virtual ParamIteratorInterface
<ParamType
>* Clone() const {
3626 return new Iterator(*this);
3628 virtual const ParamType
* Current() const { return current_value_
.get(); }
3629 virtual bool Equals(const ParamIteratorInterface
<ParamType
>& other
) const {
3630 // Having the same base generator guarantees that the other
3631 // iterator is of the same type and we can downcast.
3632 GTEST_CHECK_(BaseGenerator() == other
.BaseGenerator())
3633 << "The program attempted to compare iterators "
3634 << "from different generators." << std::endl
;
3635 const Iterator
* typed_other
=
3636 CheckedDowncastToActualType
<const Iterator
>(&other
);
3637 // We must report iterators equal if they both point beyond their
3638 // respective ranges. That can happen in a variety of fashions,
3639 // so we have to consult AtEnd().
3640 return (AtEnd() && typed_other
->AtEnd()) ||
3642 current1_
== typed_other
->current1_
&&
3643 current2_
== typed_other
->current2_
&&
3644 current3_
== typed_other
->current3_
&&
3645 current4_
== typed_other
->current4_
&&
3646 current5_
== typed_other
->current5_
);
3650 Iterator(const Iterator
& other
)
3651 : base_(other
.base_
),
3652 begin1_(other
.begin1_
),
3654 current1_(other
.current1_
),
3655 begin2_(other
.begin2_
),
3657 current2_(other
.current2_
),
3658 begin3_(other
.begin3_
),
3660 current3_(other
.current3_
),
3661 begin4_(other
.begin4_
),
3663 current4_(other
.current4_
),
3664 begin5_(other
.begin5_
),
3666 current5_(other
.current5_
) {
3667 ComputeCurrentValue();
3670 void ComputeCurrentValue() {
3672 current_value_
.reset(new ParamType(*current1_
, *current2_
, *current3_
,
3673 *current4_
, *current5_
));
3675 bool AtEnd() const {
3676 // We must report iterator past the end of the range when either of the
3677 // component iterators has reached the end of its range.
3679 current1_
== end1_
||
3680 current2_
== end2_
||
3681 current3_
== end3_
||
3682 current4_
== end4_
||
3686 // No implementation - assignment is unsupported.
3687 void operator=(const Iterator
& other
);
3689 const ParamGeneratorInterface
<ParamType
>* const base_
;
3690 // begin[i]_ and end[i]_ define the i-th range that Iterator traverses.
3691 // current[i]_ is the actual traversing iterator.
3692 const typename ParamGenerator
<T1
>::iterator begin1_
;
3693 const typename ParamGenerator
<T1
>::iterator end1_
;
3694 typename ParamGenerator
<T1
>::iterator current1_
;
3695 const typename ParamGenerator
<T2
>::iterator begin2_
;
3696 const typename ParamGenerator
<T2
>::iterator end2_
;
3697 typename ParamGenerator
<T2
>::iterator current2_
;
3698 const typename ParamGenerator
<T3
>::iterator begin3_
;
3699 const typename ParamGenerator
<T3
>::iterator end3_
;
3700 typename ParamGenerator
<T3
>::iterator current3_
;
3701 const typename ParamGenerator
<T4
>::iterator begin4_
;
3702 const typename ParamGenerator
<T4
>::iterator end4_
;
3703 typename ParamGenerator
<T4
>::iterator current4_
;
3704 const typename ParamGenerator
<T5
>::iterator begin5_
;
3705 const typename ParamGenerator
<T5
>::iterator end5_
;
3706 typename ParamGenerator
<T5
>::iterator current5_
;
3707 linked_ptr
<ParamType
> current_value_
;
3708 }; // class CartesianProductGenerator5::Iterator
3710 // No implementation - assignment is unsupported.
3711 void operator=(const CartesianProductGenerator5
& other
);
3713 const ParamGenerator
<T1
> g1_
;
3714 const ParamGenerator
<T2
> g2_
;
3715 const ParamGenerator
<T3
> g3_
;
3716 const ParamGenerator
<T4
> g4_
;
3717 const ParamGenerator
<T5
> g5_
;
3718 }; // class CartesianProductGenerator5
3721 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
3723 class CartesianProductGenerator6
3724 : public ParamGeneratorInterface
< ::testing::tuple
<T1
, T2
, T3
, T4
, T5
,
3727 typedef ::testing::tuple
<T1
, T2
, T3
, T4
, T5
, T6
> ParamType
;
3729 CartesianProductGenerator6(const ParamGenerator
<T1
>& g1
,
3730 const ParamGenerator
<T2
>& g2
, const ParamGenerator
<T3
>& g3
,
3731 const ParamGenerator
<T4
>& g4
, const ParamGenerator
<T5
>& g5
,
3732 const ParamGenerator
<T6
>& g6
)
3733 : g1_(g1
), g2_(g2
), g3_(g3
), g4_(g4
), g5_(g5
), g6_(g6
) {}
3734 virtual ~CartesianProductGenerator6() {}
3736 virtual ParamIteratorInterface
<ParamType
>* Begin() const {
3737 return new Iterator(this, g1_
, g1_
.begin(), g2_
, g2_
.begin(), g3_
,
3738 g3_
.begin(), g4_
, g4_
.begin(), g5_
, g5_
.begin(), g6_
, g6_
.begin());
3740 virtual ParamIteratorInterface
<ParamType
>* End() const {
3741 return new Iterator(this, g1_
, g1_
.end(), g2_
, g2_
.end(), g3_
, g3_
.end(),
3742 g4_
, g4_
.end(), g5_
, g5_
.end(), g6_
, g6_
.end());
3746 class Iterator
: public ParamIteratorInterface
<ParamType
> {
3748 Iterator(const ParamGeneratorInterface
<ParamType
>* base
,
3749 const ParamGenerator
<T1
>& g1
,
3750 const typename ParamGenerator
<T1
>::iterator
& current1
,
3751 const ParamGenerator
<T2
>& g2
,
3752 const typename ParamGenerator
<T2
>::iterator
& current2
,
3753 const ParamGenerator
<T3
>& g3
,
3754 const typename ParamGenerator
<T3
>::iterator
& current3
,
3755 const ParamGenerator
<T4
>& g4
,
3756 const typename ParamGenerator
<T4
>::iterator
& current4
,
3757 const ParamGenerator
<T5
>& g5
,
3758 const typename ParamGenerator
<T5
>::iterator
& current5
,
3759 const ParamGenerator
<T6
>& g6
,
3760 const typename ParamGenerator
<T6
>::iterator
& current6
)
3762 begin1_(g1
.begin()), end1_(g1
.end()), current1_(current1
),
3763 begin2_(g2
.begin()), end2_(g2
.end()), current2_(current2
),
3764 begin3_(g3
.begin()), end3_(g3
.end()), current3_(current3
),
3765 begin4_(g4
.begin()), end4_(g4
.end()), current4_(current4
),
3766 begin5_(g5
.begin()), end5_(g5
.end()), current5_(current5
),
3767 begin6_(g6
.begin()), end6_(g6
.end()), current6_(current6
) {
3768 ComputeCurrentValue();
3770 virtual ~Iterator() {}
3772 virtual const ParamGeneratorInterface
<ParamType
>* BaseGenerator() const {
3775 // Advance should not be called on beyond-of-range iterators
3776 // so no component iterators must be beyond end of range, either.
3777 virtual void Advance() {
3780 if (current6_
== end6_
) {
3781 current6_
= begin6_
;
3784 if (current5_
== end5_
) {
3785 current5_
= begin5_
;
3788 if (current4_
== end4_
) {
3789 current4_
= begin4_
;
3792 if (current3_
== end3_
) {
3793 current3_
= begin3_
;
3796 if (current2_
== end2_
) {
3797 current2_
= begin2_
;
3800 ComputeCurrentValue();
3802 virtual ParamIteratorInterface
<ParamType
>* Clone() const {
3803 return new Iterator(*this);
3805 virtual const ParamType
* Current() const { return current_value_
.get(); }
3806 virtual bool Equals(const ParamIteratorInterface
<ParamType
>& other
) const {
3807 // Having the same base generator guarantees that the other
3808 // iterator is of the same type and we can downcast.
3809 GTEST_CHECK_(BaseGenerator() == other
.BaseGenerator())
3810 << "The program attempted to compare iterators "
3811 << "from different generators." << std::endl
;
3812 const Iterator
* typed_other
=
3813 CheckedDowncastToActualType
<const Iterator
>(&other
);
3814 // We must report iterators equal if they both point beyond their
3815 // respective ranges. That can happen in a variety of fashions,
3816 // so we have to consult AtEnd().
3817 return (AtEnd() && typed_other
->AtEnd()) ||
3819 current1_
== typed_other
->current1_
&&
3820 current2_
== typed_other
->current2_
&&
3821 current3_
== typed_other
->current3_
&&
3822 current4_
== typed_other
->current4_
&&
3823 current5_
== typed_other
->current5_
&&
3824 current6_
== typed_other
->current6_
);
3828 Iterator(const Iterator
& other
)
3829 : base_(other
.base_
),
3830 begin1_(other
.begin1_
),
3832 current1_(other
.current1_
),
3833 begin2_(other
.begin2_
),
3835 current2_(other
.current2_
),
3836 begin3_(other
.begin3_
),
3838 current3_(other
.current3_
),
3839 begin4_(other
.begin4_
),
3841 current4_(other
.current4_
),
3842 begin5_(other
.begin5_
),
3844 current5_(other
.current5_
),
3845 begin6_(other
.begin6_
),
3847 current6_(other
.current6_
) {
3848 ComputeCurrentValue();
3851 void ComputeCurrentValue() {
3853 current_value_
.reset(new ParamType(*current1_
, *current2_
, *current3_
,
3854 *current4_
, *current5_
, *current6_
));
3856 bool AtEnd() const {
3857 // We must report iterator past the end of the range when either of the
3858 // component iterators has reached the end of its range.
3860 current1_
== end1_
||
3861 current2_
== end2_
||
3862 current3_
== end3_
||
3863 current4_
== end4_
||
3864 current5_
== end5_
||
3868 // No implementation - assignment is unsupported.
3869 void operator=(const Iterator
& other
);
3871 const ParamGeneratorInterface
<ParamType
>* const base_
;
3872 // begin[i]_ and end[i]_ define the i-th range that Iterator traverses.
3873 // current[i]_ is the actual traversing iterator.
3874 const typename ParamGenerator
<T1
>::iterator begin1_
;
3875 const typename ParamGenerator
<T1
>::iterator end1_
;
3876 typename ParamGenerator
<T1
>::iterator current1_
;
3877 const typename ParamGenerator
<T2
>::iterator begin2_
;
3878 const typename ParamGenerator
<T2
>::iterator end2_
;
3879 typename ParamGenerator
<T2
>::iterator current2_
;
3880 const typename ParamGenerator
<T3
>::iterator begin3_
;
3881 const typename ParamGenerator
<T3
>::iterator end3_
;
3882 typename ParamGenerator
<T3
>::iterator current3_
;
3883 const typename ParamGenerator
<T4
>::iterator begin4_
;
3884 const typename ParamGenerator
<T4
>::iterator end4_
;
3885 typename ParamGenerator
<T4
>::iterator current4_
;
3886 const typename ParamGenerator
<T5
>::iterator begin5_
;
3887 const typename ParamGenerator
<T5
>::iterator end5_
;
3888 typename ParamGenerator
<T5
>::iterator current5_
;
3889 const typename ParamGenerator
<T6
>::iterator begin6_
;
3890 const typename ParamGenerator
<T6
>::iterator end6_
;
3891 typename ParamGenerator
<T6
>::iterator current6_
;
3892 linked_ptr
<ParamType
> current_value_
;
3893 }; // class CartesianProductGenerator6::Iterator
3895 // No implementation - assignment is unsupported.
3896 void operator=(const CartesianProductGenerator6
& other
);
3898 const ParamGenerator
<T1
> g1_
;
3899 const ParamGenerator
<T2
> g2_
;
3900 const ParamGenerator
<T3
> g3_
;
3901 const ParamGenerator
<T4
> g4_
;
3902 const ParamGenerator
<T5
> g5_
;
3903 const ParamGenerator
<T6
> g6_
;
3904 }; // class CartesianProductGenerator6
3907 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
3908 typename T6
, typename T7
>
3909 class CartesianProductGenerator7
3910 : public ParamGeneratorInterface
< ::testing::tuple
<T1
, T2
, T3
, T4
, T5
, T6
,
3913 typedef ::testing::tuple
<T1
, T2
, T3
, T4
, T5
, T6
, T7
> ParamType
;
3915 CartesianProductGenerator7(const ParamGenerator
<T1
>& g1
,
3916 const ParamGenerator
<T2
>& g2
, const ParamGenerator
<T3
>& g3
,
3917 const ParamGenerator
<T4
>& g4
, const ParamGenerator
<T5
>& g5
,
3918 const ParamGenerator
<T6
>& g6
, const ParamGenerator
<T7
>& g7
)
3919 : g1_(g1
), g2_(g2
), g3_(g3
), g4_(g4
), g5_(g5
), g6_(g6
), g7_(g7
) {}
3920 virtual ~CartesianProductGenerator7() {}
3922 virtual ParamIteratorInterface
<ParamType
>* Begin() const {
3923 return new Iterator(this, g1_
, g1_
.begin(), g2_
, g2_
.begin(), g3_
,
3924 g3_
.begin(), g4_
, g4_
.begin(), g5_
, g5_
.begin(), g6_
, g6_
.begin(), g7_
,
3927 virtual ParamIteratorInterface
<ParamType
>* End() const {
3928 return new Iterator(this, g1_
, g1_
.end(), g2_
, g2_
.end(), g3_
, g3_
.end(),
3929 g4_
, g4_
.end(), g5_
, g5_
.end(), g6_
, g6_
.end(), g7_
, g7_
.end());
3933 class Iterator
: public ParamIteratorInterface
<ParamType
> {
3935 Iterator(const ParamGeneratorInterface
<ParamType
>* base
,
3936 const ParamGenerator
<T1
>& g1
,
3937 const typename ParamGenerator
<T1
>::iterator
& current1
,
3938 const ParamGenerator
<T2
>& g2
,
3939 const typename ParamGenerator
<T2
>::iterator
& current2
,
3940 const ParamGenerator
<T3
>& g3
,
3941 const typename ParamGenerator
<T3
>::iterator
& current3
,
3942 const ParamGenerator
<T4
>& g4
,
3943 const typename ParamGenerator
<T4
>::iterator
& current4
,
3944 const ParamGenerator
<T5
>& g5
,
3945 const typename ParamGenerator
<T5
>::iterator
& current5
,
3946 const ParamGenerator
<T6
>& g6
,
3947 const typename ParamGenerator
<T6
>::iterator
& current6
,
3948 const ParamGenerator
<T7
>& g7
,
3949 const typename ParamGenerator
<T7
>::iterator
& current7
)
3951 begin1_(g1
.begin()), end1_(g1
.end()), current1_(current1
),
3952 begin2_(g2
.begin()), end2_(g2
.end()), current2_(current2
),
3953 begin3_(g3
.begin()), end3_(g3
.end()), current3_(current3
),
3954 begin4_(g4
.begin()), end4_(g4
.end()), current4_(current4
),
3955 begin5_(g5
.begin()), end5_(g5
.end()), current5_(current5
),
3956 begin6_(g6
.begin()), end6_(g6
.end()), current6_(current6
),
3957 begin7_(g7
.begin()), end7_(g7
.end()), current7_(current7
) {
3958 ComputeCurrentValue();
3960 virtual ~Iterator() {}
3962 virtual const ParamGeneratorInterface
<ParamType
>* BaseGenerator() const {
3965 // Advance should not be called on beyond-of-range iterators
3966 // so no component iterators must be beyond end of range, either.
3967 virtual void Advance() {
3970 if (current7_
== end7_
) {
3971 current7_
= begin7_
;
3974 if (current6_
== end6_
) {
3975 current6_
= begin6_
;
3978 if (current5_
== end5_
) {
3979 current5_
= begin5_
;
3982 if (current4_
== end4_
) {
3983 current4_
= begin4_
;
3986 if (current3_
== end3_
) {
3987 current3_
= begin3_
;
3990 if (current2_
== end2_
) {
3991 current2_
= begin2_
;
3994 ComputeCurrentValue();
3996 virtual ParamIteratorInterface
<ParamType
>* Clone() const {
3997 return new Iterator(*this);
3999 virtual const ParamType
* Current() const { return current_value_
.get(); }
4000 virtual bool Equals(const ParamIteratorInterface
<ParamType
>& other
) const {
4001 // Having the same base generator guarantees that the other
4002 // iterator is of the same type and we can downcast.
4003 GTEST_CHECK_(BaseGenerator() == other
.BaseGenerator())
4004 << "The program attempted to compare iterators "
4005 << "from different generators." << std::endl
;
4006 const Iterator
* typed_other
=
4007 CheckedDowncastToActualType
<const Iterator
>(&other
);
4008 // We must report iterators equal if they both point beyond their
4009 // respective ranges. That can happen in a variety of fashions,
4010 // so we have to consult AtEnd().
4011 return (AtEnd() && typed_other
->AtEnd()) ||
4013 current1_
== typed_other
->current1_
&&
4014 current2_
== typed_other
->current2_
&&
4015 current3_
== typed_other
->current3_
&&
4016 current4_
== typed_other
->current4_
&&
4017 current5_
== typed_other
->current5_
&&
4018 current6_
== typed_other
->current6_
&&
4019 current7_
== typed_other
->current7_
);
4023 Iterator(const Iterator
& other
)
4024 : base_(other
.base_
),
4025 begin1_(other
.begin1_
),
4027 current1_(other
.current1_
),
4028 begin2_(other
.begin2_
),
4030 current2_(other
.current2_
),
4031 begin3_(other
.begin3_
),
4033 current3_(other
.current3_
),
4034 begin4_(other
.begin4_
),
4036 current4_(other
.current4_
),
4037 begin5_(other
.begin5_
),
4039 current5_(other
.current5_
),
4040 begin6_(other
.begin6_
),
4042 current6_(other
.current6_
),
4043 begin7_(other
.begin7_
),
4045 current7_(other
.current7_
) {
4046 ComputeCurrentValue();
4049 void ComputeCurrentValue() {
4051 current_value_
.reset(new ParamType(*current1_
, *current2_
, *current3_
,
4052 *current4_
, *current5_
, *current6_
, *current7_
));
4054 bool AtEnd() const {
4055 // We must report iterator past the end of the range when either of the
4056 // component iterators has reached the end of its range.
4058 current1_
== end1_
||
4059 current2_
== end2_
||
4060 current3_
== end3_
||
4061 current4_
== end4_
||
4062 current5_
== end5_
||
4063 current6_
== end6_
||
4067 // No implementation - assignment is unsupported.
4068 void operator=(const Iterator
& other
);
4070 const ParamGeneratorInterface
<ParamType
>* const base_
;
4071 // begin[i]_ and end[i]_ define the i-th range that Iterator traverses.
4072 // current[i]_ is the actual traversing iterator.
4073 const typename ParamGenerator
<T1
>::iterator begin1_
;
4074 const typename ParamGenerator
<T1
>::iterator end1_
;
4075 typename ParamGenerator
<T1
>::iterator current1_
;
4076 const typename ParamGenerator
<T2
>::iterator begin2_
;
4077 const typename ParamGenerator
<T2
>::iterator end2_
;
4078 typename ParamGenerator
<T2
>::iterator current2_
;
4079 const typename ParamGenerator
<T3
>::iterator begin3_
;
4080 const typename ParamGenerator
<T3
>::iterator end3_
;
4081 typename ParamGenerator
<T3
>::iterator current3_
;
4082 const typename ParamGenerator
<T4
>::iterator begin4_
;
4083 const typename ParamGenerator
<T4
>::iterator end4_
;
4084 typename ParamGenerator
<T4
>::iterator current4_
;
4085 const typename ParamGenerator
<T5
>::iterator begin5_
;
4086 const typename ParamGenerator
<T5
>::iterator end5_
;
4087 typename ParamGenerator
<T5
>::iterator current5_
;
4088 const typename ParamGenerator
<T6
>::iterator begin6_
;
4089 const typename ParamGenerator
<T6
>::iterator end6_
;
4090 typename ParamGenerator
<T6
>::iterator current6_
;
4091 const typename ParamGenerator
<T7
>::iterator begin7_
;
4092 const typename ParamGenerator
<T7
>::iterator end7_
;
4093 typename ParamGenerator
<T7
>::iterator current7_
;
4094 linked_ptr
<ParamType
> current_value_
;
4095 }; // class CartesianProductGenerator7::Iterator
4097 // No implementation - assignment is unsupported.
4098 void operator=(const CartesianProductGenerator7
& other
);
4100 const ParamGenerator
<T1
> g1_
;
4101 const ParamGenerator
<T2
> g2_
;
4102 const ParamGenerator
<T3
> g3_
;
4103 const ParamGenerator
<T4
> g4_
;
4104 const ParamGenerator
<T5
> g5_
;
4105 const ParamGenerator
<T6
> g6_
;
4106 const ParamGenerator
<T7
> g7_
;
4107 }; // class CartesianProductGenerator7
4110 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
4111 typename T6
, typename T7
, typename T8
>
4112 class CartesianProductGenerator8
4113 : public ParamGeneratorInterface
< ::testing::tuple
<T1
, T2
, T3
, T4
, T5
, T6
,
4116 typedef ::testing::tuple
<T1
, T2
, T3
, T4
, T5
, T6
, T7
, T8
> ParamType
;
4118 CartesianProductGenerator8(const ParamGenerator
<T1
>& g1
,
4119 const ParamGenerator
<T2
>& g2
, const ParamGenerator
<T3
>& g3
,
4120 const ParamGenerator
<T4
>& g4
, const ParamGenerator
<T5
>& g5
,
4121 const ParamGenerator
<T6
>& g6
, const ParamGenerator
<T7
>& g7
,
4122 const ParamGenerator
<T8
>& g8
)
4123 : g1_(g1
), g2_(g2
), g3_(g3
), g4_(g4
), g5_(g5
), g6_(g6
), g7_(g7
),
4125 virtual ~CartesianProductGenerator8() {}
4127 virtual ParamIteratorInterface
<ParamType
>* Begin() const {
4128 return new Iterator(this, g1_
, g1_
.begin(), g2_
, g2_
.begin(), g3_
,
4129 g3_
.begin(), g4_
, g4_
.begin(), g5_
, g5_
.begin(), g6_
, g6_
.begin(), g7_
,
4130 g7_
.begin(), g8_
, g8_
.begin());
4132 virtual ParamIteratorInterface
<ParamType
>* End() const {
4133 return new Iterator(this, g1_
, g1_
.end(), g2_
, g2_
.end(), g3_
, g3_
.end(),
4134 g4_
, g4_
.end(), g5_
, g5_
.end(), g6_
, g6_
.end(), g7_
, g7_
.end(), g8_
,
4139 class Iterator
: public ParamIteratorInterface
<ParamType
> {
4141 Iterator(const ParamGeneratorInterface
<ParamType
>* base
,
4142 const ParamGenerator
<T1
>& g1
,
4143 const typename ParamGenerator
<T1
>::iterator
& current1
,
4144 const ParamGenerator
<T2
>& g2
,
4145 const typename ParamGenerator
<T2
>::iterator
& current2
,
4146 const ParamGenerator
<T3
>& g3
,
4147 const typename ParamGenerator
<T3
>::iterator
& current3
,
4148 const ParamGenerator
<T4
>& g4
,
4149 const typename ParamGenerator
<T4
>::iterator
& current4
,
4150 const ParamGenerator
<T5
>& g5
,
4151 const typename ParamGenerator
<T5
>::iterator
& current5
,
4152 const ParamGenerator
<T6
>& g6
,
4153 const typename ParamGenerator
<T6
>::iterator
& current6
,
4154 const ParamGenerator
<T7
>& g7
,
4155 const typename ParamGenerator
<T7
>::iterator
& current7
,
4156 const ParamGenerator
<T8
>& g8
,
4157 const typename ParamGenerator
<T8
>::iterator
& current8
)
4159 begin1_(g1
.begin()), end1_(g1
.end()), current1_(current1
),
4160 begin2_(g2
.begin()), end2_(g2
.end()), current2_(current2
),
4161 begin3_(g3
.begin()), end3_(g3
.end()), current3_(current3
),
4162 begin4_(g4
.begin()), end4_(g4
.end()), current4_(current4
),
4163 begin5_(g5
.begin()), end5_(g5
.end()), current5_(current5
),
4164 begin6_(g6
.begin()), end6_(g6
.end()), current6_(current6
),
4165 begin7_(g7
.begin()), end7_(g7
.end()), current7_(current7
),
4166 begin8_(g8
.begin()), end8_(g8
.end()), current8_(current8
) {
4167 ComputeCurrentValue();
4169 virtual ~Iterator() {}
4171 virtual const ParamGeneratorInterface
<ParamType
>* BaseGenerator() const {
4174 // Advance should not be called on beyond-of-range iterators
4175 // so no component iterators must be beyond end of range, either.
4176 virtual void Advance() {
4179 if (current8_
== end8_
) {
4180 current8_
= begin8_
;
4183 if (current7_
== end7_
) {
4184 current7_
= begin7_
;
4187 if (current6_
== end6_
) {
4188 current6_
= begin6_
;
4191 if (current5_
== end5_
) {
4192 current5_
= begin5_
;
4195 if (current4_
== end4_
) {
4196 current4_
= begin4_
;
4199 if (current3_
== end3_
) {
4200 current3_
= begin3_
;
4203 if (current2_
== end2_
) {
4204 current2_
= begin2_
;
4207 ComputeCurrentValue();
4209 virtual ParamIteratorInterface
<ParamType
>* Clone() const {
4210 return new Iterator(*this);
4212 virtual const ParamType
* Current() const { return current_value_
.get(); }
4213 virtual bool Equals(const ParamIteratorInterface
<ParamType
>& other
) const {
4214 // Having the same base generator guarantees that the other
4215 // iterator is of the same type and we can downcast.
4216 GTEST_CHECK_(BaseGenerator() == other
.BaseGenerator())
4217 << "The program attempted to compare iterators "
4218 << "from different generators." << std::endl
;
4219 const Iterator
* typed_other
=
4220 CheckedDowncastToActualType
<const Iterator
>(&other
);
4221 // We must report iterators equal if they both point beyond their
4222 // respective ranges. That can happen in a variety of fashions,
4223 // so we have to consult AtEnd().
4224 return (AtEnd() && typed_other
->AtEnd()) ||
4226 current1_
== typed_other
->current1_
&&
4227 current2_
== typed_other
->current2_
&&
4228 current3_
== typed_other
->current3_
&&
4229 current4_
== typed_other
->current4_
&&
4230 current5_
== typed_other
->current5_
&&
4231 current6_
== typed_other
->current6_
&&
4232 current7_
== typed_other
->current7_
&&
4233 current8_
== typed_other
->current8_
);
4237 Iterator(const Iterator
& other
)
4238 : base_(other
.base_
),
4239 begin1_(other
.begin1_
),
4241 current1_(other
.current1_
),
4242 begin2_(other
.begin2_
),
4244 current2_(other
.current2_
),
4245 begin3_(other
.begin3_
),
4247 current3_(other
.current3_
),
4248 begin4_(other
.begin4_
),
4250 current4_(other
.current4_
),
4251 begin5_(other
.begin5_
),
4253 current5_(other
.current5_
),
4254 begin6_(other
.begin6_
),
4256 current6_(other
.current6_
),
4257 begin7_(other
.begin7_
),
4259 current7_(other
.current7_
),
4260 begin8_(other
.begin8_
),
4262 current8_(other
.current8_
) {
4263 ComputeCurrentValue();
4266 void ComputeCurrentValue() {
4268 current_value_
.reset(new ParamType(*current1_
, *current2_
, *current3_
,
4269 *current4_
, *current5_
, *current6_
, *current7_
, *current8_
));
4271 bool AtEnd() const {
4272 // We must report iterator past the end of the range when either of the
4273 // component iterators has reached the end of its range.
4275 current1_
== end1_
||
4276 current2_
== end2_
||
4277 current3_
== end3_
||
4278 current4_
== end4_
||
4279 current5_
== end5_
||
4280 current6_
== end6_
||
4281 current7_
== end7_
||
4285 // No implementation - assignment is unsupported.
4286 void operator=(const Iterator
& other
);
4288 const ParamGeneratorInterface
<ParamType
>* const base_
;
4289 // begin[i]_ and end[i]_ define the i-th range that Iterator traverses.
4290 // current[i]_ is the actual traversing iterator.
4291 const typename ParamGenerator
<T1
>::iterator begin1_
;
4292 const typename ParamGenerator
<T1
>::iterator end1_
;
4293 typename ParamGenerator
<T1
>::iterator current1_
;
4294 const typename ParamGenerator
<T2
>::iterator begin2_
;
4295 const typename ParamGenerator
<T2
>::iterator end2_
;
4296 typename ParamGenerator
<T2
>::iterator current2_
;
4297 const typename ParamGenerator
<T3
>::iterator begin3_
;
4298 const typename ParamGenerator
<T3
>::iterator end3_
;
4299 typename ParamGenerator
<T3
>::iterator current3_
;
4300 const typename ParamGenerator
<T4
>::iterator begin4_
;
4301 const typename ParamGenerator
<T4
>::iterator end4_
;
4302 typename ParamGenerator
<T4
>::iterator current4_
;
4303 const typename ParamGenerator
<T5
>::iterator begin5_
;
4304 const typename ParamGenerator
<T5
>::iterator end5_
;
4305 typename ParamGenerator
<T5
>::iterator current5_
;
4306 const typename ParamGenerator
<T6
>::iterator begin6_
;
4307 const typename ParamGenerator
<T6
>::iterator end6_
;
4308 typename ParamGenerator
<T6
>::iterator current6_
;
4309 const typename ParamGenerator
<T7
>::iterator begin7_
;
4310 const typename ParamGenerator
<T7
>::iterator end7_
;
4311 typename ParamGenerator
<T7
>::iterator current7_
;
4312 const typename ParamGenerator
<T8
>::iterator begin8_
;
4313 const typename ParamGenerator
<T8
>::iterator end8_
;
4314 typename ParamGenerator
<T8
>::iterator current8_
;
4315 linked_ptr
<ParamType
> current_value_
;
4316 }; // class CartesianProductGenerator8::Iterator
4318 // No implementation - assignment is unsupported.
4319 void operator=(const CartesianProductGenerator8
& other
);
4321 const ParamGenerator
<T1
> g1_
;
4322 const ParamGenerator
<T2
> g2_
;
4323 const ParamGenerator
<T3
> g3_
;
4324 const ParamGenerator
<T4
> g4_
;
4325 const ParamGenerator
<T5
> g5_
;
4326 const ParamGenerator
<T6
> g6_
;
4327 const ParamGenerator
<T7
> g7_
;
4328 const ParamGenerator
<T8
> g8_
;
4329 }; // class CartesianProductGenerator8
4332 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
4333 typename T6
, typename T7
, typename T8
, typename T9
>
4334 class CartesianProductGenerator9
4335 : public ParamGeneratorInterface
< ::testing::tuple
<T1
, T2
, T3
, T4
, T5
, T6
,
4338 typedef ::testing::tuple
<T1
, T2
, T3
, T4
, T5
, T6
, T7
, T8
, T9
> ParamType
;
4340 CartesianProductGenerator9(const ParamGenerator
<T1
>& g1
,
4341 const ParamGenerator
<T2
>& g2
, const ParamGenerator
<T3
>& g3
,
4342 const ParamGenerator
<T4
>& g4
, const ParamGenerator
<T5
>& g5
,
4343 const ParamGenerator
<T6
>& g6
, const ParamGenerator
<T7
>& g7
,
4344 const ParamGenerator
<T8
>& g8
, const ParamGenerator
<T9
>& g9
)
4345 : g1_(g1
), g2_(g2
), g3_(g3
), g4_(g4
), g5_(g5
), g6_(g6
), g7_(g7
), g8_(g8
),
4347 virtual ~CartesianProductGenerator9() {}
4349 virtual ParamIteratorInterface
<ParamType
>* Begin() const {
4350 return new Iterator(this, g1_
, g1_
.begin(), g2_
, g2_
.begin(), g3_
,
4351 g3_
.begin(), g4_
, g4_
.begin(), g5_
, g5_
.begin(), g6_
, g6_
.begin(), g7_
,
4352 g7_
.begin(), g8_
, g8_
.begin(), g9_
, g9_
.begin());
4354 virtual ParamIteratorInterface
<ParamType
>* End() const {
4355 return new Iterator(this, g1_
, g1_
.end(), g2_
, g2_
.end(), g3_
, g3_
.end(),
4356 g4_
, g4_
.end(), g5_
, g5_
.end(), g6_
, g6_
.end(), g7_
, g7_
.end(), g8_
,
4357 g8_
.end(), g9_
, g9_
.end());
4361 class Iterator
: public ParamIteratorInterface
<ParamType
> {
4363 Iterator(const ParamGeneratorInterface
<ParamType
>* base
,
4364 const ParamGenerator
<T1
>& g1
,
4365 const typename ParamGenerator
<T1
>::iterator
& current1
,
4366 const ParamGenerator
<T2
>& g2
,
4367 const typename ParamGenerator
<T2
>::iterator
& current2
,
4368 const ParamGenerator
<T3
>& g3
,
4369 const typename ParamGenerator
<T3
>::iterator
& current3
,
4370 const ParamGenerator
<T4
>& g4
,
4371 const typename ParamGenerator
<T4
>::iterator
& current4
,
4372 const ParamGenerator
<T5
>& g5
,
4373 const typename ParamGenerator
<T5
>::iterator
& current5
,
4374 const ParamGenerator
<T6
>& g6
,
4375 const typename ParamGenerator
<T6
>::iterator
& current6
,
4376 const ParamGenerator
<T7
>& g7
,
4377 const typename ParamGenerator
<T7
>::iterator
& current7
,
4378 const ParamGenerator
<T8
>& g8
,
4379 const typename ParamGenerator
<T8
>::iterator
& current8
,
4380 const ParamGenerator
<T9
>& g9
,
4381 const typename ParamGenerator
<T9
>::iterator
& current9
)
4383 begin1_(g1
.begin()), end1_(g1
.end()), current1_(current1
),
4384 begin2_(g2
.begin()), end2_(g2
.end()), current2_(current2
),
4385 begin3_(g3
.begin()), end3_(g3
.end()), current3_(current3
),
4386 begin4_(g4
.begin()), end4_(g4
.end()), current4_(current4
),
4387 begin5_(g5
.begin()), end5_(g5
.end()), current5_(current5
),
4388 begin6_(g6
.begin()), end6_(g6
.end()), current6_(current6
),
4389 begin7_(g7
.begin()), end7_(g7
.end()), current7_(current7
),
4390 begin8_(g8
.begin()), end8_(g8
.end()), current8_(current8
),
4391 begin9_(g9
.begin()), end9_(g9
.end()), current9_(current9
) {
4392 ComputeCurrentValue();
4394 virtual ~Iterator() {}
4396 virtual const ParamGeneratorInterface
<ParamType
>* BaseGenerator() const {
4399 // Advance should not be called on beyond-of-range iterators
4400 // so no component iterators must be beyond end of range, either.
4401 virtual void Advance() {
4404 if (current9_
== end9_
) {
4405 current9_
= begin9_
;
4408 if (current8_
== end8_
) {
4409 current8_
= begin8_
;
4412 if (current7_
== end7_
) {
4413 current7_
= begin7_
;
4416 if (current6_
== end6_
) {
4417 current6_
= begin6_
;
4420 if (current5_
== end5_
) {
4421 current5_
= begin5_
;
4424 if (current4_
== end4_
) {
4425 current4_
= begin4_
;
4428 if (current3_
== end3_
) {
4429 current3_
= begin3_
;
4432 if (current2_
== end2_
) {
4433 current2_
= begin2_
;
4436 ComputeCurrentValue();
4438 virtual ParamIteratorInterface
<ParamType
>* Clone() const {
4439 return new Iterator(*this);
4441 virtual const ParamType
* Current() const { return current_value_
.get(); }
4442 virtual bool Equals(const ParamIteratorInterface
<ParamType
>& other
) const {
4443 // Having the same base generator guarantees that the other
4444 // iterator is of the same type and we can downcast.
4445 GTEST_CHECK_(BaseGenerator() == other
.BaseGenerator())
4446 << "The program attempted to compare iterators "
4447 << "from different generators." << std::endl
;
4448 const Iterator
* typed_other
=
4449 CheckedDowncastToActualType
<const Iterator
>(&other
);
4450 // We must report iterators equal if they both point beyond their
4451 // respective ranges. That can happen in a variety of fashions,
4452 // so we have to consult AtEnd().
4453 return (AtEnd() && typed_other
->AtEnd()) ||
4455 current1_
== typed_other
->current1_
&&
4456 current2_
== typed_other
->current2_
&&
4457 current3_
== typed_other
->current3_
&&
4458 current4_
== typed_other
->current4_
&&
4459 current5_
== typed_other
->current5_
&&
4460 current6_
== typed_other
->current6_
&&
4461 current7_
== typed_other
->current7_
&&
4462 current8_
== typed_other
->current8_
&&
4463 current9_
== typed_other
->current9_
);
4467 Iterator(const Iterator
& other
)
4468 : base_(other
.base_
),
4469 begin1_(other
.begin1_
),
4471 current1_(other
.current1_
),
4472 begin2_(other
.begin2_
),
4474 current2_(other
.current2_
),
4475 begin3_(other
.begin3_
),
4477 current3_(other
.current3_
),
4478 begin4_(other
.begin4_
),
4480 current4_(other
.current4_
),
4481 begin5_(other
.begin5_
),
4483 current5_(other
.current5_
),
4484 begin6_(other
.begin6_
),
4486 current6_(other
.current6_
),
4487 begin7_(other
.begin7_
),
4489 current7_(other
.current7_
),
4490 begin8_(other
.begin8_
),
4492 current8_(other
.current8_
),
4493 begin9_(other
.begin9_
),
4495 current9_(other
.current9_
) {
4496 ComputeCurrentValue();
4499 void ComputeCurrentValue() {
4501 current_value_
.reset(new ParamType(*current1_
, *current2_
, *current3_
,
4502 *current4_
, *current5_
, *current6_
, *current7_
, *current8_
,
4505 bool AtEnd() const {
4506 // We must report iterator past the end of the range when either of the
4507 // component iterators has reached the end of its range.
4509 current1_
== end1_
||
4510 current2_
== end2_
||
4511 current3_
== end3_
||
4512 current4_
== end4_
||
4513 current5_
== end5_
||
4514 current6_
== end6_
||
4515 current7_
== end7_
||
4516 current8_
== end8_
||
4520 // No implementation - assignment is unsupported.
4521 void operator=(const Iterator
& other
);
4523 const ParamGeneratorInterface
<ParamType
>* const base_
;
4524 // begin[i]_ and end[i]_ define the i-th range that Iterator traverses.
4525 // current[i]_ is the actual traversing iterator.
4526 const typename ParamGenerator
<T1
>::iterator begin1_
;
4527 const typename ParamGenerator
<T1
>::iterator end1_
;
4528 typename ParamGenerator
<T1
>::iterator current1_
;
4529 const typename ParamGenerator
<T2
>::iterator begin2_
;
4530 const typename ParamGenerator
<T2
>::iterator end2_
;
4531 typename ParamGenerator
<T2
>::iterator current2_
;
4532 const typename ParamGenerator
<T3
>::iterator begin3_
;
4533 const typename ParamGenerator
<T3
>::iterator end3_
;
4534 typename ParamGenerator
<T3
>::iterator current3_
;
4535 const typename ParamGenerator
<T4
>::iterator begin4_
;
4536 const typename ParamGenerator
<T4
>::iterator end4_
;
4537 typename ParamGenerator
<T4
>::iterator current4_
;
4538 const typename ParamGenerator
<T5
>::iterator begin5_
;
4539 const typename ParamGenerator
<T5
>::iterator end5_
;
4540 typename ParamGenerator
<T5
>::iterator current5_
;
4541 const typename ParamGenerator
<T6
>::iterator begin6_
;
4542 const typename ParamGenerator
<T6
>::iterator end6_
;
4543 typename ParamGenerator
<T6
>::iterator current6_
;
4544 const typename ParamGenerator
<T7
>::iterator begin7_
;
4545 const typename ParamGenerator
<T7
>::iterator end7_
;
4546 typename ParamGenerator
<T7
>::iterator current7_
;
4547 const typename ParamGenerator
<T8
>::iterator begin8_
;
4548 const typename ParamGenerator
<T8
>::iterator end8_
;
4549 typename ParamGenerator
<T8
>::iterator current8_
;
4550 const typename ParamGenerator
<T9
>::iterator begin9_
;
4551 const typename ParamGenerator
<T9
>::iterator end9_
;
4552 typename ParamGenerator
<T9
>::iterator current9_
;
4553 linked_ptr
<ParamType
> current_value_
;
4554 }; // class CartesianProductGenerator9::Iterator
4556 // No implementation - assignment is unsupported.
4557 void operator=(const CartesianProductGenerator9
& other
);
4559 const ParamGenerator
<T1
> g1_
;
4560 const ParamGenerator
<T2
> g2_
;
4561 const ParamGenerator
<T3
> g3_
;
4562 const ParamGenerator
<T4
> g4_
;
4563 const ParamGenerator
<T5
> g5_
;
4564 const ParamGenerator
<T6
> g6_
;
4565 const ParamGenerator
<T7
> g7_
;
4566 const ParamGenerator
<T8
> g8_
;
4567 const ParamGenerator
<T9
> g9_
;
4568 }; // class CartesianProductGenerator9
4571 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
4572 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
>
4573 class CartesianProductGenerator10
4574 : public ParamGeneratorInterface
< ::testing::tuple
<T1
, T2
, T3
, T4
, T5
, T6
,
4575 T7
, T8
, T9
, T10
> > {
4577 typedef ::testing::tuple
<T1
, T2
, T3
, T4
, T5
, T6
, T7
, T8
, T9
, T10
> ParamType
;
4579 CartesianProductGenerator10(const ParamGenerator
<T1
>& g1
,
4580 const ParamGenerator
<T2
>& g2
, const ParamGenerator
<T3
>& g3
,
4581 const ParamGenerator
<T4
>& g4
, const ParamGenerator
<T5
>& g5
,
4582 const ParamGenerator
<T6
>& g6
, const ParamGenerator
<T7
>& g7
,
4583 const ParamGenerator
<T8
>& g8
, const ParamGenerator
<T9
>& g9
,
4584 const ParamGenerator
<T10
>& g10
)
4585 : g1_(g1
), g2_(g2
), g3_(g3
), g4_(g4
), g5_(g5
), g6_(g6
), g7_(g7
), g8_(g8
),
4586 g9_(g9
), g10_(g10
) {}
4587 virtual ~CartesianProductGenerator10() {}
4589 virtual ParamIteratorInterface
<ParamType
>* Begin() const {
4590 return new Iterator(this, g1_
, g1_
.begin(), g2_
, g2_
.begin(), g3_
,
4591 g3_
.begin(), g4_
, g4_
.begin(), g5_
, g5_
.begin(), g6_
, g6_
.begin(), g7_
,
4592 g7_
.begin(), g8_
, g8_
.begin(), g9_
, g9_
.begin(), g10_
, g10_
.begin());
4594 virtual ParamIteratorInterface
<ParamType
>* End() const {
4595 return new Iterator(this, g1_
, g1_
.end(), g2_
, g2_
.end(), g3_
, g3_
.end(),
4596 g4_
, g4_
.end(), g5_
, g5_
.end(), g6_
, g6_
.end(), g7_
, g7_
.end(), g8_
,
4597 g8_
.end(), g9_
, g9_
.end(), g10_
, g10_
.end());
4601 class Iterator
: public ParamIteratorInterface
<ParamType
> {
4603 Iterator(const ParamGeneratorInterface
<ParamType
>* base
,
4604 const ParamGenerator
<T1
>& g1
,
4605 const typename ParamGenerator
<T1
>::iterator
& current1
,
4606 const ParamGenerator
<T2
>& g2
,
4607 const typename ParamGenerator
<T2
>::iterator
& current2
,
4608 const ParamGenerator
<T3
>& g3
,
4609 const typename ParamGenerator
<T3
>::iterator
& current3
,
4610 const ParamGenerator
<T4
>& g4
,
4611 const typename ParamGenerator
<T4
>::iterator
& current4
,
4612 const ParamGenerator
<T5
>& g5
,
4613 const typename ParamGenerator
<T5
>::iterator
& current5
,
4614 const ParamGenerator
<T6
>& g6
,
4615 const typename ParamGenerator
<T6
>::iterator
& current6
,
4616 const ParamGenerator
<T7
>& g7
,
4617 const typename ParamGenerator
<T7
>::iterator
& current7
,
4618 const ParamGenerator
<T8
>& g8
,
4619 const typename ParamGenerator
<T8
>::iterator
& current8
,
4620 const ParamGenerator
<T9
>& g9
,
4621 const typename ParamGenerator
<T9
>::iterator
& current9
,
4622 const ParamGenerator
<T10
>& g10
,
4623 const typename ParamGenerator
<T10
>::iterator
& current10
)
4625 begin1_(g1
.begin()), end1_(g1
.end()), current1_(current1
),
4626 begin2_(g2
.begin()), end2_(g2
.end()), current2_(current2
),
4627 begin3_(g3
.begin()), end3_(g3
.end()), current3_(current3
),
4628 begin4_(g4
.begin()), end4_(g4
.end()), current4_(current4
),
4629 begin5_(g5
.begin()), end5_(g5
.end()), current5_(current5
),
4630 begin6_(g6
.begin()), end6_(g6
.end()), current6_(current6
),
4631 begin7_(g7
.begin()), end7_(g7
.end()), current7_(current7
),
4632 begin8_(g8
.begin()), end8_(g8
.end()), current8_(current8
),
4633 begin9_(g9
.begin()), end9_(g9
.end()), current9_(current9
),
4634 begin10_(g10
.begin()), end10_(g10
.end()), current10_(current10
) {
4635 ComputeCurrentValue();
4637 virtual ~Iterator() {}
4639 virtual const ParamGeneratorInterface
<ParamType
>* BaseGenerator() const {
4642 // Advance should not be called on beyond-of-range iterators
4643 // so no component iterators must be beyond end of range, either.
4644 virtual void Advance() {
4647 if (current10_
== end10_
) {
4648 current10_
= begin10_
;
4651 if (current9_
== end9_
) {
4652 current9_
= begin9_
;
4655 if (current8_
== end8_
) {
4656 current8_
= begin8_
;
4659 if (current7_
== end7_
) {
4660 current7_
= begin7_
;
4663 if (current6_
== end6_
) {
4664 current6_
= begin6_
;
4667 if (current5_
== end5_
) {
4668 current5_
= begin5_
;
4671 if (current4_
== end4_
) {
4672 current4_
= begin4_
;
4675 if (current3_
== end3_
) {
4676 current3_
= begin3_
;
4679 if (current2_
== end2_
) {
4680 current2_
= begin2_
;
4683 ComputeCurrentValue();
4685 virtual ParamIteratorInterface
<ParamType
>* Clone() const {
4686 return new Iterator(*this);
4688 virtual const ParamType
* Current() const { return current_value_
.get(); }
4689 virtual bool Equals(const ParamIteratorInterface
<ParamType
>& other
) const {
4690 // Having the same base generator guarantees that the other
4691 // iterator is of the same type and we can downcast.
4692 GTEST_CHECK_(BaseGenerator() == other
.BaseGenerator())
4693 << "The program attempted to compare iterators "
4694 << "from different generators." << std::endl
;
4695 const Iterator
* typed_other
=
4696 CheckedDowncastToActualType
<const Iterator
>(&other
);
4697 // We must report iterators equal if they both point beyond their
4698 // respective ranges. That can happen in a variety of fashions,
4699 // so we have to consult AtEnd().
4700 return (AtEnd() && typed_other
->AtEnd()) ||
4702 current1_
== typed_other
->current1_
&&
4703 current2_
== typed_other
->current2_
&&
4704 current3_
== typed_other
->current3_
&&
4705 current4_
== typed_other
->current4_
&&
4706 current5_
== typed_other
->current5_
&&
4707 current6_
== typed_other
->current6_
&&
4708 current7_
== typed_other
->current7_
&&
4709 current8_
== typed_other
->current8_
&&
4710 current9_
== typed_other
->current9_
&&
4711 current10_
== typed_other
->current10_
);
4715 Iterator(const Iterator
& other
)
4716 : base_(other
.base_
),
4717 begin1_(other
.begin1_
),
4719 current1_(other
.current1_
),
4720 begin2_(other
.begin2_
),
4722 current2_(other
.current2_
),
4723 begin3_(other
.begin3_
),
4725 current3_(other
.current3_
),
4726 begin4_(other
.begin4_
),
4728 current4_(other
.current4_
),
4729 begin5_(other
.begin5_
),
4731 current5_(other
.current5_
),
4732 begin6_(other
.begin6_
),
4734 current6_(other
.current6_
),
4735 begin7_(other
.begin7_
),
4737 current7_(other
.current7_
),
4738 begin8_(other
.begin8_
),
4740 current8_(other
.current8_
),
4741 begin9_(other
.begin9_
),
4743 current9_(other
.current9_
),
4744 begin10_(other
.begin10_
),
4745 end10_(other
.end10_
),
4746 current10_(other
.current10_
) {
4747 ComputeCurrentValue();
4750 void ComputeCurrentValue() {
4752 current_value_
.reset(new ParamType(*current1_
, *current2_
, *current3_
,
4753 *current4_
, *current5_
, *current6_
, *current7_
, *current8_
,
4754 *current9_
, *current10_
));
4756 bool AtEnd() const {
4757 // We must report iterator past the end of the range when either of the
4758 // component iterators has reached the end of its range.
4760 current1_
== end1_
||
4761 current2_
== end2_
||
4762 current3_
== end3_
||
4763 current4_
== end4_
||
4764 current5_
== end5_
||
4765 current6_
== end6_
||
4766 current7_
== end7_
||
4767 current8_
== end8_
||
4768 current9_
== end9_
||
4769 current10_
== end10_
;
4772 // No implementation - assignment is unsupported.
4773 void operator=(const Iterator
& other
);
4775 const ParamGeneratorInterface
<ParamType
>* const base_
;
4776 // begin[i]_ and end[i]_ define the i-th range that Iterator traverses.
4777 // current[i]_ is the actual traversing iterator.
4778 const typename ParamGenerator
<T1
>::iterator begin1_
;
4779 const typename ParamGenerator
<T1
>::iterator end1_
;
4780 typename ParamGenerator
<T1
>::iterator current1_
;
4781 const typename ParamGenerator
<T2
>::iterator begin2_
;
4782 const typename ParamGenerator
<T2
>::iterator end2_
;
4783 typename ParamGenerator
<T2
>::iterator current2_
;
4784 const typename ParamGenerator
<T3
>::iterator begin3_
;
4785 const typename ParamGenerator
<T3
>::iterator end3_
;
4786 typename ParamGenerator
<T3
>::iterator current3_
;
4787 const typename ParamGenerator
<T4
>::iterator begin4_
;
4788 const typename ParamGenerator
<T4
>::iterator end4_
;
4789 typename ParamGenerator
<T4
>::iterator current4_
;
4790 const typename ParamGenerator
<T5
>::iterator begin5_
;
4791 const typename ParamGenerator
<T5
>::iterator end5_
;
4792 typename ParamGenerator
<T5
>::iterator current5_
;
4793 const typename ParamGenerator
<T6
>::iterator begin6_
;
4794 const typename ParamGenerator
<T6
>::iterator end6_
;
4795 typename ParamGenerator
<T6
>::iterator current6_
;
4796 const typename ParamGenerator
<T7
>::iterator begin7_
;
4797 const typename ParamGenerator
<T7
>::iterator end7_
;
4798 typename ParamGenerator
<T7
>::iterator current7_
;
4799 const typename ParamGenerator
<T8
>::iterator begin8_
;
4800 const typename ParamGenerator
<T8
>::iterator end8_
;
4801 typename ParamGenerator
<T8
>::iterator current8_
;
4802 const typename ParamGenerator
<T9
>::iterator begin9_
;
4803 const typename ParamGenerator
<T9
>::iterator end9_
;
4804 typename ParamGenerator
<T9
>::iterator current9_
;
4805 const typename ParamGenerator
<T10
>::iterator begin10_
;
4806 const typename ParamGenerator
<T10
>::iterator end10_
;
4807 typename ParamGenerator
<T10
>::iterator current10_
;
4808 linked_ptr
<ParamType
> current_value_
;
4809 }; // class CartesianProductGenerator10::Iterator
4811 // No implementation - assignment is unsupported.
4812 void operator=(const CartesianProductGenerator10
& other
);
4814 const ParamGenerator
<T1
> g1_
;
4815 const ParamGenerator
<T2
> g2_
;
4816 const ParamGenerator
<T3
> g3_
;
4817 const ParamGenerator
<T4
> g4_
;
4818 const ParamGenerator
<T5
> g5_
;
4819 const ParamGenerator
<T6
> g6_
;
4820 const ParamGenerator
<T7
> g7_
;
4821 const ParamGenerator
<T8
> g8_
;
4822 const ParamGenerator
<T9
> g9_
;
4823 const ParamGenerator
<T10
> g10_
;
4824 }; // class CartesianProductGenerator10
4827 // INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
4829 // Helper classes providing Combine() with polymorphic features. They allow
4830 // casting CartesianProductGeneratorN<T> to ParamGenerator<U> if T is
4831 // convertible to U.
4833 template <class Generator1
, class Generator2
>
4834 class CartesianProductHolder2
{
4836 CartesianProductHolder2(const Generator1
& g1
, const Generator2
& g2
)
4837 : g1_(g1
), g2_(g2
) {}
4838 template <typename T1
, typename T2
>
4839 operator ParamGenerator
< ::testing::tuple
<T1
, T2
> >() const {
4840 return ParamGenerator
< ::testing::tuple
<T1
, T2
> >(
4841 new CartesianProductGenerator2
<T1
, T2
>(
4842 static_cast<ParamGenerator
<T1
> >(g1_
),
4843 static_cast<ParamGenerator
<T2
> >(g2_
)));
4847 // No implementation - assignment is unsupported.
4848 void operator=(const CartesianProductHolder2
& other
);
4850 const Generator1 g1_
;
4851 const Generator2 g2_
;
4852 }; // class CartesianProductHolder2
4854 template <class Generator1
, class Generator2
, class Generator3
>
4855 class CartesianProductHolder3
{
4857 CartesianProductHolder3(const Generator1
& g1
, const Generator2
& g2
,
4858 const Generator3
& g3
)
4859 : g1_(g1
), g2_(g2
), g3_(g3
) {}
4860 template <typename T1
, typename T2
, typename T3
>
4861 operator ParamGenerator
< ::testing::tuple
<T1
, T2
, T3
> >() const {
4862 return ParamGenerator
< ::testing::tuple
<T1
, T2
, T3
> >(
4863 new CartesianProductGenerator3
<T1
, T2
, T3
>(
4864 static_cast<ParamGenerator
<T1
> >(g1_
),
4865 static_cast<ParamGenerator
<T2
> >(g2_
),
4866 static_cast<ParamGenerator
<T3
> >(g3_
)));
4870 // No implementation - assignment is unsupported.
4871 void operator=(const CartesianProductHolder3
& other
);
4873 const Generator1 g1_
;
4874 const Generator2 g2_
;
4875 const Generator3 g3_
;
4876 }; // class CartesianProductHolder3
4878 template <class Generator1
, class Generator2
, class Generator3
,
4880 class CartesianProductHolder4
{
4882 CartesianProductHolder4(const Generator1
& g1
, const Generator2
& g2
,
4883 const Generator3
& g3
, const Generator4
& g4
)
4884 : g1_(g1
), g2_(g2
), g3_(g3
), g4_(g4
) {}
4885 template <typename T1
, typename T2
, typename T3
, typename T4
>
4886 operator ParamGenerator
< ::testing::tuple
<T1
, T2
, T3
, T4
> >() const {
4887 return ParamGenerator
< ::testing::tuple
<T1
, T2
, T3
, T4
> >(
4888 new CartesianProductGenerator4
<T1
, T2
, T3
, T4
>(
4889 static_cast<ParamGenerator
<T1
> >(g1_
),
4890 static_cast<ParamGenerator
<T2
> >(g2_
),
4891 static_cast<ParamGenerator
<T3
> >(g3_
),
4892 static_cast<ParamGenerator
<T4
> >(g4_
)));
4896 // No implementation - assignment is unsupported.
4897 void operator=(const CartesianProductHolder4
& other
);
4899 const Generator1 g1_
;
4900 const Generator2 g2_
;
4901 const Generator3 g3_
;
4902 const Generator4 g4_
;
4903 }; // class CartesianProductHolder4
4905 template <class Generator1
, class Generator2
, class Generator3
,
4906 class Generator4
, class Generator5
>
4907 class CartesianProductHolder5
{
4909 CartesianProductHolder5(const Generator1
& g1
, const Generator2
& g2
,
4910 const Generator3
& g3
, const Generator4
& g4
, const Generator5
& g5
)
4911 : g1_(g1
), g2_(g2
), g3_(g3
), g4_(g4
), g5_(g5
) {}
4912 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
>
4913 operator ParamGenerator
< ::testing::tuple
<T1
, T2
, T3
, T4
, T5
> >() const {
4914 return ParamGenerator
< ::testing::tuple
<T1
, T2
, T3
, T4
, T5
> >(
4915 new CartesianProductGenerator5
<T1
, T2
, T3
, T4
, T5
>(
4916 static_cast<ParamGenerator
<T1
> >(g1_
),
4917 static_cast<ParamGenerator
<T2
> >(g2_
),
4918 static_cast<ParamGenerator
<T3
> >(g3_
),
4919 static_cast<ParamGenerator
<T4
> >(g4_
),
4920 static_cast<ParamGenerator
<T5
> >(g5_
)));
4924 // No implementation - assignment is unsupported.
4925 void operator=(const CartesianProductHolder5
& other
);
4927 const Generator1 g1_
;
4928 const Generator2 g2_
;
4929 const Generator3 g3_
;
4930 const Generator4 g4_
;
4931 const Generator5 g5_
;
4932 }; // class CartesianProductHolder5
4934 template <class Generator1
, class Generator2
, class Generator3
,
4935 class Generator4
, class Generator5
, class Generator6
>
4936 class CartesianProductHolder6
{
4938 CartesianProductHolder6(const Generator1
& g1
, const Generator2
& g2
,
4939 const Generator3
& g3
, const Generator4
& g4
, const Generator5
& g5
,
4940 const Generator6
& g6
)
4941 : g1_(g1
), g2_(g2
), g3_(g3
), g4_(g4
), g5_(g5
), g6_(g6
) {}
4942 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
4944 operator ParamGenerator
< ::testing::tuple
<T1
, T2
, T3
, T4
, T5
, T6
> >() const {
4945 return ParamGenerator
< ::testing::tuple
<T1
, T2
, T3
, T4
, T5
, T6
> >(
4946 new CartesianProductGenerator6
<T1
, T2
, T3
, T4
, T5
, T6
>(
4947 static_cast<ParamGenerator
<T1
> >(g1_
),
4948 static_cast<ParamGenerator
<T2
> >(g2_
),
4949 static_cast<ParamGenerator
<T3
> >(g3_
),
4950 static_cast<ParamGenerator
<T4
> >(g4_
),
4951 static_cast<ParamGenerator
<T5
> >(g5_
),
4952 static_cast<ParamGenerator
<T6
> >(g6_
)));
4956 // No implementation - assignment is unsupported.
4957 void operator=(const CartesianProductHolder6
& other
);
4959 const Generator1 g1_
;
4960 const Generator2 g2_
;
4961 const Generator3 g3_
;
4962 const Generator4 g4_
;
4963 const Generator5 g5_
;
4964 const Generator6 g6_
;
4965 }; // class CartesianProductHolder6
4967 template <class Generator1
, class Generator2
, class Generator3
,
4968 class Generator4
, class Generator5
, class Generator6
, class Generator7
>
4969 class CartesianProductHolder7
{
4971 CartesianProductHolder7(const Generator1
& g1
, const Generator2
& g2
,
4972 const Generator3
& g3
, const Generator4
& g4
, const Generator5
& g5
,
4973 const Generator6
& g6
, const Generator7
& g7
)
4974 : g1_(g1
), g2_(g2
), g3_(g3
), g4_(g4
), g5_(g5
), g6_(g6
), g7_(g7
) {}
4975 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
4976 typename T6
, typename T7
>
4977 operator ParamGenerator
< ::testing::tuple
<T1
, T2
, T3
, T4
, T5
, T6
,
4979 return ParamGenerator
< ::testing::tuple
<T1
, T2
, T3
, T4
, T5
, T6
, T7
> >(
4980 new CartesianProductGenerator7
<T1
, T2
, T3
, T4
, T5
, T6
, T7
>(
4981 static_cast<ParamGenerator
<T1
> >(g1_
),
4982 static_cast<ParamGenerator
<T2
> >(g2_
),
4983 static_cast<ParamGenerator
<T3
> >(g3_
),
4984 static_cast<ParamGenerator
<T4
> >(g4_
),
4985 static_cast<ParamGenerator
<T5
> >(g5_
),
4986 static_cast<ParamGenerator
<T6
> >(g6_
),
4987 static_cast<ParamGenerator
<T7
> >(g7_
)));
4991 // No implementation - assignment is unsupported.
4992 void operator=(const CartesianProductHolder7
& other
);
4994 const Generator1 g1_
;
4995 const Generator2 g2_
;
4996 const Generator3 g3_
;
4997 const Generator4 g4_
;
4998 const Generator5 g5_
;
4999 const Generator6 g6_
;
5000 const Generator7 g7_
;
5001 }; // class CartesianProductHolder7
5003 template <class Generator1
, class Generator2
, class Generator3
,
5004 class Generator4
, class Generator5
, class Generator6
, class Generator7
,
5006 class CartesianProductHolder8
{
5008 CartesianProductHolder8(const Generator1
& g1
, const Generator2
& g2
,
5009 const Generator3
& g3
, const Generator4
& g4
, const Generator5
& g5
,
5010 const Generator6
& g6
, const Generator7
& g7
, const Generator8
& g8
)
5011 : g1_(g1
), g2_(g2
), g3_(g3
), g4_(g4
), g5_(g5
), g6_(g6
), g7_(g7
),
5013 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
5014 typename T6
, typename T7
, typename T8
>
5015 operator ParamGenerator
< ::testing::tuple
<T1
, T2
, T3
, T4
, T5
, T6
, T7
,
5017 return ParamGenerator
< ::testing::tuple
<T1
, T2
, T3
, T4
, T5
, T6
, T7
, T8
> >(
5018 new CartesianProductGenerator8
<T1
, T2
, T3
, T4
, T5
, T6
, T7
, T8
>(
5019 static_cast<ParamGenerator
<T1
> >(g1_
),
5020 static_cast<ParamGenerator
<T2
> >(g2_
),
5021 static_cast<ParamGenerator
<T3
> >(g3_
),
5022 static_cast<ParamGenerator
<T4
> >(g4_
),
5023 static_cast<ParamGenerator
<T5
> >(g5_
),
5024 static_cast<ParamGenerator
<T6
> >(g6_
),
5025 static_cast<ParamGenerator
<T7
> >(g7_
),
5026 static_cast<ParamGenerator
<T8
> >(g8_
)));
5030 // No implementation - assignment is unsupported.
5031 void operator=(const CartesianProductHolder8
& other
);
5033 const Generator1 g1_
;
5034 const Generator2 g2_
;
5035 const Generator3 g3_
;
5036 const Generator4 g4_
;
5037 const Generator5 g5_
;
5038 const Generator6 g6_
;
5039 const Generator7 g7_
;
5040 const Generator8 g8_
;
5041 }; // class CartesianProductHolder8
5043 template <class Generator1
, class Generator2
, class Generator3
,
5044 class Generator4
, class Generator5
, class Generator6
, class Generator7
,
5045 class Generator8
, class Generator9
>
5046 class CartesianProductHolder9
{
5048 CartesianProductHolder9(const Generator1
& g1
, const Generator2
& g2
,
5049 const Generator3
& g3
, const Generator4
& g4
, const Generator5
& g5
,
5050 const Generator6
& g6
, const Generator7
& g7
, const Generator8
& g8
,
5051 const Generator9
& g9
)
5052 : g1_(g1
), g2_(g2
), g3_(g3
), g4_(g4
), g5_(g5
), g6_(g6
), g7_(g7
), g8_(g8
),
5054 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
5055 typename T6
, typename T7
, typename T8
, typename T9
>
5056 operator ParamGenerator
< ::testing::tuple
<T1
, T2
, T3
, T4
, T5
, T6
, T7
, T8
,
5058 return ParamGenerator
< ::testing::tuple
<T1
, T2
, T3
, T4
, T5
, T6
, T7
, T8
,
5060 new CartesianProductGenerator9
<T1
, T2
, T3
, T4
, T5
, T6
, T7
, T8
, T9
>(
5061 static_cast<ParamGenerator
<T1
> >(g1_
),
5062 static_cast<ParamGenerator
<T2
> >(g2_
),
5063 static_cast<ParamGenerator
<T3
> >(g3_
),
5064 static_cast<ParamGenerator
<T4
> >(g4_
),
5065 static_cast<ParamGenerator
<T5
> >(g5_
),
5066 static_cast<ParamGenerator
<T6
> >(g6_
),
5067 static_cast<ParamGenerator
<T7
> >(g7_
),
5068 static_cast<ParamGenerator
<T8
> >(g8_
),
5069 static_cast<ParamGenerator
<T9
> >(g9_
)));
5073 // No implementation - assignment is unsupported.
5074 void operator=(const CartesianProductHolder9
& other
);
5076 const Generator1 g1_
;
5077 const Generator2 g2_
;
5078 const Generator3 g3_
;
5079 const Generator4 g4_
;
5080 const Generator5 g5_
;
5081 const Generator6 g6_
;
5082 const Generator7 g7_
;
5083 const Generator8 g8_
;
5084 const Generator9 g9_
;
5085 }; // class CartesianProductHolder9
5087 template <class Generator1
, class Generator2
, class Generator3
,
5088 class Generator4
, class Generator5
, class Generator6
, class Generator7
,
5089 class Generator8
, class Generator9
, class Generator10
>
5090 class CartesianProductHolder10
{
5092 CartesianProductHolder10(const Generator1
& g1
, const Generator2
& g2
,
5093 const Generator3
& g3
, const Generator4
& g4
, const Generator5
& g5
,
5094 const Generator6
& g6
, const Generator7
& g7
, const Generator8
& g8
,
5095 const Generator9
& g9
, const Generator10
& g10
)
5096 : g1_(g1
), g2_(g2
), g3_(g3
), g4_(g4
), g5_(g5
), g6_(g6
), g7_(g7
), g8_(g8
),
5097 g9_(g9
), g10_(g10
) {}
5098 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
5099 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
>
5100 operator ParamGenerator
< ::testing::tuple
<T1
, T2
, T3
, T4
, T5
, T6
, T7
, T8
, T9
,
5102 return ParamGenerator
< ::testing::tuple
<T1
, T2
, T3
, T4
, T5
, T6
, T7
, T8
, T9
,
5104 new CartesianProductGenerator10
<T1
, T2
, T3
, T4
, T5
, T6
, T7
, T8
, T9
,
5106 static_cast<ParamGenerator
<T1
> >(g1_
),
5107 static_cast<ParamGenerator
<T2
> >(g2_
),
5108 static_cast<ParamGenerator
<T3
> >(g3_
),
5109 static_cast<ParamGenerator
<T4
> >(g4_
),
5110 static_cast<ParamGenerator
<T5
> >(g5_
),
5111 static_cast<ParamGenerator
<T6
> >(g6_
),
5112 static_cast<ParamGenerator
<T7
> >(g7_
),
5113 static_cast<ParamGenerator
<T8
> >(g8_
),
5114 static_cast<ParamGenerator
<T9
> >(g9_
),
5115 static_cast<ParamGenerator
<T10
> >(g10_
)));
5119 // No implementation - assignment is unsupported.
5120 void operator=(const CartesianProductHolder10
& other
);
5122 const Generator1 g1_
;
5123 const Generator2 g2_
;
5124 const Generator3 g3_
;
5125 const Generator4 g4_
;
5126 const Generator5 g5_
;
5127 const Generator6 g6_
;
5128 const Generator7 g7_
;
5129 const Generator8 g8_
;
5130 const Generator9 g9_
;
5131 const Generator10 g10_
;
5132 }; // class CartesianProductHolder10
5134 # endif // GTEST_HAS_COMBINE
5136 } // namespace internal
5137 } // namespace testing
5139 #endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_GENERATED_H_