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 // scripts/fuse_gtest.py depends on gtest's own header being #included
50 // *unconditionally*. Therefore these #includes cannot be moved
51 // inside #if GTEST_HAS_PARAM_TEST.
52 #include "gtest/internal/gtest-param-util.h"
53 #include "gtest/internal/gtest-port.h"
55 #if GTEST_HAS_PARAM_TEST
59 // Forward declarations of ValuesIn(), which is implemented in
60 // include/gtest/gtest-param-test.h.
61 template <typename ForwardIterator
>
62 internal::ParamGenerator
<
63 typename ::testing::internal::IteratorTraits
<ForwardIterator
>::value_type
>
64 ValuesIn(ForwardIterator begin
, ForwardIterator end
);
66 template <typename T
, size_t N
>
67 internal::ParamGenerator
<T
> ValuesIn(const T (&array
)[N
]);
69 template <class Container
>
70 internal::ParamGenerator
<typename
Container::value_type
> ValuesIn(
71 const Container
& container
);
75 // Used in the Values() function to provide polymorphic capabilities.
76 template <typename T1
>
79 explicit ValueArray1(T1 v1
) : v1_(v1
) {}
82 operator ParamGenerator
<T
>() const {
83 const T array
[] = {static_cast<T
>(v1_
)};
84 return ValuesIn(array
);
88 // No implementation - assignment is unsupported.
89 void operator=(const ValueArray1
& other
);
94 template <typename T1
, typename T2
>
97 ValueArray2(T1 v1
, T2 v2
) : v1_(v1
), v2_(v2
) {}
100 operator ParamGenerator
<T
>() const {
101 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
)};
102 return ValuesIn(array
);
106 // No implementation - assignment is unsupported.
107 void operator=(const ValueArray2
& other
);
113 template <typename T1
, typename T2
, typename T3
>
116 ValueArray3(T1 v1
, T2 v2
, T3 v3
) : v1_(v1
), v2_(v2
), v3_(v3
) {}
118 template <typename T
>
119 operator ParamGenerator
<T
>() const {
120 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
121 static_cast<T
>(v3_
)};
122 return ValuesIn(array
);
126 // No implementation - assignment is unsupported.
127 void operator=(const ValueArray3
& other
);
134 template <typename T1
, typename T2
, typename T3
, typename T4
>
137 ValueArray4(T1 v1
, T2 v2
, T3 v3
, T4 v4
) : v1_(v1
), v2_(v2
), v3_(v3
),
140 template <typename T
>
141 operator ParamGenerator
<T
>() const {
142 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
143 static_cast<T
>(v3_
), static_cast<T
>(v4_
)};
144 return ValuesIn(array
);
148 // No implementation - assignment is unsupported.
149 void operator=(const ValueArray4
& other
);
157 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
>
160 ValueArray5(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
) : v1_(v1
), v2_(v2
), v3_(v3
),
163 template <typename T
>
164 operator ParamGenerator
<T
>() const {
165 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
166 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
)};
167 return ValuesIn(array
);
171 // No implementation - assignment is unsupported.
172 void operator=(const ValueArray5
& other
);
181 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
185 ValueArray6(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
) : v1_(v1
), v2_(v2
),
186 v3_(v3
), v4_(v4
), v5_(v5
), v6_(v6
) {}
188 template <typename T
>
189 operator ParamGenerator
<T
>() const {
190 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
191 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
192 static_cast<T
>(v6_
)};
193 return ValuesIn(array
);
197 // No implementation - assignment is unsupported.
198 void operator=(const ValueArray6
& other
);
208 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
209 typename T6
, typename T7
>
212 ValueArray7(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
) : v1_(v1
),
213 v2_(v2
), v3_(v3
), v4_(v4
), v5_(v5
), v6_(v6
), v7_(v7
) {}
215 template <typename T
>
216 operator ParamGenerator
<T
>() const {
217 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
218 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
219 static_cast<T
>(v6_
), static_cast<T
>(v7_
)};
220 return ValuesIn(array
);
224 // No implementation - assignment is unsupported.
225 void operator=(const ValueArray7
& other
);
236 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
237 typename T6
, typename T7
, typename T8
>
240 ValueArray8(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
,
241 T8 v8
) : v1_(v1
), v2_(v2
), v3_(v3
), v4_(v4
), v5_(v5
), v6_(v6
), v7_(v7
),
244 template <typename T
>
245 operator ParamGenerator
<T
>() const {
246 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
247 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
248 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
)};
249 return ValuesIn(array
);
253 // No implementation - assignment is unsupported.
254 void operator=(const ValueArray8
& other
);
266 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
267 typename T6
, typename T7
, typename T8
, typename T9
>
270 ValueArray9(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
,
271 T9 v9
) : v1_(v1
), v2_(v2
), v3_(v3
), v4_(v4
), v5_(v5
), v6_(v6
), v7_(v7
),
274 template <typename T
>
275 operator ParamGenerator
<T
>() const {
276 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
277 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
278 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
279 static_cast<T
>(v9_
)};
280 return ValuesIn(array
);
284 // No implementation - assignment is unsupported.
285 void operator=(const ValueArray9
& other
);
298 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
299 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
>
302 ValueArray10(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
303 T10 v10
) : v1_(v1
), v2_(v2
), v3_(v3
), v4_(v4
), v5_(v5
), v6_(v6
), v7_(v7
),
304 v8_(v8
), v9_(v9
), v10_(v10
) {}
306 template <typename T
>
307 operator ParamGenerator
<T
>() const {
308 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
309 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
310 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
311 static_cast<T
>(v9_
), static_cast<T
>(v10_
)};
312 return ValuesIn(array
);
316 // No implementation - assignment is unsupported.
317 void operator=(const ValueArray10
& other
);
331 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
332 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
336 ValueArray11(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
337 T10 v10
, T11 v11
) : v1_(v1
), v2_(v2
), v3_(v3
), v4_(v4
), v5_(v5
), v6_(v6
),
338 v7_(v7
), v8_(v8
), v9_(v9
), v10_(v10
), v11_(v11
) {}
340 template <typename T
>
341 operator ParamGenerator
<T
>() const {
342 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
343 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
344 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
345 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
)};
346 return ValuesIn(array
);
350 // No implementation - assignment is unsupported.
351 void operator=(const ValueArray11
& other
);
366 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
367 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
368 typename T11
, typename T12
>
371 ValueArray12(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
372 T10 v10
, T11 v11
, T12 v12
) : v1_(v1
), v2_(v2
), v3_(v3
), v4_(v4
), v5_(v5
),
373 v6_(v6
), v7_(v7
), v8_(v8
), v9_(v9
), v10_(v10
), v11_(v11
), v12_(v12
) {}
375 template <typename T
>
376 operator ParamGenerator
<T
>() const {
377 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
378 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
379 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
380 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
),
381 static_cast<T
>(v12_
)};
382 return ValuesIn(array
);
386 // No implementation - assignment is unsupported.
387 void operator=(const ValueArray12
& other
);
403 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
404 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
405 typename T11
, typename T12
, typename T13
>
408 ValueArray13(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
409 T10 v10
, T11 v11
, T12 v12
, T13 v13
) : v1_(v1
), v2_(v2
), v3_(v3
), v4_(v4
),
410 v5_(v5
), v6_(v6
), v7_(v7
), v8_(v8
), v9_(v9
), v10_(v10
), v11_(v11
),
411 v12_(v12
), v13_(v13
) {}
413 template <typename T
>
414 operator ParamGenerator
<T
>() const {
415 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
416 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
417 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
418 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
),
419 static_cast<T
>(v12_
), static_cast<T
>(v13_
)};
420 return ValuesIn(array
);
424 // No implementation - assignment is unsupported.
425 void operator=(const ValueArray13
& other
);
442 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
443 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
444 typename T11
, typename T12
, typename T13
, typename T14
>
447 ValueArray14(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
448 T10 v10
, T11 v11
, T12 v12
, T13 v13
, T14 v14
) : v1_(v1
), v2_(v2
), v3_(v3
),
449 v4_(v4
), v5_(v5
), v6_(v6
), v7_(v7
), v8_(v8
), v9_(v9
), v10_(v10
),
450 v11_(v11
), v12_(v12
), v13_(v13
), v14_(v14
) {}
452 template <typename T
>
453 operator ParamGenerator
<T
>() const {
454 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
455 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
456 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
457 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
),
458 static_cast<T
>(v12_
), static_cast<T
>(v13_
), static_cast<T
>(v14_
)};
459 return ValuesIn(array
);
463 // No implementation - assignment is unsupported.
464 void operator=(const ValueArray14
& other
);
482 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
483 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
484 typename T11
, typename T12
, typename T13
, typename T14
, typename T15
>
487 ValueArray15(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
488 T10 v10
, T11 v11
, T12 v12
, T13 v13
, T14 v14
, T15 v15
) : v1_(v1
), v2_(v2
),
489 v3_(v3
), v4_(v4
), v5_(v5
), v6_(v6
), v7_(v7
), v8_(v8
), v9_(v9
), v10_(v10
),
490 v11_(v11
), v12_(v12
), v13_(v13
), v14_(v14
), v15_(v15
) {}
492 template <typename T
>
493 operator ParamGenerator
<T
>() const {
494 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
495 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
496 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
497 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
),
498 static_cast<T
>(v12_
), static_cast<T
>(v13_
), static_cast<T
>(v14_
),
499 static_cast<T
>(v15_
)};
500 return ValuesIn(array
);
504 // No implementation - assignment is unsupported.
505 void operator=(const ValueArray15
& other
);
524 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
525 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
526 typename T11
, typename T12
, typename T13
, typename T14
, typename T15
,
530 ValueArray16(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
531 T10 v10
, T11 v11
, T12 v12
, T13 v13
, T14 v14
, T15 v15
, T16 v16
) : v1_(v1
),
532 v2_(v2
), v3_(v3
), v4_(v4
), v5_(v5
), v6_(v6
), v7_(v7
), v8_(v8
), v9_(v9
),
533 v10_(v10
), v11_(v11
), v12_(v12
), v13_(v13
), v14_(v14
), v15_(v15
),
536 template <typename T
>
537 operator ParamGenerator
<T
>() const {
538 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
539 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
540 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
541 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
),
542 static_cast<T
>(v12_
), static_cast<T
>(v13_
), static_cast<T
>(v14_
),
543 static_cast<T
>(v15_
), static_cast<T
>(v16_
)};
544 return ValuesIn(array
);
548 // No implementation - assignment is unsupported.
549 void operator=(const ValueArray16
& other
);
569 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
570 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
571 typename T11
, typename T12
, typename T13
, typename T14
, typename T15
,
572 typename T16
, typename T17
>
575 ValueArray17(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
576 T10 v10
, T11 v11
, T12 v12
, T13 v13
, T14 v14
, T15 v15
, T16 v16
,
577 T17 v17
) : v1_(v1
), v2_(v2
), v3_(v3
), v4_(v4
), v5_(v5
), v6_(v6
), v7_(v7
),
578 v8_(v8
), v9_(v9
), v10_(v10
), v11_(v11
), v12_(v12
), v13_(v13
), v14_(v14
),
579 v15_(v15
), v16_(v16
), v17_(v17
) {}
581 template <typename T
>
582 operator ParamGenerator
<T
>() const {
583 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
584 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
585 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
586 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
),
587 static_cast<T
>(v12_
), static_cast<T
>(v13_
), static_cast<T
>(v14_
),
588 static_cast<T
>(v15_
), static_cast<T
>(v16_
), static_cast<T
>(v17_
)};
589 return ValuesIn(array
);
593 // No implementation - assignment is unsupported.
594 void operator=(const ValueArray17
& other
);
615 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
616 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
617 typename T11
, typename T12
, typename T13
, typename T14
, typename T15
,
618 typename T16
, typename T17
, typename T18
>
621 ValueArray18(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
622 T10 v10
, T11 v11
, T12 v12
, T13 v13
, T14 v14
, T15 v15
, T16 v16
, T17 v17
,
623 T18 v18
) : v1_(v1
), v2_(v2
), v3_(v3
), v4_(v4
), v5_(v5
), v6_(v6
), v7_(v7
),
624 v8_(v8
), v9_(v9
), v10_(v10
), v11_(v11
), v12_(v12
), v13_(v13
), v14_(v14
),
625 v15_(v15
), v16_(v16
), v17_(v17
), v18_(v18
) {}
627 template <typename T
>
628 operator ParamGenerator
<T
>() const {
629 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
630 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
631 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
632 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
),
633 static_cast<T
>(v12_
), static_cast<T
>(v13_
), static_cast<T
>(v14_
),
634 static_cast<T
>(v15_
), static_cast<T
>(v16_
), static_cast<T
>(v17_
),
635 static_cast<T
>(v18_
)};
636 return ValuesIn(array
);
640 // No implementation - assignment is unsupported.
641 void operator=(const ValueArray18
& other
);
663 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
664 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
665 typename T11
, typename T12
, typename T13
, typename T14
, typename T15
,
666 typename T16
, typename T17
, typename T18
, typename T19
>
669 ValueArray19(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
670 T10 v10
, T11 v11
, T12 v12
, T13 v13
, T14 v14
, T15 v15
, T16 v16
, T17 v17
,
671 T18 v18
, T19 v19
) : v1_(v1
), v2_(v2
), v3_(v3
), v4_(v4
), v5_(v5
), v6_(v6
),
672 v7_(v7
), v8_(v8
), v9_(v9
), v10_(v10
), v11_(v11
), v12_(v12
), v13_(v13
),
673 v14_(v14
), v15_(v15
), v16_(v16
), v17_(v17
), v18_(v18
), v19_(v19
) {}
675 template <typename T
>
676 operator ParamGenerator
<T
>() const {
677 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
678 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
679 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
680 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
),
681 static_cast<T
>(v12_
), static_cast<T
>(v13_
), static_cast<T
>(v14_
),
682 static_cast<T
>(v15_
), static_cast<T
>(v16_
), static_cast<T
>(v17_
),
683 static_cast<T
>(v18_
), static_cast<T
>(v19_
)};
684 return ValuesIn(array
);
688 // No implementation - assignment is unsupported.
689 void operator=(const ValueArray19
& other
);
712 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
713 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
714 typename T11
, typename T12
, typename T13
, typename T14
, typename T15
,
715 typename T16
, typename T17
, typename T18
, typename T19
, typename T20
>
718 ValueArray20(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
719 T10 v10
, T11 v11
, T12 v12
, T13 v13
, T14 v14
, T15 v15
, T16 v16
, T17 v17
,
720 T18 v18
, T19 v19
, T20 v20
) : v1_(v1
), v2_(v2
), v3_(v3
), v4_(v4
), v5_(v5
),
721 v6_(v6
), v7_(v7
), v8_(v8
), v9_(v9
), v10_(v10
), v11_(v11
), v12_(v12
),
722 v13_(v13
), v14_(v14
), v15_(v15
), v16_(v16
), v17_(v17
), v18_(v18
),
723 v19_(v19
), v20_(v20
) {}
725 template <typename T
>
726 operator ParamGenerator
<T
>() const {
727 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
728 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
729 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
730 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
),
731 static_cast<T
>(v12_
), static_cast<T
>(v13_
), static_cast<T
>(v14_
),
732 static_cast<T
>(v15_
), static_cast<T
>(v16_
), static_cast<T
>(v17_
),
733 static_cast<T
>(v18_
), static_cast<T
>(v19_
), static_cast<T
>(v20_
)};
734 return ValuesIn(array
);
738 // No implementation - assignment is unsupported.
739 void operator=(const ValueArray20
& other
);
763 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
764 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
765 typename T11
, typename T12
, typename T13
, typename T14
, typename T15
,
766 typename T16
, typename T17
, typename T18
, typename T19
, typename T20
,
770 ValueArray21(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
771 T10 v10
, T11 v11
, T12 v12
, T13 v13
, T14 v14
, T15 v15
, T16 v16
, T17 v17
,
772 T18 v18
, T19 v19
, T20 v20
, T21 v21
) : v1_(v1
), v2_(v2
), v3_(v3
), v4_(v4
),
773 v5_(v5
), v6_(v6
), v7_(v7
), v8_(v8
), v9_(v9
), v10_(v10
), v11_(v11
),
774 v12_(v12
), v13_(v13
), v14_(v14
), v15_(v15
), v16_(v16
), v17_(v17
),
775 v18_(v18
), v19_(v19
), v20_(v20
), v21_(v21
) {}
777 template <typename T
>
778 operator ParamGenerator
<T
>() const {
779 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
780 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
781 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
782 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
),
783 static_cast<T
>(v12_
), static_cast<T
>(v13_
), static_cast<T
>(v14_
),
784 static_cast<T
>(v15_
), static_cast<T
>(v16_
), static_cast<T
>(v17_
),
785 static_cast<T
>(v18_
), static_cast<T
>(v19_
), static_cast<T
>(v20_
),
786 static_cast<T
>(v21_
)};
787 return ValuesIn(array
);
791 // No implementation - assignment is unsupported.
792 void operator=(const ValueArray21
& other
);
817 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
818 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
819 typename T11
, typename T12
, typename T13
, typename T14
, typename T15
,
820 typename T16
, typename T17
, typename T18
, typename T19
, typename T20
,
821 typename T21
, typename T22
>
824 ValueArray22(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
825 T10 v10
, T11 v11
, T12 v12
, T13 v13
, T14 v14
, T15 v15
, T16 v16
, T17 v17
,
826 T18 v18
, T19 v19
, T20 v20
, T21 v21
, T22 v22
) : v1_(v1
), v2_(v2
), v3_(v3
),
827 v4_(v4
), v5_(v5
), v6_(v6
), v7_(v7
), v8_(v8
), v9_(v9
), v10_(v10
),
828 v11_(v11
), v12_(v12
), v13_(v13
), v14_(v14
), v15_(v15
), v16_(v16
),
829 v17_(v17
), v18_(v18
), v19_(v19
), v20_(v20
), v21_(v21
), v22_(v22
) {}
831 template <typename T
>
832 operator ParamGenerator
<T
>() const {
833 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
834 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
835 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
836 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
),
837 static_cast<T
>(v12_
), static_cast<T
>(v13_
), static_cast<T
>(v14_
),
838 static_cast<T
>(v15_
), static_cast<T
>(v16_
), static_cast<T
>(v17_
),
839 static_cast<T
>(v18_
), static_cast<T
>(v19_
), static_cast<T
>(v20_
),
840 static_cast<T
>(v21_
), static_cast<T
>(v22_
)};
841 return ValuesIn(array
);
845 // No implementation - assignment is unsupported.
846 void operator=(const ValueArray22
& other
);
872 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
873 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
874 typename T11
, typename T12
, typename T13
, typename T14
, typename T15
,
875 typename T16
, typename T17
, typename T18
, typename T19
, typename T20
,
876 typename T21
, typename T22
, typename T23
>
879 ValueArray23(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
880 T10 v10
, T11 v11
, T12 v12
, T13 v13
, T14 v14
, T15 v15
, T16 v16
, T17 v17
,
881 T18 v18
, T19 v19
, T20 v20
, T21 v21
, T22 v22
, T23 v23
) : v1_(v1
), v2_(v2
),
882 v3_(v3
), v4_(v4
), v5_(v5
), v6_(v6
), v7_(v7
), v8_(v8
), v9_(v9
), v10_(v10
),
883 v11_(v11
), v12_(v12
), v13_(v13
), v14_(v14
), v15_(v15
), v16_(v16
),
884 v17_(v17
), v18_(v18
), v19_(v19
), v20_(v20
), v21_(v21
), v22_(v22
),
887 template <typename T
>
888 operator ParamGenerator
<T
>() const {
889 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
890 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
891 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
892 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
),
893 static_cast<T
>(v12_
), static_cast<T
>(v13_
), static_cast<T
>(v14_
),
894 static_cast<T
>(v15_
), static_cast<T
>(v16_
), static_cast<T
>(v17_
),
895 static_cast<T
>(v18_
), static_cast<T
>(v19_
), static_cast<T
>(v20_
),
896 static_cast<T
>(v21_
), static_cast<T
>(v22_
), static_cast<T
>(v23_
)};
897 return ValuesIn(array
);
901 // No implementation - assignment is unsupported.
902 void operator=(const ValueArray23
& other
);
929 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
930 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
931 typename T11
, typename T12
, typename T13
, typename T14
, typename T15
,
932 typename T16
, typename T17
, typename T18
, typename T19
, typename T20
,
933 typename T21
, typename T22
, typename T23
, typename T24
>
936 ValueArray24(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
937 T10 v10
, T11 v11
, T12 v12
, T13 v13
, T14 v14
, T15 v15
, T16 v16
, T17 v17
,
938 T18 v18
, T19 v19
, T20 v20
, T21 v21
, T22 v22
, T23 v23
, T24 v24
) : v1_(v1
),
939 v2_(v2
), v3_(v3
), v4_(v4
), v5_(v5
), v6_(v6
), v7_(v7
), v8_(v8
), v9_(v9
),
940 v10_(v10
), v11_(v11
), v12_(v12
), v13_(v13
), v14_(v14
), v15_(v15
),
941 v16_(v16
), v17_(v17
), v18_(v18
), v19_(v19
), v20_(v20
), v21_(v21
),
942 v22_(v22
), v23_(v23
), v24_(v24
) {}
944 template <typename T
>
945 operator ParamGenerator
<T
>() const {
946 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
947 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
948 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
949 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
),
950 static_cast<T
>(v12_
), static_cast<T
>(v13_
), static_cast<T
>(v14_
),
951 static_cast<T
>(v15_
), static_cast<T
>(v16_
), static_cast<T
>(v17_
),
952 static_cast<T
>(v18_
), static_cast<T
>(v19_
), static_cast<T
>(v20_
),
953 static_cast<T
>(v21_
), static_cast<T
>(v22_
), static_cast<T
>(v23_
),
954 static_cast<T
>(v24_
)};
955 return ValuesIn(array
);
959 // No implementation - assignment is unsupported.
960 void operator=(const ValueArray24
& other
);
988 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
989 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
990 typename T11
, typename T12
, typename T13
, typename T14
, typename T15
,
991 typename T16
, typename T17
, typename T18
, typename T19
, typename T20
,
992 typename T21
, typename T22
, typename T23
, typename T24
, typename T25
>
995 ValueArray25(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
996 T10 v10
, T11 v11
, T12 v12
, T13 v13
, T14 v14
, T15 v15
, T16 v16
, T17 v17
,
997 T18 v18
, T19 v19
, T20 v20
, T21 v21
, T22 v22
, T23 v23
, T24 v24
,
998 T25 v25
) : v1_(v1
), v2_(v2
), v3_(v3
), v4_(v4
), v5_(v5
), v6_(v6
), v7_(v7
),
999 v8_(v8
), v9_(v9
), v10_(v10
), v11_(v11
), v12_(v12
), v13_(v13
), v14_(v14
),
1000 v15_(v15
), v16_(v16
), v17_(v17
), v18_(v18
), v19_(v19
), v20_(v20
),
1001 v21_(v21
), v22_(v22
), v23_(v23
), v24_(v24
), v25_(v25
) {}
1003 template <typename T
>
1004 operator ParamGenerator
<T
>() const {
1005 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
1006 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
1007 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
1008 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
),
1009 static_cast<T
>(v12_
), static_cast<T
>(v13_
), static_cast<T
>(v14_
),
1010 static_cast<T
>(v15_
), static_cast<T
>(v16_
), static_cast<T
>(v17_
),
1011 static_cast<T
>(v18_
), static_cast<T
>(v19_
), static_cast<T
>(v20_
),
1012 static_cast<T
>(v21_
), static_cast<T
>(v22_
), static_cast<T
>(v23_
),
1013 static_cast<T
>(v24_
), static_cast<T
>(v25_
)};
1014 return ValuesIn(array
);
1018 // No implementation - assignment is unsupported.
1019 void operator=(const ValueArray25
& other
);
1048 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
1049 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
1050 typename T11
, typename T12
, typename T13
, typename T14
, typename T15
,
1051 typename T16
, typename T17
, typename T18
, typename T19
, typename T20
,
1052 typename T21
, typename T22
, typename T23
, typename T24
, typename T25
,
1054 class ValueArray26
{
1056 ValueArray26(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
1057 T10 v10
, T11 v11
, T12 v12
, T13 v13
, T14 v14
, T15 v15
, T16 v16
, T17 v17
,
1058 T18 v18
, T19 v19
, T20 v20
, T21 v21
, T22 v22
, T23 v23
, T24 v24
, T25 v25
,
1059 T26 v26
) : v1_(v1
), v2_(v2
), v3_(v3
), v4_(v4
), v5_(v5
), v6_(v6
), v7_(v7
),
1060 v8_(v8
), v9_(v9
), v10_(v10
), v11_(v11
), v12_(v12
), v13_(v13
), v14_(v14
),
1061 v15_(v15
), v16_(v16
), v17_(v17
), v18_(v18
), v19_(v19
), v20_(v20
),
1062 v21_(v21
), v22_(v22
), v23_(v23
), v24_(v24
), v25_(v25
), v26_(v26
) {}
1064 template <typename T
>
1065 operator ParamGenerator
<T
>() const {
1066 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
1067 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
1068 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
1069 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
),
1070 static_cast<T
>(v12_
), static_cast<T
>(v13_
), static_cast<T
>(v14_
),
1071 static_cast<T
>(v15_
), static_cast<T
>(v16_
), static_cast<T
>(v17_
),
1072 static_cast<T
>(v18_
), static_cast<T
>(v19_
), static_cast<T
>(v20_
),
1073 static_cast<T
>(v21_
), static_cast<T
>(v22_
), static_cast<T
>(v23_
),
1074 static_cast<T
>(v24_
), static_cast<T
>(v25_
), static_cast<T
>(v26_
)};
1075 return ValuesIn(array
);
1079 // No implementation - assignment is unsupported.
1080 void operator=(const ValueArray26
& other
);
1110 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
1111 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
1112 typename T11
, typename T12
, typename T13
, typename T14
, typename T15
,
1113 typename T16
, typename T17
, typename T18
, typename T19
, typename T20
,
1114 typename T21
, typename T22
, typename T23
, typename T24
, typename T25
,
1115 typename T26
, typename T27
>
1116 class ValueArray27
{
1118 ValueArray27(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
1119 T10 v10
, T11 v11
, T12 v12
, T13 v13
, T14 v14
, T15 v15
, T16 v16
, T17 v17
,
1120 T18 v18
, T19 v19
, T20 v20
, T21 v21
, T22 v22
, T23 v23
, T24 v24
, T25 v25
,
1121 T26 v26
, T27 v27
) : v1_(v1
), v2_(v2
), v3_(v3
), v4_(v4
), v5_(v5
), v6_(v6
),
1122 v7_(v7
), v8_(v8
), v9_(v9
), v10_(v10
), v11_(v11
), v12_(v12
), v13_(v13
),
1123 v14_(v14
), v15_(v15
), v16_(v16
), v17_(v17
), v18_(v18
), v19_(v19
),
1124 v20_(v20
), v21_(v21
), v22_(v22
), v23_(v23
), v24_(v24
), v25_(v25
),
1125 v26_(v26
), v27_(v27
) {}
1127 template <typename T
>
1128 operator ParamGenerator
<T
>() const {
1129 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
1130 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
1131 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
1132 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
),
1133 static_cast<T
>(v12_
), static_cast<T
>(v13_
), static_cast<T
>(v14_
),
1134 static_cast<T
>(v15_
), static_cast<T
>(v16_
), static_cast<T
>(v17_
),
1135 static_cast<T
>(v18_
), static_cast<T
>(v19_
), static_cast<T
>(v20_
),
1136 static_cast<T
>(v21_
), static_cast<T
>(v22_
), static_cast<T
>(v23_
),
1137 static_cast<T
>(v24_
), static_cast<T
>(v25_
), static_cast<T
>(v26_
),
1138 static_cast<T
>(v27_
)};
1139 return ValuesIn(array
);
1143 // No implementation - assignment is unsupported.
1144 void operator=(const ValueArray27
& other
);
1175 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
1176 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
1177 typename T11
, typename T12
, typename T13
, typename T14
, typename T15
,
1178 typename T16
, typename T17
, typename T18
, typename T19
, typename T20
,
1179 typename T21
, typename T22
, typename T23
, typename T24
, typename T25
,
1180 typename T26
, typename T27
, typename T28
>
1181 class ValueArray28
{
1183 ValueArray28(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
1184 T10 v10
, T11 v11
, T12 v12
, T13 v13
, T14 v14
, T15 v15
, T16 v16
, T17 v17
,
1185 T18 v18
, T19 v19
, T20 v20
, T21 v21
, T22 v22
, T23 v23
, T24 v24
, T25 v25
,
1186 T26 v26
, T27 v27
, T28 v28
) : v1_(v1
), v2_(v2
), v3_(v3
), v4_(v4
), v5_(v5
),
1187 v6_(v6
), v7_(v7
), v8_(v8
), v9_(v9
), v10_(v10
), v11_(v11
), v12_(v12
),
1188 v13_(v13
), v14_(v14
), v15_(v15
), v16_(v16
), v17_(v17
), v18_(v18
),
1189 v19_(v19
), v20_(v20
), v21_(v21
), v22_(v22
), v23_(v23
), v24_(v24
),
1190 v25_(v25
), v26_(v26
), v27_(v27
), v28_(v28
) {}
1192 template <typename T
>
1193 operator ParamGenerator
<T
>() const {
1194 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
1195 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
1196 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
1197 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
),
1198 static_cast<T
>(v12_
), static_cast<T
>(v13_
), static_cast<T
>(v14_
),
1199 static_cast<T
>(v15_
), static_cast<T
>(v16_
), static_cast<T
>(v17_
),
1200 static_cast<T
>(v18_
), static_cast<T
>(v19_
), static_cast<T
>(v20_
),
1201 static_cast<T
>(v21_
), static_cast<T
>(v22_
), static_cast<T
>(v23_
),
1202 static_cast<T
>(v24_
), static_cast<T
>(v25_
), static_cast<T
>(v26_
),
1203 static_cast<T
>(v27_
), static_cast<T
>(v28_
)};
1204 return ValuesIn(array
);
1208 // No implementation - assignment is unsupported.
1209 void operator=(const ValueArray28
& other
);
1241 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
1242 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
1243 typename T11
, typename T12
, typename T13
, typename T14
, typename T15
,
1244 typename T16
, typename T17
, typename T18
, typename T19
, typename T20
,
1245 typename T21
, typename T22
, typename T23
, typename T24
, typename T25
,
1246 typename T26
, typename T27
, typename T28
, typename T29
>
1247 class ValueArray29
{
1249 ValueArray29(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
1250 T10 v10
, T11 v11
, T12 v12
, T13 v13
, T14 v14
, T15 v15
, T16 v16
, T17 v17
,
1251 T18 v18
, T19 v19
, T20 v20
, T21 v21
, T22 v22
, T23 v23
, T24 v24
, T25 v25
,
1252 T26 v26
, T27 v27
, T28 v28
, T29 v29
) : v1_(v1
), v2_(v2
), v3_(v3
), v4_(v4
),
1253 v5_(v5
), v6_(v6
), v7_(v7
), v8_(v8
), v9_(v9
), v10_(v10
), v11_(v11
),
1254 v12_(v12
), v13_(v13
), v14_(v14
), v15_(v15
), v16_(v16
), v17_(v17
),
1255 v18_(v18
), v19_(v19
), v20_(v20
), v21_(v21
), v22_(v22
), v23_(v23
),
1256 v24_(v24
), v25_(v25
), v26_(v26
), v27_(v27
), v28_(v28
), v29_(v29
) {}
1258 template <typename T
>
1259 operator ParamGenerator
<T
>() const {
1260 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
1261 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
1262 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
1263 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
),
1264 static_cast<T
>(v12_
), static_cast<T
>(v13_
), static_cast<T
>(v14_
),
1265 static_cast<T
>(v15_
), static_cast<T
>(v16_
), static_cast<T
>(v17_
),
1266 static_cast<T
>(v18_
), static_cast<T
>(v19_
), static_cast<T
>(v20_
),
1267 static_cast<T
>(v21_
), static_cast<T
>(v22_
), static_cast<T
>(v23_
),
1268 static_cast<T
>(v24_
), static_cast<T
>(v25_
), static_cast<T
>(v26_
),
1269 static_cast<T
>(v27_
), static_cast<T
>(v28_
), static_cast<T
>(v29_
)};
1270 return ValuesIn(array
);
1274 // No implementation - assignment is unsupported.
1275 void operator=(const ValueArray29
& other
);
1308 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
1309 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
1310 typename T11
, typename T12
, typename T13
, typename T14
, typename T15
,
1311 typename T16
, typename T17
, typename T18
, typename T19
, typename T20
,
1312 typename T21
, typename T22
, typename T23
, typename T24
, typename T25
,
1313 typename T26
, typename T27
, typename T28
, typename T29
, typename T30
>
1314 class ValueArray30
{
1316 ValueArray30(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
1317 T10 v10
, T11 v11
, T12 v12
, T13 v13
, T14 v14
, T15 v15
, T16 v16
, T17 v17
,
1318 T18 v18
, T19 v19
, T20 v20
, T21 v21
, T22 v22
, T23 v23
, T24 v24
, T25 v25
,
1319 T26 v26
, T27 v27
, T28 v28
, T29 v29
, T30 v30
) : v1_(v1
), v2_(v2
), v3_(v3
),
1320 v4_(v4
), v5_(v5
), v6_(v6
), v7_(v7
), v8_(v8
), v9_(v9
), v10_(v10
),
1321 v11_(v11
), v12_(v12
), v13_(v13
), v14_(v14
), v15_(v15
), v16_(v16
),
1322 v17_(v17
), v18_(v18
), v19_(v19
), v20_(v20
), v21_(v21
), v22_(v22
),
1323 v23_(v23
), v24_(v24
), v25_(v25
), v26_(v26
), v27_(v27
), v28_(v28
),
1324 v29_(v29
), v30_(v30
) {}
1326 template <typename T
>
1327 operator ParamGenerator
<T
>() const {
1328 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
1329 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
1330 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
1331 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
),
1332 static_cast<T
>(v12_
), static_cast<T
>(v13_
), static_cast<T
>(v14_
),
1333 static_cast<T
>(v15_
), static_cast<T
>(v16_
), static_cast<T
>(v17_
),
1334 static_cast<T
>(v18_
), static_cast<T
>(v19_
), static_cast<T
>(v20_
),
1335 static_cast<T
>(v21_
), static_cast<T
>(v22_
), static_cast<T
>(v23_
),
1336 static_cast<T
>(v24_
), static_cast<T
>(v25_
), static_cast<T
>(v26_
),
1337 static_cast<T
>(v27_
), static_cast<T
>(v28_
), static_cast<T
>(v29_
),
1338 static_cast<T
>(v30_
)};
1339 return ValuesIn(array
);
1343 // No implementation - assignment is unsupported.
1344 void operator=(const ValueArray30
& other
);
1378 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
1379 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
1380 typename T11
, typename T12
, typename T13
, typename T14
, typename T15
,
1381 typename T16
, typename T17
, typename T18
, typename T19
, typename T20
,
1382 typename T21
, typename T22
, typename T23
, typename T24
, typename T25
,
1383 typename T26
, typename T27
, typename T28
, typename T29
, typename T30
,
1385 class ValueArray31
{
1387 ValueArray31(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
1388 T10 v10
, T11 v11
, T12 v12
, T13 v13
, T14 v14
, T15 v15
, T16 v16
, T17 v17
,
1389 T18 v18
, T19 v19
, T20 v20
, T21 v21
, T22 v22
, T23 v23
, T24 v24
, T25 v25
,
1390 T26 v26
, T27 v27
, T28 v28
, T29 v29
, T30 v30
, T31 v31
) : v1_(v1
), v2_(v2
),
1391 v3_(v3
), v4_(v4
), v5_(v5
), v6_(v6
), v7_(v7
), v8_(v8
), v9_(v9
), v10_(v10
),
1392 v11_(v11
), v12_(v12
), v13_(v13
), v14_(v14
), v15_(v15
), v16_(v16
),
1393 v17_(v17
), v18_(v18
), v19_(v19
), v20_(v20
), v21_(v21
), v22_(v22
),
1394 v23_(v23
), v24_(v24
), v25_(v25
), v26_(v26
), v27_(v27
), v28_(v28
),
1395 v29_(v29
), v30_(v30
), v31_(v31
) {}
1397 template <typename T
>
1398 operator ParamGenerator
<T
>() const {
1399 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
1400 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
1401 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
1402 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
),
1403 static_cast<T
>(v12_
), static_cast<T
>(v13_
), static_cast<T
>(v14_
),
1404 static_cast<T
>(v15_
), static_cast<T
>(v16_
), static_cast<T
>(v17_
),
1405 static_cast<T
>(v18_
), static_cast<T
>(v19_
), static_cast<T
>(v20_
),
1406 static_cast<T
>(v21_
), static_cast<T
>(v22_
), static_cast<T
>(v23_
),
1407 static_cast<T
>(v24_
), static_cast<T
>(v25_
), static_cast<T
>(v26_
),
1408 static_cast<T
>(v27_
), static_cast<T
>(v28_
), static_cast<T
>(v29_
),
1409 static_cast<T
>(v30_
), static_cast<T
>(v31_
)};
1410 return ValuesIn(array
);
1414 // No implementation - assignment is unsupported.
1415 void operator=(const ValueArray31
& other
);
1450 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
1451 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
1452 typename T11
, typename T12
, typename T13
, typename T14
, typename T15
,
1453 typename T16
, typename T17
, typename T18
, typename T19
, typename T20
,
1454 typename T21
, typename T22
, typename T23
, typename T24
, typename T25
,
1455 typename T26
, typename T27
, typename T28
, typename T29
, typename T30
,
1456 typename T31
, typename T32
>
1457 class ValueArray32
{
1459 ValueArray32(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
1460 T10 v10
, T11 v11
, T12 v12
, T13 v13
, T14 v14
, T15 v15
, T16 v16
, T17 v17
,
1461 T18 v18
, T19 v19
, T20 v20
, T21 v21
, T22 v22
, T23 v23
, T24 v24
, T25 v25
,
1462 T26 v26
, T27 v27
, T28 v28
, T29 v29
, T30 v30
, T31 v31
, T32 v32
) : v1_(v1
),
1463 v2_(v2
), v3_(v3
), v4_(v4
), v5_(v5
), v6_(v6
), v7_(v7
), v8_(v8
), v9_(v9
),
1464 v10_(v10
), v11_(v11
), v12_(v12
), v13_(v13
), v14_(v14
), v15_(v15
),
1465 v16_(v16
), v17_(v17
), v18_(v18
), v19_(v19
), v20_(v20
), v21_(v21
),
1466 v22_(v22
), v23_(v23
), v24_(v24
), v25_(v25
), v26_(v26
), v27_(v27
),
1467 v28_(v28
), v29_(v29
), v30_(v30
), v31_(v31
), v32_(v32
) {}
1469 template <typename T
>
1470 operator ParamGenerator
<T
>() const {
1471 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
1472 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
1473 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
1474 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
),
1475 static_cast<T
>(v12_
), static_cast<T
>(v13_
), static_cast<T
>(v14_
),
1476 static_cast<T
>(v15_
), static_cast<T
>(v16_
), static_cast<T
>(v17_
),
1477 static_cast<T
>(v18_
), static_cast<T
>(v19_
), static_cast<T
>(v20_
),
1478 static_cast<T
>(v21_
), static_cast<T
>(v22_
), static_cast<T
>(v23_
),
1479 static_cast<T
>(v24_
), static_cast<T
>(v25_
), static_cast<T
>(v26_
),
1480 static_cast<T
>(v27_
), static_cast<T
>(v28_
), static_cast<T
>(v29_
),
1481 static_cast<T
>(v30_
), static_cast<T
>(v31_
), static_cast<T
>(v32_
)};
1482 return ValuesIn(array
);
1486 // No implementation - assignment is unsupported.
1487 void operator=(const ValueArray32
& other
);
1523 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
1524 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
1525 typename T11
, typename T12
, typename T13
, typename T14
, typename T15
,
1526 typename T16
, typename T17
, typename T18
, typename T19
, typename T20
,
1527 typename T21
, typename T22
, typename T23
, typename T24
, typename T25
,
1528 typename T26
, typename T27
, typename T28
, typename T29
, typename T30
,
1529 typename T31
, typename T32
, typename T33
>
1530 class ValueArray33
{
1532 ValueArray33(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
1533 T10 v10
, T11 v11
, T12 v12
, T13 v13
, T14 v14
, T15 v15
, T16 v16
, T17 v17
,
1534 T18 v18
, T19 v19
, T20 v20
, T21 v21
, T22 v22
, T23 v23
, T24 v24
, T25 v25
,
1535 T26 v26
, T27 v27
, T28 v28
, T29 v29
, T30 v30
, T31 v31
, T32 v32
,
1536 T33 v33
) : v1_(v1
), v2_(v2
), v3_(v3
), v4_(v4
), v5_(v5
), v6_(v6
), v7_(v7
),
1537 v8_(v8
), v9_(v9
), v10_(v10
), v11_(v11
), v12_(v12
), v13_(v13
), v14_(v14
),
1538 v15_(v15
), v16_(v16
), v17_(v17
), v18_(v18
), v19_(v19
), v20_(v20
),
1539 v21_(v21
), v22_(v22
), v23_(v23
), v24_(v24
), v25_(v25
), v26_(v26
),
1540 v27_(v27
), v28_(v28
), v29_(v29
), v30_(v30
), v31_(v31
), v32_(v32
),
1543 template <typename T
>
1544 operator ParamGenerator
<T
>() const {
1545 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
1546 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
1547 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
1548 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
),
1549 static_cast<T
>(v12_
), static_cast<T
>(v13_
), static_cast<T
>(v14_
),
1550 static_cast<T
>(v15_
), static_cast<T
>(v16_
), static_cast<T
>(v17_
),
1551 static_cast<T
>(v18_
), static_cast<T
>(v19_
), static_cast<T
>(v20_
),
1552 static_cast<T
>(v21_
), static_cast<T
>(v22_
), static_cast<T
>(v23_
),
1553 static_cast<T
>(v24_
), static_cast<T
>(v25_
), static_cast<T
>(v26_
),
1554 static_cast<T
>(v27_
), static_cast<T
>(v28_
), static_cast<T
>(v29_
),
1555 static_cast<T
>(v30_
), static_cast<T
>(v31_
), static_cast<T
>(v32_
),
1556 static_cast<T
>(v33_
)};
1557 return ValuesIn(array
);
1561 // No implementation - assignment is unsupported.
1562 void operator=(const ValueArray33
& other
);
1599 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
1600 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
1601 typename T11
, typename T12
, typename T13
, typename T14
, typename T15
,
1602 typename T16
, typename T17
, typename T18
, typename T19
, typename T20
,
1603 typename T21
, typename T22
, typename T23
, typename T24
, typename T25
,
1604 typename T26
, typename T27
, typename T28
, typename T29
, typename T30
,
1605 typename T31
, typename T32
, typename T33
, typename T34
>
1606 class ValueArray34
{
1608 ValueArray34(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
1609 T10 v10
, T11 v11
, T12 v12
, T13 v13
, T14 v14
, T15 v15
, T16 v16
, T17 v17
,
1610 T18 v18
, T19 v19
, T20 v20
, T21 v21
, T22 v22
, T23 v23
, T24 v24
, T25 v25
,
1611 T26 v26
, T27 v27
, T28 v28
, T29 v29
, T30 v30
, T31 v31
, T32 v32
, T33 v33
,
1612 T34 v34
) : v1_(v1
), v2_(v2
), v3_(v3
), v4_(v4
), v5_(v5
), v6_(v6
), v7_(v7
),
1613 v8_(v8
), v9_(v9
), v10_(v10
), v11_(v11
), v12_(v12
), v13_(v13
), v14_(v14
),
1614 v15_(v15
), v16_(v16
), v17_(v17
), v18_(v18
), v19_(v19
), v20_(v20
),
1615 v21_(v21
), v22_(v22
), v23_(v23
), v24_(v24
), v25_(v25
), v26_(v26
),
1616 v27_(v27
), v28_(v28
), v29_(v29
), v30_(v30
), v31_(v31
), v32_(v32
),
1617 v33_(v33
), v34_(v34
) {}
1619 template <typename T
>
1620 operator ParamGenerator
<T
>() const {
1621 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
1622 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
1623 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
1624 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
),
1625 static_cast<T
>(v12_
), static_cast<T
>(v13_
), static_cast<T
>(v14_
),
1626 static_cast<T
>(v15_
), static_cast<T
>(v16_
), static_cast<T
>(v17_
),
1627 static_cast<T
>(v18_
), static_cast<T
>(v19_
), static_cast<T
>(v20_
),
1628 static_cast<T
>(v21_
), static_cast<T
>(v22_
), static_cast<T
>(v23_
),
1629 static_cast<T
>(v24_
), static_cast<T
>(v25_
), static_cast<T
>(v26_
),
1630 static_cast<T
>(v27_
), static_cast<T
>(v28_
), static_cast<T
>(v29_
),
1631 static_cast<T
>(v30_
), static_cast<T
>(v31_
), static_cast<T
>(v32_
),
1632 static_cast<T
>(v33_
), static_cast<T
>(v34_
)};
1633 return ValuesIn(array
);
1637 // No implementation - assignment is unsupported.
1638 void operator=(const ValueArray34
& other
);
1676 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
1677 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
1678 typename T11
, typename T12
, typename T13
, typename T14
, typename T15
,
1679 typename T16
, typename T17
, typename T18
, typename T19
, typename T20
,
1680 typename T21
, typename T22
, typename T23
, typename T24
, typename T25
,
1681 typename T26
, typename T27
, typename T28
, typename T29
, typename T30
,
1682 typename T31
, typename T32
, typename T33
, typename T34
, typename T35
>
1683 class ValueArray35
{
1685 ValueArray35(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
1686 T10 v10
, T11 v11
, T12 v12
, T13 v13
, T14 v14
, T15 v15
, T16 v16
, T17 v17
,
1687 T18 v18
, T19 v19
, T20 v20
, T21 v21
, T22 v22
, T23 v23
, T24 v24
, T25 v25
,
1688 T26 v26
, T27 v27
, T28 v28
, T29 v29
, T30 v30
, T31 v31
, T32 v32
, T33 v33
,
1689 T34 v34
, T35 v35
) : v1_(v1
), v2_(v2
), v3_(v3
), v4_(v4
), v5_(v5
), v6_(v6
),
1690 v7_(v7
), v8_(v8
), v9_(v9
), v10_(v10
), v11_(v11
), v12_(v12
), v13_(v13
),
1691 v14_(v14
), v15_(v15
), v16_(v16
), v17_(v17
), v18_(v18
), v19_(v19
),
1692 v20_(v20
), v21_(v21
), v22_(v22
), v23_(v23
), v24_(v24
), v25_(v25
),
1693 v26_(v26
), v27_(v27
), v28_(v28
), v29_(v29
), v30_(v30
), v31_(v31
),
1694 v32_(v32
), v33_(v33
), v34_(v34
), v35_(v35
) {}
1696 template <typename T
>
1697 operator ParamGenerator
<T
>() const {
1698 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
1699 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
1700 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
1701 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
),
1702 static_cast<T
>(v12_
), static_cast<T
>(v13_
), static_cast<T
>(v14_
),
1703 static_cast<T
>(v15_
), static_cast<T
>(v16_
), static_cast<T
>(v17_
),
1704 static_cast<T
>(v18_
), static_cast<T
>(v19_
), static_cast<T
>(v20_
),
1705 static_cast<T
>(v21_
), static_cast<T
>(v22_
), static_cast<T
>(v23_
),
1706 static_cast<T
>(v24_
), static_cast<T
>(v25_
), static_cast<T
>(v26_
),
1707 static_cast<T
>(v27_
), static_cast<T
>(v28_
), static_cast<T
>(v29_
),
1708 static_cast<T
>(v30_
), static_cast<T
>(v31_
), static_cast<T
>(v32_
),
1709 static_cast<T
>(v33_
), static_cast<T
>(v34_
), static_cast<T
>(v35_
)};
1710 return ValuesIn(array
);
1714 // No implementation - assignment is unsupported.
1715 void operator=(const ValueArray35
& other
);
1754 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
1755 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
1756 typename T11
, typename T12
, typename T13
, typename T14
, typename T15
,
1757 typename T16
, typename T17
, typename T18
, typename T19
, typename T20
,
1758 typename T21
, typename T22
, typename T23
, typename T24
, typename T25
,
1759 typename T26
, typename T27
, typename T28
, typename T29
, typename T30
,
1760 typename T31
, typename T32
, typename T33
, typename T34
, typename T35
,
1762 class ValueArray36
{
1764 ValueArray36(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
1765 T10 v10
, T11 v11
, T12 v12
, T13 v13
, T14 v14
, T15 v15
, T16 v16
, T17 v17
,
1766 T18 v18
, T19 v19
, T20 v20
, T21 v21
, T22 v22
, T23 v23
, T24 v24
, T25 v25
,
1767 T26 v26
, T27 v27
, T28 v28
, T29 v29
, T30 v30
, T31 v31
, T32 v32
, T33 v33
,
1768 T34 v34
, T35 v35
, T36 v36
) : v1_(v1
), v2_(v2
), v3_(v3
), v4_(v4
), v5_(v5
),
1769 v6_(v6
), v7_(v7
), v8_(v8
), v9_(v9
), v10_(v10
), v11_(v11
), v12_(v12
),
1770 v13_(v13
), v14_(v14
), v15_(v15
), v16_(v16
), v17_(v17
), v18_(v18
),
1771 v19_(v19
), v20_(v20
), v21_(v21
), v22_(v22
), v23_(v23
), v24_(v24
),
1772 v25_(v25
), v26_(v26
), v27_(v27
), v28_(v28
), v29_(v29
), v30_(v30
),
1773 v31_(v31
), v32_(v32
), v33_(v33
), v34_(v34
), v35_(v35
), v36_(v36
) {}
1775 template <typename T
>
1776 operator ParamGenerator
<T
>() const {
1777 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
1778 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
1779 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
1780 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
),
1781 static_cast<T
>(v12_
), static_cast<T
>(v13_
), static_cast<T
>(v14_
),
1782 static_cast<T
>(v15_
), static_cast<T
>(v16_
), static_cast<T
>(v17_
),
1783 static_cast<T
>(v18_
), static_cast<T
>(v19_
), static_cast<T
>(v20_
),
1784 static_cast<T
>(v21_
), static_cast<T
>(v22_
), static_cast<T
>(v23_
),
1785 static_cast<T
>(v24_
), static_cast<T
>(v25_
), static_cast<T
>(v26_
),
1786 static_cast<T
>(v27_
), static_cast<T
>(v28_
), static_cast<T
>(v29_
),
1787 static_cast<T
>(v30_
), static_cast<T
>(v31_
), static_cast<T
>(v32_
),
1788 static_cast<T
>(v33_
), static_cast<T
>(v34_
), static_cast<T
>(v35_
),
1789 static_cast<T
>(v36_
)};
1790 return ValuesIn(array
);
1794 // No implementation - assignment is unsupported.
1795 void operator=(const ValueArray36
& other
);
1835 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
1836 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
1837 typename T11
, typename T12
, typename T13
, typename T14
, typename T15
,
1838 typename T16
, typename T17
, typename T18
, typename T19
, typename T20
,
1839 typename T21
, typename T22
, typename T23
, typename T24
, typename T25
,
1840 typename T26
, typename T27
, typename T28
, typename T29
, typename T30
,
1841 typename T31
, typename T32
, typename T33
, typename T34
, typename T35
,
1842 typename T36
, typename T37
>
1843 class ValueArray37
{
1845 ValueArray37(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
1846 T10 v10
, T11 v11
, T12 v12
, T13 v13
, T14 v14
, T15 v15
, T16 v16
, T17 v17
,
1847 T18 v18
, T19 v19
, T20 v20
, T21 v21
, T22 v22
, T23 v23
, T24 v24
, T25 v25
,
1848 T26 v26
, T27 v27
, T28 v28
, T29 v29
, T30 v30
, T31 v31
, T32 v32
, T33 v33
,
1849 T34 v34
, T35 v35
, T36 v36
, T37 v37
) : v1_(v1
), v2_(v2
), v3_(v3
), v4_(v4
),
1850 v5_(v5
), v6_(v6
), v7_(v7
), v8_(v8
), v9_(v9
), v10_(v10
), v11_(v11
),
1851 v12_(v12
), v13_(v13
), v14_(v14
), v15_(v15
), v16_(v16
), v17_(v17
),
1852 v18_(v18
), v19_(v19
), v20_(v20
), v21_(v21
), v22_(v22
), v23_(v23
),
1853 v24_(v24
), v25_(v25
), v26_(v26
), v27_(v27
), v28_(v28
), v29_(v29
),
1854 v30_(v30
), v31_(v31
), v32_(v32
), v33_(v33
), v34_(v34
), v35_(v35
),
1855 v36_(v36
), v37_(v37
) {}
1857 template <typename T
>
1858 operator ParamGenerator
<T
>() const {
1859 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
1860 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
1861 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
1862 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
),
1863 static_cast<T
>(v12_
), static_cast<T
>(v13_
), static_cast<T
>(v14_
),
1864 static_cast<T
>(v15_
), static_cast<T
>(v16_
), static_cast<T
>(v17_
),
1865 static_cast<T
>(v18_
), static_cast<T
>(v19_
), static_cast<T
>(v20_
),
1866 static_cast<T
>(v21_
), static_cast<T
>(v22_
), static_cast<T
>(v23_
),
1867 static_cast<T
>(v24_
), static_cast<T
>(v25_
), static_cast<T
>(v26_
),
1868 static_cast<T
>(v27_
), static_cast<T
>(v28_
), static_cast<T
>(v29_
),
1869 static_cast<T
>(v30_
), static_cast<T
>(v31_
), static_cast<T
>(v32_
),
1870 static_cast<T
>(v33_
), static_cast<T
>(v34_
), static_cast<T
>(v35_
),
1871 static_cast<T
>(v36_
), static_cast<T
>(v37_
)};
1872 return ValuesIn(array
);
1876 // No implementation - assignment is unsupported.
1877 void operator=(const ValueArray37
& other
);
1918 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
1919 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
1920 typename T11
, typename T12
, typename T13
, typename T14
, typename T15
,
1921 typename T16
, typename T17
, typename T18
, typename T19
, typename T20
,
1922 typename T21
, typename T22
, typename T23
, typename T24
, typename T25
,
1923 typename T26
, typename T27
, typename T28
, typename T29
, typename T30
,
1924 typename T31
, typename T32
, typename T33
, typename T34
, typename T35
,
1925 typename T36
, typename T37
, typename T38
>
1926 class ValueArray38
{
1928 ValueArray38(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
1929 T10 v10
, T11 v11
, T12 v12
, T13 v13
, T14 v14
, T15 v15
, T16 v16
, T17 v17
,
1930 T18 v18
, T19 v19
, T20 v20
, T21 v21
, T22 v22
, T23 v23
, T24 v24
, T25 v25
,
1931 T26 v26
, T27 v27
, T28 v28
, T29 v29
, T30 v30
, T31 v31
, T32 v32
, T33 v33
,
1932 T34 v34
, T35 v35
, T36 v36
, T37 v37
, T38 v38
) : v1_(v1
), v2_(v2
), v3_(v3
),
1933 v4_(v4
), v5_(v5
), v6_(v6
), v7_(v7
), v8_(v8
), v9_(v9
), v10_(v10
),
1934 v11_(v11
), v12_(v12
), v13_(v13
), v14_(v14
), v15_(v15
), v16_(v16
),
1935 v17_(v17
), v18_(v18
), v19_(v19
), v20_(v20
), v21_(v21
), v22_(v22
),
1936 v23_(v23
), v24_(v24
), v25_(v25
), v26_(v26
), v27_(v27
), v28_(v28
),
1937 v29_(v29
), v30_(v30
), v31_(v31
), v32_(v32
), v33_(v33
), v34_(v34
),
1938 v35_(v35
), v36_(v36
), v37_(v37
), v38_(v38
) {}
1940 template <typename T
>
1941 operator ParamGenerator
<T
>() const {
1942 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
1943 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
1944 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
1945 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
),
1946 static_cast<T
>(v12_
), static_cast<T
>(v13_
), static_cast<T
>(v14_
),
1947 static_cast<T
>(v15_
), static_cast<T
>(v16_
), static_cast<T
>(v17_
),
1948 static_cast<T
>(v18_
), static_cast<T
>(v19_
), static_cast<T
>(v20_
),
1949 static_cast<T
>(v21_
), static_cast<T
>(v22_
), static_cast<T
>(v23_
),
1950 static_cast<T
>(v24_
), static_cast<T
>(v25_
), static_cast<T
>(v26_
),
1951 static_cast<T
>(v27_
), static_cast<T
>(v28_
), static_cast<T
>(v29_
),
1952 static_cast<T
>(v30_
), static_cast<T
>(v31_
), static_cast<T
>(v32_
),
1953 static_cast<T
>(v33_
), static_cast<T
>(v34_
), static_cast<T
>(v35_
),
1954 static_cast<T
>(v36_
), static_cast<T
>(v37_
), static_cast<T
>(v38_
)};
1955 return ValuesIn(array
);
1959 // No implementation - assignment is unsupported.
1960 void operator=(const ValueArray38
& other
);
2002 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
2003 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
2004 typename T11
, typename T12
, typename T13
, typename T14
, typename T15
,
2005 typename T16
, typename T17
, typename T18
, typename T19
, typename T20
,
2006 typename T21
, typename T22
, typename T23
, typename T24
, typename T25
,
2007 typename T26
, typename T27
, typename T28
, typename T29
, typename T30
,
2008 typename T31
, typename T32
, typename T33
, typename T34
, typename T35
,
2009 typename T36
, typename T37
, typename T38
, typename T39
>
2010 class ValueArray39
{
2012 ValueArray39(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
2013 T10 v10
, T11 v11
, T12 v12
, T13 v13
, T14 v14
, T15 v15
, T16 v16
, T17 v17
,
2014 T18 v18
, T19 v19
, T20 v20
, T21 v21
, T22 v22
, T23 v23
, T24 v24
, T25 v25
,
2015 T26 v26
, T27 v27
, T28 v28
, T29 v29
, T30 v30
, T31 v31
, T32 v32
, T33 v33
,
2016 T34 v34
, T35 v35
, T36 v36
, T37 v37
, T38 v38
, T39 v39
) : v1_(v1
), v2_(v2
),
2017 v3_(v3
), v4_(v4
), v5_(v5
), v6_(v6
), v7_(v7
), v8_(v8
), v9_(v9
), v10_(v10
),
2018 v11_(v11
), v12_(v12
), v13_(v13
), v14_(v14
), v15_(v15
), v16_(v16
),
2019 v17_(v17
), v18_(v18
), v19_(v19
), v20_(v20
), v21_(v21
), v22_(v22
),
2020 v23_(v23
), v24_(v24
), v25_(v25
), v26_(v26
), v27_(v27
), v28_(v28
),
2021 v29_(v29
), v30_(v30
), v31_(v31
), v32_(v32
), v33_(v33
), v34_(v34
),
2022 v35_(v35
), v36_(v36
), v37_(v37
), v38_(v38
), v39_(v39
) {}
2024 template <typename T
>
2025 operator ParamGenerator
<T
>() const {
2026 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
2027 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
2028 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
2029 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
),
2030 static_cast<T
>(v12_
), static_cast<T
>(v13_
), static_cast<T
>(v14_
),
2031 static_cast<T
>(v15_
), static_cast<T
>(v16_
), static_cast<T
>(v17_
),
2032 static_cast<T
>(v18_
), static_cast<T
>(v19_
), static_cast<T
>(v20_
),
2033 static_cast<T
>(v21_
), static_cast<T
>(v22_
), static_cast<T
>(v23_
),
2034 static_cast<T
>(v24_
), static_cast<T
>(v25_
), static_cast<T
>(v26_
),
2035 static_cast<T
>(v27_
), static_cast<T
>(v28_
), static_cast<T
>(v29_
),
2036 static_cast<T
>(v30_
), static_cast<T
>(v31_
), static_cast<T
>(v32_
),
2037 static_cast<T
>(v33_
), static_cast<T
>(v34_
), static_cast<T
>(v35_
),
2038 static_cast<T
>(v36_
), static_cast<T
>(v37_
), static_cast<T
>(v38_
),
2039 static_cast<T
>(v39_
)};
2040 return ValuesIn(array
);
2044 // No implementation - assignment is unsupported.
2045 void operator=(const ValueArray39
& other
);
2088 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
2089 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
2090 typename T11
, typename T12
, typename T13
, typename T14
, typename T15
,
2091 typename T16
, typename T17
, typename T18
, typename T19
, typename T20
,
2092 typename T21
, typename T22
, typename T23
, typename T24
, typename T25
,
2093 typename T26
, typename T27
, typename T28
, typename T29
, typename T30
,
2094 typename T31
, typename T32
, typename T33
, typename T34
, typename T35
,
2095 typename T36
, typename T37
, typename T38
, typename T39
, typename T40
>
2096 class ValueArray40
{
2098 ValueArray40(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
2099 T10 v10
, T11 v11
, T12 v12
, T13 v13
, T14 v14
, T15 v15
, T16 v16
, T17 v17
,
2100 T18 v18
, T19 v19
, T20 v20
, T21 v21
, T22 v22
, T23 v23
, T24 v24
, T25 v25
,
2101 T26 v26
, T27 v27
, T28 v28
, T29 v29
, T30 v30
, T31 v31
, T32 v32
, T33 v33
,
2102 T34 v34
, T35 v35
, T36 v36
, T37 v37
, T38 v38
, T39 v39
, T40 v40
) : v1_(v1
),
2103 v2_(v2
), v3_(v3
), v4_(v4
), v5_(v5
), v6_(v6
), v7_(v7
), v8_(v8
), v9_(v9
),
2104 v10_(v10
), v11_(v11
), v12_(v12
), v13_(v13
), v14_(v14
), v15_(v15
),
2105 v16_(v16
), v17_(v17
), v18_(v18
), v19_(v19
), v20_(v20
), v21_(v21
),
2106 v22_(v22
), v23_(v23
), v24_(v24
), v25_(v25
), v26_(v26
), v27_(v27
),
2107 v28_(v28
), v29_(v29
), v30_(v30
), v31_(v31
), v32_(v32
), v33_(v33
),
2108 v34_(v34
), v35_(v35
), v36_(v36
), v37_(v37
), v38_(v38
), v39_(v39
),
2111 template <typename T
>
2112 operator ParamGenerator
<T
>() const {
2113 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
2114 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
2115 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
2116 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
),
2117 static_cast<T
>(v12_
), static_cast<T
>(v13_
), static_cast<T
>(v14_
),
2118 static_cast<T
>(v15_
), static_cast<T
>(v16_
), static_cast<T
>(v17_
),
2119 static_cast<T
>(v18_
), static_cast<T
>(v19_
), static_cast<T
>(v20_
),
2120 static_cast<T
>(v21_
), static_cast<T
>(v22_
), static_cast<T
>(v23_
),
2121 static_cast<T
>(v24_
), static_cast<T
>(v25_
), static_cast<T
>(v26_
),
2122 static_cast<T
>(v27_
), static_cast<T
>(v28_
), static_cast<T
>(v29_
),
2123 static_cast<T
>(v30_
), static_cast<T
>(v31_
), static_cast<T
>(v32_
),
2124 static_cast<T
>(v33_
), static_cast<T
>(v34_
), static_cast<T
>(v35_
),
2125 static_cast<T
>(v36_
), static_cast<T
>(v37_
), static_cast<T
>(v38_
),
2126 static_cast<T
>(v39_
), static_cast<T
>(v40_
)};
2127 return ValuesIn(array
);
2131 // No implementation - assignment is unsupported.
2132 void operator=(const ValueArray40
& other
);
2176 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
2177 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
2178 typename T11
, typename T12
, typename T13
, typename T14
, typename T15
,
2179 typename T16
, typename T17
, typename T18
, typename T19
, typename T20
,
2180 typename T21
, typename T22
, typename T23
, typename T24
, typename T25
,
2181 typename T26
, typename T27
, typename T28
, typename T29
, typename T30
,
2182 typename T31
, typename T32
, typename T33
, typename T34
, typename T35
,
2183 typename T36
, typename T37
, typename T38
, typename T39
, typename T40
,
2185 class ValueArray41
{
2187 ValueArray41(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
2188 T10 v10
, T11 v11
, T12 v12
, T13 v13
, T14 v14
, T15 v15
, T16 v16
, T17 v17
,
2189 T18 v18
, T19 v19
, T20 v20
, T21 v21
, T22 v22
, T23 v23
, T24 v24
, T25 v25
,
2190 T26 v26
, T27 v27
, T28 v28
, T29 v29
, T30 v30
, T31 v31
, T32 v32
, T33 v33
,
2191 T34 v34
, T35 v35
, T36 v36
, T37 v37
, T38 v38
, T39 v39
, T40 v40
,
2192 T41 v41
) : v1_(v1
), v2_(v2
), v3_(v3
), v4_(v4
), v5_(v5
), v6_(v6
), v7_(v7
),
2193 v8_(v8
), v9_(v9
), v10_(v10
), v11_(v11
), v12_(v12
), v13_(v13
), v14_(v14
),
2194 v15_(v15
), v16_(v16
), v17_(v17
), v18_(v18
), v19_(v19
), v20_(v20
),
2195 v21_(v21
), v22_(v22
), v23_(v23
), v24_(v24
), v25_(v25
), v26_(v26
),
2196 v27_(v27
), v28_(v28
), v29_(v29
), v30_(v30
), v31_(v31
), v32_(v32
),
2197 v33_(v33
), v34_(v34
), v35_(v35
), v36_(v36
), v37_(v37
), v38_(v38
),
2198 v39_(v39
), v40_(v40
), v41_(v41
) {}
2200 template <typename T
>
2201 operator ParamGenerator
<T
>() const {
2202 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
2203 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
2204 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
2205 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
),
2206 static_cast<T
>(v12_
), static_cast<T
>(v13_
), static_cast<T
>(v14_
),
2207 static_cast<T
>(v15_
), static_cast<T
>(v16_
), static_cast<T
>(v17_
),
2208 static_cast<T
>(v18_
), static_cast<T
>(v19_
), static_cast<T
>(v20_
),
2209 static_cast<T
>(v21_
), static_cast<T
>(v22_
), static_cast<T
>(v23_
),
2210 static_cast<T
>(v24_
), static_cast<T
>(v25_
), static_cast<T
>(v26_
),
2211 static_cast<T
>(v27_
), static_cast<T
>(v28_
), static_cast<T
>(v29_
),
2212 static_cast<T
>(v30_
), static_cast<T
>(v31_
), static_cast<T
>(v32_
),
2213 static_cast<T
>(v33_
), static_cast<T
>(v34_
), static_cast<T
>(v35_
),
2214 static_cast<T
>(v36_
), static_cast<T
>(v37_
), static_cast<T
>(v38_
),
2215 static_cast<T
>(v39_
), static_cast<T
>(v40_
), static_cast<T
>(v41_
)};
2216 return ValuesIn(array
);
2220 // No implementation - assignment is unsupported.
2221 void operator=(const ValueArray41
& other
);
2266 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
2267 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
2268 typename T11
, typename T12
, typename T13
, typename T14
, typename T15
,
2269 typename T16
, typename T17
, typename T18
, typename T19
, typename T20
,
2270 typename T21
, typename T22
, typename T23
, typename T24
, typename T25
,
2271 typename T26
, typename T27
, typename T28
, typename T29
, typename T30
,
2272 typename T31
, typename T32
, typename T33
, typename T34
, typename T35
,
2273 typename T36
, typename T37
, typename T38
, typename T39
, typename T40
,
2274 typename T41
, typename T42
>
2275 class ValueArray42
{
2277 ValueArray42(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
2278 T10 v10
, T11 v11
, T12 v12
, T13 v13
, T14 v14
, T15 v15
, T16 v16
, T17 v17
,
2279 T18 v18
, T19 v19
, T20 v20
, T21 v21
, T22 v22
, T23 v23
, T24 v24
, T25 v25
,
2280 T26 v26
, T27 v27
, T28 v28
, T29 v29
, T30 v30
, T31 v31
, T32 v32
, T33 v33
,
2281 T34 v34
, T35 v35
, T36 v36
, T37 v37
, T38 v38
, T39 v39
, T40 v40
, T41 v41
,
2282 T42 v42
) : v1_(v1
), v2_(v2
), v3_(v3
), v4_(v4
), v5_(v5
), v6_(v6
), v7_(v7
),
2283 v8_(v8
), v9_(v9
), v10_(v10
), v11_(v11
), v12_(v12
), v13_(v13
), v14_(v14
),
2284 v15_(v15
), v16_(v16
), v17_(v17
), v18_(v18
), v19_(v19
), v20_(v20
),
2285 v21_(v21
), v22_(v22
), v23_(v23
), v24_(v24
), v25_(v25
), v26_(v26
),
2286 v27_(v27
), v28_(v28
), v29_(v29
), v30_(v30
), v31_(v31
), v32_(v32
),
2287 v33_(v33
), v34_(v34
), v35_(v35
), v36_(v36
), v37_(v37
), v38_(v38
),
2288 v39_(v39
), v40_(v40
), v41_(v41
), v42_(v42
) {}
2290 template <typename T
>
2291 operator ParamGenerator
<T
>() const {
2292 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
2293 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
2294 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
2295 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
),
2296 static_cast<T
>(v12_
), static_cast<T
>(v13_
), static_cast<T
>(v14_
),
2297 static_cast<T
>(v15_
), static_cast<T
>(v16_
), static_cast<T
>(v17_
),
2298 static_cast<T
>(v18_
), static_cast<T
>(v19_
), static_cast<T
>(v20_
),
2299 static_cast<T
>(v21_
), static_cast<T
>(v22_
), static_cast<T
>(v23_
),
2300 static_cast<T
>(v24_
), static_cast<T
>(v25_
), static_cast<T
>(v26_
),
2301 static_cast<T
>(v27_
), static_cast<T
>(v28_
), static_cast<T
>(v29_
),
2302 static_cast<T
>(v30_
), static_cast<T
>(v31_
), static_cast<T
>(v32_
),
2303 static_cast<T
>(v33_
), static_cast<T
>(v34_
), static_cast<T
>(v35_
),
2304 static_cast<T
>(v36_
), static_cast<T
>(v37_
), static_cast<T
>(v38_
),
2305 static_cast<T
>(v39_
), static_cast<T
>(v40_
), static_cast<T
>(v41_
),
2306 static_cast<T
>(v42_
)};
2307 return ValuesIn(array
);
2311 // No implementation - assignment is unsupported.
2312 void operator=(const ValueArray42
& other
);
2358 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
2359 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
2360 typename T11
, typename T12
, typename T13
, typename T14
, typename T15
,
2361 typename T16
, typename T17
, typename T18
, typename T19
, typename T20
,
2362 typename T21
, typename T22
, typename T23
, typename T24
, typename T25
,
2363 typename T26
, typename T27
, typename T28
, typename T29
, typename T30
,
2364 typename T31
, typename T32
, typename T33
, typename T34
, typename T35
,
2365 typename T36
, typename T37
, typename T38
, typename T39
, typename T40
,
2366 typename T41
, typename T42
, typename T43
>
2367 class ValueArray43
{
2369 ValueArray43(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
2370 T10 v10
, T11 v11
, T12 v12
, T13 v13
, T14 v14
, T15 v15
, T16 v16
, T17 v17
,
2371 T18 v18
, T19 v19
, T20 v20
, T21 v21
, T22 v22
, T23 v23
, T24 v24
, T25 v25
,
2372 T26 v26
, T27 v27
, T28 v28
, T29 v29
, T30 v30
, T31 v31
, T32 v32
, T33 v33
,
2373 T34 v34
, T35 v35
, T36 v36
, T37 v37
, T38 v38
, T39 v39
, T40 v40
, T41 v41
,
2374 T42 v42
, T43 v43
) : v1_(v1
), v2_(v2
), v3_(v3
), v4_(v4
), v5_(v5
), v6_(v6
),
2375 v7_(v7
), v8_(v8
), v9_(v9
), v10_(v10
), v11_(v11
), v12_(v12
), v13_(v13
),
2376 v14_(v14
), v15_(v15
), v16_(v16
), v17_(v17
), v18_(v18
), v19_(v19
),
2377 v20_(v20
), v21_(v21
), v22_(v22
), v23_(v23
), v24_(v24
), v25_(v25
),
2378 v26_(v26
), v27_(v27
), v28_(v28
), v29_(v29
), v30_(v30
), v31_(v31
),
2379 v32_(v32
), v33_(v33
), v34_(v34
), v35_(v35
), v36_(v36
), v37_(v37
),
2380 v38_(v38
), v39_(v39
), v40_(v40
), v41_(v41
), v42_(v42
), v43_(v43
) {}
2382 template <typename T
>
2383 operator ParamGenerator
<T
>() const {
2384 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
2385 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
2386 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
2387 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
),
2388 static_cast<T
>(v12_
), static_cast<T
>(v13_
), static_cast<T
>(v14_
),
2389 static_cast<T
>(v15_
), static_cast<T
>(v16_
), static_cast<T
>(v17_
),
2390 static_cast<T
>(v18_
), static_cast<T
>(v19_
), static_cast<T
>(v20_
),
2391 static_cast<T
>(v21_
), static_cast<T
>(v22_
), static_cast<T
>(v23_
),
2392 static_cast<T
>(v24_
), static_cast<T
>(v25_
), static_cast<T
>(v26_
),
2393 static_cast<T
>(v27_
), static_cast<T
>(v28_
), static_cast<T
>(v29_
),
2394 static_cast<T
>(v30_
), static_cast<T
>(v31_
), static_cast<T
>(v32_
),
2395 static_cast<T
>(v33_
), static_cast<T
>(v34_
), static_cast<T
>(v35_
),
2396 static_cast<T
>(v36_
), static_cast<T
>(v37_
), static_cast<T
>(v38_
),
2397 static_cast<T
>(v39_
), static_cast<T
>(v40_
), static_cast<T
>(v41_
),
2398 static_cast<T
>(v42_
), static_cast<T
>(v43_
)};
2399 return ValuesIn(array
);
2403 // No implementation - assignment is unsupported.
2404 void operator=(const ValueArray43
& other
);
2451 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
2452 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
2453 typename T11
, typename T12
, typename T13
, typename T14
, typename T15
,
2454 typename T16
, typename T17
, typename T18
, typename T19
, typename T20
,
2455 typename T21
, typename T22
, typename T23
, typename T24
, typename T25
,
2456 typename T26
, typename T27
, typename T28
, typename T29
, typename T30
,
2457 typename T31
, typename T32
, typename T33
, typename T34
, typename T35
,
2458 typename T36
, typename T37
, typename T38
, typename T39
, typename T40
,
2459 typename T41
, typename T42
, typename T43
, typename T44
>
2460 class ValueArray44
{
2462 ValueArray44(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
2463 T10 v10
, T11 v11
, T12 v12
, T13 v13
, T14 v14
, T15 v15
, T16 v16
, T17 v17
,
2464 T18 v18
, T19 v19
, T20 v20
, T21 v21
, T22 v22
, T23 v23
, T24 v24
, T25 v25
,
2465 T26 v26
, T27 v27
, T28 v28
, T29 v29
, T30 v30
, T31 v31
, T32 v32
, T33 v33
,
2466 T34 v34
, T35 v35
, T36 v36
, T37 v37
, T38 v38
, T39 v39
, T40 v40
, T41 v41
,
2467 T42 v42
, T43 v43
, T44 v44
) : v1_(v1
), v2_(v2
), v3_(v3
), v4_(v4
), v5_(v5
),
2468 v6_(v6
), v7_(v7
), v8_(v8
), v9_(v9
), v10_(v10
), v11_(v11
), v12_(v12
),
2469 v13_(v13
), v14_(v14
), v15_(v15
), v16_(v16
), v17_(v17
), v18_(v18
),
2470 v19_(v19
), v20_(v20
), v21_(v21
), v22_(v22
), v23_(v23
), v24_(v24
),
2471 v25_(v25
), v26_(v26
), v27_(v27
), v28_(v28
), v29_(v29
), v30_(v30
),
2472 v31_(v31
), v32_(v32
), v33_(v33
), v34_(v34
), v35_(v35
), v36_(v36
),
2473 v37_(v37
), v38_(v38
), v39_(v39
), v40_(v40
), v41_(v41
), v42_(v42
),
2474 v43_(v43
), v44_(v44
) {}
2476 template <typename T
>
2477 operator ParamGenerator
<T
>() const {
2478 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
2479 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
2480 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
2481 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
),
2482 static_cast<T
>(v12_
), static_cast<T
>(v13_
), static_cast<T
>(v14_
),
2483 static_cast<T
>(v15_
), static_cast<T
>(v16_
), static_cast<T
>(v17_
),
2484 static_cast<T
>(v18_
), static_cast<T
>(v19_
), static_cast<T
>(v20_
),
2485 static_cast<T
>(v21_
), static_cast<T
>(v22_
), static_cast<T
>(v23_
),
2486 static_cast<T
>(v24_
), static_cast<T
>(v25_
), static_cast<T
>(v26_
),
2487 static_cast<T
>(v27_
), static_cast<T
>(v28_
), static_cast<T
>(v29_
),
2488 static_cast<T
>(v30_
), static_cast<T
>(v31_
), static_cast<T
>(v32_
),
2489 static_cast<T
>(v33_
), static_cast<T
>(v34_
), static_cast<T
>(v35_
),
2490 static_cast<T
>(v36_
), static_cast<T
>(v37_
), static_cast<T
>(v38_
),
2491 static_cast<T
>(v39_
), static_cast<T
>(v40_
), static_cast<T
>(v41_
),
2492 static_cast<T
>(v42_
), static_cast<T
>(v43_
), static_cast<T
>(v44_
)};
2493 return ValuesIn(array
);
2497 // No implementation - assignment is unsupported.
2498 void operator=(const ValueArray44
& other
);
2546 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
2547 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
2548 typename T11
, typename T12
, typename T13
, typename T14
, typename T15
,
2549 typename T16
, typename T17
, typename T18
, typename T19
, typename T20
,
2550 typename T21
, typename T22
, typename T23
, typename T24
, typename T25
,
2551 typename T26
, typename T27
, typename T28
, typename T29
, typename T30
,
2552 typename T31
, typename T32
, typename T33
, typename T34
, typename T35
,
2553 typename T36
, typename T37
, typename T38
, typename T39
, typename T40
,
2554 typename T41
, typename T42
, typename T43
, typename T44
, typename T45
>
2555 class ValueArray45
{
2557 ValueArray45(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
2558 T10 v10
, T11 v11
, T12 v12
, T13 v13
, T14 v14
, T15 v15
, T16 v16
, T17 v17
,
2559 T18 v18
, T19 v19
, T20 v20
, T21 v21
, T22 v22
, T23 v23
, T24 v24
, T25 v25
,
2560 T26 v26
, T27 v27
, T28 v28
, T29 v29
, T30 v30
, T31 v31
, T32 v32
, T33 v33
,
2561 T34 v34
, T35 v35
, T36 v36
, T37 v37
, T38 v38
, T39 v39
, T40 v40
, T41 v41
,
2562 T42 v42
, T43 v43
, T44 v44
, T45 v45
) : v1_(v1
), v2_(v2
), v3_(v3
), v4_(v4
),
2563 v5_(v5
), v6_(v6
), v7_(v7
), v8_(v8
), v9_(v9
), v10_(v10
), v11_(v11
),
2564 v12_(v12
), v13_(v13
), v14_(v14
), v15_(v15
), v16_(v16
), v17_(v17
),
2565 v18_(v18
), v19_(v19
), v20_(v20
), v21_(v21
), v22_(v22
), v23_(v23
),
2566 v24_(v24
), v25_(v25
), v26_(v26
), v27_(v27
), v28_(v28
), v29_(v29
),
2567 v30_(v30
), v31_(v31
), v32_(v32
), v33_(v33
), v34_(v34
), v35_(v35
),
2568 v36_(v36
), v37_(v37
), v38_(v38
), v39_(v39
), v40_(v40
), v41_(v41
),
2569 v42_(v42
), v43_(v43
), v44_(v44
), v45_(v45
) {}
2571 template <typename T
>
2572 operator ParamGenerator
<T
>() const {
2573 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
2574 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
2575 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
2576 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
),
2577 static_cast<T
>(v12_
), static_cast<T
>(v13_
), static_cast<T
>(v14_
),
2578 static_cast<T
>(v15_
), static_cast<T
>(v16_
), static_cast<T
>(v17_
),
2579 static_cast<T
>(v18_
), static_cast<T
>(v19_
), static_cast<T
>(v20_
),
2580 static_cast<T
>(v21_
), static_cast<T
>(v22_
), static_cast<T
>(v23_
),
2581 static_cast<T
>(v24_
), static_cast<T
>(v25_
), static_cast<T
>(v26_
),
2582 static_cast<T
>(v27_
), static_cast<T
>(v28_
), static_cast<T
>(v29_
),
2583 static_cast<T
>(v30_
), static_cast<T
>(v31_
), static_cast<T
>(v32_
),
2584 static_cast<T
>(v33_
), static_cast<T
>(v34_
), static_cast<T
>(v35_
),
2585 static_cast<T
>(v36_
), static_cast<T
>(v37_
), static_cast<T
>(v38_
),
2586 static_cast<T
>(v39_
), static_cast<T
>(v40_
), static_cast<T
>(v41_
),
2587 static_cast<T
>(v42_
), static_cast<T
>(v43_
), static_cast<T
>(v44_
),
2588 static_cast<T
>(v45_
)};
2589 return ValuesIn(array
);
2593 // No implementation - assignment is unsupported.
2594 void operator=(const ValueArray45
& other
);
2643 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
2644 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
2645 typename T11
, typename T12
, typename T13
, typename T14
, typename T15
,
2646 typename T16
, typename T17
, typename T18
, typename T19
, typename T20
,
2647 typename T21
, typename T22
, typename T23
, typename T24
, typename T25
,
2648 typename T26
, typename T27
, typename T28
, typename T29
, typename T30
,
2649 typename T31
, typename T32
, typename T33
, typename T34
, typename T35
,
2650 typename T36
, typename T37
, typename T38
, typename T39
, typename T40
,
2651 typename T41
, typename T42
, typename T43
, typename T44
, typename T45
,
2653 class ValueArray46
{
2655 ValueArray46(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
2656 T10 v10
, T11 v11
, T12 v12
, T13 v13
, T14 v14
, T15 v15
, T16 v16
, T17 v17
,
2657 T18 v18
, T19 v19
, T20 v20
, T21 v21
, T22 v22
, T23 v23
, T24 v24
, T25 v25
,
2658 T26 v26
, T27 v27
, T28 v28
, T29 v29
, T30 v30
, T31 v31
, T32 v32
, T33 v33
,
2659 T34 v34
, T35 v35
, T36 v36
, T37 v37
, T38 v38
, T39 v39
, T40 v40
, T41 v41
,
2660 T42 v42
, T43 v43
, T44 v44
, T45 v45
, T46 v46
) : v1_(v1
), v2_(v2
), v3_(v3
),
2661 v4_(v4
), v5_(v5
), v6_(v6
), v7_(v7
), v8_(v8
), v9_(v9
), v10_(v10
),
2662 v11_(v11
), v12_(v12
), v13_(v13
), v14_(v14
), v15_(v15
), v16_(v16
),
2663 v17_(v17
), v18_(v18
), v19_(v19
), v20_(v20
), v21_(v21
), v22_(v22
),
2664 v23_(v23
), v24_(v24
), v25_(v25
), v26_(v26
), v27_(v27
), v28_(v28
),
2665 v29_(v29
), v30_(v30
), v31_(v31
), v32_(v32
), v33_(v33
), v34_(v34
),
2666 v35_(v35
), v36_(v36
), v37_(v37
), v38_(v38
), v39_(v39
), v40_(v40
),
2667 v41_(v41
), v42_(v42
), v43_(v43
), v44_(v44
), v45_(v45
), v46_(v46
) {}
2669 template <typename T
>
2670 operator ParamGenerator
<T
>() const {
2671 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
2672 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
2673 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
2674 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
),
2675 static_cast<T
>(v12_
), static_cast<T
>(v13_
), static_cast<T
>(v14_
),
2676 static_cast<T
>(v15_
), static_cast<T
>(v16_
), static_cast<T
>(v17_
),
2677 static_cast<T
>(v18_
), static_cast<T
>(v19_
), static_cast<T
>(v20_
),
2678 static_cast<T
>(v21_
), static_cast<T
>(v22_
), static_cast<T
>(v23_
),
2679 static_cast<T
>(v24_
), static_cast<T
>(v25_
), static_cast<T
>(v26_
),
2680 static_cast<T
>(v27_
), static_cast<T
>(v28_
), static_cast<T
>(v29_
),
2681 static_cast<T
>(v30_
), static_cast<T
>(v31_
), static_cast<T
>(v32_
),
2682 static_cast<T
>(v33_
), static_cast<T
>(v34_
), static_cast<T
>(v35_
),
2683 static_cast<T
>(v36_
), static_cast<T
>(v37_
), static_cast<T
>(v38_
),
2684 static_cast<T
>(v39_
), static_cast<T
>(v40_
), static_cast<T
>(v41_
),
2685 static_cast<T
>(v42_
), static_cast<T
>(v43_
), static_cast<T
>(v44_
),
2686 static_cast<T
>(v45_
), static_cast<T
>(v46_
)};
2687 return ValuesIn(array
);
2691 // No implementation - assignment is unsupported.
2692 void operator=(const ValueArray46
& other
);
2742 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
2743 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
2744 typename T11
, typename T12
, typename T13
, typename T14
, typename T15
,
2745 typename T16
, typename T17
, typename T18
, typename T19
, typename T20
,
2746 typename T21
, typename T22
, typename T23
, typename T24
, typename T25
,
2747 typename T26
, typename T27
, typename T28
, typename T29
, typename T30
,
2748 typename T31
, typename T32
, typename T33
, typename T34
, typename T35
,
2749 typename T36
, typename T37
, typename T38
, typename T39
, typename T40
,
2750 typename T41
, typename T42
, typename T43
, typename T44
, typename T45
,
2751 typename T46
, typename T47
>
2752 class ValueArray47
{
2754 ValueArray47(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
2755 T10 v10
, T11 v11
, T12 v12
, T13 v13
, T14 v14
, T15 v15
, T16 v16
, T17 v17
,
2756 T18 v18
, T19 v19
, T20 v20
, T21 v21
, T22 v22
, T23 v23
, T24 v24
, T25 v25
,
2757 T26 v26
, T27 v27
, T28 v28
, T29 v29
, T30 v30
, T31 v31
, T32 v32
, T33 v33
,
2758 T34 v34
, T35 v35
, T36 v36
, T37 v37
, T38 v38
, T39 v39
, T40 v40
, T41 v41
,
2759 T42 v42
, T43 v43
, T44 v44
, T45 v45
, T46 v46
, T47 v47
) : v1_(v1
), v2_(v2
),
2760 v3_(v3
), v4_(v4
), v5_(v5
), v6_(v6
), v7_(v7
), v8_(v8
), v9_(v9
), v10_(v10
),
2761 v11_(v11
), v12_(v12
), v13_(v13
), v14_(v14
), v15_(v15
), v16_(v16
),
2762 v17_(v17
), v18_(v18
), v19_(v19
), v20_(v20
), v21_(v21
), v22_(v22
),
2763 v23_(v23
), v24_(v24
), v25_(v25
), v26_(v26
), v27_(v27
), v28_(v28
),
2764 v29_(v29
), v30_(v30
), v31_(v31
), v32_(v32
), v33_(v33
), v34_(v34
),
2765 v35_(v35
), v36_(v36
), v37_(v37
), v38_(v38
), v39_(v39
), v40_(v40
),
2766 v41_(v41
), v42_(v42
), v43_(v43
), v44_(v44
), v45_(v45
), v46_(v46
),
2769 template <typename T
>
2770 operator ParamGenerator
<T
>() const {
2771 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
2772 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
2773 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
2774 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
),
2775 static_cast<T
>(v12_
), static_cast<T
>(v13_
), static_cast<T
>(v14_
),
2776 static_cast<T
>(v15_
), static_cast<T
>(v16_
), static_cast<T
>(v17_
),
2777 static_cast<T
>(v18_
), static_cast<T
>(v19_
), static_cast<T
>(v20_
),
2778 static_cast<T
>(v21_
), static_cast<T
>(v22_
), static_cast<T
>(v23_
),
2779 static_cast<T
>(v24_
), static_cast<T
>(v25_
), static_cast<T
>(v26_
),
2780 static_cast<T
>(v27_
), static_cast<T
>(v28_
), static_cast<T
>(v29_
),
2781 static_cast<T
>(v30_
), static_cast<T
>(v31_
), static_cast<T
>(v32_
),
2782 static_cast<T
>(v33_
), static_cast<T
>(v34_
), static_cast<T
>(v35_
),
2783 static_cast<T
>(v36_
), static_cast<T
>(v37_
), static_cast<T
>(v38_
),
2784 static_cast<T
>(v39_
), static_cast<T
>(v40_
), static_cast<T
>(v41_
),
2785 static_cast<T
>(v42_
), static_cast<T
>(v43_
), static_cast<T
>(v44_
),
2786 static_cast<T
>(v45_
), static_cast<T
>(v46_
), static_cast<T
>(v47_
)};
2787 return ValuesIn(array
);
2791 // No implementation - assignment is unsupported.
2792 void operator=(const ValueArray47
& other
);
2843 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
2844 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
2845 typename T11
, typename T12
, typename T13
, typename T14
, typename T15
,
2846 typename T16
, typename T17
, typename T18
, typename T19
, typename T20
,
2847 typename T21
, typename T22
, typename T23
, typename T24
, typename T25
,
2848 typename T26
, typename T27
, typename T28
, typename T29
, typename T30
,
2849 typename T31
, typename T32
, typename T33
, typename T34
, typename T35
,
2850 typename T36
, typename T37
, typename T38
, typename T39
, typename T40
,
2851 typename T41
, typename T42
, typename T43
, typename T44
, typename T45
,
2852 typename T46
, typename T47
, typename T48
>
2853 class ValueArray48
{
2855 ValueArray48(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
2856 T10 v10
, T11 v11
, T12 v12
, T13 v13
, T14 v14
, T15 v15
, T16 v16
, T17 v17
,
2857 T18 v18
, T19 v19
, T20 v20
, T21 v21
, T22 v22
, T23 v23
, T24 v24
, T25 v25
,
2858 T26 v26
, T27 v27
, T28 v28
, T29 v29
, T30 v30
, T31 v31
, T32 v32
, T33 v33
,
2859 T34 v34
, T35 v35
, T36 v36
, T37 v37
, T38 v38
, T39 v39
, T40 v40
, T41 v41
,
2860 T42 v42
, T43 v43
, T44 v44
, T45 v45
, T46 v46
, T47 v47
, T48 v48
) : v1_(v1
),
2861 v2_(v2
), v3_(v3
), v4_(v4
), v5_(v5
), v6_(v6
), v7_(v7
), v8_(v8
), v9_(v9
),
2862 v10_(v10
), v11_(v11
), v12_(v12
), v13_(v13
), v14_(v14
), v15_(v15
),
2863 v16_(v16
), v17_(v17
), v18_(v18
), v19_(v19
), v20_(v20
), v21_(v21
),
2864 v22_(v22
), v23_(v23
), v24_(v24
), v25_(v25
), v26_(v26
), v27_(v27
),
2865 v28_(v28
), v29_(v29
), v30_(v30
), v31_(v31
), v32_(v32
), v33_(v33
),
2866 v34_(v34
), v35_(v35
), v36_(v36
), v37_(v37
), v38_(v38
), v39_(v39
),
2867 v40_(v40
), v41_(v41
), v42_(v42
), v43_(v43
), v44_(v44
), v45_(v45
),
2868 v46_(v46
), v47_(v47
), v48_(v48
) {}
2870 template <typename T
>
2871 operator ParamGenerator
<T
>() const {
2872 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
2873 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
2874 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
2875 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
),
2876 static_cast<T
>(v12_
), static_cast<T
>(v13_
), static_cast<T
>(v14_
),
2877 static_cast<T
>(v15_
), static_cast<T
>(v16_
), static_cast<T
>(v17_
),
2878 static_cast<T
>(v18_
), static_cast<T
>(v19_
), static_cast<T
>(v20_
),
2879 static_cast<T
>(v21_
), static_cast<T
>(v22_
), static_cast<T
>(v23_
),
2880 static_cast<T
>(v24_
), static_cast<T
>(v25_
), static_cast<T
>(v26_
),
2881 static_cast<T
>(v27_
), static_cast<T
>(v28_
), static_cast<T
>(v29_
),
2882 static_cast<T
>(v30_
), static_cast<T
>(v31_
), static_cast<T
>(v32_
),
2883 static_cast<T
>(v33_
), static_cast<T
>(v34_
), static_cast<T
>(v35_
),
2884 static_cast<T
>(v36_
), static_cast<T
>(v37_
), static_cast<T
>(v38_
),
2885 static_cast<T
>(v39_
), static_cast<T
>(v40_
), static_cast<T
>(v41_
),
2886 static_cast<T
>(v42_
), static_cast<T
>(v43_
), static_cast<T
>(v44_
),
2887 static_cast<T
>(v45_
), static_cast<T
>(v46_
), static_cast<T
>(v47_
),
2888 static_cast<T
>(v48_
)};
2889 return ValuesIn(array
);
2893 // No implementation - assignment is unsupported.
2894 void operator=(const ValueArray48
& other
);
2946 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
2947 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
2948 typename T11
, typename T12
, typename T13
, typename T14
, typename T15
,
2949 typename T16
, typename T17
, typename T18
, typename T19
, typename T20
,
2950 typename T21
, typename T22
, typename T23
, typename T24
, typename T25
,
2951 typename T26
, typename T27
, typename T28
, typename T29
, typename T30
,
2952 typename T31
, typename T32
, typename T33
, typename T34
, typename T35
,
2953 typename T36
, typename T37
, typename T38
, typename T39
, typename T40
,
2954 typename T41
, typename T42
, typename T43
, typename T44
, typename T45
,
2955 typename T46
, typename T47
, typename T48
, typename T49
>
2956 class ValueArray49
{
2958 ValueArray49(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
2959 T10 v10
, T11 v11
, T12 v12
, T13 v13
, T14 v14
, T15 v15
, T16 v16
, T17 v17
,
2960 T18 v18
, T19 v19
, T20 v20
, T21 v21
, T22 v22
, T23 v23
, T24 v24
, T25 v25
,
2961 T26 v26
, T27 v27
, T28 v28
, T29 v29
, T30 v30
, T31 v31
, T32 v32
, T33 v33
,
2962 T34 v34
, T35 v35
, T36 v36
, T37 v37
, T38 v38
, T39 v39
, T40 v40
, T41 v41
,
2963 T42 v42
, T43 v43
, T44 v44
, T45 v45
, T46 v46
, T47 v47
, T48 v48
,
2964 T49 v49
) : v1_(v1
), v2_(v2
), v3_(v3
), v4_(v4
), v5_(v5
), v6_(v6
), v7_(v7
),
2965 v8_(v8
), v9_(v9
), v10_(v10
), v11_(v11
), v12_(v12
), v13_(v13
), v14_(v14
),
2966 v15_(v15
), v16_(v16
), v17_(v17
), v18_(v18
), v19_(v19
), v20_(v20
),
2967 v21_(v21
), v22_(v22
), v23_(v23
), v24_(v24
), v25_(v25
), v26_(v26
),
2968 v27_(v27
), v28_(v28
), v29_(v29
), v30_(v30
), v31_(v31
), v32_(v32
),
2969 v33_(v33
), v34_(v34
), v35_(v35
), v36_(v36
), v37_(v37
), v38_(v38
),
2970 v39_(v39
), v40_(v40
), v41_(v41
), v42_(v42
), v43_(v43
), v44_(v44
),
2971 v45_(v45
), v46_(v46
), v47_(v47
), v48_(v48
), v49_(v49
) {}
2973 template <typename T
>
2974 operator ParamGenerator
<T
>() const {
2975 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
2976 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
2977 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
2978 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
),
2979 static_cast<T
>(v12_
), static_cast<T
>(v13_
), static_cast<T
>(v14_
),
2980 static_cast<T
>(v15_
), static_cast<T
>(v16_
), static_cast<T
>(v17_
),
2981 static_cast<T
>(v18_
), static_cast<T
>(v19_
), static_cast<T
>(v20_
),
2982 static_cast<T
>(v21_
), static_cast<T
>(v22_
), static_cast<T
>(v23_
),
2983 static_cast<T
>(v24_
), static_cast<T
>(v25_
), static_cast<T
>(v26_
),
2984 static_cast<T
>(v27_
), static_cast<T
>(v28_
), static_cast<T
>(v29_
),
2985 static_cast<T
>(v30_
), static_cast<T
>(v31_
), static_cast<T
>(v32_
),
2986 static_cast<T
>(v33_
), static_cast<T
>(v34_
), static_cast<T
>(v35_
),
2987 static_cast<T
>(v36_
), static_cast<T
>(v37_
), static_cast<T
>(v38_
),
2988 static_cast<T
>(v39_
), static_cast<T
>(v40_
), static_cast<T
>(v41_
),
2989 static_cast<T
>(v42_
), static_cast<T
>(v43_
), static_cast<T
>(v44_
),
2990 static_cast<T
>(v45_
), static_cast<T
>(v46_
), static_cast<T
>(v47_
),
2991 static_cast<T
>(v48_
), static_cast<T
>(v49_
)};
2992 return ValuesIn(array
);
2996 // No implementation - assignment is unsupported.
2997 void operator=(const ValueArray49
& other
);
3050 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
3051 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
3052 typename T11
, typename T12
, typename T13
, typename T14
, typename T15
,
3053 typename T16
, typename T17
, typename T18
, typename T19
, typename T20
,
3054 typename T21
, typename T22
, typename T23
, typename T24
, typename T25
,
3055 typename T26
, typename T27
, typename T28
, typename T29
, typename T30
,
3056 typename T31
, typename T32
, typename T33
, typename T34
, typename T35
,
3057 typename T36
, typename T37
, typename T38
, typename T39
, typename T40
,
3058 typename T41
, typename T42
, typename T43
, typename T44
, typename T45
,
3059 typename T46
, typename T47
, typename T48
, typename T49
, typename T50
>
3060 class ValueArray50
{
3062 ValueArray50(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
3063 T10 v10
, T11 v11
, T12 v12
, T13 v13
, T14 v14
, T15 v15
, T16 v16
, T17 v17
,
3064 T18 v18
, T19 v19
, T20 v20
, T21 v21
, T22 v22
, T23 v23
, T24 v24
, T25 v25
,
3065 T26 v26
, T27 v27
, T28 v28
, T29 v29
, T30 v30
, T31 v31
, T32 v32
, T33 v33
,
3066 T34 v34
, T35 v35
, T36 v36
, T37 v37
, T38 v38
, T39 v39
, T40 v40
, T41 v41
,
3067 T42 v42
, T43 v43
, T44 v44
, T45 v45
, T46 v46
, T47 v47
, T48 v48
, T49 v49
,
3068 T50 v50
) : v1_(v1
), v2_(v2
), v3_(v3
), v4_(v4
), v5_(v5
), v6_(v6
), v7_(v7
),
3069 v8_(v8
), v9_(v9
), v10_(v10
), v11_(v11
), v12_(v12
), v13_(v13
), v14_(v14
),
3070 v15_(v15
), v16_(v16
), v17_(v17
), v18_(v18
), v19_(v19
), v20_(v20
),
3071 v21_(v21
), v22_(v22
), v23_(v23
), v24_(v24
), v25_(v25
), v26_(v26
),
3072 v27_(v27
), v28_(v28
), v29_(v29
), v30_(v30
), v31_(v31
), v32_(v32
),
3073 v33_(v33
), v34_(v34
), v35_(v35
), v36_(v36
), v37_(v37
), v38_(v38
),
3074 v39_(v39
), v40_(v40
), v41_(v41
), v42_(v42
), v43_(v43
), v44_(v44
),
3075 v45_(v45
), v46_(v46
), v47_(v47
), v48_(v48
), v49_(v49
), v50_(v50
) {}
3077 template <typename T
>
3078 operator ParamGenerator
<T
>() const {
3079 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
3080 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
3081 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
3082 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
),
3083 static_cast<T
>(v12_
), static_cast<T
>(v13_
), static_cast<T
>(v14_
),
3084 static_cast<T
>(v15_
), static_cast<T
>(v16_
), static_cast<T
>(v17_
),
3085 static_cast<T
>(v18_
), static_cast<T
>(v19_
), static_cast<T
>(v20_
),
3086 static_cast<T
>(v21_
), static_cast<T
>(v22_
), static_cast<T
>(v23_
),
3087 static_cast<T
>(v24_
), static_cast<T
>(v25_
), static_cast<T
>(v26_
),
3088 static_cast<T
>(v27_
), static_cast<T
>(v28_
), static_cast<T
>(v29_
),
3089 static_cast<T
>(v30_
), static_cast<T
>(v31_
), static_cast<T
>(v32_
),
3090 static_cast<T
>(v33_
), static_cast<T
>(v34_
), static_cast<T
>(v35_
),
3091 static_cast<T
>(v36_
), static_cast<T
>(v37_
), static_cast<T
>(v38_
),
3092 static_cast<T
>(v39_
), static_cast<T
>(v40_
), static_cast<T
>(v41_
),
3093 static_cast<T
>(v42_
), static_cast<T
>(v43_
), static_cast<T
>(v44_
),
3094 static_cast<T
>(v45_
), static_cast<T
>(v46_
), static_cast<T
>(v47_
),
3095 static_cast<T
>(v48_
), static_cast<T
>(v49_
), static_cast<T
>(v50_
)};
3096 return ValuesIn(array
);
3100 // No implementation - assignment is unsupported.
3101 void operator=(const ValueArray50
& other
);
3155 # if GTEST_HAS_COMBINE
3156 // INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
3158 // Generates values from the Cartesian product of values produced
3159 // by the argument generators.
3161 template <typename T1
, typename T2
>
3162 class CartesianProductGenerator2
3163 : public ParamGeneratorInterface
< ::testing::tuple
<T1
, T2
> > {
3165 typedef ::testing::tuple
<T1
, T2
> ParamType
;
3167 CartesianProductGenerator2(const ParamGenerator
<T1
>& g1
,
3168 const ParamGenerator
<T2
>& g2
)
3169 : g1_(g1
), g2_(g2
) {}
3170 virtual ~CartesianProductGenerator2() {}
3172 virtual ParamIteratorInterface
<ParamType
>* Begin() const {
3173 return new Iterator(this, g1_
, g1_
.begin(), g2_
, g2_
.begin());
3175 virtual ParamIteratorInterface
<ParamType
>* End() const {
3176 return new Iterator(this, g1_
, g1_
.end(), g2_
, g2_
.end());
3180 class Iterator
: public ParamIteratorInterface
<ParamType
> {
3182 Iterator(const ParamGeneratorInterface
<ParamType
>* base
,
3183 const ParamGenerator
<T1
>& g1
,
3184 const typename ParamGenerator
<T1
>::iterator
& current1
,
3185 const ParamGenerator
<T2
>& g2
,
3186 const typename ParamGenerator
<T2
>::iterator
& current2
)
3188 begin1_(g1
.begin()), end1_(g1
.end()), current1_(current1
),
3189 begin2_(g2
.begin()), end2_(g2
.end()), current2_(current2
) {
3190 ComputeCurrentValue();
3192 virtual ~Iterator() {}
3194 virtual const ParamGeneratorInterface
<ParamType
>* BaseGenerator() const {
3197 // Advance should not be called on beyond-of-range iterators
3198 // so no component iterators must be beyond end of range, either.
3199 virtual void Advance() {
3202 if (current2_
== end2_
) {
3203 current2_
= begin2_
;
3206 ComputeCurrentValue();
3208 virtual ParamIteratorInterface
<ParamType
>* Clone() const {
3209 return new Iterator(*this);
3211 virtual const ParamType
* Current() const { return ¤t_value_
; }
3212 virtual bool Equals(const ParamIteratorInterface
<ParamType
>& other
) const {
3213 // Having the same base generator guarantees that the other
3214 // iterator is of the same type and we can downcast.
3215 GTEST_CHECK_(BaseGenerator() == other
.BaseGenerator())
3216 << "The program attempted to compare iterators "
3217 << "from different generators." << std::endl
;
3218 const Iterator
* typed_other
=
3219 CheckedDowncastToActualType
<const Iterator
>(&other
);
3220 // We must report iterators equal if they both point beyond their
3221 // respective ranges. That can happen in a variety of fashions,
3222 // so we have to consult AtEnd().
3223 return (AtEnd() && typed_other
->AtEnd()) ||
3225 current1_
== typed_other
->current1_
&&
3226 current2_
== typed_other
->current2_
);
3230 Iterator(const Iterator
& other
)
3231 : base_(other
.base_
),
3232 begin1_(other
.begin1_
),
3234 current1_(other
.current1_
),
3235 begin2_(other
.begin2_
),
3237 current2_(other
.current2_
) {
3238 ComputeCurrentValue();
3241 void ComputeCurrentValue() {
3243 current_value_
= ParamType(*current1_
, *current2_
);
3245 bool AtEnd() const {
3246 // We must report iterator past the end of the range when either of the
3247 // component iterators has reached the end of its range.
3249 current1_
== end1_
||
3253 // No implementation - assignment is unsupported.
3254 void operator=(const Iterator
& other
);
3256 const ParamGeneratorInterface
<ParamType
>* const base_
;
3257 // begin[i]_ and end[i]_ define the i-th range that Iterator traverses.
3258 // current[i]_ is the actual traversing iterator.
3259 const typename ParamGenerator
<T1
>::iterator begin1_
;
3260 const typename ParamGenerator
<T1
>::iterator end1_
;
3261 typename ParamGenerator
<T1
>::iterator current1_
;
3262 const typename ParamGenerator
<T2
>::iterator begin2_
;
3263 const typename ParamGenerator
<T2
>::iterator end2_
;
3264 typename ParamGenerator
<T2
>::iterator current2_
;
3265 ParamType current_value_
;
3266 }; // class CartesianProductGenerator2::Iterator
3268 // No implementation - assignment is unsupported.
3269 void operator=(const CartesianProductGenerator2
& other
);
3271 const ParamGenerator
<T1
> g1_
;
3272 const ParamGenerator
<T2
> g2_
;
3273 }; // class CartesianProductGenerator2
3276 template <typename T1
, typename T2
, typename T3
>
3277 class CartesianProductGenerator3
3278 : public ParamGeneratorInterface
< ::testing::tuple
<T1
, T2
, T3
> > {
3280 typedef ::testing::tuple
<T1
, T2
, T3
> ParamType
;
3282 CartesianProductGenerator3(const ParamGenerator
<T1
>& g1
,
3283 const ParamGenerator
<T2
>& g2
, const ParamGenerator
<T3
>& g3
)
3284 : g1_(g1
), g2_(g2
), g3_(g3
) {}
3285 virtual ~CartesianProductGenerator3() {}
3287 virtual ParamIteratorInterface
<ParamType
>* Begin() const {
3288 return new Iterator(this, g1_
, g1_
.begin(), g2_
, g2_
.begin(), g3_
,
3291 virtual ParamIteratorInterface
<ParamType
>* End() const {
3292 return new Iterator(this, g1_
, g1_
.end(), g2_
, g2_
.end(), g3_
, g3_
.end());
3296 class Iterator
: public ParamIteratorInterface
<ParamType
> {
3298 Iterator(const ParamGeneratorInterface
<ParamType
>* base
,
3299 const ParamGenerator
<T1
>& g1
,
3300 const typename ParamGenerator
<T1
>::iterator
& current1
,
3301 const ParamGenerator
<T2
>& g2
,
3302 const typename ParamGenerator
<T2
>::iterator
& current2
,
3303 const ParamGenerator
<T3
>& g3
,
3304 const typename ParamGenerator
<T3
>::iterator
& current3
)
3306 begin1_(g1
.begin()), end1_(g1
.end()), current1_(current1
),
3307 begin2_(g2
.begin()), end2_(g2
.end()), current2_(current2
),
3308 begin3_(g3
.begin()), end3_(g3
.end()), current3_(current3
) {
3309 ComputeCurrentValue();
3311 virtual ~Iterator() {}
3313 virtual const ParamGeneratorInterface
<ParamType
>* BaseGenerator() const {
3316 // Advance should not be called on beyond-of-range iterators
3317 // so no component iterators must be beyond end of range, either.
3318 virtual void Advance() {
3321 if (current3_
== end3_
) {
3322 current3_
= begin3_
;
3325 if (current2_
== end2_
) {
3326 current2_
= begin2_
;
3329 ComputeCurrentValue();
3331 virtual ParamIteratorInterface
<ParamType
>* Clone() const {
3332 return new Iterator(*this);
3334 virtual const ParamType
* Current() const { return ¤t_value_
; }
3335 virtual bool Equals(const ParamIteratorInterface
<ParamType
>& other
) const {
3336 // Having the same base generator guarantees that the other
3337 // iterator is of the same type and we can downcast.
3338 GTEST_CHECK_(BaseGenerator() == other
.BaseGenerator())
3339 << "The program attempted to compare iterators "
3340 << "from different generators." << std::endl
;
3341 const Iterator
* typed_other
=
3342 CheckedDowncastToActualType
<const Iterator
>(&other
);
3343 // We must report iterators equal if they both point beyond their
3344 // respective ranges. That can happen in a variety of fashions,
3345 // so we have to consult AtEnd().
3346 return (AtEnd() && typed_other
->AtEnd()) ||
3348 current1_
== typed_other
->current1_
&&
3349 current2_
== typed_other
->current2_
&&
3350 current3_
== typed_other
->current3_
);
3354 Iterator(const Iterator
& other
)
3355 : base_(other
.base_
),
3356 begin1_(other
.begin1_
),
3358 current1_(other
.current1_
),
3359 begin2_(other
.begin2_
),
3361 current2_(other
.current2_
),
3362 begin3_(other
.begin3_
),
3364 current3_(other
.current3_
) {
3365 ComputeCurrentValue();
3368 void ComputeCurrentValue() {
3370 current_value_
= ParamType(*current1_
, *current2_
, *current3_
);
3372 bool AtEnd() const {
3373 // We must report iterator past the end of the range when either of the
3374 // component iterators has reached the end of its range.
3376 current1_
== end1_
||
3377 current2_
== end2_
||
3381 // No implementation - assignment is unsupported.
3382 void operator=(const Iterator
& other
);
3384 const ParamGeneratorInterface
<ParamType
>* const base_
;
3385 // begin[i]_ and end[i]_ define the i-th range that Iterator traverses.
3386 // current[i]_ is the actual traversing iterator.
3387 const typename ParamGenerator
<T1
>::iterator begin1_
;
3388 const typename ParamGenerator
<T1
>::iterator end1_
;
3389 typename ParamGenerator
<T1
>::iterator current1_
;
3390 const typename ParamGenerator
<T2
>::iterator begin2_
;
3391 const typename ParamGenerator
<T2
>::iterator end2_
;
3392 typename ParamGenerator
<T2
>::iterator current2_
;
3393 const typename ParamGenerator
<T3
>::iterator begin3_
;
3394 const typename ParamGenerator
<T3
>::iterator end3_
;
3395 typename ParamGenerator
<T3
>::iterator current3_
;
3396 ParamType current_value_
;
3397 }; // class CartesianProductGenerator3::Iterator
3399 // No implementation - assignment is unsupported.
3400 void operator=(const CartesianProductGenerator3
& other
);
3402 const ParamGenerator
<T1
> g1_
;
3403 const ParamGenerator
<T2
> g2_
;
3404 const ParamGenerator
<T3
> g3_
;
3405 }; // class CartesianProductGenerator3
3408 template <typename T1
, typename T2
, typename T3
, typename T4
>
3409 class CartesianProductGenerator4
3410 : public ParamGeneratorInterface
< ::testing::tuple
<T1
, T2
, T3
, T4
> > {
3412 typedef ::testing::tuple
<T1
, T2
, T3
, T4
> ParamType
;
3414 CartesianProductGenerator4(const ParamGenerator
<T1
>& g1
,
3415 const ParamGenerator
<T2
>& g2
, const ParamGenerator
<T3
>& g3
,
3416 const ParamGenerator
<T4
>& g4
)
3417 : g1_(g1
), g2_(g2
), g3_(g3
), g4_(g4
) {}
3418 virtual ~CartesianProductGenerator4() {}
3420 virtual ParamIteratorInterface
<ParamType
>* Begin() const {
3421 return new Iterator(this, g1_
, g1_
.begin(), g2_
, g2_
.begin(), g3_
,
3422 g3_
.begin(), g4_
, g4_
.begin());
3424 virtual ParamIteratorInterface
<ParamType
>* End() const {
3425 return new Iterator(this, g1_
, g1_
.end(), g2_
, g2_
.end(), g3_
, g3_
.end(),
3430 class Iterator
: public ParamIteratorInterface
<ParamType
> {
3432 Iterator(const ParamGeneratorInterface
<ParamType
>* base
,
3433 const ParamGenerator
<T1
>& g1
,
3434 const typename ParamGenerator
<T1
>::iterator
& current1
,
3435 const ParamGenerator
<T2
>& g2
,
3436 const typename ParamGenerator
<T2
>::iterator
& current2
,
3437 const ParamGenerator
<T3
>& g3
,
3438 const typename ParamGenerator
<T3
>::iterator
& current3
,
3439 const ParamGenerator
<T4
>& g4
,
3440 const typename ParamGenerator
<T4
>::iterator
& current4
)
3442 begin1_(g1
.begin()), end1_(g1
.end()), current1_(current1
),
3443 begin2_(g2
.begin()), end2_(g2
.end()), current2_(current2
),
3444 begin3_(g3
.begin()), end3_(g3
.end()), current3_(current3
),
3445 begin4_(g4
.begin()), end4_(g4
.end()), current4_(current4
) {
3446 ComputeCurrentValue();
3448 virtual ~Iterator() {}
3450 virtual const ParamGeneratorInterface
<ParamType
>* BaseGenerator() const {
3453 // Advance should not be called on beyond-of-range iterators
3454 // so no component iterators must be beyond end of range, either.
3455 virtual void Advance() {
3458 if (current4_
== end4_
) {
3459 current4_
= begin4_
;
3462 if (current3_
== end3_
) {
3463 current3_
= begin3_
;
3466 if (current2_
== end2_
) {
3467 current2_
= begin2_
;
3470 ComputeCurrentValue();
3472 virtual ParamIteratorInterface
<ParamType
>* Clone() const {
3473 return new Iterator(*this);
3475 virtual const ParamType
* Current() const { return ¤t_value_
; }
3476 virtual bool Equals(const ParamIteratorInterface
<ParamType
>& other
) const {
3477 // Having the same base generator guarantees that the other
3478 // iterator is of the same type and we can downcast.
3479 GTEST_CHECK_(BaseGenerator() == other
.BaseGenerator())
3480 << "The program attempted to compare iterators "
3481 << "from different generators." << std::endl
;
3482 const Iterator
* typed_other
=
3483 CheckedDowncastToActualType
<const Iterator
>(&other
);
3484 // We must report iterators equal if they both point beyond their
3485 // respective ranges. That can happen in a variety of fashions,
3486 // so we have to consult AtEnd().
3487 return (AtEnd() && typed_other
->AtEnd()) ||
3489 current1_
== typed_other
->current1_
&&
3490 current2_
== typed_other
->current2_
&&
3491 current3_
== typed_other
->current3_
&&
3492 current4_
== typed_other
->current4_
);
3496 Iterator(const Iterator
& other
)
3497 : base_(other
.base_
),
3498 begin1_(other
.begin1_
),
3500 current1_(other
.current1_
),
3501 begin2_(other
.begin2_
),
3503 current2_(other
.current2_
),
3504 begin3_(other
.begin3_
),
3506 current3_(other
.current3_
),
3507 begin4_(other
.begin4_
),
3509 current4_(other
.current4_
) {
3510 ComputeCurrentValue();
3513 void ComputeCurrentValue() {
3515 current_value_
= ParamType(*current1_
, *current2_
, *current3_
,
3518 bool AtEnd() const {
3519 // We must report iterator past the end of the range when either of the
3520 // component iterators has reached the end of its range.
3522 current1_
== end1_
||
3523 current2_
== end2_
||
3524 current3_
== end3_
||
3528 // No implementation - assignment is unsupported.
3529 void operator=(const Iterator
& other
);
3531 const ParamGeneratorInterface
<ParamType
>* const base_
;
3532 // begin[i]_ and end[i]_ define the i-th range that Iterator traverses.
3533 // current[i]_ is the actual traversing iterator.
3534 const typename ParamGenerator
<T1
>::iterator begin1_
;
3535 const typename ParamGenerator
<T1
>::iterator end1_
;
3536 typename ParamGenerator
<T1
>::iterator current1_
;
3537 const typename ParamGenerator
<T2
>::iterator begin2_
;
3538 const typename ParamGenerator
<T2
>::iterator end2_
;
3539 typename ParamGenerator
<T2
>::iterator current2_
;
3540 const typename ParamGenerator
<T3
>::iterator begin3_
;
3541 const typename ParamGenerator
<T3
>::iterator end3_
;
3542 typename ParamGenerator
<T3
>::iterator current3_
;
3543 const typename ParamGenerator
<T4
>::iterator begin4_
;
3544 const typename ParamGenerator
<T4
>::iterator end4_
;
3545 typename ParamGenerator
<T4
>::iterator current4_
;
3546 ParamType current_value_
;
3547 }; // class CartesianProductGenerator4::Iterator
3549 // No implementation - assignment is unsupported.
3550 void operator=(const CartesianProductGenerator4
& other
);
3552 const ParamGenerator
<T1
> g1_
;
3553 const ParamGenerator
<T2
> g2_
;
3554 const ParamGenerator
<T3
> g3_
;
3555 const ParamGenerator
<T4
> g4_
;
3556 }; // class CartesianProductGenerator4
3559 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
>
3560 class CartesianProductGenerator5
3561 : public ParamGeneratorInterface
< ::testing::tuple
<T1
, T2
, T3
, T4
, T5
> > {
3563 typedef ::testing::tuple
<T1
, T2
, T3
, T4
, T5
> ParamType
;
3565 CartesianProductGenerator5(const ParamGenerator
<T1
>& g1
,
3566 const ParamGenerator
<T2
>& g2
, const ParamGenerator
<T3
>& g3
,
3567 const ParamGenerator
<T4
>& g4
, const ParamGenerator
<T5
>& g5
)
3568 : g1_(g1
), g2_(g2
), g3_(g3
), g4_(g4
), g5_(g5
) {}
3569 virtual ~CartesianProductGenerator5() {}
3571 virtual ParamIteratorInterface
<ParamType
>* Begin() const {
3572 return new Iterator(this, g1_
, g1_
.begin(), g2_
, g2_
.begin(), g3_
,
3573 g3_
.begin(), g4_
, g4_
.begin(), g5_
, g5_
.begin());
3575 virtual ParamIteratorInterface
<ParamType
>* End() const {
3576 return new Iterator(this, g1_
, g1_
.end(), g2_
, g2_
.end(), g3_
, g3_
.end(),
3577 g4_
, g4_
.end(), g5_
, g5_
.end());
3581 class Iterator
: public ParamIteratorInterface
<ParamType
> {
3583 Iterator(const ParamGeneratorInterface
<ParamType
>* base
,
3584 const ParamGenerator
<T1
>& g1
,
3585 const typename ParamGenerator
<T1
>::iterator
& current1
,
3586 const ParamGenerator
<T2
>& g2
,
3587 const typename ParamGenerator
<T2
>::iterator
& current2
,
3588 const ParamGenerator
<T3
>& g3
,
3589 const typename ParamGenerator
<T3
>::iterator
& current3
,
3590 const ParamGenerator
<T4
>& g4
,
3591 const typename ParamGenerator
<T4
>::iterator
& current4
,
3592 const ParamGenerator
<T5
>& g5
,
3593 const typename ParamGenerator
<T5
>::iterator
& current5
)
3595 begin1_(g1
.begin()), end1_(g1
.end()), current1_(current1
),
3596 begin2_(g2
.begin()), end2_(g2
.end()), current2_(current2
),
3597 begin3_(g3
.begin()), end3_(g3
.end()), current3_(current3
),
3598 begin4_(g4
.begin()), end4_(g4
.end()), current4_(current4
),
3599 begin5_(g5
.begin()), end5_(g5
.end()), current5_(current5
) {
3600 ComputeCurrentValue();
3602 virtual ~Iterator() {}
3604 virtual const ParamGeneratorInterface
<ParamType
>* BaseGenerator() const {
3607 // Advance should not be called on beyond-of-range iterators
3608 // so no component iterators must be beyond end of range, either.
3609 virtual void Advance() {
3612 if (current5_
== end5_
) {
3613 current5_
= begin5_
;
3616 if (current4_
== end4_
) {
3617 current4_
= begin4_
;
3620 if (current3_
== end3_
) {
3621 current3_
= begin3_
;
3624 if (current2_
== end2_
) {
3625 current2_
= begin2_
;
3628 ComputeCurrentValue();
3630 virtual ParamIteratorInterface
<ParamType
>* Clone() const {
3631 return new Iterator(*this);
3633 virtual const ParamType
* Current() const { return ¤t_value_
; }
3634 virtual bool Equals(const ParamIteratorInterface
<ParamType
>& other
) const {
3635 // Having the same base generator guarantees that the other
3636 // iterator is of the same type and we can downcast.
3637 GTEST_CHECK_(BaseGenerator() == other
.BaseGenerator())
3638 << "The program attempted to compare iterators "
3639 << "from different generators." << std::endl
;
3640 const Iterator
* typed_other
=
3641 CheckedDowncastToActualType
<const Iterator
>(&other
);
3642 // We must report iterators equal if they both point beyond their
3643 // respective ranges. That can happen in a variety of fashions,
3644 // so we have to consult AtEnd().
3645 return (AtEnd() && typed_other
->AtEnd()) ||
3647 current1_
== typed_other
->current1_
&&
3648 current2_
== typed_other
->current2_
&&
3649 current3_
== typed_other
->current3_
&&
3650 current4_
== typed_other
->current4_
&&
3651 current5_
== typed_other
->current5_
);
3655 Iterator(const Iterator
& other
)
3656 : base_(other
.base_
),
3657 begin1_(other
.begin1_
),
3659 current1_(other
.current1_
),
3660 begin2_(other
.begin2_
),
3662 current2_(other
.current2_
),
3663 begin3_(other
.begin3_
),
3665 current3_(other
.current3_
),
3666 begin4_(other
.begin4_
),
3668 current4_(other
.current4_
),
3669 begin5_(other
.begin5_
),
3671 current5_(other
.current5_
) {
3672 ComputeCurrentValue();
3675 void ComputeCurrentValue() {
3677 current_value_
= ParamType(*current1_
, *current2_
, *current3_
,
3678 *current4_
, *current5_
);
3680 bool AtEnd() const {
3681 // We must report iterator past the end of the range when either of the
3682 // component iterators has reached the end of its range.
3684 current1_
== end1_
||
3685 current2_
== end2_
||
3686 current3_
== end3_
||
3687 current4_
== end4_
||
3691 // No implementation - assignment is unsupported.
3692 void operator=(const Iterator
& other
);
3694 const ParamGeneratorInterface
<ParamType
>* const base_
;
3695 // begin[i]_ and end[i]_ define the i-th range that Iterator traverses.
3696 // current[i]_ is the actual traversing iterator.
3697 const typename ParamGenerator
<T1
>::iterator begin1_
;
3698 const typename ParamGenerator
<T1
>::iterator end1_
;
3699 typename ParamGenerator
<T1
>::iterator current1_
;
3700 const typename ParamGenerator
<T2
>::iterator begin2_
;
3701 const typename ParamGenerator
<T2
>::iterator end2_
;
3702 typename ParamGenerator
<T2
>::iterator current2_
;
3703 const typename ParamGenerator
<T3
>::iterator begin3_
;
3704 const typename ParamGenerator
<T3
>::iterator end3_
;
3705 typename ParamGenerator
<T3
>::iterator current3_
;
3706 const typename ParamGenerator
<T4
>::iterator begin4_
;
3707 const typename ParamGenerator
<T4
>::iterator end4_
;
3708 typename ParamGenerator
<T4
>::iterator current4_
;
3709 const typename ParamGenerator
<T5
>::iterator begin5_
;
3710 const typename ParamGenerator
<T5
>::iterator end5_
;
3711 typename ParamGenerator
<T5
>::iterator current5_
;
3712 ParamType current_value_
;
3713 }; // class CartesianProductGenerator5::Iterator
3715 // No implementation - assignment is unsupported.
3716 void operator=(const CartesianProductGenerator5
& other
);
3718 const ParamGenerator
<T1
> g1_
;
3719 const ParamGenerator
<T2
> g2_
;
3720 const ParamGenerator
<T3
> g3_
;
3721 const ParamGenerator
<T4
> g4_
;
3722 const ParamGenerator
<T5
> g5_
;
3723 }; // class CartesianProductGenerator5
3726 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
3728 class CartesianProductGenerator6
3729 : public ParamGeneratorInterface
< ::testing::tuple
<T1
, T2
, T3
, T4
, T5
,
3732 typedef ::testing::tuple
<T1
, T2
, T3
, T4
, T5
, T6
> ParamType
;
3734 CartesianProductGenerator6(const ParamGenerator
<T1
>& g1
,
3735 const ParamGenerator
<T2
>& g2
, const ParamGenerator
<T3
>& g3
,
3736 const ParamGenerator
<T4
>& g4
, const ParamGenerator
<T5
>& g5
,
3737 const ParamGenerator
<T6
>& g6
)
3738 : g1_(g1
), g2_(g2
), g3_(g3
), g4_(g4
), g5_(g5
), g6_(g6
) {}
3739 virtual ~CartesianProductGenerator6() {}
3741 virtual ParamIteratorInterface
<ParamType
>* Begin() const {
3742 return new Iterator(this, g1_
, g1_
.begin(), g2_
, g2_
.begin(), g3_
,
3743 g3_
.begin(), g4_
, g4_
.begin(), g5_
, g5_
.begin(), g6_
, g6_
.begin());
3745 virtual ParamIteratorInterface
<ParamType
>* End() const {
3746 return new Iterator(this, g1_
, g1_
.end(), g2_
, g2_
.end(), g3_
, g3_
.end(),
3747 g4_
, g4_
.end(), g5_
, g5_
.end(), g6_
, g6_
.end());
3751 class Iterator
: public ParamIteratorInterface
<ParamType
> {
3753 Iterator(const ParamGeneratorInterface
<ParamType
>* base
,
3754 const ParamGenerator
<T1
>& g1
,
3755 const typename ParamGenerator
<T1
>::iterator
& current1
,
3756 const ParamGenerator
<T2
>& g2
,
3757 const typename ParamGenerator
<T2
>::iterator
& current2
,
3758 const ParamGenerator
<T3
>& g3
,
3759 const typename ParamGenerator
<T3
>::iterator
& current3
,
3760 const ParamGenerator
<T4
>& g4
,
3761 const typename ParamGenerator
<T4
>::iterator
& current4
,
3762 const ParamGenerator
<T5
>& g5
,
3763 const typename ParamGenerator
<T5
>::iterator
& current5
,
3764 const ParamGenerator
<T6
>& g6
,
3765 const typename ParamGenerator
<T6
>::iterator
& current6
)
3767 begin1_(g1
.begin()), end1_(g1
.end()), current1_(current1
),
3768 begin2_(g2
.begin()), end2_(g2
.end()), current2_(current2
),
3769 begin3_(g3
.begin()), end3_(g3
.end()), current3_(current3
),
3770 begin4_(g4
.begin()), end4_(g4
.end()), current4_(current4
),
3771 begin5_(g5
.begin()), end5_(g5
.end()), current5_(current5
),
3772 begin6_(g6
.begin()), end6_(g6
.end()), current6_(current6
) {
3773 ComputeCurrentValue();
3775 virtual ~Iterator() {}
3777 virtual const ParamGeneratorInterface
<ParamType
>* BaseGenerator() const {
3780 // Advance should not be called on beyond-of-range iterators
3781 // so no component iterators must be beyond end of range, either.
3782 virtual void Advance() {
3785 if (current6_
== end6_
) {
3786 current6_
= begin6_
;
3789 if (current5_
== end5_
) {
3790 current5_
= begin5_
;
3793 if (current4_
== end4_
) {
3794 current4_
= begin4_
;
3797 if (current3_
== end3_
) {
3798 current3_
= begin3_
;
3801 if (current2_
== end2_
) {
3802 current2_
= begin2_
;
3805 ComputeCurrentValue();
3807 virtual ParamIteratorInterface
<ParamType
>* Clone() const {
3808 return new Iterator(*this);
3810 virtual const ParamType
* Current() const { return ¤t_value_
; }
3811 virtual bool Equals(const ParamIteratorInterface
<ParamType
>& other
) const {
3812 // Having the same base generator guarantees that the other
3813 // iterator is of the same type and we can downcast.
3814 GTEST_CHECK_(BaseGenerator() == other
.BaseGenerator())
3815 << "The program attempted to compare iterators "
3816 << "from different generators." << std::endl
;
3817 const Iterator
* typed_other
=
3818 CheckedDowncastToActualType
<const Iterator
>(&other
);
3819 // We must report iterators equal if they both point beyond their
3820 // respective ranges. That can happen in a variety of fashions,
3821 // so we have to consult AtEnd().
3822 return (AtEnd() && typed_other
->AtEnd()) ||
3824 current1_
== typed_other
->current1_
&&
3825 current2_
== typed_other
->current2_
&&
3826 current3_
== typed_other
->current3_
&&
3827 current4_
== typed_other
->current4_
&&
3828 current5_
== typed_other
->current5_
&&
3829 current6_
== typed_other
->current6_
);
3833 Iterator(const Iterator
& other
)
3834 : base_(other
.base_
),
3835 begin1_(other
.begin1_
),
3837 current1_(other
.current1_
),
3838 begin2_(other
.begin2_
),
3840 current2_(other
.current2_
),
3841 begin3_(other
.begin3_
),
3843 current3_(other
.current3_
),
3844 begin4_(other
.begin4_
),
3846 current4_(other
.current4_
),
3847 begin5_(other
.begin5_
),
3849 current5_(other
.current5_
),
3850 begin6_(other
.begin6_
),
3852 current6_(other
.current6_
) {
3853 ComputeCurrentValue();
3856 void ComputeCurrentValue() {
3858 current_value_
= ParamType(*current1_
, *current2_
, *current3_
,
3859 *current4_
, *current5_
, *current6_
);
3861 bool AtEnd() const {
3862 // We must report iterator past the end of the range when either of the
3863 // component iterators has reached the end of its range.
3865 current1_
== end1_
||
3866 current2_
== end2_
||
3867 current3_
== end3_
||
3868 current4_
== end4_
||
3869 current5_
== end5_
||
3873 // No implementation - assignment is unsupported.
3874 void operator=(const Iterator
& other
);
3876 const ParamGeneratorInterface
<ParamType
>* const base_
;
3877 // begin[i]_ and end[i]_ define the i-th range that Iterator traverses.
3878 // current[i]_ is the actual traversing iterator.
3879 const typename ParamGenerator
<T1
>::iterator begin1_
;
3880 const typename ParamGenerator
<T1
>::iterator end1_
;
3881 typename ParamGenerator
<T1
>::iterator current1_
;
3882 const typename ParamGenerator
<T2
>::iterator begin2_
;
3883 const typename ParamGenerator
<T2
>::iterator end2_
;
3884 typename ParamGenerator
<T2
>::iterator current2_
;
3885 const typename ParamGenerator
<T3
>::iterator begin3_
;
3886 const typename ParamGenerator
<T3
>::iterator end3_
;
3887 typename ParamGenerator
<T3
>::iterator current3_
;
3888 const typename ParamGenerator
<T4
>::iterator begin4_
;
3889 const typename ParamGenerator
<T4
>::iterator end4_
;
3890 typename ParamGenerator
<T4
>::iterator current4_
;
3891 const typename ParamGenerator
<T5
>::iterator begin5_
;
3892 const typename ParamGenerator
<T5
>::iterator end5_
;
3893 typename ParamGenerator
<T5
>::iterator current5_
;
3894 const typename ParamGenerator
<T6
>::iterator begin6_
;
3895 const typename ParamGenerator
<T6
>::iterator end6_
;
3896 typename ParamGenerator
<T6
>::iterator current6_
;
3897 ParamType current_value_
;
3898 }; // class CartesianProductGenerator6::Iterator
3900 // No implementation - assignment is unsupported.
3901 void operator=(const CartesianProductGenerator6
& other
);
3903 const ParamGenerator
<T1
> g1_
;
3904 const ParamGenerator
<T2
> g2_
;
3905 const ParamGenerator
<T3
> g3_
;
3906 const ParamGenerator
<T4
> g4_
;
3907 const ParamGenerator
<T5
> g5_
;
3908 const ParamGenerator
<T6
> g6_
;
3909 }; // class CartesianProductGenerator6
3912 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
3913 typename T6
, typename T7
>
3914 class CartesianProductGenerator7
3915 : public ParamGeneratorInterface
< ::testing::tuple
<T1
, T2
, T3
, T4
, T5
, T6
,
3918 typedef ::testing::tuple
<T1
, T2
, T3
, T4
, T5
, T6
, T7
> ParamType
;
3920 CartesianProductGenerator7(const ParamGenerator
<T1
>& g1
,
3921 const ParamGenerator
<T2
>& g2
, const ParamGenerator
<T3
>& g3
,
3922 const ParamGenerator
<T4
>& g4
, const ParamGenerator
<T5
>& g5
,
3923 const ParamGenerator
<T6
>& g6
, const ParamGenerator
<T7
>& g7
)
3924 : g1_(g1
), g2_(g2
), g3_(g3
), g4_(g4
), g5_(g5
), g6_(g6
), g7_(g7
) {}
3925 virtual ~CartesianProductGenerator7() {}
3927 virtual ParamIteratorInterface
<ParamType
>* Begin() const {
3928 return new Iterator(this, g1_
, g1_
.begin(), g2_
, g2_
.begin(), g3_
,
3929 g3_
.begin(), g4_
, g4_
.begin(), g5_
, g5_
.begin(), g6_
, g6_
.begin(), g7_
,
3932 virtual ParamIteratorInterface
<ParamType
>* End() const {
3933 return new Iterator(this, g1_
, g1_
.end(), g2_
, g2_
.end(), g3_
, g3_
.end(),
3934 g4_
, g4_
.end(), g5_
, g5_
.end(), g6_
, g6_
.end(), g7_
, g7_
.end());
3938 class Iterator
: public ParamIteratorInterface
<ParamType
> {
3940 Iterator(const ParamGeneratorInterface
<ParamType
>* base
,
3941 const ParamGenerator
<T1
>& g1
,
3942 const typename ParamGenerator
<T1
>::iterator
& current1
,
3943 const ParamGenerator
<T2
>& g2
,
3944 const typename ParamGenerator
<T2
>::iterator
& current2
,
3945 const ParamGenerator
<T3
>& g3
,
3946 const typename ParamGenerator
<T3
>::iterator
& current3
,
3947 const ParamGenerator
<T4
>& g4
,
3948 const typename ParamGenerator
<T4
>::iterator
& current4
,
3949 const ParamGenerator
<T5
>& g5
,
3950 const typename ParamGenerator
<T5
>::iterator
& current5
,
3951 const ParamGenerator
<T6
>& g6
,
3952 const typename ParamGenerator
<T6
>::iterator
& current6
,
3953 const ParamGenerator
<T7
>& g7
,
3954 const typename ParamGenerator
<T7
>::iterator
& current7
)
3956 begin1_(g1
.begin()), end1_(g1
.end()), current1_(current1
),
3957 begin2_(g2
.begin()), end2_(g2
.end()), current2_(current2
),
3958 begin3_(g3
.begin()), end3_(g3
.end()), current3_(current3
),
3959 begin4_(g4
.begin()), end4_(g4
.end()), current4_(current4
),
3960 begin5_(g5
.begin()), end5_(g5
.end()), current5_(current5
),
3961 begin6_(g6
.begin()), end6_(g6
.end()), current6_(current6
),
3962 begin7_(g7
.begin()), end7_(g7
.end()), current7_(current7
) {
3963 ComputeCurrentValue();
3965 virtual ~Iterator() {}
3967 virtual const ParamGeneratorInterface
<ParamType
>* BaseGenerator() const {
3970 // Advance should not be called on beyond-of-range iterators
3971 // so no component iterators must be beyond end of range, either.
3972 virtual void Advance() {
3975 if (current7_
== end7_
) {
3976 current7_
= begin7_
;
3979 if (current6_
== end6_
) {
3980 current6_
= begin6_
;
3983 if (current5_
== end5_
) {
3984 current5_
= begin5_
;
3987 if (current4_
== end4_
) {
3988 current4_
= begin4_
;
3991 if (current3_
== end3_
) {
3992 current3_
= begin3_
;
3995 if (current2_
== end2_
) {
3996 current2_
= begin2_
;
3999 ComputeCurrentValue();
4001 virtual ParamIteratorInterface
<ParamType
>* Clone() const {
4002 return new Iterator(*this);
4004 virtual const ParamType
* Current() const { return ¤t_value_
; }
4005 virtual bool Equals(const ParamIteratorInterface
<ParamType
>& other
) const {
4006 // Having the same base generator guarantees that the other
4007 // iterator is of the same type and we can downcast.
4008 GTEST_CHECK_(BaseGenerator() == other
.BaseGenerator())
4009 << "The program attempted to compare iterators "
4010 << "from different generators." << std::endl
;
4011 const Iterator
* typed_other
=
4012 CheckedDowncastToActualType
<const Iterator
>(&other
);
4013 // We must report iterators equal if they both point beyond their
4014 // respective ranges. That can happen in a variety of fashions,
4015 // so we have to consult AtEnd().
4016 return (AtEnd() && typed_other
->AtEnd()) ||
4018 current1_
== typed_other
->current1_
&&
4019 current2_
== typed_other
->current2_
&&
4020 current3_
== typed_other
->current3_
&&
4021 current4_
== typed_other
->current4_
&&
4022 current5_
== typed_other
->current5_
&&
4023 current6_
== typed_other
->current6_
&&
4024 current7_
== typed_other
->current7_
);
4028 Iterator(const Iterator
& other
)
4029 : base_(other
.base_
),
4030 begin1_(other
.begin1_
),
4032 current1_(other
.current1_
),
4033 begin2_(other
.begin2_
),
4035 current2_(other
.current2_
),
4036 begin3_(other
.begin3_
),
4038 current3_(other
.current3_
),
4039 begin4_(other
.begin4_
),
4041 current4_(other
.current4_
),
4042 begin5_(other
.begin5_
),
4044 current5_(other
.current5_
),
4045 begin6_(other
.begin6_
),
4047 current6_(other
.current6_
),
4048 begin7_(other
.begin7_
),
4050 current7_(other
.current7_
) {
4051 ComputeCurrentValue();
4054 void ComputeCurrentValue() {
4056 current_value_
= ParamType(*current1_
, *current2_
, *current3_
,
4057 *current4_
, *current5_
, *current6_
, *current7_
);
4059 bool AtEnd() const {
4060 // We must report iterator past the end of the range when either of the
4061 // component iterators has reached the end of its range.
4063 current1_
== end1_
||
4064 current2_
== end2_
||
4065 current3_
== end3_
||
4066 current4_
== end4_
||
4067 current5_
== end5_
||
4068 current6_
== end6_
||
4072 // No implementation - assignment is unsupported.
4073 void operator=(const Iterator
& other
);
4075 const ParamGeneratorInterface
<ParamType
>* const base_
;
4076 // begin[i]_ and end[i]_ define the i-th range that Iterator traverses.
4077 // current[i]_ is the actual traversing iterator.
4078 const typename ParamGenerator
<T1
>::iterator begin1_
;
4079 const typename ParamGenerator
<T1
>::iterator end1_
;
4080 typename ParamGenerator
<T1
>::iterator current1_
;
4081 const typename ParamGenerator
<T2
>::iterator begin2_
;
4082 const typename ParamGenerator
<T2
>::iterator end2_
;
4083 typename ParamGenerator
<T2
>::iterator current2_
;
4084 const typename ParamGenerator
<T3
>::iterator begin3_
;
4085 const typename ParamGenerator
<T3
>::iterator end3_
;
4086 typename ParamGenerator
<T3
>::iterator current3_
;
4087 const typename ParamGenerator
<T4
>::iterator begin4_
;
4088 const typename ParamGenerator
<T4
>::iterator end4_
;
4089 typename ParamGenerator
<T4
>::iterator current4_
;
4090 const typename ParamGenerator
<T5
>::iterator begin5_
;
4091 const typename ParamGenerator
<T5
>::iterator end5_
;
4092 typename ParamGenerator
<T5
>::iterator current5_
;
4093 const typename ParamGenerator
<T6
>::iterator begin6_
;
4094 const typename ParamGenerator
<T6
>::iterator end6_
;
4095 typename ParamGenerator
<T6
>::iterator current6_
;
4096 const typename ParamGenerator
<T7
>::iterator begin7_
;
4097 const typename ParamGenerator
<T7
>::iterator end7_
;
4098 typename ParamGenerator
<T7
>::iterator current7_
;
4099 ParamType current_value_
;
4100 }; // class CartesianProductGenerator7::Iterator
4102 // No implementation - assignment is unsupported.
4103 void operator=(const CartesianProductGenerator7
& other
);
4105 const ParamGenerator
<T1
> g1_
;
4106 const ParamGenerator
<T2
> g2_
;
4107 const ParamGenerator
<T3
> g3_
;
4108 const ParamGenerator
<T4
> g4_
;
4109 const ParamGenerator
<T5
> g5_
;
4110 const ParamGenerator
<T6
> g6_
;
4111 const ParamGenerator
<T7
> g7_
;
4112 }; // class CartesianProductGenerator7
4115 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
4116 typename T6
, typename T7
, typename T8
>
4117 class CartesianProductGenerator8
4118 : public ParamGeneratorInterface
< ::testing::tuple
<T1
, T2
, T3
, T4
, T5
, T6
,
4121 typedef ::testing::tuple
<T1
, T2
, T3
, T4
, T5
, T6
, T7
, T8
> ParamType
;
4123 CartesianProductGenerator8(const ParamGenerator
<T1
>& g1
,
4124 const ParamGenerator
<T2
>& g2
, const ParamGenerator
<T3
>& g3
,
4125 const ParamGenerator
<T4
>& g4
, const ParamGenerator
<T5
>& g5
,
4126 const ParamGenerator
<T6
>& g6
, const ParamGenerator
<T7
>& g7
,
4127 const ParamGenerator
<T8
>& g8
)
4128 : g1_(g1
), g2_(g2
), g3_(g3
), g4_(g4
), g5_(g5
), g6_(g6
), g7_(g7
),
4130 virtual ~CartesianProductGenerator8() {}
4132 virtual ParamIteratorInterface
<ParamType
>* Begin() const {
4133 return new Iterator(this, g1_
, g1_
.begin(), g2_
, g2_
.begin(), g3_
,
4134 g3_
.begin(), g4_
, g4_
.begin(), g5_
, g5_
.begin(), g6_
, g6_
.begin(), g7_
,
4135 g7_
.begin(), g8_
, g8_
.begin());
4137 virtual ParamIteratorInterface
<ParamType
>* End() const {
4138 return new Iterator(this, g1_
, g1_
.end(), g2_
, g2_
.end(), g3_
, g3_
.end(),
4139 g4_
, g4_
.end(), g5_
, g5_
.end(), g6_
, g6_
.end(), g7_
, g7_
.end(), g8_
,
4144 class Iterator
: public ParamIteratorInterface
<ParamType
> {
4146 Iterator(const ParamGeneratorInterface
<ParamType
>* base
,
4147 const ParamGenerator
<T1
>& g1
,
4148 const typename ParamGenerator
<T1
>::iterator
& current1
,
4149 const ParamGenerator
<T2
>& g2
,
4150 const typename ParamGenerator
<T2
>::iterator
& current2
,
4151 const ParamGenerator
<T3
>& g3
,
4152 const typename ParamGenerator
<T3
>::iterator
& current3
,
4153 const ParamGenerator
<T4
>& g4
,
4154 const typename ParamGenerator
<T4
>::iterator
& current4
,
4155 const ParamGenerator
<T5
>& g5
,
4156 const typename ParamGenerator
<T5
>::iterator
& current5
,
4157 const ParamGenerator
<T6
>& g6
,
4158 const typename ParamGenerator
<T6
>::iterator
& current6
,
4159 const ParamGenerator
<T7
>& g7
,
4160 const typename ParamGenerator
<T7
>::iterator
& current7
,
4161 const ParamGenerator
<T8
>& g8
,
4162 const typename ParamGenerator
<T8
>::iterator
& current8
)
4164 begin1_(g1
.begin()), end1_(g1
.end()), current1_(current1
),
4165 begin2_(g2
.begin()), end2_(g2
.end()), current2_(current2
),
4166 begin3_(g3
.begin()), end3_(g3
.end()), current3_(current3
),
4167 begin4_(g4
.begin()), end4_(g4
.end()), current4_(current4
),
4168 begin5_(g5
.begin()), end5_(g5
.end()), current5_(current5
),
4169 begin6_(g6
.begin()), end6_(g6
.end()), current6_(current6
),
4170 begin7_(g7
.begin()), end7_(g7
.end()), current7_(current7
),
4171 begin8_(g8
.begin()), end8_(g8
.end()), current8_(current8
) {
4172 ComputeCurrentValue();
4174 virtual ~Iterator() {}
4176 virtual const ParamGeneratorInterface
<ParamType
>* BaseGenerator() const {
4179 // Advance should not be called on beyond-of-range iterators
4180 // so no component iterators must be beyond end of range, either.
4181 virtual void Advance() {
4184 if (current8_
== end8_
) {
4185 current8_
= begin8_
;
4188 if (current7_
== end7_
) {
4189 current7_
= begin7_
;
4192 if (current6_
== end6_
) {
4193 current6_
= begin6_
;
4196 if (current5_
== end5_
) {
4197 current5_
= begin5_
;
4200 if (current4_
== end4_
) {
4201 current4_
= begin4_
;
4204 if (current3_
== end3_
) {
4205 current3_
= begin3_
;
4208 if (current2_
== end2_
) {
4209 current2_
= begin2_
;
4212 ComputeCurrentValue();
4214 virtual ParamIteratorInterface
<ParamType
>* Clone() const {
4215 return new Iterator(*this);
4217 virtual const ParamType
* Current() const { return ¤t_value_
; }
4218 virtual bool Equals(const ParamIteratorInterface
<ParamType
>& other
) const {
4219 // Having the same base generator guarantees that the other
4220 // iterator is of the same type and we can downcast.
4221 GTEST_CHECK_(BaseGenerator() == other
.BaseGenerator())
4222 << "The program attempted to compare iterators "
4223 << "from different generators." << std::endl
;
4224 const Iterator
* typed_other
=
4225 CheckedDowncastToActualType
<const Iterator
>(&other
);
4226 // We must report iterators equal if they both point beyond their
4227 // respective ranges. That can happen in a variety of fashions,
4228 // so we have to consult AtEnd().
4229 return (AtEnd() && typed_other
->AtEnd()) ||
4231 current1_
== typed_other
->current1_
&&
4232 current2_
== typed_other
->current2_
&&
4233 current3_
== typed_other
->current3_
&&
4234 current4_
== typed_other
->current4_
&&
4235 current5_
== typed_other
->current5_
&&
4236 current6_
== typed_other
->current6_
&&
4237 current7_
== typed_other
->current7_
&&
4238 current8_
== typed_other
->current8_
);
4242 Iterator(const Iterator
& other
)
4243 : base_(other
.base_
),
4244 begin1_(other
.begin1_
),
4246 current1_(other
.current1_
),
4247 begin2_(other
.begin2_
),
4249 current2_(other
.current2_
),
4250 begin3_(other
.begin3_
),
4252 current3_(other
.current3_
),
4253 begin4_(other
.begin4_
),
4255 current4_(other
.current4_
),
4256 begin5_(other
.begin5_
),
4258 current5_(other
.current5_
),
4259 begin6_(other
.begin6_
),
4261 current6_(other
.current6_
),
4262 begin7_(other
.begin7_
),
4264 current7_(other
.current7_
),
4265 begin8_(other
.begin8_
),
4267 current8_(other
.current8_
) {
4268 ComputeCurrentValue();
4271 void ComputeCurrentValue() {
4273 current_value_
= ParamType(*current1_
, *current2_
, *current3_
,
4274 *current4_
, *current5_
, *current6_
, *current7_
, *current8_
);
4276 bool AtEnd() const {
4277 // We must report iterator past the end of the range when either of the
4278 // component iterators has reached the end of its range.
4280 current1_
== end1_
||
4281 current2_
== end2_
||
4282 current3_
== end3_
||
4283 current4_
== end4_
||
4284 current5_
== end5_
||
4285 current6_
== end6_
||
4286 current7_
== end7_
||
4290 // No implementation - assignment is unsupported.
4291 void operator=(const Iterator
& other
);
4293 const ParamGeneratorInterface
<ParamType
>* const base_
;
4294 // begin[i]_ and end[i]_ define the i-th range that Iterator traverses.
4295 // current[i]_ is the actual traversing iterator.
4296 const typename ParamGenerator
<T1
>::iterator begin1_
;
4297 const typename ParamGenerator
<T1
>::iterator end1_
;
4298 typename ParamGenerator
<T1
>::iterator current1_
;
4299 const typename ParamGenerator
<T2
>::iterator begin2_
;
4300 const typename ParamGenerator
<T2
>::iterator end2_
;
4301 typename ParamGenerator
<T2
>::iterator current2_
;
4302 const typename ParamGenerator
<T3
>::iterator begin3_
;
4303 const typename ParamGenerator
<T3
>::iterator end3_
;
4304 typename ParamGenerator
<T3
>::iterator current3_
;
4305 const typename ParamGenerator
<T4
>::iterator begin4_
;
4306 const typename ParamGenerator
<T4
>::iterator end4_
;
4307 typename ParamGenerator
<T4
>::iterator current4_
;
4308 const typename ParamGenerator
<T5
>::iterator begin5_
;
4309 const typename ParamGenerator
<T5
>::iterator end5_
;
4310 typename ParamGenerator
<T5
>::iterator current5_
;
4311 const typename ParamGenerator
<T6
>::iterator begin6_
;
4312 const typename ParamGenerator
<T6
>::iterator end6_
;
4313 typename ParamGenerator
<T6
>::iterator current6_
;
4314 const typename ParamGenerator
<T7
>::iterator begin7_
;
4315 const typename ParamGenerator
<T7
>::iterator end7_
;
4316 typename ParamGenerator
<T7
>::iterator current7_
;
4317 const typename ParamGenerator
<T8
>::iterator begin8_
;
4318 const typename ParamGenerator
<T8
>::iterator end8_
;
4319 typename ParamGenerator
<T8
>::iterator current8_
;
4320 ParamType current_value_
;
4321 }; // class CartesianProductGenerator8::Iterator
4323 // No implementation - assignment is unsupported.
4324 void operator=(const CartesianProductGenerator8
& other
);
4326 const ParamGenerator
<T1
> g1_
;
4327 const ParamGenerator
<T2
> g2_
;
4328 const ParamGenerator
<T3
> g3_
;
4329 const ParamGenerator
<T4
> g4_
;
4330 const ParamGenerator
<T5
> g5_
;
4331 const ParamGenerator
<T6
> g6_
;
4332 const ParamGenerator
<T7
> g7_
;
4333 const ParamGenerator
<T8
> g8_
;
4334 }; // class CartesianProductGenerator8
4337 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
4338 typename T6
, typename T7
, typename T8
, typename T9
>
4339 class CartesianProductGenerator9
4340 : public ParamGeneratorInterface
< ::testing::tuple
<T1
, T2
, T3
, T4
, T5
, T6
,
4343 typedef ::testing::tuple
<T1
, T2
, T3
, T4
, T5
, T6
, T7
, T8
, T9
> ParamType
;
4345 CartesianProductGenerator9(const ParamGenerator
<T1
>& g1
,
4346 const ParamGenerator
<T2
>& g2
, const ParamGenerator
<T3
>& g3
,
4347 const ParamGenerator
<T4
>& g4
, const ParamGenerator
<T5
>& g5
,
4348 const ParamGenerator
<T6
>& g6
, const ParamGenerator
<T7
>& g7
,
4349 const ParamGenerator
<T8
>& g8
, const ParamGenerator
<T9
>& g9
)
4350 : g1_(g1
), g2_(g2
), g3_(g3
), g4_(g4
), g5_(g5
), g6_(g6
), g7_(g7
), g8_(g8
),
4352 virtual ~CartesianProductGenerator9() {}
4354 virtual ParamIteratorInterface
<ParamType
>* Begin() const {
4355 return new Iterator(this, g1_
, g1_
.begin(), g2_
, g2_
.begin(), g3_
,
4356 g3_
.begin(), g4_
, g4_
.begin(), g5_
, g5_
.begin(), g6_
, g6_
.begin(), g7_
,
4357 g7_
.begin(), g8_
, g8_
.begin(), g9_
, g9_
.begin());
4359 virtual ParamIteratorInterface
<ParamType
>* End() const {
4360 return new Iterator(this, g1_
, g1_
.end(), g2_
, g2_
.end(), g3_
, g3_
.end(),
4361 g4_
, g4_
.end(), g5_
, g5_
.end(), g6_
, g6_
.end(), g7_
, g7_
.end(), g8_
,
4362 g8_
.end(), g9_
, g9_
.end());
4366 class Iterator
: public ParamIteratorInterface
<ParamType
> {
4368 Iterator(const ParamGeneratorInterface
<ParamType
>* base
,
4369 const ParamGenerator
<T1
>& g1
,
4370 const typename ParamGenerator
<T1
>::iterator
& current1
,
4371 const ParamGenerator
<T2
>& g2
,
4372 const typename ParamGenerator
<T2
>::iterator
& current2
,
4373 const ParamGenerator
<T3
>& g3
,
4374 const typename ParamGenerator
<T3
>::iterator
& current3
,
4375 const ParamGenerator
<T4
>& g4
,
4376 const typename ParamGenerator
<T4
>::iterator
& current4
,
4377 const ParamGenerator
<T5
>& g5
,
4378 const typename ParamGenerator
<T5
>::iterator
& current5
,
4379 const ParamGenerator
<T6
>& g6
,
4380 const typename ParamGenerator
<T6
>::iterator
& current6
,
4381 const ParamGenerator
<T7
>& g7
,
4382 const typename ParamGenerator
<T7
>::iterator
& current7
,
4383 const ParamGenerator
<T8
>& g8
,
4384 const typename ParamGenerator
<T8
>::iterator
& current8
,
4385 const ParamGenerator
<T9
>& g9
,
4386 const typename ParamGenerator
<T9
>::iterator
& current9
)
4388 begin1_(g1
.begin()), end1_(g1
.end()), current1_(current1
),
4389 begin2_(g2
.begin()), end2_(g2
.end()), current2_(current2
),
4390 begin3_(g3
.begin()), end3_(g3
.end()), current3_(current3
),
4391 begin4_(g4
.begin()), end4_(g4
.end()), current4_(current4
),
4392 begin5_(g5
.begin()), end5_(g5
.end()), current5_(current5
),
4393 begin6_(g6
.begin()), end6_(g6
.end()), current6_(current6
),
4394 begin7_(g7
.begin()), end7_(g7
.end()), current7_(current7
),
4395 begin8_(g8
.begin()), end8_(g8
.end()), current8_(current8
),
4396 begin9_(g9
.begin()), end9_(g9
.end()), current9_(current9
) {
4397 ComputeCurrentValue();
4399 virtual ~Iterator() {}
4401 virtual const ParamGeneratorInterface
<ParamType
>* BaseGenerator() const {
4404 // Advance should not be called on beyond-of-range iterators
4405 // so no component iterators must be beyond end of range, either.
4406 virtual void Advance() {
4409 if (current9_
== end9_
) {
4410 current9_
= begin9_
;
4413 if (current8_
== end8_
) {
4414 current8_
= begin8_
;
4417 if (current7_
== end7_
) {
4418 current7_
= begin7_
;
4421 if (current6_
== end6_
) {
4422 current6_
= begin6_
;
4425 if (current5_
== end5_
) {
4426 current5_
= begin5_
;
4429 if (current4_
== end4_
) {
4430 current4_
= begin4_
;
4433 if (current3_
== end3_
) {
4434 current3_
= begin3_
;
4437 if (current2_
== end2_
) {
4438 current2_
= begin2_
;
4441 ComputeCurrentValue();
4443 virtual ParamIteratorInterface
<ParamType
>* Clone() const {
4444 return new Iterator(*this);
4446 virtual const ParamType
* Current() const { return ¤t_value_
; }
4447 virtual bool Equals(const ParamIteratorInterface
<ParamType
>& other
) const {
4448 // Having the same base generator guarantees that the other
4449 // iterator is of the same type and we can downcast.
4450 GTEST_CHECK_(BaseGenerator() == other
.BaseGenerator())
4451 << "The program attempted to compare iterators "
4452 << "from different generators." << std::endl
;
4453 const Iterator
* typed_other
=
4454 CheckedDowncastToActualType
<const Iterator
>(&other
);
4455 // We must report iterators equal if they both point beyond their
4456 // respective ranges. That can happen in a variety of fashions,
4457 // so we have to consult AtEnd().
4458 return (AtEnd() && typed_other
->AtEnd()) ||
4460 current1_
== typed_other
->current1_
&&
4461 current2_
== typed_other
->current2_
&&
4462 current3_
== typed_other
->current3_
&&
4463 current4_
== typed_other
->current4_
&&
4464 current5_
== typed_other
->current5_
&&
4465 current6_
== typed_other
->current6_
&&
4466 current7_
== typed_other
->current7_
&&
4467 current8_
== typed_other
->current8_
&&
4468 current9_
== typed_other
->current9_
);
4472 Iterator(const Iterator
& other
)
4473 : base_(other
.base_
),
4474 begin1_(other
.begin1_
),
4476 current1_(other
.current1_
),
4477 begin2_(other
.begin2_
),
4479 current2_(other
.current2_
),
4480 begin3_(other
.begin3_
),
4482 current3_(other
.current3_
),
4483 begin4_(other
.begin4_
),
4485 current4_(other
.current4_
),
4486 begin5_(other
.begin5_
),
4488 current5_(other
.current5_
),
4489 begin6_(other
.begin6_
),
4491 current6_(other
.current6_
),
4492 begin7_(other
.begin7_
),
4494 current7_(other
.current7_
),
4495 begin8_(other
.begin8_
),
4497 current8_(other
.current8_
),
4498 begin9_(other
.begin9_
),
4500 current9_(other
.current9_
) {
4501 ComputeCurrentValue();
4504 void ComputeCurrentValue() {
4506 current_value_
= ParamType(*current1_
, *current2_
, *current3_
,
4507 *current4_
, *current5_
, *current6_
, *current7_
, *current8_
,
4510 bool AtEnd() const {
4511 // We must report iterator past the end of the range when either of the
4512 // component iterators has reached the end of its range.
4514 current1_
== end1_
||
4515 current2_
== end2_
||
4516 current3_
== end3_
||
4517 current4_
== end4_
||
4518 current5_
== end5_
||
4519 current6_
== end6_
||
4520 current7_
== end7_
||
4521 current8_
== end8_
||
4525 // No implementation - assignment is unsupported.
4526 void operator=(const Iterator
& other
);
4528 const ParamGeneratorInterface
<ParamType
>* const base_
;
4529 // begin[i]_ and end[i]_ define the i-th range that Iterator traverses.
4530 // current[i]_ is the actual traversing iterator.
4531 const typename ParamGenerator
<T1
>::iterator begin1_
;
4532 const typename ParamGenerator
<T1
>::iterator end1_
;
4533 typename ParamGenerator
<T1
>::iterator current1_
;
4534 const typename ParamGenerator
<T2
>::iterator begin2_
;
4535 const typename ParamGenerator
<T2
>::iterator end2_
;
4536 typename ParamGenerator
<T2
>::iterator current2_
;
4537 const typename ParamGenerator
<T3
>::iterator begin3_
;
4538 const typename ParamGenerator
<T3
>::iterator end3_
;
4539 typename ParamGenerator
<T3
>::iterator current3_
;
4540 const typename ParamGenerator
<T4
>::iterator begin4_
;
4541 const typename ParamGenerator
<T4
>::iterator end4_
;
4542 typename ParamGenerator
<T4
>::iterator current4_
;
4543 const typename ParamGenerator
<T5
>::iterator begin5_
;
4544 const typename ParamGenerator
<T5
>::iterator end5_
;
4545 typename ParamGenerator
<T5
>::iterator current5_
;
4546 const typename ParamGenerator
<T6
>::iterator begin6_
;
4547 const typename ParamGenerator
<T6
>::iterator end6_
;
4548 typename ParamGenerator
<T6
>::iterator current6_
;
4549 const typename ParamGenerator
<T7
>::iterator begin7_
;
4550 const typename ParamGenerator
<T7
>::iterator end7_
;
4551 typename ParamGenerator
<T7
>::iterator current7_
;
4552 const typename ParamGenerator
<T8
>::iterator begin8_
;
4553 const typename ParamGenerator
<T8
>::iterator end8_
;
4554 typename ParamGenerator
<T8
>::iterator current8_
;
4555 const typename ParamGenerator
<T9
>::iterator begin9_
;
4556 const typename ParamGenerator
<T9
>::iterator end9_
;
4557 typename ParamGenerator
<T9
>::iterator current9_
;
4558 ParamType current_value_
;
4559 }; // class CartesianProductGenerator9::Iterator
4561 // No implementation - assignment is unsupported.
4562 void operator=(const CartesianProductGenerator9
& other
);
4564 const ParamGenerator
<T1
> g1_
;
4565 const ParamGenerator
<T2
> g2_
;
4566 const ParamGenerator
<T3
> g3_
;
4567 const ParamGenerator
<T4
> g4_
;
4568 const ParamGenerator
<T5
> g5_
;
4569 const ParamGenerator
<T6
> g6_
;
4570 const ParamGenerator
<T7
> g7_
;
4571 const ParamGenerator
<T8
> g8_
;
4572 const ParamGenerator
<T9
> g9_
;
4573 }; // class CartesianProductGenerator9
4576 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
4577 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
>
4578 class CartesianProductGenerator10
4579 : public ParamGeneratorInterface
< ::testing::tuple
<T1
, T2
, T3
, T4
, T5
, T6
,
4580 T7
, T8
, T9
, T10
> > {
4582 typedef ::testing::tuple
<T1
, T2
, T3
, T4
, T5
, T6
, T7
, T8
, T9
, T10
> ParamType
;
4584 CartesianProductGenerator10(const ParamGenerator
<T1
>& g1
,
4585 const ParamGenerator
<T2
>& g2
, const ParamGenerator
<T3
>& g3
,
4586 const ParamGenerator
<T4
>& g4
, const ParamGenerator
<T5
>& g5
,
4587 const ParamGenerator
<T6
>& g6
, const ParamGenerator
<T7
>& g7
,
4588 const ParamGenerator
<T8
>& g8
, const ParamGenerator
<T9
>& g9
,
4589 const ParamGenerator
<T10
>& g10
)
4590 : g1_(g1
), g2_(g2
), g3_(g3
), g4_(g4
), g5_(g5
), g6_(g6
), g7_(g7
), g8_(g8
),
4591 g9_(g9
), g10_(g10
) {}
4592 virtual ~CartesianProductGenerator10() {}
4594 virtual ParamIteratorInterface
<ParamType
>* Begin() const {
4595 return new Iterator(this, g1_
, g1_
.begin(), g2_
, g2_
.begin(), g3_
,
4596 g3_
.begin(), g4_
, g4_
.begin(), g5_
, g5_
.begin(), g6_
, g6_
.begin(), g7_
,
4597 g7_
.begin(), g8_
, g8_
.begin(), g9_
, g9_
.begin(), g10_
, g10_
.begin());
4599 virtual ParamIteratorInterface
<ParamType
>* End() const {
4600 return new Iterator(this, g1_
, g1_
.end(), g2_
, g2_
.end(), g3_
, g3_
.end(),
4601 g4_
, g4_
.end(), g5_
, g5_
.end(), g6_
, g6_
.end(), g7_
, g7_
.end(), g8_
,
4602 g8_
.end(), g9_
, g9_
.end(), g10_
, g10_
.end());
4606 class Iterator
: public ParamIteratorInterface
<ParamType
> {
4608 Iterator(const ParamGeneratorInterface
<ParamType
>* base
,
4609 const ParamGenerator
<T1
>& g1
,
4610 const typename ParamGenerator
<T1
>::iterator
& current1
,
4611 const ParamGenerator
<T2
>& g2
,
4612 const typename ParamGenerator
<T2
>::iterator
& current2
,
4613 const ParamGenerator
<T3
>& g3
,
4614 const typename ParamGenerator
<T3
>::iterator
& current3
,
4615 const ParamGenerator
<T4
>& g4
,
4616 const typename ParamGenerator
<T4
>::iterator
& current4
,
4617 const ParamGenerator
<T5
>& g5
,
4618 const typename ParamGenerator
<T5
>::iterator
& current5
,
4619 const ParamGenerator
<T6
>& g6
,
4620 const typename ParamGenerator
<T6
>::iterator
& current6
,
4621 const ParamGenerator
<T7
>& g7
,
4622 const typename ParamGenerator
<T7
>::iterator
& current7
,
4623 const ParamGenerator
<T8
>& g8
,
4624 const typename ParamGenerator
<T8
>::iterator
& current8
,
4625 const ParamGenerator
<T9
>& g9
,
4626 const typename ParamGenerator
<T9
>::iterator
& current9
,
4627 const ParamGenerator
<T10
>& g10
,
4628 const typename ParamGenerator
<T10
>::iterator
& current10
)
4630 begin1_(g1
.begin()), end1_(g1
.end()), current1_(current1
),
4631 begin2_(g2
.begin()), end2_(g2
.end()), current2_(current2
),
4632 begin3_(g3
.begin()), end3_(g3
.end()), current3_(current3
),
4633 begin4_(g4
.begin()), end4_(g4
.end()), current4_(current4
),
4634 begin5_(g5
.begin()), end5_(g5
.end()), current5_(current5
),
4635 begin6_(g6
.begin()), end6_(g6
.end()), current6_(current6
),
4636 begin7_(g7
.begin()), end7_(g7
.end()), current7_(current7
),
4637 begin8_(g8
.begin()), end8_(g8
.end()), current8_(current8
),
4638 begin9_(g9
.begin()), end9_(g9
.end()), current9_(current9
),
4639 begin10_(g10
.begin()), end10_(g10
.end()), current10_(current10
) {
4640 ComputeCurrentValue();
4642 virtual ~Iterator() {}
4644 virtual const ParamGeneratorInterface
<ParamType
>* BaseGenerator() const {
4647 // Advance should not be called on beyond-of-range iterators
4648 // so no component iterators must be beyond end of range, either.
4649 virtual void Advance() {
4652 if (current10_
== end10_
) {
4653 current10_
= begin10_
;
4656 if (current9_
== end9_
) {
4657 current9_
= begin9_
;
4660 if (current8_
== end8_
) {
4661 current8_
= begin8_
;
4664 if (current7_
== end7_
) {
4665 current7_
= begin7_
;
4668 if (current6_
== end6_
) {
4669 current6_
= begin6_
;
4672 if (current5_
== end5_
) {
4673 current5_
= begin5_
;
4676 if (current4_
== end4_
) {
4677 current4_
= begin4_
;
4680 if (current3_
== end3_
) {
4681 current3_
= begin3_
;
4684 if (current2_
== end2_
) {
4685 current2_
= begin2_
;
4688 ComputeCurrentValue();
4690 virtual ParamIteratorInterface
<ParamType
>* Clone() const {
4691 return new Iterator(*this);
4693 virtual const ParamType
* Current() const { return ¤t_value_
; }
4694 virtual bool Equals(const ParamIteratorInterface
<ParamType
>& other
) const {
4695 // Having the same base generator guarantees that the other
4696 // iterator is of the same type and we can downcast.
4697 GTEST_CHECK_(BaseGenerator() == other
.BaseGenerator())
4698 << "The program attempted to compare iterators "
4699 << "from different generators." << std::endl
;
4700 const Iterator
* typed_other
=
4701 CheckedDowncastToActualType
<const Iterator
>(&other
);
4702 // We must report iterators equal if they both point beyond their
4703 // respective ranges. That can happen in a variety of fashions,
4704 // so we have to consult AtEnd().
4705 return (AtEnd() && typed_other
->AtEnd()) ||
4707 current1_
== typed_other
->current1_
&&
4708 current2_
== typed_other
->current2_
&&
4709 current3_
== typed_other
->current3_
&&
4710 current4_
== typed_other
->current4_
&&
4711 current5_
== typed_other
->current5_
&&
4712 current6_
== typed_other
->current6_
&&
4713 current7_
== typed_other
->current7_
&&
4714 current8_
== typed_other
->current8_
&&
4715 current9_
== typed_other
->current9_
&&
4716 current10_
== typed_other
->current10_
);
4720 Iterator(const Iterator
& other
)
4721 : base_(other
.base_
),
4722 begin1_(other
.begin1_
),
4724 current1_(other
.current1_
),
4725 begin2_(other
.begin2_
),
4727 current2_(other
.current2_
),
4728 begin3_(other
.begin3_
),
4730 current3_(other
.current3_
),
4731 begin4_(other
.begin4_
),
4733 current4_(other
.current4_
),
4734 begin5_(other
.begin5_
),
4736 current5_(other
.current5_
),
4737 begin6_(other
.begin6_
),
4739 current6_(other
.current6_
),
4740 begin7_(other
.begin7_
),
4742 current7_(other
.current7_
),
4743 begin8_(other
.begin8_
),
4745 current8_(other
.current8_
),
4746 begin9_(other
.begin9_
),
4748 current9_(other
.current9_
),
4749 begin10_(other
.begin10_
),
4750 end10_(other
.end10_
),
4751 current10_(other
.current10_
) {
4752 ComputeCurrentValue();
4755 void ComputeCurrentValue() {
4757 current_value_
= ParamType(*current1_
, *current2_
, *current3_
,
4758 *current4_
, *current5_
, *current6_
, *current7_
, *current8_
,
4759 *current9_
, *current10_
);
4761 bool AtEnd() const {
4762 // We must report iterator past the end of the range when either of the
4763 // component iterators has reached the end of its range.
4765 current1_
== end1_
||
4766 current2_
== end2_
||
4767 current3_
== end3_
||
4768 current4_
== end4_
||
4769 current5_
== end5_
||
4770 current6_
== end6_
||
4771 current7_
== end7_
||
4772 current8_
== end8_
||
4773 current9_
== end9_
||
4774 current10_
== end10_
;
4777 // No implementation - assignment is unsupported.
4778 void operator=(const Iterator
& other
);
4780 const ParamGeneratorInterface
<ParamType
>* const base_
;
4781 // begin[i]_ and end[i]_ define the i-th range that Iterator traverses.
4782 // current[i]_ is the actual traversing iterator.
4783 const typename ParamGenerator
<T1
>::iterator begin1_
;
4784 const typename ParamGenerator
<T1
>::iterator end1_
;
4785 typename ParamGenerator
<T1
>::iterator current1_
;
4786 const typename ParamGenerator
<T2
>::iterator begin2_
;
4787 const typename ParamGenerator
<T2
>::iterator end2_
;
4788 typename ParamGenerator
<T2
>::iterator current2_
;
4789 const typename ParamGenerator
<T3
>::iterator begin3_
;
4790 const typename ParamGenerator
<T3
>::iterator end3_
;
4791 typename ParamGenerator
<T3
>::iterator current3_
;
4792 const typename ParamGenerator
<T4
>::iterator begin4_
;
4793 const typename ParamGenerator
<T4
>::iterator end4_
;
4794 typename ParamGenerator
<T4
>::iterator current4_
;
4795 const typename ParamGenerator
<T5
>::iterator begin5_
;
4796 const typename ParamGenerator
<T5
>::iterator end5_
;
4797 typename ParamGenerator
<T5
>::iterator current5_
;
4798 const typename ParamGenerator
<T6
>::iterator begin6_
;
4799 const typename ParamGenerator
<T6
>::iterator end6_
;
4800 typename ParamGenerator
<T6
>::iterator current6_
;
4801 const typename ParamGenerator
<T7
>::iterator begin7_
;
4802 const typename ParamGenerator
<T7
>::iterator end7_
;
4803 typename ParamGenerator
<T7
>::iterator current7_
;
4804 const typename ParamGenerator
<T8
>::iterator begin8_
;
4805 const typename ParamGenerator
<T8
>::iterator end8_
;
4806 typename ParamGenerator
<T8
>::iterator current8_
;
4807 const typename ParamGenerator
<T9
>::iterator begin9_
;
4808 const typename ParamGenerator
<T9
>::iterator end9_
;
4809 typename ParamGenerator
<T9
>::iterator current9_
;
4810 const typename ParamGenerator
<T10
>::iterator begin10_
;
4811 const typename ParamGenerator
<T10
>::iterator end10_
;
4812 typename ParamGenerator
<T10
>::iterator current10_
;
4813 ParamType current_value_
;
4814 }; // class CartesianProductGenerator10::Iterator
4816 // No implementation - assignment is unsupported.
4817 void operator=(const CartesianProductGenerator10
& other
);
4819 const ParamGenerator
<T1
> g1_
;
4820 const ParamGenerator
<T2
> g2_
;
4821 const ParamGenerator
<T3
> g3_
;
4822 const ParamGenerator
<T4
> g4_
;
4823 const ParamGenerator
<T5
> g5_
;
4824 const ParamGenerator
<T6
> g6_
;
4825 const ParamGenerator
<T7
> g7_
;
4826 const ParamGenerator
<T8
> g8_
;
4827 const ParamGenerator
<T9
> g9_
;
4828 const ParamGenerator
<T10
> g10_
;
4829 }; // class CartesianProductGenerator10
4832 // INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
4834 // Helper classes providing Combine() with polymorphic features. They allow
4835 // casting CartesianProductGeneratorN<T> to ParamGenerator<U> if T is
4836 // convertible to U.
4838 template <class Generator1
, class Generator2
>
4839 class CartesianProductHolder2
{
4841 CartesianProductHolder2(const Generator1
& g1
, const Generator2
& g2
)
4842 : g1_(g1
), g2_(g2
) {}
4843 template <typename T1
, typename T2
>
4844 operator ParamGenerator
< ::testing::tuple
<T1
, T2
> >() const {
4845 return ParamGenerator
< ::testing::tuple
<T1
, T2
> >(
4846 new CartesianProductGenerator2
<T1
, T2
>(
4847 static_cast<ParamGenerator
<T1
> >(g1_
),
4848 static_cast<ParamGenerator
<T2
> >(g2_
)));
4852 // No implementation - assignment is unsupported.
4853 void operator=(const CartesianProductHolder2
& other
);
4855 const Generator1 g1_
;
4856 const Generator2 g2_
;
4857 }; // class CartesianProductHolder2
4859 template <class Generator1
, class Generator2
, class Generator3
>
4860 class CartesianProductHolder3
{
4862 CartesianProductHolder3(const Generator1
& g1
, const Generator2
& g2
,
4863 const Generator3
& g3
)
4864 : g1_(g1
), g2_(g2
), g3_(g3
) {}
4865 template <typename T1
, typename T2
, typename T3
>
4866 operator ParamGenerator
< ::testing::tuple
<T1
, T2
, T3
> >() const {
4867 return ParamGenerator
< ::testing::tuple
<T1
, T2
, T3
> >(
4868 new CartesianProductGenerator3
<T1
, T2
, T3
>(
4869 static_cast<ParamGenerator
<T1
> >(g1_
),
4870 static_cast<ParamGenerator
<T2
> >(g2_
),
4871 static_cast<ParamGenerator
<T3
> >(g3_
)));
4875 // No implementation - assignment is unsupported.
4876 void operator=(const CartesianProductHolder3
& other
);
4878 const Generator1 g1_
;
4879 const Generator2 g2_
;
4880 const Generator3 g3_
;
4881 }; // class CartesianProductHolder3
4883 template <class Generator1
, class Generator2
, class Generator3
,
4885 class CartesianProductHolder4
{
4887 CartesianProductHolder4(const Generator1
& g1
, const Generator2
& g2
,
4888 const Generator3
& g3
, const Generator4
& g4
)
4889 : g1_(g1
), g2_(g2
), g3_(g3
), g4_(g4
) {}
4890 template <typename T1
, typename T2
, typename T3
, typename T4
>
4891 operator ParamGenerator
< ::testing::tuple
<T1
, T2
, T3
, T4
> >() const {
4892 return ParamGenerator
< ::testing::tuple
<T1
, T2
, T3
, T4
> >(
4893 new CartesianProductGenerator4
<T1
, T2
, T3
, T4
>(
4894 static_cast<ParamGenerator
<T1
> >(g1_
),
4895 static_cast<ParamGenerator
<T2
> >(g2_
),
4896 static_cast<ParamGenerator
<T3
> >(g3_
),
4897 static_cast<ParamGenerator
<T4
> >(g4_
)));
4901 // No implementation - assignment is unsupported.
4902 void operator=(const CartesianProductHolder4
& other
);
4904 const Generator1 g1_
;
4905 const Generator2 g2_
;
4906 const Generator3 g3_
;
4907 const Generator4 g4_
;
4908 }; // class CartesianProductHolder4
4910 template <class Generator1
, class Generator2
, class Generator3
,
4911 class Generator4
, class Generator5
>
4912 class CartesianProductHolder5
{
4914 CartesianProductHolder5(const Generator1
& g1
, const Generator2
& g2
,
4915 const Generator3
& g3
, const Generator4
& g4
, const Generator5
& g5
)
4916 : g1_(g1
), g2_(g2
), g3_(g3
), g4_(g4
), g5_(g5
) {}
4917 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
>
4918 operator ParamGenerator
< ::testing::tuple
<T1
, T2
, T3
, T4
, T5
> >() const {
4919 return ParamGenerator
< ::testing::tuple
<T1
, T2
, T3
, T4
, T5
> >(
4920 new CartesianProductGenerator5
<T1
, T2
, T3
, T4
, T5
>(
4921 static_cast<ParamGenerator
<T1
> >(g1_
),
4922 static_cast<ParamGenerator
<T2
> >(g2_
),
4923 static_cast<ParamGenerator
<T3
> >(g3_
),
4924 static_cast<ParamGenerator
<T4
> >(g4_
),
4925 static_cast<ParamGenerator
<T5
> >(g5_
)));
4929 // No implementation - assignment is unsupported.
4930 void operator=(const CartesianProductHolder5
& other
);
4932 const Generator1 g1_
;
4933 const Generator2 g2_
;
4934 const Generator3 g3_
;
4935 const Generator4 g4_
;
4936 const Generator5 g5_
;
4937 }; // class CartesianProductHolder5
4939 template <class Generator1
, class Generator2
, class Generator3
,
4940 class Generator4
, class Generator5
, class Generator6
>
4941 class CartesianProductHolder6
{
4943 CartesianProductHolder6(const Generator1
& g1
, const Generator2
& g2
,
4944 const Generator3
& g3
, const Generator4
& g4
, const Generator5
& g5
,
4945 const Generator6
& g6
)
4946 : g1_(g1
), g2_(g2
), g3_(g3
), g4_(g4
), g5_(g5
), g6_(g6
) {}
4947 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
4949 operator ParamGenerator
< ::testing::tuple
<T1
, T2
, T3
, T4
, T5
, T6
> >() const {
4950 return ParamGenerator
< ::testing::tuple
<T1
, T2
, T3
, T4
, T5
, T6
> >(
4951 new CartesianProductGenerator6
<T1
, T2
, T3
, T4
, T5
, T6
>(
4952 static_cast<ParamGenerator
<T1
> >(g1_
),
4953 static_cast<ParamGenerator
<T2
> >(g2_
),
4954 static_cast<ParamGenerator
<T3
> >(g3_
),
4955 static_cast<ParamGenerator
<T4
> >(g4_
),
4956 static_cast<ParamGenerator
<T5
> >(g5_
),
4957 static_cast<ParamGenerator
<T6
> >(g6_
)));
4961 // No implementation - assignment is unsupported.
4962 void operator=(const CartesianProductHolder6
& other
);
4964 const Generator1 g1_
;
4965 const Generator2 g2_
;
4966 const Generator3 g3_
;
4967 const Generator4 g4_
;
4968 const Generator5 g5_
;
4969 const Generator6 g6_
;
4970 }; // class CartesianProductHolder6
4972 template <class Generator1
, class Generator2
, class Generator3
,
4973 class Generator4
, class Generator5
, class Generator6
, class Generator7
>
4974 class CartesianProductHolder7
{
4976 CartesianProductHolder7(const Generator1
& g1
, const Generator2
& g2
,
4977 const Generator3
& g3
, const Generator4
& g4
, const Generator5
& g5
,
4978 const Generator6
& g6
, const Generator7
& g7
)
4979 : g1_(g1
), g2_(g2
), g3_(g3
), g4_(g4
), g5_(g5
), g6_(g6
), g7_(g7
) {}
4980 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
4981 typename T6
, typename T7
>
4982 operator ParamGenerator
< ::testing::tuple
<T1
, T2
, T3
, T4
, T5
, T6
,
4984 return ParamGenerator
< ::testing::tuple
<T1
, T2
, T3
, T4
, T5
, T6
, T7
> >(
4985 new CartesianProductGenerator7
<T1
, T2
, T3
, T4
, T5
, T6
, T7
>(
4986 static_cast<ParamGenerator
<T1
> >(g1_
),
4987 static_cast<ParamGenerator
<T2
> >(g2_
),
4988 static_cast<ParamGenerator
<T3
> >(g3_
),
4989 static_cast<ParamGenerator
<T4
> >(g4_
),
4990 static_cast<ParamGenerator
<T5
> >(g5_
),
4991 static_cast<ParamGenerator
<T6
> >(g6_
),
4992 static_cast<ParamGenerator
<T7
> >(g7_
)));
4996 // No implementation - assignment is unsupported.
4997 void operator=(const CartesianProductHolder7
& other
);
4999 const Generator1 g1_
;
5000 const Generator2 g2_
;
5001 const Generator3 g3_
;
5002 const Generator4 g4_
;
5003 const Generator5 g5_
;
5004 const Generator6 g6_
;
5005 const Generator7 g7_
;
5006 }; // class CartesianProductHolder7
5008 template <class Generator1
, class Generator2
, class Generator3
,
5009 class Generator4
, class Generator5
, class Generator6
, class Generator7
,
5011 class CartesianProductHolder8
{
5013 CartesianProductHolder8(const Generator1
& g1
, const Generator2
& g2
,
5014 const Generator3
& g3
, const Generator4
& g4
, const Generator5
& g5
,
5015 const Generator6
& g6
, const Generator7
& g7
, const Generator8
& g8
)
5016 : g1_(g1
), g2_(g2
), g3_(g3
), g4_(g4
), g5_(g5
), g6_(g6
), g7_(g7
),
5018 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
5019 typename T6
, typename T7
, typename T8
>
5020 operator ParamGenerator
< ::testing::tuple
<T1
, T2
, T3
, T4
, T5
, T6
, T7
,
5022 return ParamGenerator
< ::testing::tuple
<T1
, T2
, T3
, T4
, T5
, T6
, T7
, T8
> >(
5023 new CartesianProductGenerator8
<T1
, T2
, T3
, T4
, T5
, T6
, T7
, T8
>(
5024 static_cast<ParamGenerator
<T1
> >(g1_
),
5025 static_cast<ParamGenerator
<T2
> >(g2_
),
5026 static_cast<ParamGenerator
<T3
> >(g3_
),
5027 static_cast<ParamGenerator
<T4
> >(g4_
),
5028 static_cast<ParamGenerator
<T5
> >(g5_
),
5029 static_cast<ParamGenerator
<T6
> >(g6_
),
5030 static_cast<ParamGenerator
<T7
> >(g7_
),
5031 static_cast<ParamGenerator
<T8
> >(g8_
)));
5035 // No implementation - assignment is unsupported.
5036 void operator=(const CartesianProductHolder8
& other
);
5038 const Generator1 g1_
;
5039 const Generator2 g2_
;
5040 const Generator3 g3_
;
5041 const Generator4 g4_
;
5042 const Generator5 g5_
;
5043 const Generator6 g6_
;
5044 const Generator7 g7_
;
5045 const Generator8 g8_
;
5046 }; // class CartesianProductHolder8
5048 template <class Generator1
, class Generator2
, class Generator3
,
5049 class Generator4
, class Generator5
, class Generator6
, class Generator7
,
5050 class Generator8
, class Generator9
>
5051 class CartesianProductHolder9
{
5053 CartesianProductHolder9(const Generator1
& g1
, const Generator2
& g2
,
5054 const Generator3
& g3
, const Generator4
& g4
, const Generator5
& g5
,
5055 const Generator6
& g6
, const Generator7
& g7
, const Generator8
& g8
,
5056 const Generator9
& g9
)
5057 : g1_(g1
), g2_(g2
), g3_(g3
), g4_(g4
), g5_(g5
), g6_(g6
), g7_(g7
), g8_(g8
),
5059 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
5060 typename T6
, typename T7
, typename T8
, typename T9
>
5061 operator ParamGenerator
< ::testing::tuple
<T1
, T2
, T3
, T4
, T5
, T6
, T7
, T8
,
5063 return ParamGenerator
< ::testing::tuple
<T1
, T2
, T3
, T4
, T5
, T6
, T7
, T8
,
5065 new CartesianProductGenerator9
<T1
, T2
, T3
, T4
, T5
, T6
, T7
, T8
, T9
>(
5066 static_cast<ParamGenerator
<T1
> >(g1_
),
5067 static_cast<ParamGenerator
<T2
> >(g2_
),
5068 static_cast<ParamGenerator
<T3
> >(g3_
),
5069 static_cast<ParamGenerator
<T4
> >(g4_
),
5070 static_cast<ParamGenerator
<T5
> >(g5_
),
5071 static_cast<ParamGenerator
<T6
> >(g6_
),
5072 static_cast<ParamGenerator
<T7
> >(g7_
),
5073 static_cast<ParamGenerator
<T8
> >(g8_
),
5074 static_cast<ParamGenerator
<T9
> >(g9_
)));
5078 // No implementation - assignment is unsupported.
5079 void operator=(const CartesianProductHolder9
& other
);
5081 const Generator1 g1_
;
5082 const Generator2 g2_
;
5083 const Generator3 g3_
;
5084 const Generator4 g4_
;
5085 const Generator5 g5_
;
5086 const Generator6 g6_
;
5087 const Generator7 g7_
;
5088 const Generator8 g8_
;
5089 const Generator9 g9_
;
5090 }; // class CartesianProductHolder9
5092 template <class Generator1
, class Generator2
, class Generator3
,
5093 class Generator4
, class Generator5
, class Generator6
, class Generator7
,
5094 class Generator8
, class Generator9
, class Generator10
>
5095 class CartesianProductHolder10
{
5097 CartesianProductHolder10(const Generator1
& g1
, const Generator2
& g2
,
5098 const Generator3
& g3
, const Generator4
& g4
, const Generator5
& g5
,
5099 const Generator6
& g6
, const Generator7
& g7
, const Generator8
& g8
,
5100 const Generator9
& g9
, const Generator10
& g10
)
5101 : g1_(g1
), g2_(g2
), g3_(g3
), g4_(g4
), g5_(g5
), g6_(g6
), g7_(g7
), g8_(g8
),
5102 g9_(g9
), g10_(g10
) {}
5103 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
5104 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
>
5105 operator ParamGenerator
< ::testing::tuple
<T1
, T2
, T3
, T4
, T5
, T6
, T7
, T8
, T9
,
5107 return ParamGenerator
< ::testing::tuple
<T1
, T2
, T3
, T4
, T5
, T6
, T7
, T8
, T9
,
5109 new CartesianProductGenerator10
<T1
, T2
, T3
, T4
, T5
, T6
, T7
, T8
, T9
,
5111 static_cast<ParamGenerator
<T1
> >(g1_
),
5112 static_cast<ParamGenerator
<T2
> >(g2_
),
5113 static_cast<ParamGenerator
<T3
> >(g3_
),
5114 static_cast<ParamGenerator
<T4
> >(g4_
),
5115 static_cast<ParamGenerator
<T5
> >(g5_
),
5116 static_cast<ParamGenerator
<T6
> >(g6_
),
5117 static_cast<ParamGenerator
<T7
> >(g7_
),
5118 static_cast<ParamGenerator
<T8
> >(g8_
),
5119 static_cast<ParamGenerator
<T9
> >(g9_
),
5120 static_cast<ParamGenerator
<T10
> >(g10_
)));
5124 // No implementation - assignment is unsupported.
5125 void operator=(const CartesianProductHolder10
& other
);
5127 const Generator1 g1_
;
5128 const Generator2 g2_
;
5129 const Generator3 g3_
;
5130 const Generator4 g4_
;
5131 const Generator5 g5_
;
5132 const Generator6 g6_
;
5133 const Generator7 g7_
;
5134 const Generator8 g8_
;
5135 const Generator9 g9_
;
5136 const Generator10 g10_
;
5137 }; // class CartesianProductHolder10
5139 # endif // GTEST_HAS_COMBINE
5141 } // namespace internal
5142 } // namespace testing
5144 #endif // GTEST_HAS_PARAM_TEST
5146 #endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_GENERATED_H_