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 tr1::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 { return ValuesIn(&v1_
, &v1_
+ 1); }
85 // No implementation - assignment is unsupported.
86 void operator=(const ValueArray1
& other
);
91 template <typename T1
, typename T2
>
94 ValueArray2(T1 v1
, T2 v2
) : v1_(v1
), v2_(v2
) {}
97 operator ParamGenerator
<T
>() const {
98 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
)};
99 return ValuesIn(array
);
103 // No implementation - assignment is unsupported.
104 void operator=(const ValueArray2
& other
);
110 template <typename T1
, typename T2
, typename T3
>
113 ValueArray3(T1 v1
, T2 v2
, T3 v3
) : v1_(v1
), v2_(v2
), v3_(v3
) {}
115 template <typename T
>
116 operator ParamGenerator
<T
>() const {
117 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
118 static_cast<T
>(v3_
)};
119 return ValuesIn(array
);
123 // No implementation - assignment is unsupported.
124 void operator=(const ValueArray3
& other
);
131 template <typename T1
, typename T2
, typename T3
, typename T4
>
134 ValueArray4(T1 v1
, T2 v2
, T3 v3
, T4 v4
) : v1_(v1
), v2_(v2
), v3_(v3
),
137 template <typename T
>
138 operator ParamGenerator
<T
>() const {
139 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
140 static_cast<T
>(v3_
), static_cast<T
>(v4_
)};
141 return ValuesIn(array
);
145 // No implementation - assignment is unsupported.
146 void operator=(const ValueArray4
& other
);
154 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
>
157 ValueArray5(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
) : v1_(v1
), v2_(v2
), v3_(v3
),
160 template <typename T
>
161 operator ParamGenerator
<T
>() const {
162 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
163 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
)};
164 return ValuesIn(array
);
168 // No implementation - assignment is unsupported.
169 void operator=(const ValueArray5
& other
);
178 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
182 ValueArray6(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
) : v1_(v1
), v2_(v2
),
183 v3_(v3
), v4_(v4
), v5_(v5
), v6_(v6
) {}
185 template <typename T
>
186 operator ParamGenerator
<T
>() const {
187 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
188 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
189 static_cast<T
>(v6_
)};
190 return ValuesIn(array
);
194 // No implementation - assignment is unsupported.
195 void operator=(const ValueArray6
& other
);
205 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
206 typename T6
, typename T7
>
209 ValueArray7(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
) : v1_(v1
),
210 v2_(v2
), v3_(v3
), v4_(v4
), v5_(v5
), v6_(v6
), v7_(v7
) {}
212 template <typename T
>
213 operator ParamGenerator
<T
>() const {
214 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
215 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
216 static_cast<T
>(v6_
), static_cast<T
>(v7_
)};
217 return ValuesIn(array
);
221 // No implementation - assignment is unsupported.
222 void operator=(const ValueArray7
& other
);
233 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
234 typename T6
, typename T7
, typename T8
>
237 ValueArray8(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
,
238 T8 v8
) : v1_(v1
), v2_(v2
), v3_(v3
), v4_(v4
), v5_(v5
), v6_(v6
), v7_(v7
),
241 template <typename T
>
242 operator ParamGenerator
<T
>() const {
243 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
244 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
245 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
)};
246 return ValuesIn(array
);
250 // No implementation - assignment is unsupported.
251 void operator=(const ValueArray8
& other
);
263 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
264 typename T6
, typename T7
, typename T8
, typename T9
>
267 ValueArray9(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
,
268 T9 v9
) : v1_(v1
), v2_(v2
), v3_(v3
), v4_(v4
), v5_(v5
), v6_(v6
), v7_(v7
),
271 template <typename T
>
272 operator ParamGenerator
<T
>() const {
273 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
274 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
275 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
276 static_cast<T
>(v9_
)};
277 return ValuesIn(array
);
281 // No implementation - assignment is unsupported.
282 void operator=(const ValueArray9
& other
);
295 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
296 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
>
299 ValueArray10(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
300 T10 v10
) : v1_(v1
), v2_(v2
), v3_(v3
), v4_(v4
), v5_(v5
), v6_(v6
), v7_(v7
),
301 v8_(v8
), v9_(v9
), v10_(v10
) {}
303 template <typename T
>
304 operator ParamGenerator
<T
>() const {
305 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
306 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
307 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
308 static_cast<T
>(v9_
), static_cast<T
>(v10_
)};
309 return ValuesIn(array
);
313 // No implementation - assignment is unsupported.
314 void operator=(const ValueArray10
& other
);
328 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
329 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
333 ValueArray11(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
334 T10 v10
, T11 v11
) : v1_(v1
), v2_(v2
), v3_(v3
), v4_(v4
), v5_(v5
), v6_(v6
),
335 v7_(v7
), v8_(v8
), v9_(v9
), v10_(v10
), v11_(v11
) {}
337 template <typename T
>
338 operator ParamGenerator
<T
>() const {
339 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
340 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
341 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
342 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
)};
343 return ValuesIn(array
);
347 // No implementation - assignment is unsupported.
348 void operator=(const ValueArray11
& other
);
363 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
364 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
365 typename T11
, typename T12
>
368 ValueArray12(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
369 T10 v10
, T11 v11
, T12 v12
) : v1_(v1
), v2_(v2
), v3_(v3
), v4_(v4
), v5_(v5
),
370 v6_(v6
), v7_(v7
), v8_(v8
), v9_(v9
), v10_(v10
), v11_(v11
), v12_(v12
) {}
372 template <typename T
>
373 operator ParamGenerator
<T
>() const {
374 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
375 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
376 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
377 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
),
378 static_cast<T
>(v12_
)};
379 return ValuesIn(array
);
383 // No implementation - assignment is unsupported.
384 void operator=(const ValueArray12
& other
);
400 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
401 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
402 typename T11
, typename T12
, typename T13
>
405 ValueArray13(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
406 T10 v10
, T11 v11
, T12 v12
, T13 v13
) : v1_(v1
), v2_(v2
), v3_(v3
), v4_(v4
),
407 v5_(v5
), v6_(v6
), v7_(v7
), v8_(v8
), v9_(v9
), v10_(v10
), v11_(v11
),
408 v12_(v12
), v13_(v13
) {}
410 template <typename T
>
411 operator ParamGenerator
<T
>() const {
412 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
413 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
414 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
415 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
),
416 static_cast<T
>(v12_
), static_cast<T
>(v13_
)};
417 return ValuesIn(array
);
421 // No implementation - assignment is unsupported.
422 void operator=(const ValueArray13
& other
);
439 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
440 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
441 typename T11
, typename T12
, typename T13
, typename T14
>
444 ValueArray14(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
445 T10 v10
, T11 v11
, T12 v12
, T13 v13
, T14 v14
) : v1_(v1
), v2_(v2
), v3_(v3
),
446 v4_(v4
), v5_(v5
), v6_(v6
), v7_(v7
), v8_(v8
), v9_(v9
), v10_(v10
),
447 v11_(v11
), v12_(v12
), v13_(v13
), v14_(v14
) {}
449 template <typename T
>
450 operator ParamGenerator
<T
>() const {
451 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
452 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
453 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
454 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
),
455 static_cast<T
>(v12_
), static_cast<T
>(v13_
), static_cast<T
>(v14_
)};
456 return ValuesIn(array
);
460 // No implementation - assignment is unsupported.
461 void operator=(const ValueArray14
& other
);
479 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
480 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
481 typename T11
, typename T12
, typename T13
, typename T14
, typename T15
>
484 ValueArray15(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
485 T10 v10
, T11 v11
, T12 v12
, T13 v13
, T14 v14
, T15 v15
) : v1_(v1
), v2_(v2
),
486 v3_(v3
), v4_(v4
), v5_(v5
), v6_(v6
), v7_(v7
), v8_(v8
), v9_(v9
), v10_(v10
),
487 v11_(v11
), v12_(v12
), v13_(v13
), v14_(v14
), v15_(v15
) {}
489 template <typename T
>
490 operator ParamGenerator
<T
>() const {
491 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
492 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
493 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
494 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
),
495 static_cast<T
>(v12_
), static_cast<T
>(v13_
), static_cast<T
>(v14_
),
496 static_cast<T
>(v15_
)};
497 return ValuesIn(array
);
501 // No implementation - assignment is unsupported.
502 void operator=(const ValueArray15
& other
);
521 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
522 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
523 typename T11
, typename T12
, typename T13
, typename T14
, typename T15
,
527 ValueArray16(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
528 T10 v10
, T11 v11
, T12 v12
, T13 v13
, T14 v14
, T15 v15
, T16 v16
) : v1_(v1
),
529 v2_(v2
), v3_(v3
), v4_(v4
), v5_(v5
), v6_(v6
), v7_(v7
), v8_(v8
), v9_(v9
),
530 v10_(v10
), v11_(v11
), v12_(v12
), v13_(v13
), v14_(v14
), v15_(v15
),
533 template <typename T
>
534 operator ParamGenerator
<T
>() const {
535 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
536 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
537 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
538 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
),
539 static_cast<T
>(v12_
), static_cast<T
>(v13_
), static_cast<T
>(v14_
),
540 static_cast<T
>(v15_
), static_cast<T
>(v16_
)};
541 return ValuesIn(array
);
545 // No implementation - assignment is unsupported.
546 void operator=(const ValueArray16
& other
);
566 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
567 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
568 typename T11
, typename T12
, typename T13
, typename T14
, typename T15
,
569 typename T16
, typename T17
>
572 ValueArray17(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
573 T10 v10
, T11 v11
, T12 v12
, T13 v13
, T14 v14
, T15 v15
, T16 v16
,
574 T17 v17
) : v1_(v1
), v2_(v2
), v3_(v3
), v4_(v4
), v5_(v5
), v6_(v6
), v7_(v7
),
575 v8_(v8
), v9_(v9
), v10_(v10
), v11_(v11
), v12_(v12
), v13_(v13
), v14_(v14
),
576 v15_(v15
), v16_(v16
), v17_(v17
) {}
578 template <typename T
>
579 operator ParamGenerator
<T
>() const {
580 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
581 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
582 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
583 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
),
584 static_cast<T
>(v12_
), static_cast<T
>(v13_
), static_cast<T
>(v14_
),
585 static_cast<T
>(v15_
), static_cast<T
>(v16_
), static_cast<T
>(v17_
)};
586 return ValuesIn(array
);
590 // No implementation - assignment is unsupported.
591 void operator=(const ValueArray17
& other
);
612 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
613 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
614 typename T11
, typename T12
, typename T13
, typename T14
, typename T15
,
615 typename T16
, typename T17
, typename T18
>
618 ValueArray18(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
619 T10 v10
, T11 v11
, T12 v12
, T13 v13
, T14 v14
, T15 v15
, T16 v16
, T17 v17
,
620 T18 v18
) : v1_(v1
), v2_(v2
), v3_(v3
), v4_(v4
), v5_(v5
), v6_(v6
), v7_(v7
),
621 v8_(v8
), v9_(v9
), v10_(v10
), v11_(v11
), v12_(v12
), v13_(v13
), v14_(v14
),
622 v15_(v15
), v16_(v16
), v17_(v17
), v18_(v18
) {}
624 template <typename T
>
625 operator ParamGenerator
<T
>() const {
626 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
627 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
628 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
629 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
),
630 static_cast<T
>(v12_
), static_cast<T
>(v13_
), static_cast<T
>(v14_
),
631 static_cast<T
>(v15_
), static_cast<T
>(v16_
), static_cast<T
>(v17_
),
632 static_cast<T
>(v18_
)};
633 return ValuesIn(array
);
637 // No implementation - assignment is unsupported.
638 void operator=(const ValueArray18
& other
);
660 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
661 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
662 typename T11
, typename T12
, typename T13
, typename T14
, typename T15
,
663 typename T16
, typename T17
, typename T18
, typename T19
>
666 ValueArray19(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
667 T10 v10
, T11 v11
, T12 v12
, T13 v13
, T14 v14
, T15 v15
, T16 v16
, T17 v17
,
668 T18 v18
, T19 v19
) : v1_(v1
), v2_(v2
), v3_(v3
), v4_(v4
), v5_(v5
), v6_(v6
),
669 v7_(v7
), v8_(v8
), v9_(v9
), v10_(v10
), v11_(v11
), v12_(v12
), v13_(v13
),
670 v14_(v14
), v15_(v15
), v16_(v16
), v17_(v17
), v18_(v18
), v19_(v19
) {}
672 template <typename T
>
673 operator ParamGenerator
<T
>() const {
674 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
675 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
676 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
677 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
),
678 static_cast<T
>(v12_
), static_cast<T
>(v13_
), static_cast<T
>(v14_
),
679 static_cast<T
>(v15_
), static_cast<T
>(v16_
), static_cast<T
>(v17_
),
680 static_cast<T
>(v18_
), static_cast<T
>(v19_
)};
681 return ValuesIn(array
);
685 // No implementation - assignment is unsupported.
686 void operator=(const ValueArray19
& other
);
709 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
710 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
711 typename T11
, typename T12
, typename T13
, typename T14
, typename T15
,
712 typename T16
, typename T17
, typename T18
, typename T19
, typename T20
>
715 ValueArray20(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
716 T10 v10
, T11 v11
, T12 v12
, T13 v13
, T14 v14
, T15 v15
, T16 v16
, T17 v17
,
717 T18 v18
, T19 v19
, T20 v20
) : v1_(v1
), v2_(v2
), v3_(v3
), v4_(v4
), v5_(v5
),
718 v6_(v6
), v7_(v7
), v8_(v8
), v9_(v9
), v10_(v10
), v11_(v11
), v12_(v12
),
719 v13_(v13
), v14_(v14
), v15_(v15
), v16_(v16
), v17_(v17
), v18_(v18
),
720 v19_(v19
), v20_(v20
) {}
722 template <typename T
>
723 operator ParamGenerator
<T
>() const {
724 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
725 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
726 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
727 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
),
728 static_cast<T
>(v12_
), static_cast<T
>(v13_
), static_cast<T
>(v14_
),
729 static_cast<T
>(v15_
), static_cast<T
>(v16_
), static_cast<T
>(v17_
),
730 static_cast<T
>(v18_
), static_cast<T
>(v19_
), static_cast<T
>(v20_
)};
731 return ValuesIn(array
);
735 // No implementation - assignment is unsupported.
736 void operator=(const ValueArray20
& other
);
760 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
761 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
762 typename T11
, typename T12
, typename T13
, typename T14
, typename T15
,
763 typename T16
, typename T17
, typename T18
, typename T19
, typename T20
,
767 ValueArray21(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
768 T10 v10
, T11 v11
, T12 v12
, T13 v13
, T14 v14
, T15 v15
, T16 v16
, T17 v17
,
769 T18 v18
, T19 v19
, T20 v20
, T21 v21
) : v1_(v1
), v2_(v2
), v3_(v3
), v4_(v4
),
770 v5_(v5
), v6_(v6
), v7_(v7
), v8_(v8
), v9_(v9
), v10_(v10
), v11_(v11
),
771 v12_(v12
), v13_(v13
), v14_(v14
), v15_(v15
), v16_(v16
), v17_(v17
),
772 v18_(v18
), v19_(v19
), v20_(v20
), v21_(v21
) {}
774 template <typename T
>
775 operator ParamGenerator
<T
>() const {
776 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
777 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
778 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
779 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
),
780 static_cast<T
>(v12_
), static_cast<T
>(v13_
), static_cast<T
>(v14_
),
781 static_cast<T
>(v15_
), static_cast<T
>(v16_
), static_cast<T
>(v17_
),
782 static_cast<T
>(v18_
), static_cast<T
>(v19_
), static_cast<T
>(v20_
),
783 static_cast<T
>(v21_
)};
784 return ValuesIn(array
);
788 // No implementation - assignment is unsupported.
789 void operator=(const ValueArray21
& other
);
814 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
815 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
816 typename T11
, typename T12
, typename T13
, typename T14
, typename T15
,
817 typename T16
, typename T17
, typename T18
, typename T19
, typename T20
,
818 typename T21
, typename T22
>
821 ValueArray22(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
822 T10 v10
, T11 v11
, T12 v12
, T13 v13
, T14 v14
, T15 v15
, T16 v16
, T17 v17
,
823 T18 v18
, T19 v19
, T20 v20
, T21 v21
, T22 v22
) : v1_(v1
), v2_(v2
), v3_(v3
),
824 v4_(v4
), v5_(v5
), v6_(v6
), v7_(v7
), v8_(v8
), v9_(v9
), v10_(v10
),
825 v11_(v11
), v12_(v12
), v13_(v13
), v14_(v14
), v15_(v15
), v16_(v16
),
826 v17_(v17
), v18_(v18
), v19_(v19
), v20_(v20
), v21_(v21
), v22_(v22
) {}
828 template <typename T
>
829 operator ParamGenerator
<T
>() const {
830 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
831 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
832 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
833 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
),
834 static_cast<T
>(v12_
), static_cast<T
>(v13_
), static_cast<T
>(v14_
),
835 static_cast<T
>(v15_
), static_cast<T
>(v16_
), static_cast<T
>(v17_
),
836 static_cast<T
>(v18_
), static_cast<T
>(v19_
), static_cast<T
>(v20_
),
837 static_cast<T
>(v21_
), static_cast<T
>(v22_
)};
838 return ValuesIn(array
);
842 // No implementation - assignment is unsupported.
843 void operator=(const ValueArray22
& other
);
869 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
870 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
871 typename T11
, typename T12
, typename T13
, typename T14
, typename T15
,
872 typename T16
, typename T17
, typename T18
, typename T19
, typename T20
,
873 typename T21
, typename T22
, typename T23
>
876 ValueArray23(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
877 T10 v10
, T11 v11
, T12 v12
, T13 v13
, T14 v14
, T15 v15
, T16 v16
, T17 v17
,
878 T18 v18
, T19 v19
, T20 v20
, T21 v21
, T22 v22
, T23 v23
) : v1_(v1
), v2_(v2
),
879 v3_(v3
), v4_(v4
), v5_(v5
), v6_(v6
), v7_(v7
), v8_(v8
), v9_(v9
), v10_(v10
),
880 v11_(v11
), v12_(v12
), v13_(v13
), v14_(v14
), v15_(v15
), v16_(v16
),
881 v17_(v17
), v18_(v18
), v19_(v19
), v20_(v20
), v21_(v21
), v22_(v22
),
884 template <typename T
>
885 operator ParamGenerator
<T
>() const {
886 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
887 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
888 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
889 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
),
890 static_cast<T
>(v12_
), static_cast<T
>(v13_
), static_cast<T
>(v14_
),
891 static_cast<T
>(v15_
), static_cast<T
>(v16_
), static_cast<T
>(v17_
),
892 static_cast<T
>(v18_
), static_cast<T
>(v19_
), static_cast<T
>(v20_
),
893 static_cast<T
>(v21_
), static_cast<T
>(v22_
), static_cast<T
>(v23_
)};
894 return ValuesIn(array
);
898 // No implementation - assignment is unsupported.
899 void operator=(const ValueArray23
& other
);
926 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
927 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
928 typename T11
, typename T12
, typename T13
, typename T14
, typename T15
,
929 typename T16
, typename T17
, typename T18
, typename T19
, typename T20
,
930 typename T21
, typename T22
, typename T23
, typename T24
>
933 ValueArray24(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
934 T10 v10
, T11 v11
, T12 v12
, T13 v13
, T14 v14
, T15 v15
, T16 v16
, T17 v17
,
935 T18 v18
, T19 v19
, T20 v20
, T21 v21
, T22 v22
, T23 v23
, T24 v24
) : v1_(v1
),
936 v2_(v2
), v3_(v3
), v4_(v4
), v5_(v5
), v6_(v6
), v7_(v7
), v8_(v8
), v9_(v9
),
937 v10_(v10
), v11_(v11
), v12_(v12
), v13_(v13
), v14_(v14
), v15_(v15
),
938 v16_(v16
), v17_(v17
), v18_(v18
), v19_(v19
), v20_(v20
), v21_(v21
),
939 v22_(v22
), v23_(v23
), v24_(v24
) {}
941 template <typename T
>
942 operator ParamGenerator
<T
>() const {
943 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
944 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
945 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
946 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
),
947 static_cast<T
>(v12_
), static_cast<T
>(v13_
), static_cast<T
>(v14_
),
948 static_cast<T
>(v15_
), static_cast<T
>(v16_
), static_cast<T
>(v17_
),
949 static_cast<T
>(v18_
), static_cast<T
>(v19_
), static_cast<T
>(v20_
),
950 static_cast<T
>(v21_
), static_cast<T
>(v22_
), static_cast<T
>(v23_
),
951 static_cast<T
>(v24_
)};
952 return ValuesIn(array
);
956 // No implementation - assignment is unsupported.
957 void operator=(const ValueArray24
& other
);
985 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
986 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
987 typename T11
, typename T12
, typename T13
, typename T14
, typename T15
,
988 typename T16
, typename T17
, typename T18
, typename T19
, typename T20
,
989 typename T21
, typename T22
, typename T23
, typename T24
, typename T25
>
992 ValueArray25(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
993 T10 v10
, T11 v11
, T12 v12
, T13 v13
, T14 v14
, T15 v15
, T16 v16
, T17 v17
,
994 T18 v18
, T19 v19
, T20 v20
, T21 v21
, T22 v22
, T23 v23
, T24 v24
,
995 T25 v25
) : v1_(v1
), v2_(v2
), v3_(v3
), v4_(v4
), v5_(v5
), v6_(v6
), v7_(v7
),
996 v8_(v8
), v9_(v9
), v10_(v10
), v11_(v11
), v12_(v12
), v13_(v13
), v14_(v14
),
997 v15_(v15
), v16_(v16
), v17_(v17
), v18_(v18
), v19_(v19
), v20_(v20
),
998 v21_(v21
), v22_(v22
), v23_(v23
), v24_(v24
), v25_(v25
) {}
1000 template <typename T
>
1001 operator ParamGenerator
<T
>() const {
1002 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
1003 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
1004 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
1005 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
),
1006 static_cast<T
>(v12_
), static_cast<T
>(v13_
), static_cast<T
>(v14_
),
1007 static_cast<T
>(v15_
), static_cast<T
>(v16_
), static_cast<T
>(v17_
),
1008 static_cast<T
>(v18_
), static_cast<T
>(v19_
), static_cast<T
>(v20_
),
1009 static_cast<T
>(v21_
), static_cast<T
>(v22_
), static_cast<T
>(v23_
),
1010 static_cast<T
>(v24_
), static_cast<T
>(v25_
)};
1011 return ValuesIn(array
);
1015 // No implementation - assignment is unsupported.
1016 void operator=(const ValueArray25
& other
);
1045 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
1046 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
1047 typename T11
, typename T12
, typename T13
, typename T14
, typename T15
,
1048 typename T16
, typename T17
, typename T18
, typename T19
, typename T20
,
1049 typename T21
, typename T22
, typename T23
, typename T24
, typename T25
,
1051 class ValueArray26
{
1053 ValueArray26(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
1054 T10 v10
, T11 v11
, T12 v12
, T13 v13
, T14 v14
, T15 v15
, T16 v16
, T17 v17
,
1055 T18 v18
, T19 v19
, T20 v20
, T21 v21
, T22 v22
, T23 v23
, T24 v24
, T25 v25
,
1056 T26 v26
) : v1_(v1
), v2_(v2
), v3_(v3
), v4_(v4
), v5_(v5
), v6_(v6
), v7_(v7
),
1057 v8_(v8
), v9_(v9
), v10_(v10
), v11_(v11
), v12_(v12
), v13_(v13
), v14_(v14
),
1058 v15_(v15
), v16_(v16
), v17_(v17
), v18_(v18
), v19_(v19
), v20_(v20
),
1059 v21_(v21
), v22_(v22
), v23_(v23
), v24_(v24
), v25_(v25
), v26_(v26
) {}
1061 template <typename T
>
1062 operator ParamGenerator
<T
>() const {
1063 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
1064 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
1065 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
1066 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
),
1067 static_cast<T
>(v12_
), static_cast<T
>(v13_
), static_cast<T
>(v14_
),
1068 static_cast<T
>(v15_
), static_cast<T
>(v16_
), static_cast<T
>(v17_
),
1069 static_cast<T
>(v18_
), static_cast<T
>(v19_
), static_cast<T
>(v20_
),
1070 static_cast<T
>(v21_
), static_cast<T
>(v22_
), static_cast<T
>(v23_
),
1071 static_cast<T
>(v24_
), static_cast<T
>(v25_
), static_cast<T
>(v26_
)};
1072 return ValuesIn(array
);
1076 // No implementation - assignment is unsupported.
1077 void operator=(const ValueArray26
& other
);
1107 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
1108 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
1109 typename T11
, typename T12
, typename T13
, typename T14
, typename T15
,
1110 typename T16
, typename T17
, typename T18
, typename T19
, typename T20
,
1111 typename T21
, typename T22
, typename T23
, typename T24
, typename T25
,
1112 typename T26
, typename T27
>
1113 class ValueArray27
{
1115 ValueArray27(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
1116 T10 v10
, T11 v11
, T12 v12
, T13 v13
, T14 v14
, T15 v15
, T16 v16
, T17 v17
,
1117 T18 v18
, T19 v19
, T20 v20
, T21 v21
, T22 v22
, T23 v23
, T24 v24
, T25 v25
,
1118 T26 v26
, T27 v27
) : v1_(v1
), v2_(v2
), v3_(v3
), v4_(v4
), v5_(v5
), v6_(v6
),
1119 v7_(v7
), v8_(v8
), v9_(v9
), v10_(v10
), v11_(v11
), v12_(v12
), v13_(v13
),
1120 v14_(v14
), v15_(v15
), v16_(v16
), v17_(v17
), v18_(v18
), v19_(v19
),
1121 v20_(v20
), v21_(v21
), v22_(v22
), v23_(v23
), v24_(v24
), v25_(v25
),
1122 v26_(v26
), v27_(v27
) {}
1124 template <typename T
>
1125 operator ParamGenerator
<T
>() const {
1126 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
1127 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
1128 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
1129 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
),
1130 static_cast<T
>(v12_
), static_cast<T
>(v13_
), static_cast<T
>(v14_
),
1131 static_cast<T
>(v15_
), static_cast<T
>(v16_
), static_cast<T
>(v17_
),
1132 static_cast<T
>(v18_
), static_cast<T
>(v19_
), static_cast<T
>(v20_
),
1133 static_cast<T
>(v21_
), static_cast<T
>(v22_
), static_cast<T
>(v23_
),
1134 static_cast<T
>(v24_
), static_cast<T
>(v25_
), static_cast<T
>(v26_
),
1135 static_cast<T
>(v27_
)};
1136 return ValuesIn(array
);
1140 // No implementation - assignment is unsupported.
1141 void operator=(const ValueArray27
& other
);
1172 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
1173 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
1174 typename T11
, typename T12
, typename T13
, typename T14
, typename T15
,
1175 typename T16
, typename T17
, typename T18
, typename T19
, typename T20
,
1176 typename T21
, typename T22
, typename T23
, typename T24
, typename T25
,
1177 typename T26
, typename T27
, typename T28
>
1178 class ValueArray28
{
1180 ValueArray28(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
1181 T10 v10
, T11 v11
, T12 v12
, T13 v13
, T14 v14
, T15 v15
, T16 v16
, T17 v17
,
1182 T18 v18
, T19 v19
, T20 v20
, T21 v21
, T22 v22
, T23 v23
, T24 v24
, T25 v25
,
1183 T26 v26
, T27 v27
, T28 v28
) : v1_(v1
), v2_(v2
), v3_(v3
), v4_(v4
), v5_(v5
),
1184 v6_(v6
), v7_(v7
), v8_(v8
), v9_(v9
), v10_(v10
), v11_(v11
), v12_(v12
),
1185 v13_(v13
), v14_(v14
), v15_(v15
), v16_(v16
), v17_(v17
), v18_(v18
),
1186 v19_(v19
), v20_(v20
), v21_(v21
), v22_(v22
), v23_(v23
), v24_(v24
),
1187 v25_(v25
), v26_(v26
), v27_(v27
), v28_(v28
) {}
1189 template <typename T
>
1190 operator ParamGenerator
<T
>() const {
1191 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
1192 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
1193 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
1194 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
),
1195 static_cast<T
>(v12_
), static_cast<T
>(v13_
), static_cast<T
>(v14_
),
1196 static_cast<T
>(v15_
), static_cast<T
>(v16_
), static_cast<T
>(v17_
),
1197 static_cast<T
>(v18_
), static_cast<T
>(v19_
), static_cast<T
>(v20_
),
1198 static_cast<T
>(v21_
), static_cast<T
>(v22_
), static_cast<T
>(v23_
),
1199 static_cast<T
>(v24_
), static_cast<T
>(v25_
), static_cast<T
>(v26_
),
1200 static_cast<T
>(v27_
), static_cast<T
>(v28_
)};
1201 return ValuesIn(array
);
1205 // No implementation - assignment is unsupported.
1206 void operator=(const ValueArray28
& other
);
1238 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
1239 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
1240 typename T11
, typename T12
, typename T13
, typename T14
, typename T15
,
1241 typename T16
, typename T17
, typename T18
, typename T19
, typename T20
,
1242 typename T21
, typename T22
, typename T23
, typename T24
, typename T25
,
1243 typename T26
, typename T27
, typename T28
, typename T29
>
1244 class ValueArray29
{
1246 ValueArray29(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
1247 T10 v10
, T11 v11
, T12 v12
, T13 v13
, T14 v14
, T15 v15
, T16 v16
, T17 v17
,
1248 T18 v18
, T19 v19
, T20 v20
, T21 v21
, T22 v22
, T23 v23
, T24 v24
, T25 v25
,
1249 T26 v26
, T27 v27
, T28 v28
, T29 v29
) : v1_(v1
), v2_(v2
), v3_(v3
), v4_(v4
),
1250 v5_(v5
), v6_(v6
), v7_(v7
), v8_(v8
), v9_(v9
), v10_(v10
), v11_(v11
),
1251 v12_(v12
), v13_(v13
), v14_(v14
), v15_(v15
), v16_(v16
), v17_(v17
),
1252 v18_(v18
), v19_(v19
), v20_(v20
), v21_(v21
), v22_(v22
), v23_(v23
),
1253 v24_(v24
), v25_(v25
), v26_(v26
), v27_(v27
), v28_(v28
), v29_(v29
) {}
1255 template <typename T
>
1256 operator ParamGenerator
<T
>() const {
1257 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
1258 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
1259 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
1260 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
),
1261 static_cast<T
>(v12_
), static_cast<T
>(v13_
), static_cast<T
>(v14_
),
1262 static_cast<T
>(v15_
), static_cast<T
>(v16_
), static_cast<T
>(v17_
),
1263 static_cast<T
>(v18_
), static_cast<T
>(v19_
), static_cast<T
>(v20_
),
1264 static_cast<T
>(v21_
), static_cast<T
>(v22_
), static_cast<T
>(v23_
),
1265 static_cast<T
>(v24_
), static_cast<T
>(v25_
), static_cast<T
>(v26_
),
1266 static_cast<T
>(v27_
), static_cast<T
>(v28_
), static_cast<T
>(v29_
)};
1267 return ValuesIn(array
);
1271 // No implementation - assignment is unsupported.
1272 void operator=(const ValueArray29
& other
);
1305 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
1306 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
1307 typename T11
, typename T12
, typename T13
, typename T14
, typename T15
,
1308 typename T16
, typename T17
, typename T18
, typename T19
, typename T20
,
1309 typename T21
, typename T22
, typename T23
, typename T24
, typename T25
,
1310 typename T26
, typename T27
, typename T28
, typename T29
, typename T30
>
1311 class ValueArray30
{
1313 ValueArray30(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
1314 T10 v10
, T11 v11
, T12 v12
, T13 v13
, T14 v14
, T15 v15
, T16 v16
, T17 v17
,
1315 T18 v18
, T19 v19
, T20 v20
, T21 v21
, T22 v22
, T23 v23
, T24 v24
, T25 v25
,
1316 T26 v26
, T27 v27
, T28 v28
, T29 v29
, T30 v30
) : v1_(v1
), v2_(v2
), v3_(v3
),
1317 v4_(v4
), v5_(v5
), v6_(v6
), v7_(v7
), v8_(v8
), v9_(v9
), v10_(v10
),
1318 v11_(v11
), v12_(v12
), v13_(v13
), v14_(v14
), v15_(v15
), v16_(v16
),
1319 v17_(v17
), v18_(v18
), v19_(v19
), v20_(v20
), v21_(v21
), v22_(v22
),
1320 v23_(v23
), v24_(v24
), v25_(v25
), v26_(v26
), v27_(v27
), v28_(v28
),
1321 v29_(v29
), v30_(v30
) {}
1323 template <typename T
>
1324 operator ParamGenerator
<T
>() const {
1325 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
1326 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
1327 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
1328 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
),
1329 static_cast<T
>(v12_
), static_cast<T
>(v13_
), static_cast<T
>(v14_
),
1330 static_cast<T
>(v15_
), static_cast<T
>(v16_
), static_cast<T
>(v17_
),
1331 static_cast<T
>(v18_
), static_cast<T
>(v19_
), static_cast<T
>(v20_
),
1332 static_cast<T
>(v21_
), static_cast<T
>(v22_
), static_cast<T
>(v23_
),
1333 static_cast<T
>(v24_
), static_cast<T
>(v25_
), static_cast<T
>(v26_
),
1334 static_cast<T
>(v27_
), static_cast<T
>(v28_
), static_cast<T
>(v29_
),
1335 static_cast<T
>(v30_
)};
1336 return ValuesIn(array
);
1340 // No implementation - assignment is unsupported.
1341 void operator=(const ValueArray30
& other
);
1375 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
1376 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
1377 typename T11
, typename T12
, typename T13
, typename T14
, typename T15
,
1378 typename T16
, typename T17
, typename T18
, typename T19
, typename T20
,
1379 typename T21
, typename T22
, typename T23
, typename T24
, typename T25
,
1380 typename T26
, typename T27
, typename T28
, typename T29
, typename T30
,
1382 class ValueArray31
{
1384 ValueArray31(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
1385 T10 v10
, T11 v11
, T12 v12
, T13 v13
, T14 v14
, T15 v15
, T16 v16
, T17 v17
,
1386 T18 v18
, T19 v19
, T20 v20
, T21 v21
, T22 v22
, T23 v23
, T24 v24
, T25 v25
,
1387 T26 v26
, T27 v27
, T28 v28
, T29 v29
, T30 v30
, T31 v31
) : v1_(v1
), v2_(v2
),
1388 v3_(v3
), v4_(v4
), v5_(v5
), v6_(v6
), v7_(v7
), v8_(v8
), v9_(v9
), v10_(v10
),
1389 v11_(v11
), v12_(v12
), v13_(v13
), v14_(v14
), v15_(v15
), v16_(v16
),
1390 v17_(v17
), v18_(v18
), v19_(v19
), v20_(v20
), v21_(v21
), v22_(v22
),
1391 v23_(v23
), v24_(v24
), v25_(v25
), v26_(v26
), v27_(v27
), v28_(v28
),
1392 v29_(v29
), v30_(v30
), v31_(v31
) {}
1394 template <typename T
>
1395 operator ParamGenerator
<T
>() const {
1396 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
1397 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
1398 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
1399 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
),
1400 static_cast<T
>(v12_
), static_cast<T
>(v13_
), static_cast<T
>(v14_
),
1401 static_cast<T
>(v15_
), static_cast<T
>(v16_
), static_cast<T
>(v17_
),
1402 static_cast<T
>(v18_
), static_cast<T
>(v19_
), static_cast<T
>(v20_
),
1403 static_cast<T
>(v21_
), static_cast<T
>(v22_
), static_cast<T
>(v23_
),
1404 static_cast<T
>(v24_
), static_cast<T
>(v25_
), static_cast<T
>(v26_
),
1405 static_cast<T
>(v27_
), static_cast<T
>(v28_
), static_cast<T
>(v29_
),
1406 static_cast<T
>(v30_
), static_cast<T
>(v31_
)};
1407 return ValuesIn(array
);
1411 // No implementation - assignment is unsupported.
1412 void operator=(const ValueArray31
& other
);
1447 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
1448 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
1449 typename T11
, typename T12
, typename T13
, typename T14
, typename T15
,
1450 typename T16
, typename T17
, typename T18
, typename T19
, typename T20
,
1451 typename T21
, typename T22
, typename T23
, typename T24
, typename T25
,
1452 typename T26
, typename T27
, typename T28
, typename T29
, typename T30
,
1453 typename T31
, typename T32
>
1454 class ValueArray32
{
1456 ValueArray32(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
1457 T10 v10
, T11 v11
, T12 v12
, T13 v13
, T14 v14
, T15 v15
, T16 v16
, T17 v17
,
1458 T18 v18
, T19 v19
, T20 v20
, T21 v21
, T22 v22
, T23 v23
, T24 v24
, T25 v25
,
1459 T26 v26
, T27 v27
, T28 v28
, T29 v29
, T30 v30
, T31 v31
, T32 v32
) : v1_(v1
),
1460 v2_(v2
), v3_(v3
), v4_(v4
), v5_(v5
), v6_(v6
), v7_(v7
), v8_(v8
), v9_(v9
),
1461 v10_(v10
), v11_(v11
), v12_(v12
), v13_(v13
), v14_(v14
), v15_(v15
),
1462 v16_(v16
), v17_(v17
), v18_(v18
), v19_(v19
), v20_(v20
), v21_(v21
),
1463 v22_(v22
), v23_(v23
), v24_(v24
), v25_(v25
), v26_(v26
), v27_(v27
),
1464 v28_(v28
), v29_(v29
), v30_(v30
), v31_(v31
), v32_(v32
) {}
1466 template <typename T
>
1467 operator ParamGenerator
<T
>() const {
1468 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
1469 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
1470 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
1471 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
),
1472 static_cast<T
>(v12_
), static_cast<T
>(v13_
), static_cast<T
>(v14_
),
1473 static_cast<T
>(v15_
), static_cast<T
>(v16_
), static_cast<T
>(v17_
),
1474 static_cast<T
>(v18_
), static_cast<T
>(v19_
), static_cast<T
>(v20_
),
1475 static_cast<T
>(v21_
), static_cast<T
>(v22_
), static_cast<T
>(v23_
),
1476 static_cast<T
>(v24_
), static_cast<T
>(v25_
), static_cast<T
>(v26_
),
1477 static_cast<T
>(v27_
), static_cast<T
>(v28_
), static_cast<T
>(v29_
),
1478 static_cast<T
>(v30_
), static_cast<T
>(v31_
), static_cast<T
>(v32_
)};
1479 return ValuesIn(array
);
1483 // No implementation - assignment is unsupported.
1484 void operator=(const ValueArray32
& other
);
1520 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
1521 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
1522 typename T11
, typename T12
, typename T13
, typename T14
, typename T15
,
1523 typename T16
, typename T17
, typename T18
, typename T19
, typename T20
,
1524 typename T21
, typename T22
, typename T23
, typename T24
, typename T25
,
1525 typename T26
, typename T27
, typename T28
, typename T29
, typename T30
,
1526 typename T31
, typename T32
, typename T33
>
1527 class ValueArray33
{
1529 ValueArray33(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
1530 T10 v10
, T11 v11
, T12 v12
, T13 v13
, T14 v14
, T15 v15
, T16 v16
, T17 v17
,
1531 T18 v18
, T19 v19
, T20 v20
, T21 v21
, T22 v22
, T23 v23
, T24 v24
, T25 v25
,
1532 T26 v26
, T27 v27
, T28 v28
, T29 v29
, T30 v30
, T31 v31
, T32 v32
,
1533 T33 v33
) : v1_(v1
), v2_(v2
), v3_(v3
), v4_(v4
), v5_(v5
), v6_(v6
), v7_(v7
),
1534 v8_(v8
), v9_(v9
), v10_(v10
), v11_(v11
), v12_(v12
), v13_(v13
), v14_(v14
),
1535 v15_(v15
), v16_(v16
), v17_(v17
), v18_(v18
), v19_(v19
), v20_(v20
),
1536 v21_(v21
), v22_(v22
), v23_(v23
), v24_(v24
), v25_(v25
), v26_(v26
),
1537 v27_(v27
), v28_(v28
), v29_(v29
), v30_(v30
), v31_(v31
), v32_(v32
),
1540 template <typename T
>
1541 operator ParamGenerator
<T
>() const {
1542 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
1543 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
1544 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
1545 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
),
1546 static_cast<T
>(v12_
), static_cast<T
>(v13_
), static_cast<T
>(v14_
),
1547 static_cast<T
>(v15_
), static_cast<T
>(v16_
), static_cast<T
>(v17_
),
1548 static_cast<T
>(v18_
), static_cast<T
>(v19_
), static_cast<T
>(v20_
),
1549 static_cast<T
>(v21_
), static_cast<T
>(v22_
), static_cast<T
>(v23_
),
1550 static_cast<T
>(v24_
), static_cast<T
>(v25_
), static_cast<T
>(v26_
),
1551 static_cast<T
>(v27_
), static_cast<T
>(v28_
), static_cast<T
>(v29_
),
1552 static_cast<T
>(v30_
), static_cast<T
>(v31_
), static_cast<T
>(v32_
),
1553 static_cast<T
>(v33_
)};
1554 return ValuesIn(array
);
1558 // No implementation - assignment is unsupported.
1559 void operator=(const ValueArray33
& other
);
1596 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
1597 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
1598 typename T11
, typename T12
, typename T13
, typename T14
, typename T15
,
1599 typename T16
, typename T17
, typename T18
, typename T19
, typename T20
,
1600 typename T21
, typename T22
, typename T23
, typename T24
, typename T25
,
1601 typename T26
, typename T27
, typename T28
, typename T29
, typename T30
,
1602 typename T31
, typename T32
, typename T33
, typename T34
>
1603 class ValueArray34
{
1605 ValueArray34(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
1606 T10 v10
, T11 v11
, T12 v12
, T13 v13
, T14 v14
, T15 v15
, T16 v16
, T17 v17
,
1607 T18 v18
, T19 v19
, T20 v20
, T21 v21
, T22 v22
, T23 v23
, T24 v24
, T25 v25
,
1608 T26 v26
, T27 v27
, T28 v28
, T29 v29
, T30 v30
, T31 v31
, T32 v32
, T33 v33
,
1609 T34 v34
) : v1_(v1
), v2_(v2
), v3_(v3
), v4_(v4
), v5_(v5
), v6_(v6
), v7_(v7
),
1610 v8_(v8
), v9_(v9
), v10_(v10
), v11_(v11
), v12_(v12
), v13_(v13
), v14_(v14
),
1611 v15_(v15
), v16_(v16
), v17_(v17
), v18_(v18
), v19_(v19
), v20_(v20
),
1612 v21_(v21
), v22_(v22
), v23_(v23
), v24_(v24
), v25_(v25
), v26_(v26
),
1613 v27_(v27
), v28_(v28
), v29_(v29
), v30_(v30
), v31_(v31
), v32_(v32
),
1614 v33_(v33
), v34_(v34
) {}
1616 template <typename T
>
1617 operator ParamGenerator
<T
>() const {
1618 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
1619 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
1620 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
1621 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
),
1622 static_cast<T
>(v12_
), static_cast<T
>(v13_
), static_cast<T
>(v14_
),
1623 static_cast<T
>(v15_
), static_cast<T
>(v16_
), static_cast<T
>(v17_
),
1624 static_cast<T
>(v18_
), static_cast<T
>(v19_
), static_cast<T
>(v20_
),
1625 static_cast<T
>(v21_
), static_cast<T
>(v22_
), static_cast<T
>(v23_
),
1626 static_cast<T
>(v24_
), static_cast<T
>(v25_
), static_cast<T
>(v26_
),
1627 static_cast<T
>(v27_
), static_cast<T
>(v28_
), static_cast<T
>(v29_
),
1628 static_cast<T
>(v30_
), static_cast<T
>(v31_
), static_cast<T
>(v32_
),
1629 static_cast<T
>(v33_
), static_cast<T
>(v34_
)};
1630 return ValuesIn(array
);
1634 // No implementation - assignment is unsupported.
1635 void operator=(const ValueArray34
& other
);
1673 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
1674 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
1675 typename T11
, typename T12
, typename T13
, typename T14
, typename T15
,
1676 typename T16
, typename T17
, typename T18
, typename T19
, typename T20
,
1677 typename T21
, typename T22
, typename T23
, typename T24
, typename T25
,
1678 typename T26
, typename T27
, typename T28
, typename T29
, typename T30
,
1679 typename T31
, typename T32
, typename T33
, typename T34
, typename T35
>
1680 class ValueArray35
{
1682 ValueArray35(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
1683 T10 v10
, T11 v11
, T12 v12
, T13 v13
, T14 v14
, T15 v15
, T16 v16
, T17 v17
,
1684 T18 v18
, T19 v19
, T20 v20
, T21 v21
, T22 v22
, T23 v23
, T24 v24
, T25 v25
,
1685 T26 v26
, T27 v27
, T28 v28
, T29 v29
, T30 v30
, T31 v31
, T32 v32
, T33 v33
,
1686 T34 v34
, T35 v35
) : v1_(v1
), v2_(v2
), v3_(v3
), v4_(v4
), v5_(v5
), v6_(v6
),
1687 v7_(v7
), v8_(v8
), v9_(v9
), v10_(v10
), v11_(v11
), v12_(v12
), v13_(v13
),
1688 v14_(v14
), v15_(v15
), v16_(v16
), v17_(v17
), v18_(v18
), v19_(v19
),
1689 v20_(v20
), v21_(v21
), v22_(v22
), v23_(v23
), v24_(v24
), v25_(v25
),
1690 v26_(v26
), v27_(v27
), v28_(v28
), v29_(v29
), v30_(v30
), v31_(v31
),
1691 v32_(v32
), v33_(v33
), v34_(v34
), v35_(v35
) {}
1693 template <typename T
>
1694 operator ParamGenerator
<T
>() const {
1695 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
1696 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
1697 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
1698 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
),
1699 static_cast<T
>(v12_
), static_cast<T
>(v13_
), static_cast<T
>(v14_
),
1700 static_cast<T
>(v15_
), static_cast<T
>(v16_
), static_cast<T
>(v17_
),
1701 static_cast<T
>(v18_
), static_cast<T
>(v19_
), static_cast<T
>(v20_
),
1702 static_cast<T
>(v21_
), static_cast<T
>(v22_
), static_cast<T
>(v23_
),
1703 static_cast<T
>(v24_
), static_cast<T
>(v25_
), static_cast<T
>(v26_
),
1704 static_cast<T
>(v27_
), static_cast<T
>(v28_
), static_cast<T
>(v29_
),
1705 static_cast<T
>(v30_
), static_cast<T
>(v31_
), static_cast<T
>(v32_
),
1706 static_cast<T
>(v33_
), static_cast<T
>(v34_
), static_cast<T
>(v35_
)};
1707 return ValuesIn(array
);
1711 // No implementation - assignment is unsupported.
1712 void operator=(const ValueArray35
& other
);
1751 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
1752 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
1753 typename T11
, typename T12
, typename T13
, typename T14
, typename T15
,
1754 typename T16
, typename T17
, typename T18
, typename T19
, typename T20
,
1755 typename T21
, typename T22
, typename T23
, typename T24
, typename T25
,
1756 typename T26
, typename T27
, typename T28
, typename T29
, typename T30
,
1757 typename T31
, typename T32
, typename T33
, typename T34
, typename T35
,
1759 class ValueArray36
{
1761 ValueArray36(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
1762 T10 v10
, T11 v11
, T12 v12
, T13 v13
, T14 v14
, T15 v15
, T16 v16
, T17 v17
,
1763 T18 v18
, T19 v19
, T20 v20
, T21 v21
, T22 v22
, T23 v23
, T24 v24
, T25 v25
,
1764 T26 v26
, T27 v27
, T28 v28
, T29 v29
, T30 v30
, T31 v31
, T32 v32
, T33 v33
,
1765 T34 v34
, T35 v35
, T36 v36
) : v1_(v1
), v2_(v2
), v3_(v3
), v4_(v4
), v5_(v5
),
1766 v6_(v6
), v7_(v7
), v8_(v8
), v9_(v9
), v10_(v10
), v11_(v11
), v12_(v12
),
1767 v13_(v13
), v14_(v14
), v15_(v15
), v16_(v16
), v17_(v17
), v18_(v18
),
1768 v19_(v19
), v20_(v20
), v21_(v21
), v22_(v22
), v23_(v23
), v24_(v24
),
1769 v25_(v25
), v26_(v26
), v27_(v27
), v28_(v28
), v29_(v29
), v30_(v30
),
1770 v31_(v31
), v32_(v32
), v33_(v33
), v34_(v34
), v35_(v35
), v36_(v36
) {}
1772 template <typename T
>
1773 operator ParamGenerator
<T
>() const {
1774 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
1775 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
1776 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
1777 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
),
1778 static_cast<T
>(v12_
), static_cast<T
>(v13_
), static_cast<T
>(v14_
),
1779 static_cast<T
>(v15_
), static_cast<T
>(v16_
), static_cast<T
>(v17_
),
1780 static_cast<T
>(v18_
), static_cast<T
>(v19_
), static_cast<T
>(v20_
),
1781 static_cast<T
>(v21_
), static_cast<T
>(v22_
), static_cast<T
>(v23_
),
1782 static_cast<T
>(v24_
), static_cast<T
>(v25_
), static_cast<T
>(v26_
),
1783 static_cast<T
>(v27_
), static_cast<T
>(v28_
), static_cast<T
>(v29_
),
1784 static_cast<T
>(v30_
), static_cast<T
>(v31_
), static_cast<T
>(v32_
),
1785 static_cast<T
>(v33_
), static_cast<T
>(v34_
), static_cast<T
>(v35_
),
1786 static_cast<T
>(v36_
)};
1787 return ValuesIn(array
);
1791 // No implementation - assignment is unsupported.
1792 void operator=(const ValueArray36
& other
);
1832 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
1833 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
1834 typename T11
, typename T12
, typename T13
, typename T14
, typename T15
,
1835 typename T16
, typename T17
, typename T18
, typename T19
, typename T20
,
1836 typename T21
, typename T22
, typename T23
, typename T24
, typename T25
,
1837 typename T26
, typename T27
, typename T28
, typename T29
, typename T30
,
1838 typename T31
, typename T32
, typename T33
, typename T34
, typename T35
,
1839 typename T36
, typename T37
>
1840 class ValueArray37
{
1842 ValueArray37(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
1843 T10 v10
, T11 v11
, T12 v12
, T13 v13
, T14 v14
, T15 v15
, T16 v16
, T17 v17
,
1844 T18 v18
, T19 v19
, T20 v20
, T21 v21
, T22 v22
, T23 v23
, T24 v24
, T25 v25
,
1845 T26 v26
, T27 v27
, T28 v28
, T29 v29
, T30 v30
, T31 v31
, T32 v32
, T33 v33
,
1846 T34 v34
, T35 v35
, T36 v36
, T37 v37
) : v1_(v1
), v2_(v2
), v3_(v3
), v4_(v4
),
1847 v5_(v5
), v6_(v6
), v7_(v7
), v8_(v8
), v9_(v9
), v10_(v10
), v11_(v11
),
1848 v12_(v12
), v13_(v13
), v14_(v14
), v15_(v15
), v16_(v16
), v17_(v17
),
1849 v18_(v18
), v19_(v19
), v20_(v20
), v21_(v21
), v22_(v22
), v23_(v23
),
1850 v24_(v24
), v25_(v25
), v26_(v26
), v27_(v27
), v28_(v28
), v29_(v29
),
1851 v30_(v30
), v31_(v31
), v32_(v32
), v33_(v33
), v34_(v34
), v35_(v35
),
1852 v36_(v36
), v37_(v37
) {}
1854 template <typename T
>
1855 operator ParamGenerator
<T
>() const {
1856 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
1857 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
1858 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
1859 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
),
1860 static_cast<T
>(v12_
), static_cast<T
>(v13_
), static_cast<T
>(v14_
),
1861 static_cast<T
>(v15_
), static_cast<T
>(v16_
), static_cast<T
>(v17_
),
1862 static_cast<T
>(v18_
), static_cast<T
>(v19_
), static_cast<T
>(v20_
),
1863 static_cast<T
>(v21_
), static_cast<T
>(v22_
), static_cast<T
>(v23_
),
1864 static_cast<T
>(v24_
), static_cast<T
>(v25_
), static_cast<T
>(v26_
),
1865 static_cast<T
>(v27_
), static_cast<T
>(v28_
), static_cast<T
>(v29_
),
1866 static_cast<T
>(v30_
), static_cast<T
>(v31_
), static_cast<T
>(v32_
),
1867 static_cast<T
>(v33_
), static_cast<T
>(v34_
), static_cast<T
>(v35_
),
1868 static_cast<T
>(v36_
), static_cast<T
>(v37_
)};
1869 return ValuesIn(array
);
1873 // No implementation - assignment is unsupported.
1874 void operator=(const ValueArray37
& other
);
1915 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
1916 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
1917 typename T11
, typename T12
, typename T13
, typename T14
, typename T15
,
1918 typename T16
, typename T17
, typename T18
, typename T19
, typename T20
,
1919 typename T21
, typename T22
, typename T23
, typename T24
, typename T25
,
1920 typename T26
, typename T27
, typename T28
, typename T29
, typename T30
,
1921 typename T31
, typename T32
, typename T33
, typename T34
, typename T35
,
1922 typename T36
, typename T37
, typename T38
>
1923 class ValueArray38
{
1925 ValueArray38(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
1926 T10 v10
, T11 v11
, T12 v12
, T13 v13
, T14 v14
, T15 v15
, T16 v16
, T17 v17
,
1927 T18 v18
, T19 v19
, T20 v20
, T21 v21
, T22 v22
, T23 v23
, T24 v24
, T25 v25
,
1928 T26 v26
, T27 v27
, T28 v28
, T29 v29
, T30 v30
, T31 v31
, T32 v32
, T33 v33
,
1929 T34 v34
, T35 v35
, T36 v36
, T37 v37
, T38 v38
) : v1_(v1
), v2_(v2
), v3_(v3
),
1930 v4_(v4
), v5_(v5
), v6_(v6
), v7_(v7
), v8_(v8
), v9_(v9
), v10_(v10
),
1931 v11_(v11
), v12_(v12
), v13_(v13
), v14_(v14
), v15_(v15
), v16_(v16
),
1932 v17_(v17
), v18_(v18
), v19_(v19
), v20_(v20
), v21_(v21
), v22_(v22
),
1933 v23_(v23
), v24_(v24
), v25_(v25
), v26_(v26
), v27_(v27
), v28_(v28
),
1934 v29_(v29
), v30_(v30
), v31_(v31
), v32_(v32
), v33_(v33
), v34_(v34
),
1935 v35_(v35
), v36_(v36
), v37_(v37
), v38_(v38
) {}
1937 template <typename T
>
1938 operator ParamGenerator
<T
>() const {
1939 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
1940 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
1941 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
1942 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
),
1943 static_cast<T
>(v12_
), static_cast<T
>(v13_
), static_cast<T
>(v14_
),
1944 static_cast<T
>(v15_
), static_cast<T
>(v16_
), static_cast<T
>(v17_
),
1945 static_cast<T
>(v18_
), static_cast<T
>(v19_
), static_cast<T
>(v20_
),
1946 static_cast<T
>(v21_
), static_cast<T
>(v22_
), static_cast<T
>(v23_
),
1947 static_cast<T
>(v24_
), static_cast<T
>(v25_
), static_cast<T
>(v26_
),
1948 static_cast<T
>(v27_
), static_cast<T
>(v28_
), static_cast<T
>(v29_
),
1949 static_cast<T
>(v30_
), static_cast<T
>(v31_
), static_cast<T
>(v32_
),
1950 static_cast<T
>(v33_
), static_cast<T
>(v34_
), static_cast<T
>(v35_
),
1951 static_cast<T
>(v36_
), static_cast<T
>(v37_
), static_cast<T
>(v38_
)};
1952 return ValuesIn(array
);
1956 // No implementation - assignment is unsupported.
1957 void operator=(const ValueArray38
& other
);
1999 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
2000 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
2001 typename T11
, typename T12
, typename T13
, typename T14
, typename T15
,
2002 typename T16
, typename T17
, typename T18
, typename T19
, typename T20
,
2003 typename T21
, typename T22
, typename T23
, typename T24
, typename T25
,
2004 typename T26
, typename T27
, typename T28
, typename T29
, typename T30
,
2005 typename T31
, typename T32
, typename T33
, typename T34
, typename T35
,
2006 typename T36
, typename T37
, typename T38
, typename T39
>
2007 class ValueArray39
{
2009 ValueArray39(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
2010 T10 v10
, T11 v11
, T12 v12
, T13 v13
, T14 v14
, T15 v15
, T16 v16
, T17 v17
,
2011 T18 v18
, T19 v19
, T20 v20
, T21 v21
, T22 v22
, T23 v23
, T24 v24
, T25 v25
,
2012 T26 v26
, T27 v27
, T28 v28
, T29 v29
, T30 v30
, T31 v31
, T32 v32
, T33 v33
,
2013 T34 v34
, T35 v35
, T36 v36
, T37 v37
, T38 v38
, T39 v39
) : v1_(v1
), v2_(v2
),
2014 v3_(v3
), v4_(v4
), v5_(v5
), v6_(v6
), v7_(v7
), v8_(v8
), v9_(v9
), v10_(v10
),
2015 v11_(v11
), v12_(v12
), v13_(v13
), v14_(v14
), v15_(v15
), v16_(v16
),
2016 v17_(v17
), v18_(v18
), v19_(v19
), v20_(v20
), v21_(v21
), v22_(v22
),
2017 v23_(v23
), v24_(v24
), v25_(v25
), v26_(v26
), v27_(v27
), v28_(v28
),
2018 v29_(v29
), v30_(v30
), v31_(v31
), v32_(v32
), v33_(v33
), v34_(v34
),
2019 v35_(v35
), v36_(v36
), v37_(v37
), v38_(v38
), v39_(v39
) {}
2021 template <typename T
>
2022 operator ParamGenerator
<T
>() const {
2023 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
2024 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
2025 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
2026 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
),
2027 static_cast<T
>(v12_
), static_cast<T
>(v13_
), static_cast<T
>(v14_
),
2028 static_cast<T
>(v15_
), static_cast<T
>(v16_
), static_cast<T
>(v17_
),
2029 static_cast<T
>(v18_
), static_cast<T
>(v19_
), static_cast<T
>(v20_
),
2030 static_cast<T
>(v21_
), static_cast<T
>(v22_
), static_cast<T
>(v23_
),
2031 static_cast<T
>(v24_
), static_cast<T
>(v25_
), static_cast<T
>(v26_
),
2032 static_cast<T
>(v27_
), static_cast<T
>(v28_
), static_cast<T
>(v29_
),
2033 static_cast<T
>(v30_
), static_cast<T
>(v31_
), static_cast<T
>(v32_
),
2034 static_cast<T
>(v33_
), static_cast<T
>(v34_
), static_cast<T
>(v35_
),
2035 static_cast<T
>(v36_
), static_cast<T
>(v37_
), static_cast<T
>(v38_
),
2036 static_cast<T
>(v39_
)};
2037 return ValuesIn(array
);
2041 // No implementation - assignment is unsupported.
2042 void operator=(const ValueArray39
& other
);
2085 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
2086 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
2087 typename T11
, typename T12
, typename T13
, typename T14
, typename T15
,
2088 typename T16
, typename T17
, typename T18
, typename T19
, typename T20
,
2089 typename T21
, typename T22
, typename T23
, typename T24
, typename T25
,
2090 typename T26
, typename T27
, typename T28
, typename T29
, typename T30
,
2091 typename T31
, typename T32
, typename T33
, typename T34
, typename T35
,
2092 typename T36
, typename T37
, typename T38
, typename T39
, typename T40
>
2093 class ValueArray40
{
2095 ValueArray40(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
2096 T10 v10
, T11 v11
, T12 v12
, T13 v13
, T14 v14
, T15 v15
, T16 v16
, T17 v17
,
2097 T18 v18
, T19 v19
, T20 v20
, T21 v21
, T22 v22
, T23 v23
, T24 v24
, T25 v25
,
2098 T26 v26
, T27 v27
, T28 v28
, T29 v29
, T30 v30
, T31 v31
, T32 v32
, T33 v33
,
2099 T34 v34
, T35 v35
, T36 v36
, T37 v37
, T38 v38
, T39 v39
, T40 v40
) : v1_(v1
),
2100 v2_(v2
), v3_(v3
), v4_(v4
), v5_(v5
), v6_(v6
), v7_(v7
), v8_(v8
), v9_(v9
),
2101 v10_(v10
), v11_(v11
), v12_(v12
), v13_(v13
), v14_(v14
), v15_(v15
),
2102 v16_(v16
), v17_(v17
), v18_(v18
), v19_(v19
), v20_(v20
), v21_(v21
),
2103 v22_(v22
), v23_(v23
), v24_(v24
), v25_(v25
), v26_(v26
), v27_(v27
),
2104 v28_(v28
), v29_(v29
), v30_(v30
), v31_(v31
), v32_(v32
), v33_(v33
),
2105 v34_(v34
), v35_(v35
), v36_(v36
), v37_(v37
), v38_(v38
), v39_(v39
),
2108 template <typename T
>
2109 operator ParamGenerator
<T
>() const {
2110 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
2111 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
2112 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
2113 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
),
2114 static_cast<T
>(v12_
), static_cast<T
>(v13_
), static_cast<T
>(v14_
),
2115 static_cast<T
>(v15_
), static_cast<T
>(v16_
), static_cast<T
>(v17_
),
2116 static_cast<T
>(v18_
), static_cast<T
>(v19_
), static_cast<T
>(v20_
),
2117 static_cast<T
>(v21_
), static_cast<T
>(v22_
), static_cast<T
>(v23_
),
2118 static_cast<T
>(v24_
), static_cast<T
>(v25_
), static_cast<T
>(v26_
),
2119 static_cast<T
>(v27_
), static_cast<T
>(v28_
), static_cast<T
>(v29_
),
2120 static_cast<T
>(v30_
), static_cast<T
>(v31_
), static_cast<T
>(v32_
),
2121 static_cast<T
>(v33_
), static_cast<T
>(v34_
), static_cast<T
>(v35_
),
2122 static_cast<T
>(v36_
), static_cast<T
>(v37_
), static_cast<T
>(v38_
),
2123 static_cast<T
>(v39_
), static_cast<T
>(v40_
)};
2124 return ValuesIn(array
);
2128 // No implementation - assignment is unsupported.
2129 void operator=(const ValueArray40
& other
);
2173 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
2174 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
2175 typename T11
, typename T12
, typename T13
, typename T14
, typename T15
,
2176 typename T16
, typename T17
, typename T18
, typename T19
, typename T20
,
2177 typename T21
, typename T22
, typename T23
, typename T24
, typename T25
,
2178 typename T26
, typename T27
, typename T28
, typename T29
, typename T30
,
2179 typename T31
, typename T32
, typename T33
, typename T34
, typename T35
,
2180 typename T36
, typename T37
, typename T38
, typename T39
, typename T40
,
2182 class ValueArray41
{
2184 ValueArray41(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
2185 T10 v10
, T11 v11
, T12 v12
, T13 v13
, T14 v14
, T15 v15
, T16 v16
, T17 v17
,
2186 T18 v18
, T19 v19
, T20 v20
, T21 v21
, T22 v22
, T23 v23
, T24 v24
, T25 v25
,
2187 T26 v26
, T27 v27
, T28 v28
, T29 v29
, T30 v30
, T31 v31
, T32 v32
, T33 v33
,
2188 T34 v34
, T35 v35
, T36 v36
, T37 v37
, T38 v38
, T39 v39
, T40 v40
,
2189 T41 v41
) : v1_(v1
), v2_(v2
), v3_(v3
), v4_(v4
), v5_(v5
), v6_(v6
), v7_(v7
),
2190 v8_(v8
), v9_(v9
), v10_(v10
), v11_(v11
), v12_(v12
), v13_(v13
), v14_(v14
),
2191 v15_(v15
), v16_(v16
), v17_(v17
), v18_(v18
), v19_(v19
), v20_(v20
),
2192 v21_(v21
), v22_(v22
), v23_(v23
), v24_(v24
), v25_(v25
), v26_(v26
),
2193 v27_(v27
), v28_(v28
), v29_(v29
), v30_(v30
), v31_(v31
), v32_(v32
),
2194 v33_(v33
), v34_(v34
), v35_(v35
), v36_(v36
), v37_(v37
), v38_(v38
),
2195 v39_(v39
), v40_(v40
), v41_(v41
) {}
2197 template <typename T
>
2198 operator ParamGenerator
<T
>() const {
2199 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
2200 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
2201 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
2202 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
),
2203 static_cast<T
>(v12_
), static_cast<T
>(v13_
), static_cast<T
>(v14_
),
2204 static_cast<T
>(v15_
), static_cast<T
>(v16_
), static_cast<T
>(v17_
),
2205 static_cast<T
>(v18_
), static_cast<T
>(v19_
), static_cast<T
>(v20_
),
2206 static_cast<T
>(v21_
), static_cast<T
>(v22_
), static_cast<T
>(v23_
),
2207 static_cast<T
>(v24_
), static_cast<T
>(v25_
), static_cast<T
>(v26_
),
2208 static_cast<T
>(v27_
), static_cast<T
>(v28_
), static_cast<T
>(v29_
),
2209 static_cast<T
>(v30_
), static_cast<T
>(v31_
), static_cast<T
>(v32_
),
2210 static_cast<T
>(v33_
), static_cast<T
>(v34_
), static_cast<T
>(v35_
),
2211 static_cast<T
>(v36_
), static_cast<T
>(v37_
), static_cast<T
>(v38_
),
2212 static_cast<T
>(v39_
), static_cast<T
>(v40_
), static_cast<T
>(v41_
)};
2213 return ValuesIn(array
);
2217 // No implementation - assignment is unsupported.
2218 void operator=(const ValueArray41
& other
);
2263 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
2264 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
2265 typename T11
, typename T12
, typename T13
, typename T14
, typename T15
,
2266 typename T16
, typename T17
, typename T18
, typename T19
, typename T20
,
2267 typename T21
, typename T22
, typename T23
, typename T24
, typename T25
,
2268 typename T26
, typename T27
, typename T28
, typename T29
, typename T30
,
2269 typename T31
, typename T32
, typename T33
, typename T34
, typename T35
,
2270 typename T36
, typename T37
, typename T38
, typename T39
, typename T40
,
2271 typename T41
, typename T42
>
2272 class ValueArray42
{
2274 ValueArray42(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
2275 T10 v10
, T11 v11
, T12 v12
, T13 v13
, T14 v14
, T15 v15
, T16 v16
, T17 v17
,
2276 T18 v18
, T19 v19
, T20 v20
, T21 v21
, T22 v22
, T23 v23
, T24 v24
, T25 v25
,
2277 T26 v26
, T27 v27
, T28 v28
, T29 v29
, T30 v30
, T31 v31
, T32 v32
, T33 v33
,
2278 T34 v34
, T35 v35
, T36 v36
, T37 v37
, T38 v38
, T39 v39
, T40 v40
, T41 v41
,
2279 T42 v42
) : v1_(v1
), v2_(v2
), v3_(v3
), v4_(v4
), v5_(v5
), v6_(v6
), v7_(v7
),
2280 v8_(v8
), v9_(v9
), v10_(v10
), v11_(v11
), v12_(v12
), v13_(v13
), v14_(v14
),
2281 v15_(v15
), v16_(v16
), v17_(v17
), v18_(v18
), v19_(v19
), v20_(v20
),
2282 v21_(v21
), v22_(v22
), v23_(v23
), v24_(v24
), v25_(v25
), v26_(v26
),
2283 v27_(v27
), v28_(v28
), v29_(v29
), v30_(v30
), v31_(v31
), v32_(v32
),
2284 v33_(v33
), v34_(v34
), v35_(v35
), v36_(v36
), v37_(v37
), v38_(v38
),
2285 v39_(v39
), v40_(v40
), v41_(v41
), v42_(v42
) {}
2287 template <typename T
>
2288 operator ParamGenerator
<T
>() const {
2289 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
2290 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
2291 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
2292 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
),
2293 static_cast<T
>(v12_
), static_cast<T
>(v13_
), static_cast<T
>(v14_
),
2294 static_cast<T
>(v15_
), static_cast<T
>(v16_
), static_cast<T
>(v17_
),
2295 static_cast<T
>(v18_
), static_cast<T
>(v19_
), static_cast<T
>(v20_
),
2296 static_cast<T
>(v21_
), static_cast<T
>(v22_
), static_cast<T
>(v23_
),
2297 static_cast<T
>(v24_
), static_cast<T
>(v25_
), static_cast<T
>(v26_
),
2298 static_cast<T
>(v27_
), static_cast<T
>(v28_
), static_cast<T
>(v29_
),
2299 static_cast<T
>(v30_
), static_cast<T
>(v31_
), static_cast<T
>(v32_
),
2300 static_cast<T
>(v33_
), static_cast<T
>(v34_
), static_cast<T
>(v35_
),
2301 static_cast<T
>(v36_
), static_cast<T
>(v37_
), static_cast<T
>(v38_
),
2302 static_cast<T
>(v39_
), static_cast<T
>(v40_
), static_cast<T
>(v41_
),
2303 static_cast<T
>(v42_
)};
2304 return ValuesIn(array
);
2308 // No implementation - assignment is unsupported.
2309 void operator=(const ValueArray42
& other
);
2355 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
2356 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
2357 typename T11
, typename T12
, typename T13
, typename T14
, typename T15
,
2358 typename T16
, typename T17
, typename T18
, typename T19
, typename T20
,
2359 typename T21
, typename T22
, typename T23
, typename T24
, typename T25
,
2360 typename T26
, typename T27
, typename T28
, typename T29
, typename T30
,
2361 typename T31
, typename T32
, typename T33
, typename T34
, typename T35
,
2362 typename T36
, typename T37
, typename T38
, typename T39
, typename T40
,
2363 typename T41
, typename T42
, typename T43
>
2364 class ValueArray43
{
2366 ValueArray43(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
2367 T10 v10
, T11 v11
, T12 v12
, T13 v13
, T14 v14
, T15 v15
, T16 v16
, T17 v17
,
2368 T18 v18
, T19 v19
, T20 v20
, T21 v21
, T22 v22
, T23 v23
, T24 v24
, T25 v25
,
2369 T26 v26
, T27 v27
, T28 v28
, T29 v29
, T30 v30
, T31 v31
, T32 v32
, T33 v33
,
2370 T34 v34
, T35 v35
, T36 v36
, T37 v37
, T38 v38
, T39 v39
, T40 v40
, T41 v41
,
2371 T42 v42
, T43 v43
) : v1_(v1
), v2_(v2
), v3_(v3
), v4_(v4
), v5_(v5
), v6_(v6
),
2372 v7_(v7
), v8_(v8
), v9_(v9
), v10_(v10
), v11_(v11
), v12_(v12
), v13_(v13
),
2373 v14_(v14
), v15_(v15
), v16_(v16
), v17_(v17
), v18_(v18
), v19_(v19
),
2374 v20_(v20
), v21_(v21
), v22_(v22
), v23_(v23
), v24_(v24
), v25_(v25
),
2375 v26_(v26
), v27_(v27
), v28_(v28
), v29_(v29
), v30_(v30
), v31_(v31
),
2376 v32_(v32
), v33_(v33
), v34_(v34
), v35_(v35
), v36_(v36
), v37_(v37
),
2377 v38_(v38
), v39_(v39
), v40_(v40
), v41_(v41
), v42_(v42
), v43_(v43
) {}
2379 template <typename T
>
2380 operator ParamGenerator
<T
>() const {
2381 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
2382 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
2383 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
2384 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
),
2385 static_cast<T
>(v12_
), static_cast<T
>(v13_
), static_cast<T
>(v14_
),
2386 static_cast<T
>(v15_
), static_cast<T
>(v16_
), static_cast<T
>(v17_
),
2387 static_cast<T
>(v18_
), static_cast<T
>(v19_
), static_cast<T
>(v20_
),
2388 static_cast<T
>(v21_
), static_cast<T
>(v22_
), static_cast<T
>(v23_
),
2389 static_cast<T
>(v24_
), static_cast<T
>(v25_
), static_cast<T
>(v26_
),
2390 static_cast<T
>(v27_
), static_cast<T
>(v28_
), static_cast<T
>(v29_
),
2391 static_cast<T
>(v30_
), static_cast<T
>(v31_
), static_cast<T
>(v32_
),
2392 static_cast<T
>(v33_
), static_cast<T
>(v34_
), static_cast<T
>(v35_
),
2393 static_cast<T
>(v36_
), static_cast<T
>(v37_
), static_cast<T
>(v38_
),
2394 static_cast<T
>(v39_
), static_cast<T
>(v40_
), static_cast<T
>(v41_
),
2395 static_cast<T
>(v42_
), static_cast<T
>(v43_
)};
2396 return ValuesIn(array
);
2400 // No implementation - assignment is unsupported.
2401 void operator=(const ValueArray43
& other
);
2448 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
2449 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
2450 typename T11
, typename T12
, typename T13
, typename T14
, typename T15
,
2451 typename T16
, typename T17
, typename T18
, typename T19
, typename T20
,
2452 typename T21
, typename T22
, typename T23
, typename T24
, typename T25
,
2453 typename T26
, typename T27
, typename T28
, typename T29
, typename T30
,
2454 typename T31
, typename T32
, typename T33
, typename T34
, typename T35
,
2455 typename T36
, typename T37
, typename T38
, typename T39
, typename T40
,
2456 typename T41
, typename T42
, typename T43
, typename T44
>
2457 class ValueArray44
{
2459 ValueArray44(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
2460 T10 v10
, T11 v11
, T12 v12
, T13 v13
, T14 v14
, T15 v15
, T16 v16
, T17 v17
,
2461 T18 v18
, T19 v19
, T20 v20
, T21 v21
, T22 v22
, T23 v23
, T24 v24
, T25 v25
,
2462 T26 v26
, T27 v27
, T28 v28
, T29 v29
, T30 v30
, T31 v31
, T32 v32
, T33 v33
,
2463 T34 v34
, T35 v35
, T36 v36
, T37 v37
, T38 v38
, T39 v39
, T40 v40
, T41 v41
,
2464 T42 v42
, T43 v43
, T44 v44
) : v1_(v1
), v2_(v2
), v3_(v3
), v4_(v4
), v5_(v5
),
2465 v6_(v6
), v7_(v7
), v8_(v8
), v9_(v9
), v10_(v10
), v11_(v11
), v12_(v12
),
2466 v13_(v13
), v14_(v14
), v15_(v15
), v16_(v16
), v17_(v17
), v18_(v18
),
2467 v19_(v19
), v20_(v20
), v21_(v21
), v22_(v22
), v23_(v23
), v24_(v24
),
2468 v25_(v25
), v26_(v26
), v27_(v27
), v28_(v28
), v29_(v29
), v30_(v30
),
2469 v31_(v31
), v32_(v32
), v33_(v33
), v34_(v34
), v35_(v35
), v36_(v36
),
2470 v37_(v37
), v38_(v38
), v39_(v39
), v40_(v40
), v41_(v41
), v42_(v42
),
2471 v43_(v43
), v44_(v44
) {}
2473 template <typename T
>
2474 operator ParamGenerator
<T
>() const {
2475 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
2476 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
2477 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
2478 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
),
2479 static_cast<T
>(v12_
), static_cast<T
>(v13_
), static_cast<T
>(v14_
),
2480 static_cast<T
>(v15_
), static_cast<T
>(v16_
), static_cast<T
>(v17_
),
2481 static_cast<T
>(v18_
), static_cast<T
>(v19_
), static_cast<T
>(v20_
),
2482 static_cast<T
>(v21_
), static_cast<T
>(v22_
), static_cast<T
>(v23_
),
2483 static_cast<T
>(v24_
), static_cast<T
>(v25_
), static_cast<T
>(v26_
),
2484 static_cast<T
>(v27_
), static_cast<T
>(v28_
), static_cast<T
>(v29_
),
2485 static_cast<T
>(v30_
), static_cast<T
>(v31_
), static_cast<T
>(v32_
),
2486 static_cast<T
>(v33_
), static_cast<T
>(v34_
), static_cast<T
>(v35_
),
2487 static_cast<T
>(v36_
), static_cast<T
>(v37_
), static_cast<T
>(v38_
),
2488 static_cast<T
>(v39_
), static_cast<T
>(v40_
), static_cast<T
>(v41_
),
2489 static_cast<T
>(v42_
), static_cast<T
>(v43_
), static_cast<T
>(v44_
)};
2490 return ValuesIn(array
);
2494 // No implementation - assignment is unsupported.
2495 void operator=(const ValueArray44
& other
);
2543 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
2544 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
2545 typename T11
, typename T12
, typename T13
, typename T14
, typename T15
,
2546 typename T16
, typename T17
, typename T18
, typename T19
, typename T20
,
2547 typename T21
, typename T22
, typename T23
, typename T24
, typename T25
,
2548 typename T26
, typename T27
, typename T28
, typename T29
, typename T30
,
2549 typename T31
, typename T32
, typename T33
, typename T34
, typename T35
,
2550 typename T36
, typename T37
, typename T38
, typename T39
, typename T40
,
2551 typename T41
, typename T42
, typename T43
, typename T44
, typename T45
>
2552 class ValueArray45
{
2554 ValueArray45(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
2555 T10 v10
, T11 v11
, T12 v12
, T13 v13
, T14 v14
, T15 v15
, T16 v16
, T17 v17
,
2556 T18 v18
, T19 v19
, T20 v20
, T21 v21
, T22 v22
, T23 v23
, T24 v24
, T25 v25
,
2557 T26 v26
, T27 v27
, T28 v28
, T29 v29
, T30 v30
, T31 v31
, T32 v32
, T33 v33
,
2558 T34 v34
, T35 v35
, T36 v36
, T37 v37
, T38 v38
, T39 v39
, T40 v40
, T41 v41
,
2559 T42 v42
, T43 v43
, T44 v44
, T45 v45
) : v1_(v1
), v2_(v2
), v3_(v3
), v4_(v4
),
2560 v5_(v5
), v6_(v6
), v7_(v7
), v8_(v8
), v9_(v9
), v10_(v10
), v11_(v11
),
2561 v12_(v12
), v13_(v13
), v14_(v14
), v15_(v15
), v16_(v16
), v17_(v17
),
2562 v18_(v18
), v19_(v19
), v20_(v20
), v21_(v21
), v22_(v22
), v23_(v23
),
2563 v24_(v24
), v25_(v25
), v26_(v26
), v27_(v27
), v28_(v28
), v29_(v29
),
2564 v30_(v30
), v31_(v31
), v32_(v32
), v33_(v33
), v34_(v34
), v35_(v35
),
2565 v36_(v36
), v37_(v37
), v38_(v38
), v39_(v39
), v40_(v40
), v41_(v41
),
2566 v42_(v42
), v43_(v43
), v44_(v44
), v45_(v45
) {}
2568 template <typename T
>
2569 operator ParamGenerator
<T
>() const {
2570 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
2571 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
2572 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
2573 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
),
2574 static_cast<T
>(v12_
), static_cast<T
>(v13_
), static_cast<T
>(v14_
),
2575 static_cast<T
>(v15_
), static_cast<T
>(v16_
), static_cast<T
>(v17_
),
2576 static_cast<T
>(v18_
), static_cast<T
>(v19_
), static_cast<T
>(v20_
),
2577 static_cast<T
>(v21_
), static_cast<T
>(v22_
), static_cast<T
>(v23_
),
2578 static_cast<T
>(v24_
), static_cast<T
>(v25_
), static_cast<T
>(v26_
),
2579 static_cast<T
>(v27_
), static_cast<T
>(v28_
), static_cast<T
>(v29_
),
2580 static_cast<T
>(v30_
), static_cast<T
>(v31_
), static_cast<T
>(v32_
),
2581 static_cast<T
>(v33_
), static_cast<T
>(v34_
), static_cast<T
>(v35_
),
2582 static_cast<T
>(v36_
), static_cast<T
>(v37_
), static_cast<T
>(v38_
),
2583 static_cast<T
>(v39_
), static_cast<T
>(v40_
), static_cast<T
>(v41_
),
2584 static_cast<T
>(v42_
), static_cast<T
>(v43_
), static_cast<T
>(v44_
),
2585 static_cast<T
>(v45_
)};
2586 return ValuesIn(array
);
2590 // No implementation - assignment is unsupported.
2591 void operator=(const ValueArray45
& other
);
2640 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
2641 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
2642 typename T11
, typename T12
, typename T13
, typename T14
, typename T15
,
2643 typename T16
, typename T17
, typename T18
, typename T19
, typename T20
,
2644 typename T21
, typename T22
, typename T23
, typename T24
, typename T25
,
2645 typename T26
, typename T27
, typename T28
, typename T29
, typename T30
,
2646 typename T31
, typename T32
, typename T33
, typename T34
, typename T35
,
2647 typename T36
, typename T37
, typename T38
, typename T39
, typename T40
,
2648 typename T41
, typename T42
, typename T43
, typename T44
, typename T45
,
2650 class ValueArray46
{
2652 ValueArray46(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
2653 T10 v10
, T11 v11
, T12 v12
, T13 v13
, T14 v14
, T15 v15
, T16 v16
, T17 v17
,
2654 T18 v18
, T19 v19
, T20 v20
, T21 v21
, T22 v22
, T23 v23
, T24 v24
, T25 v25
,
2655 T26 v26
, T27 v27
, T28 v28
, T29 v29
, T30 v30
, T31 v31
, T32 v32
, T33 v33
,
2656 T34 v34
, T35 v35
, T36 v36
, T37 v37
, T38 v38
, T39 v39
, T40 v40
, T41 v41
,
2657 T42 v42
, T43 v43
, T44 v44
, T45 v45
, T46 v46
) : v1_(v1
), v2_(v2
), v3_(v3
),
2658 v4_(v4
), v5_(v5
), v6_(v6
), v7_(v7
), v8_(v8
), v9_(v9
), v10_(v10
),
2659 v11_(v11
), v12_(v12
), v13_(v13
), v14_(v14
), v15_(v15
), v16_(v16
),
2660 v17_(v17
), v18_(v18
), v19_(v19
), v20_(v20
), v21_(v21
), v22_(v22
),
2661 v23_(v23
), v24_(v24
), v25_(v25
), v26_(v26
), v27_(v27
), v28_(v28
),
2662 v29_(v29
), v30_(v30
), v31_(v31
), v32_(v32
), v33_(v33
), v34_(v34
),
2663 v35_(v35
), v36_(v36
), v37_(v37
), v38_(v38
), v39_(v39
), v40_(v40
),
2664 v41_(v41
), v42_(v42
), v43_(v43
), v44_(v44
), v45_(v45
), v46_(v46
) {}
2666 template <typename T
>
2667 operator ParamGenerator
<T
>() const {
2668 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
2669 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
2670 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
2671 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
),
2672 static_cast<T
>(v12_
), static_cast<T
>(v13_
), static_cast<T
>(v14_
),
2673 static_cast<T
>(v15_
), static_cast<T
>(v16_
), static_cast<T
>(v17_
),
2674 static_cast<T
>(v18_
), static_cast<T
>(v19_
), static_cast<T
>(v20_
),
2675 static_cast<T
>(v21_
), static_cast<T
>(v22_
), static_cast<T
>(v23_
),
2676 static_cast<T
>(v24_
), static_cast<T
>(v25_
), static_cast<T
>(v26_
),
2677 static_cast<T
>(v27_
), static_cast<T
>(v28_
), static_cast<T
>(v29_
),
2678 static_cast<T
>(v30_
), static_cast<T
>(v31_
), static_cast<T
>(v32_
),
2679 static_cast<T
>(v33_
), static_cast<T
>(v34_
), static_cast<T
>(v35_
),
2680 static_cast<T
>(v36_
), static_cast<T
>(v37_
), static_cast<T
>(v38_
),
2681 static_cast<T
>(v39_
), static_cast<T
>(v40_
), static_cast<T
>(v41_
),
2682 static_cast<T
>(v42_
), static_cast<T
>(v43_
), static_cast<T
>(v44_
),
2683 static_cast<T
>(v45_
), static_cast<T
>(v46_
)};
2684 return ValuesIn(array
);
2688 // No implementation - assignment is unsupported.
2689 void operator=(const ValueArray46
& other
);
2739 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
2740 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
2741 typename T11
, typename T12
, typename T13
, typename T14
, typename T15
,
2742 typename T16
, typename T17
, typename T18
, typename T19
, typename T20
,
2743 typename T21
, typename T22
, typename T23
, typename T24
, typename T25
,
2744 typename T26
, typename T27
, typename T28
, typename T29
, typename T30
,
2745 typename T31
, typename T32
, typename T33
, typename T34
, typename T35
,
2746 typename T36
, typename T37
, typename T38
, typename T39
, typename T40
,
2747 typename T41
, typename T42
, typename T43
, typename T44
, typename T45
,
2748 typename T46
, typename T47
>
2749 class ValueArray47
{
2751 ValueArray47(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
2752 T10 v10
, T11 v11
, T12 v12
, T13 v13
, T14 v14
, T15 v15
, T16 v16
, T17 v17
,
2753 T18 v18
, T19 v19
, T20 v20
, T21 v21
, T22 v22
, T23 v23
, T24 v24
, T25 v25
,
2754 T26 v26
, T27 v27
, T28 v28
, T29 v29
, T30 v30
, T31 v31
, T32 v32
, T33 v33
,
2755 T34 v34
, T35 v35
, T36 v36
, T37 v37
, T38 v38
, T39 v39
, T40 v40
, T41 v41
,
2756 T42 v42
, T43 v43
, T44 v44
, T45 v45
, T46 v46
, T47 v47
) : v1_(v1
), v2_(v2
),
2757 v3_(v3
), v4_(v4
), v5_(v5
), v6_(v6
), v7_(v7
), v8_(v8
), v9_(v9
), v10_(v10
),
2758 v11_(v11
), v12_(v12
), v13_(v13
), v14_(v14
), v15_(v15
), v16_(v16
),
2759 v17_(v17
), v18_(v18
), v19_(v19
), v20_(v20
), v21_(v21
), v22_(v22
),
2760 v23_(v23
), v24_(v24
), v25_(v25
), v26_(v26
), v27_(v27
), v28_(v28
),
2761 v29_(v29
), v30_(v30
), v31_(v31
), v32_(v32
), v33_(v33
), v34_(v34
),
2762 v35_(v35
), v36_(v36
), v37_(v37
), v38_(v38
), v39_(v39
), v40_(v40
),
2763 v41_(v41
), v42_(v42
), v43_(v43
), v44_(v44
), v45_(v45
), v46_(v46
),
2766 template <typename T
>
2767 operator ParamGenerator
<T
>() const {
2768 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
2769 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
2770 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
2771 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
),
2772 static_cast<T
>(v12_
), static_cast<T
>(v13_
), static_cast<T
>(v14_
),
2773 static_cast<T
>(v15_
), static_cast<T
>(v16_
), static_cast<T
>(v17_
),
2774 static_cast<T
>(v18_
), static_cast<T
>(v19_
), static_cast<T
>(v20_
),
2775 static_cast<T
>(v21_
), static_cast<T
>(v22_
), static_cast<T
>(v23_
),
2776 static_cast<T
>(v24_
), static_cast<T
>(v25_
), static_cast<T
>(v26_
),
2777 static_cast<T
>(v27_
), static_cast<T
>(v28_
), static_cast<T
>(v29_
),
2778 static_cast<T
>(v30_
), static_cast<T
>(v31_
), static_cast<T
>(v32_
),
2779 static_cast<T
>(v33_
), static_cast<T
>(v34_
), static_cast<T
>(v35_
),
2780 static_cast<T
>(v36_
), static_cast<T
>(v37_
), static_cast<T
>(v38_
),
2781 static_cast<T
>(v39_
), static_cast<T
>(v40_
), static_cast<T
>(v41_
),
2782 static_cast<T
>(v42_
), static_cast<T
>(v43_
), static_cast<T
>(v44_
),
2783 static_cast<T
>(v45_
), static_cast<T
>(v46_
), static_cast<T
>(v47_
)};
2784 return ValuesIn(array
);
2788 // No implementation - assignment is unsupported.
2789 void operator=(const ValueArray47
& other
);
2840 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
2841 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
2842 typename T11
, typename T12
, typename T13
, typename T14
, typename T15
,
2843 typename T16
, typename T17
, typename T18
, typename T19
, typename T20
,
2844 typename T21
, typename T22
, typename T23
, typename T24
, typename T25
,
2845 typename T26
, typename T27
, typename T28
, typename T29
, typename T30
,
2846 typename T31
, typename T32
, typename T33
, typename T34
, typename T35
,
2847 typename T36
, typename T37
, typename T38
, typename T39
, typename T40
,
2848 typename T41
, typename T42
, typename T43
, typename T44
, typename T45
,
2849 typename T46
, typename T47
, typename T48
>
2850 class ValueArray48
{
2852 ValueArray48(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
2853 T10 v10
, T11 v11
, T12 v12
, T13 v13
, T14 v14
, T15 v15
, T16 v16
, T17 v17
,
2854 T18 v18
, T19 v19
, T20 v20
, T21 v21
, T22 v22
, T23 v23
, T24 v24
, T25 v25
,
2855 T26 v26
, T27 v27
, T28 v28
, T29 v29
, T30 v30
, T31 v31
, T32 v32
, T33 v33
,
2856 T34 v34
, T35 v35
, T36 v36
, T37 v37
, T38 v38
, T39 v39
, T40 v40
, T41 v41
,
2857 T42 v42
, T43 v43
, T44 v44
, T45 v45
, T46 v46
, T47 v47
, T48 v48
) : v1_(v1
),
2858 v2_(v2
), v3_(v3
), v4_(v4
), v5_(v5
), v6_(v6
), v7_(v7
), v8_(v8
), v9_(v9
),
2859 v10_(v10
), v11_(v11
), v12_(v12
), v13_(v13
), v14_(v14
), v15_(v15
),
2860 v16_(v16
), v17_(v17
), v18_(v18
), v19_(v19
), v20_(v20
), v21_(v21
),
2861 v22_(v22
), v23_(v23
), v24_(v24
), v25_(v25
), v26_(v26
), v27_(v27
),
2862 v28_(v28
), v29_(v29
), v30_(v30
), v31_(v31
), v32_(v32
), v33_(v33
),
2863 v34_(v34
), v35_(v35
), v36_(v36
), v37_(v37
), v38_(v38
), v39_(v39
),
2864 v40_(v40
), v41_(v41
), v42_(v42
), v43_(v43
), v44_(v44
), v45_(v45
),
2865 v46_(v46
), v47_(v47
), v48_(v48
) {}
2867 template <typename T
>
2868 operator ParamGenerator
<T
>() const {
2869 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
2870 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
2871 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
2872 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
),
2873 static_cast<T
>(v12_
), static_cast<T
>(v13_
), static_cast<T
>(v14_
),
2874 static_cast<T
>(v15_
), static_cast<T
>(v16_
), static_cast<T
>(v17_
),
2875 static_cast<T
>(v18_
), static_cast<T
>(v19_
), static_cast<T
>(v20_
),
2876 static_cast<T
>(v21_
), static_cast<T
>(v22_
), static_cast<T
>(v23_
),
2877 static_cast<T
>(v24_
), static_cast<T
>(v25_
), static_cast<T
>(v26_
),
2878 static_cast<T
>(v27_
), static_cast<T
>(v28_
), static_cast<T
>(v29_
),
2879 static_cast<T
>(v30_
), static_cast<T
>(v31_
), static_cast<T
>(v32_
),
2880 static_cast<T
>(v33_
), static_cast<T
>(v34_
), static_cast<T
>(v35_
),
2881 static_cast<T
>(v36_
), static_cast<T
>(v37_
), static_cast<T
>(v38_
),
2882 static_cast<T
>(v39_
), static_cast<T
>(v40_
), static_cast<T
>(v41_
),
2883 static_cast<T
>(v42_
), static_cast<T
>(v43_
), static_cast<T
>(v44_
),
2884 static_cast<T
>(v45_
), static_cast<T
>(v46_
), static_cast<T
>(v47_
),
2885 static_cast<T
>(v48_
)};
2886 return ValuesIn(array
);
2890 // No implementation - assignment is unsupported.
2891 void operator=(const ValueArray48
& other
);
2943 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
2944 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
2945 typename T11
, typename T12
, typename T13
, typename T14
, typename T15
,
2946 typename T16
, typename T17
, typename T18
, typename T19
, typename T20
,
2947 typename T21
, typename T22
, typename T23
, typename T24
, typename T25
,
2948 typename T26
, typename T27
, typename T28
, typename T29
, typename T30
,
2949 typename T31
, typename T32
, typename T33
, typename T34
, typename T35
,
2950 typename T36
, typename T37
, typename T38
, typename T39
, typename T40
,
2951 typename T41
, typename T42
, typename T43
, typename T44
, typename T45
,
2952 typename T46
, typename T47
, typename T48
, typename T49
>
2953 class ValueArray49
{
2955 ValueArray49(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
2956 T10 v10
, T11 v11
, T12 v12
, T13 v13
, T14 v14
, T15 v15
, T16 v16
, T17 v17
,
2957 T18 v18
, T19 v19
, T20 v20
, T21 v21
, T22 v22
, T23 v23
, T24 v24
, T25 v25
,
2958 T26 v26
, T27 v27
, T28 v28
, T29 v29
, T30 v30
, T31 v31
, T32 v32
, T33 v33
,
2959 T34 v34
, T35 v35
, T36 v36
, T37 v37
, T38 v38
, T39 v39
, T40 v40
, T41 v41
,
2960 T42 v42
, T43 v43
, T44 v44
, T45 v45
, T46 v46
, T47 v47
, T48 v48
,
2961 T49 v49
) : v1_(v1
), v2_(v2
), v3_(v3
), v4_(v4
), v5_(v5
), v6_(v6
), v7_(v7
),
2962 v8_(v8
), v9_(v9
), v10_(v10
), v11_(v11
), v12_(v12
), v13_(v13
), v14_(v14
),
2963 v15_(v15
), v16_(v16
), v17_(v17
), v18_(v18
), v19_(v19
), v20_(v20
),
2964 v21_(v21
), v22_(v22
), v23_(v23
), v24_(v24
), v25_(v25
), v26_(v26
),
2965 v27_(v27
), v28_(v28
), v29_(v29
), v30_(v30
), v31_(v31
), v32_(v32
),
2966 v33_(v33
), v34_(v34
), v35_(v35
), v36_(v36
), v37_(v37
), v38_(v38
),
2967 v39_(v39
), v40_(v40
), v41_(v41
), v42_(v42
), v43_(v43
), v44_(v44
),
2968 v45_(v45
), v46_(v46
), v47_(v47
), v48_(v48
), v49_(v49
) {}
2970 template <typename T
>
2971 operator ParamGenerator
<T
>() const {
2972 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
2973 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
2974 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
2975 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
),
2976 static_cast<T
>(v12_
), static_cast<T
>(v13_
), static_cast<T
>(v14_
),
2977 static_cast<T
>(v15_
), static_cast<T
>(v16_
), static_cast<T
>(v17_
),
2978 static_cast<T
>(v18_
), static_cast<T
>(v19_
), static_cast<T
>(v20_
),
2979 static_cast<T
>(v21_
), static_cast<T
>(v22_
), static_cast<T
>(v23_
),
2980 static_cast<T
>(v24_
), static_cast<T
>(v25_
), static_cast<T
>(v26_
),
2981 static_cast<T
>(v27_
), static_cast<T
>(v28_
), static_cast<T
>(v29_
),
2982 static_cast<T
>(v30_
), static_cast<T
>(v31_
), static_cast<T
>(v32_
),
2983 static_cast<T
>(v33_
), static_cast<T
>(v34_
), static_cast<T
>(v35_
),
2984 static_cast<T
>(v36_
), static_cast<T
>(v37_
), static_cast<T
>(v38_
),
2985 static_cast<T
>(v39_
), static_cast<T
>(v40_
), static_cast<T
>(v41_
),
2986 static_cast<T
>(v42_
), static_cast<T
>(v43_
), static_cast<T
>(v44_
),
2987 static_cast<T
>(v45_
), static_cast<T
>(v46_
), static_cast<T
>(v47_
),
2988 static_cast<T
>(v48_
), static_cast<T
>(v49_
)};
2989 return ValuesIn(array
);
2993 // No implementation - assignment is unsupported.
2994 void operator=(const ValueArray49
& other
);
3047 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
3048 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
,
3049 typename T11
, typename T12
, typename T13
, typename T14
, typename T15
,
3050 typename T16
, typename T17
, typename T18
, typename T19
, typename T20
,
3051 typename T21
, typename T22
, typename T23
, typename T24
, typename T25
,
3052 typename T26
, typename T27
, typename T28
, typename T29
, typename T30
,
3053 typename T31
, typename T32
, typename T33
, typename T34
, typename T35
,
3054 typename T36
, typename T37
, typename T38
, typename T39
, typename T40
,
3055 typename T41
, typename T42
, typename T43
, typename T44
, typename T45
,
3056 typename T46
, typename T47
, typename T48
, typename T49
, typename T50
>
3057 class ValueArray50
{
3059 ValueArray50(T1 v1
, T2 v2
, T3 v3
, T4 v4
, T5 v5
, T6 v6
, T7 v7
, T8 v8
, T9 v9
,
3060 T10 v10
, T11 v11
, T12 v12
, T13 v13
, T14 v14
, T15 v15
, T16 v16
, T17 v17
,
3061 T18 v18
, T19 v19
, T20 v20
, T21 v21
, T22 v22
, T23 v23
, T24 v24
, T25 v25
,
3062 T26 v26
, T27 v27
, T28 v28
, T29 v29
, T30 v30
, T31 v31
, T32 v32
, T33 v33
,
3063 T34 v34
, T35 v35
, T36 v36
, T37 v37
, T38 v38
, T39 v39
, T40 v40
, T41 v41
,
3064 T42 v42
, T43 v43
, T44 v44
, T45 v45
, T46 v46
, T47 v47
, T48 v48
, T49 v49
,
3065 T50 v50
) : v1_(v1
), v2_(v2
), v3_(v3
), v4_(v4
), v5_(v5
), v6_(v6
), v7_(v7
),
3066 v8_(v8
), v9_(v9
), v10_(v10
), v11_(v11
), v12_(v12
), v13_(v13
), v14_(v14
),
3067 v15_(v15
), v16_(v16
), v17_(v17
), v18_(v18
), v19_(v19
), v20_(v20
),
3068 v21_(v21
), v22_(v22
), v23_(v23
), v24_(v24
), v25_(v25
), v26_(v26
),
3069 v27_(v27
), v28_(v28
), v29_(v29
), v30_(v30
), v31_(v31
), v32_(v32
),
3070 v33_(v33
), v34_(v34
), v35_(v35
), v36_(v36
), v37_(v37
), v38_(v38
),
3071 v39_(v39
), v40_(v40
), v41_(v41
), v42_(v42
), v43_(v43
), v44_(v44
),
3072 v45_(v45
), v46_(v46
), v47_(v47
), v48_(v48
), v49_(v49
), v50_(v50
) {}
3074 template <typename T
>
3075 operator ParamGenerator
<T
>() const {
3076 const T array
[] = {static_cast<T
>(v1_
), static_cast<T
>(v2_
),
3077 static_cast<T
>(v3_
), static_cast<T
>(v4_
), static_cast<T
>(v5_
),
3078 static_cast<T
>(v6_
), static_cast<T
>(v7_
), static_cast<T
>(v8_
),
3079 static_cast<T
>(v9_
), static_cast<T
>(v10_
), static_cast<T
>(v11_
),
3080 static_cast<T
>(v12_
), static_cast<T
>(v13_
), static_cast<T
>(v14_
),
3081 static_cast<T
>(v15_
), static_cast<T
>(v16_
), static_cast<T
>(v17_
),
3082 static_cast<T
>(v18_
), static_cast<T
>(v19_
), static_cast<T
>(v20_
),
3083 static_cast<T
>(v21_
), static_cast<T
>(v22_
), static_cast<T
>(v23_
),
3084 static_cast<T
>(v24_
), static_cast<T
>(v25_
), static_cast<T
>(v26_
),
3085 static_cast<T
>(v27_
), static_cast<T
>(v28_
), static_cast<T
>(v29_
),
3086 static_cast<T
>(v30_
), static_cast<T
>(v31_
), static_cast<T
>(v32_
),
3087 static_cast<T
>(v33_
), static_cast<T
>(v34_
), static_cast<T
>(v35_
),
3088 static_cast<T
>(v36_
), static_cast<T
>(v37_
), static_cast<T
>(v38_
),
3089 static_cast<T
>(v39_
), static_cast<T
>(v40_
), static_cast<T
>(v41_
),
3090 static_cast<T
>(v42_
), static_cast<T
>(v43_
), static_cast<T
>(v44_
),
3091 static_cast<T
>(v45_
), static_cast<T
>(v46_
), static_cast<T
>(v47_
),
3092 static_cast<T
>(v48_
), static_cast<T
>(v49_
), static_cast<T
>(v50_
)};
3093 return ValuesIn(array
);
3097 // No implementation - assignment is unsupported.
3098 void operator=(const ValueArray50
& other
);
3152 # if GTEST_HAS_COMBINE
3153 // INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
3155 // Generates values from the Cartesian product of values produced
3156 // by the argument generators.
3158 template <typename T1
, typename T2
>
3159 class CartesianProductGenerator2
3160 : public ParamGeneratorInterface
< ::std::tr1::tuple
<T1
, T2
> > {
3162 typedef ::std::tr1::tuple
<T1
, T2
> ParamType
;
3164 CartesianProductGenerator2(const ParamGenerator
<T1
>& g1
,
3165 const ParamGenerator
<T2
>& g2
)
3166 : g1_(g1
), g2_(g2
) {}
3167 virtual ~CartesianProductGenerator2() {}
3169 virtual ParamIteratorInterface
<ParamType
>* Begin() const {
3170 return new Iterator(this, g1_
, g1_
.begin(), g2_
, g2_
.begin());
3172 virtual ParamIteratorInterface
<ParamType
>* End() const {
3173 return new Iterator(this, g1_
, g1_
.end(), g2_
, g2_
.end());
3177 class Iterator
: public ParamIteratorInterface
<ParamType
> {
3179 Iterator(const ParamGeneratorInterface
<ParamType
>* base
,
3180 const ParamGenerator
<T1
>& g1
,
3181 const typename ParamGenerator
<T1
>::iterator
& current1
,
3182 const ParamGenerator
<T2
>& g2
,
3183 const typename ParamGenerator
<T2
>::iterator
& current2
)
3185 begin1_(g1
.begin()), end1_(g1
.end()), current1_(current1
),
3186 begin2_(g2
.begin()), end2_(g2
.end()), current2_(current2
) {
3187 ComputeCurrentValue();
3189 virtual ~Iterator() {}
3191 virtual const ParamGeneratorInterface
<ParamType
>* BaseGenerator() const {
3194 // Advance should not be called on beyond-of-range iterators
3195 // so no component iterators must be beyond end of range, either.
3196 virtual void Advance() {
3199 if (current2_
== end2_
) {
3200 current2_
= begin2_
;
3203 ComputeCurrentValue();
3205 virtual ParamIteratorInterface
<ParamType
>* Clone() const {
3206 return new Iterator(*this);
3208 virtual const ParamType
* Current() const { return ¤t_value_
; }
3209 virtual bool Equals(const ParamIteratorInterface
<ParamType
>& other
) const {
3210 // Having the same base generator guarantees that the other
3211 // iterator is of the same type and we can downcast.
3212 GTEST_CHECK_(BaseGenerator() == other
.BaseGenerator())
3213 << "The program attempted to compare iterators "
3214 << "from different generators." << std::endl
;
3215 const Iterator
* typed_other
=
3216 CheckedDowncastToActualType
<const Iterator
>(&other
);
3217 // We must report iterators equal if they both point beyond their
3218 // respective ranges. That can happen in a variety of fashions,
3219 // so we have to consult AtEnd().
3220 return (AtEnd() && typed_other
->AtEnd()) ||
3222 current1_
== typed_other
->current1_
&&
3223 current2_
== typed_other
->current2_
);
3227 Iterator(const Iterator
& other
)
3228 : base_(other
.base_
),
3229 begin1_(other
.begin1_
),
3231 current1_(other
.current1_
),
3232 begin2_(other
.begin2_
),
3234 current2_(other
.current2_
) {
3235 ComputeCurrentValue();
3238 void ComputeCurrentValue() {
3240 current_value_
= ParamType(*current1_
, *current2_
);
3242 bool AtEnd() const {
3243 // We must report iterator past the end of the range when either of the
3244 // component iterators has reached the end of its range.
3246 current1_
== end1_
||
3250 // No implementation - assignment is unsupported.
3251 void operator=(const Iterator
& other
);
3253 const ParamGeneratorInterface
<ParamType
>* const base_
;
3254 // begin[i]_ and end[i]_ define the i-th range that Iterator traverses.
3255 // current[i]_ is the actual traversing iterator.
3256 const typename ParamGenerator
<T1
>::iterator begin1_
;
3257 const typename ParamGenerator
<T1
>::iterator end1_
;
3258 typename ParamGenerator
<T1
>::iterator current1_
;
3259 const typename ParamGenerator
<T2
>::iterator begin2_
;
3260 const typename ParamGenerator
<T2
>::iterator end2_
;
3261 typename ParamGenerator
<T2
>::iterator current2_
;
3262 ParamType current_value_
;
3263 }; // class CartesianProductGenerator2::Iterator
3265 // No implementation - assignment is unsupported.
3266 void operator=(const CartesianProductGenerator2
& other
);
3268 const ParamGenerator
<T1
> g1_
;
3269 const ParamGenerator
<T2
> g2_
;
3270 }; // class CartesianProductGenerator2
3273 template <typename T1
, typename T2
, typename T3
>
3274 class CartesianProductGenerator3
3275 : public ParamGeneratorInterface
< ::std::tr1::tuple
<T1
, T2
, T3
> > {
3277 typedef ::std::tr1::tuple
<T1
, T2
, T3
> ParamType
;
3279 CartesianProductGenerator3(const ParamGenerator
<T1
>& g1
,
3280 const ParamGenerator
<T2
>& g2
, const ParamGenerator
<T3
>& g3
)
3281 : g1_(g1
), g2_(g2
), g3_(g3
) {}
3282 virtual ~CartesianProductGenerator3() {}
3284 virtual ParamIteratorInterface
<ParamType
>* Begin() const {
3285 return new Iterator(this, g1_
, g1_
.begin(), g2_
, g2_
.begin(), g3_
,
3288 virtual ParamIteratorInterface
<ParamType
>* End() const {
3289 return new Iterator(this, g1_
, g1_
.end(), g2_
, g2_
.end(), g3_
, g3_
.end());
3293 class Iterator
: public ParamIteratorInterface
<ParamType
> {
3295 Iterator(const ParamGeneratorInterface
<ParamType
>* base
,
3296 const ParamGenerator
<T1
>& g1
,
3297 const typename ParamGenerator
<T1
>::iterator
& current1
,
3298 const ParamGenerator
<T2
>& g2
,
3299 const typename ParamGenerator
<T2
>::iterator
& current2
,
3300 const ParamGenerator
<T3
>& g3
,
3301 const typename ParamGenerator
<T3
>::iterator
& current3
)
3303 begin1_(g1
.begin()), end1_(g1
.end()), current1_(current1
),
3304 begin2_(g2
.begin()), end2_(g2
.end()), current2_(current2
),
3305 begin3_(g3
.begin()), end3_(g3
.end()), current3_(current3
) {
3306 ComputeCurrentValue();
3308 virtual ~Iterator() {}
3310 virtual const ParamGeneratorInterface
<ParamType
>* BaseGenerator() const {
3313 // Advance should not be called on beyond-of-range iterators
3314 // so no component iterators must be beyond end of range, either.
3315 virtual void Advance() {
3318 if (current3_
== end3_
) {
3319 current3_
= begin3_
;
3322 if (current2_
== end2_
) {
3323 current2_
= begin2_
;
3326 ComputeCurrentValue();
3328 virtual ParamIteratorInterface
<ParamType
>* Clone() const {
3329 return new Iterator(*this);
3331 virtual const ParamType
* Current() const { return ¤t_value_
; }
3332 virtual bool Equals(const ParamIteratorInterface
<ParamType
>& other
) const {
3333 // Having the same base generator guarantees that the other
3334 // iterator is of the same type and we can downcast.
3335 GTEST_CHECK_(BaseGenerator() == other
.BaseGenerator())
3336 << "The program attempted to compare iterators "
3337 << "from different generators." << std::endl
;
3338 const Iterator
* typed_other
=
3339 CheckedDowncastToActualType
<const Iterator
>(&other
);
3340 // We must report iterators equal if they both point beyond their
3341 // respective ranges. That can happen in a variety of fashions,
3342 // so we have to consult AtEnd().
3343 return (AtEnd() && typed_other
->AtEnd()) ||
3345 current1_
== typed_other
->current1_
&&
3346 current2_
== typed_other
->current2_
&&
3347 current3_
== typed_other
->current3_
);
3351 Iterator(const Iterator
& other
)
3352 : base_(other
.base_
),
3353 begin1_(other
.begin1_
),
3355 current1_(other
.current1_
),
3356 begin2_(other
.begin2_
),
3358 current2_(other
.current2_
),
3359 begin3_(other
.begin3_
),
3361 current3_(other
.current3_
) {
3362 ComputeCurrentValue();
3365 void ComputeCurrentValue() {
3367 current_value_
= ParamType(*current1_
, *current2_
, *current3_
);
3369 bool AtEnd() const {
3370 // We must report iterator past the end of the range when either of the
3371 // component iterators has reached the end of its range.
3373 current1_
== end1_
||
3374 current2_
== end2_
||
3378 // No implementation - assignment is unsupported.
3379 void operator=(const Iterator
& other
);
3381 const ParamGeneratorInterface
<ParamType
>* const base_
;
3382 // begin[i]_ and end[i]_ define the i-th range that Iterator traverses.
3383 // current[i]_ is the actual traversing iterator.
3384 const typename ParamGenerator
<T1
>::iterator begin1_
;
3385 const typename ParamGenerator
<T1
>::iterator end1_
;
3386 typename ParamGenerator
<T1
>::iterator current1_
;
3387 const typename ParamGenerator
<T2
>::iterator begin2_
;
3388 const typename ParamGenerator
<T2
>::iterator end2_
;
3389 typename ParamGenerator
<T2
>::iterator current2_
;
3390 const typename ParamGenerator
<T3
>::iterator begin3_
;
3391 const typename ParamGenerator
<T3
>::iterator end3_
;
3392 typename ParamGenerator
<T3
>::iterator current3_
;
3393 ParamType current_value_
;
3394 }; // class CartesianProductGenerator3::Iterator
3396 // No implementation - assignment is unsupported.
3397 void operator=(const CartesianProductGenerator3
& other
);
3399 const ParamGenerator
<T1
> g1_
;
3400 const ParamGenerator
<T2
> g2_
;
3401 const ParamGenerator
<T3
> g3_
;
3402 }; // class CartesianProductGenerator3
3405 template <typename T1
, typename T2
, typename T3
, typename T4
>
3406 class CartesianProductGenerator4
3407 : public ParamGeneratorInterface
< ::std::tr1::tuple
<T1
, T2
, T3
, T4
> > {
3409 typedef ::std::tr1::tuple
<T1
, T2
, T3
, T4
> ParamType
;
3411 CartesianProductGenerator4(const ParamGenerator
<T1
>& g1
,
3412 const ParamGenerator
<T2
>& g2
, const ParamGenerator
<T3
>& g3
,
3413 const ParamGenerator
<T4
>& g4
)
3414 : g1_(g1
), g2_(g2
), g3_(g3
), g4_(g4
) {}
3415 virtual ~CartesianProductGenerator4() {}
3417 virtual ParamIteratorInterface
<ParamType
>* Begin() const {
3418 return new Iterator(this, g1_
, g1_
.begin(), g2_
, g2_
.begin(), g3_
,
3419 g3_
.begin(), g4_
, g4_
.begin());
3421 virtual ParamIteratorInterface
<ParamType
>* End() const {
3422 return new Iterator(this, g1_
, g1_
.end(), g2_
, g2_
.end(), g3_
, g3_
.end(),
3427 class Iterator
: public ParamIteratorInterface
<ParamType
> {
3429 Iterator(const ParamGeneratorInterface
<ParamType
>* base
,
3430 const ParamGenerator
<T1
>& g1
,
3431 const typename ParamGenerator
<T1
>::iterator
& current1
,
3432 const ParamGenerator
<T2
>& g2
,
3433 const typename ParamGenerator
<T2
>::iterator
& current2
,
3434 const ParamGenerator
<T3
>& g3
,
3435 const typename ParamGenerator
<T3
>::iterator
& current3
,
3436 const ParamGenerator
<T4
>& g4
,
3437 const typename ParamGenerator
<T4
>::iterator
& current4
)
3439 begin1_(g1
.begin()), end1_(g1
.end()), current1_(current1
),
3440 begin2_(g2
.begin()), end2_(g2
.end()), current2_(current2
),
3441 begin3_(g3
.begin()), end3_(g3
.end()), current3_(current3
),
3442 begin4_(g4
.begin()), end4_(g4
.end()), current4_(current4
) {
3443 ComputeCurrentValue();
3445 virtual ~Iterator() {}
3447 virtual const ParamGeneratorInterface
<ParamType
>* BaseGenerator() const {
3450 // Advance should not be called on beyond-of-range iterators
3451 // so no component iterators must be beyond end of range, either.
3452 virtual void Advance() {
3455 if (current4_
== end4_
) {
3456 current4_
= begin4_
;
3459 if (current3_
== end3_
) {
3460 current3_
= begin3_
;
3463 if (current2_
== end2_
) {
3464 current2_
= begin2_
;
3467 ComputeCurrentValue();
3469 virtual ParamIteratorInterface
<ParamType
>* Clone() const {
3470 return new Iterator(*this);
3472 virtual const ParamType
* Current() const { return ¤t_value_
; }
3473 virtual bool Equals(const ParamIteratorInterface
<ParamType
>& other
) const {
3474 // Having the same base generator guarantees that the other
3475 // iterator is of the same type and we can downcast.
3476 GTEST_CHECK_(BaseGenerator() == other
.BaseGenerator())
3477 << "The program attempted to compare iterators "
3478 << "from different generators." << std::endl
;
3479 const Iterator
* typed_other
=
3480 CheckedDowncastToActualType
<const Iterator
>(&other
);
3481 // We must report iterators equal if they both point beyond their
3482 // respective ranges. That can happen in a variety of fashions,
3483 // so we have to consult AtEnd().
3484 return (AtEnd() && typed_other
->AtEnd()) ||
3486 current1_
== typed_other
->current1_
&&
3487 current2_
== typed_other
->current2_
&&
3488 current3_
== typed_other
->current3_
&&
3489 current4_
== typed_other
->current4_
);
3493 Iterator(const Iterator
& other
)
3494 : base_(other
.base_
),
3495 begin1_(other
.begin1_
),
3497 current1_(other
.current1_
),
3498 begin2_(other
.begin2_
),
3500 current2_(other
.current2_
),
3501 begin3_(other
.begin3_
),
3503 current3_(other
.current3_
),
3504 begin4_(other
.begin4_
),
3506 current4_(other
.current4_
) {
3507 ComputeCurrentValue();
3510 void ComputeCurrentValue() {
3512 current_value_
= ParamType(*current1_
, *current2_
, *current3_
,
3515 bool AtEnd() const {
3516 // We must report iterator past the end of the range when either of the
3517 // component iterators has reached the end of its range.
3519 current1_
== end1_
||
3520 current2_
== end2_
||
3521 current3_
== end3_
||
3525 // No implementation - assignment is unsupported.
3526 void operator=(const Iterator
& other
);
3528 const ParamGeneratorInterface
<ParamType
>* const base_
;
3529 // begin[i]_ and end[i]_ define the i-th range that Iterator traverses.
3530 // current[i]_ is the actual traversing iterator.
3531 const typename ParamGenerator
<T1
>::iterator begin1_
;
3532 const typename ParamGenerator
<T1
>::iterator end1_
;
3533 typename ParamGenerator
<T1
>::iterator current1_
;
3534 const typename ParamGenerator
<T2
>::iterator begin2_
;
3535 const typename ParamGenerator
<T2
>::iterator end2_
;
3536 typename ParamGenerator
<T2
>::iterator current2_
;
3537 const typename ParamGenerator
<T3
>::iterator begin3_
;
3538 const typename ParamGenerator
<T3
>::iterator end3_
;
3539 typename ParamGenerator
<T3
>::iterator current3_
;
3540 const typename ParamGenerator
<T4
>::iterator begin4_
;
3541 const typename ParamGenerator
<T4
>::iterator end4_
;
3542 typename ParamGenerator
<T4
>::iterator current4_
;
3543 ParamType current_value_
;
3544 }; // class CartesianProductGenerator4::Iterator
3546 // No implementation - assignment is unsupported.
3547 void operator=(const CartesianProductGenerator4
& other
);
3549 const ParamGenerator
<T1
> g1_
;
3550 const ParamGenerator
<T2
> g2_
;
3551 const ParamGenerator
<T3
> g3_
;
3552 const ParamGenerator
<T4
> g4_
;
3553 }; // class CartesianProductGenerator4
3556 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
>
3557 class CartesianProductGenerator5
3558 : public ParamGeneratorInterface
< ::std::tr1::tuple
<T1
, T2
, T3
, T4
, T5
> > {
3560 typedef ::std::tr1::tuple
<T1
, T2
, T3
, T4
, T5
> ParamType
;
3562 CartesianProductGenerator5(const ParamGenerator
<T1
>& g1
,
3563 const ParamGenerator
<T2
>& g2
, const ParamGenerator
<T3
>& g3
,
3564 const ParamGenerator
<T4
>& g4
, const ParamGenerator
<T5
>& g5
)
3565 : g1_(g1
), g2_(g2
), g3_(g3
), g4_(g4
), g5_(g5
) {}
3566 virtual ~CartesianProductGenerator5() {}
3568 virtual ParamIteratorInterface
<ParamType
>* Begin() const {
3569 return new Iterator(this, g1_
, g1_
.begin(), g2_
, g2_
.begin(), g3_
,
3570 g3_
.begin(), g4_
, g4_
.begin(), g5_
, g5_
.begin());
3572 virtual ParamIteratorInterface
<ParamType
>* End() const {
3573 return new Iterator(this, g1_
, g1_
.end(), g2_
, g2_
.end(), g3_
, g3_
.end(),
3574 g4_
, g4_
.end(), g5_
, g5_
.end());
3578 class Iterator
: public ParamIteratorInterface
<ParamType
> {
3580 Iterator(const ParamGeneratorInterface
<ParamType
>* base
,
3581 const ParamGenerator
<T1
>& g1
,
3582 const typename ParamGenerator
<T1
>::iterator
& current1
,
3583 const ParamGenerator
<T2
>& g2
,
3584 const typename ParamGenerator
<T2
>::iterator
& current2
,
3585 const ParamGenerator
<T3
>& g3
,
3586 const typename ParamGenerator
<T3
>::iterator
& current3
,
3587 const ParamGenerator
<T4
>& g4
,
3588 const typename ParamGenerator
<T4
>::iterator
& current4
,
3589 const ParamGenerator
<T5
>& g5
,
3590 const typename ParamGenerator
<T5
>::iterator
& current5
)
3592 begin1_(g1
.begin()), end1_(g1
.end()), current1_(current1
),
3593 begin2_(g2
.begin()), end2_(g2
.end()), current2_(current2
),
3594 begin3_(g3
.begin()), end3_(g3
.end()), current3_(current3
),
3595 begin4_(g4
.begin()), end4_(g4
.end()), current4_(current4
),
3596 begin5_(g5
.begin()), end5_(g5
.end()), current5_(current5
) {
3597 ComputeCurrentValue();
3599 virtual ~Iterator() {}
3601 virtual const ParamGeneratorInterface
<ParamType
>* BaseGenerator() const {
3604 // Advance should not be called on beyond-of-range iterators
3605 // so no component iterators must be beyond end of range, either.
3606 virtual void Advance() {
3609 if (current5_
== end5_
) {
3610 current5_
= begin5_
;
3613 if (current4_
== end4_
) {
3614 current4_
= begin4_
;
3617 if (current3_
== end3_
) {
3618 current3_
= begin3_
;
3621 if (current2_
== end2_
) {
3622 current2_
= begin2_
;
3625 ComputeCurrentValue();
3627 virtual ParamIteratorInterface
<ParamType
>* Clone() const {
3628 return new Iterator(*this);
3630 virtual const ParamType
* Current() const { return ¤t_value_
; }
3631 virtual bool Equals(const ParamIteratorInterface
<ParamType
>& other
) const {
3632 // Having the same base generator guarantees that the other
3633 // iterator is of the same type and we can downcast.
3634 GTEST_CHECK_(BaseGenerator() == other
.BaseGenerator())
3635 << "The program attempted to compare iterators "
3636 << "from different generators." << std::endl
;
3637 const Iterator
* typed_other
=
3638 CheckedDowncastToActualType
<const Iterator
>(&other
);
3639 // We must report iterators equal if they both point beyond their
3640 // respective ranges. That can happen in a variety of fashions,
3641 // so we have to consult AtEnd().
3642 return (AtEnd() && typed_other
->AtEnd()) ||
3644 current1_
== typed_other
->current1_
&&
3645 current2_
== typed_other
->current2_
&&
3646 current3_
== typed_other
->current3_
&&
3647 current4_
== typed_other
->current4_
&&
3648 current5_
== typed_other
->current5_
);
3652 Iterator(const Iterator
& other
)
3653 : base_(other
.base_
),
3654 begin1_(other
.begin1_
),
3656 current1_(other
.current1_
),
3657 begin2_(other
.begin2_
),
3659 current2_(other
.current2_
),
3660 begin3_(other
.begin3_
),
3662 current3_(other
.current3_
),
3663 begin4_(other
.begin4_
),
3665 current4_(other
.current4_
),
3666 begin5_(other
.begin5_
),
3668 current5_(other
.current5_
) {
3669 ComputeCurrentValue();
3672 void ComputeCurrentValue() {
3674 current_value_
= ParamType(*current1_
, *current2_
, *current3_
,
3675 *current4_
, *current5_
);
3677 bool AtEnd() const {
3678 // We must report iterator past the end of the range when either of the
3679 // component iterators has reached the end of its range.
3681 current1_
== end1_
||
3682 current2_
== end2_
||
3683 current3_
== end3_
||
3684 current4_
== end4_
||
3688 // No implementation - assignment is unsupported.
3689 void operator=(const Iterator
& other
);
3691 const ParamGeneratorInterface
<ParamType
>* const base_
;
3692 // begin[i]_ and end[i]_ define the i-th range that Iterator traverses.
3693 // current[i]_ is the actual traversing iterator.
3694 const typename ParamGenerator
<T1
>::iterator begin1_
;
3695 const typename ParamGenerator
<T1
>::iterator end1_
;
3696 typename ParamGenerator
<T1
>::iterator current1_
;
3697 const typename ParamGenerator
<T2
>::iterator begin2_
;
3698 const typename ParamGenerator
<T2
>::iterator end2_
;
3699 typename ParamGenerator
<T2
>::iterator current2_
;
3700 const typename ParamGenerator
<T3
>::iterator begin3_
;
3701 const typename ParamGenerator
<T3
>::iterator end3_
;
3702 typename ParamGenerator
<T3
>::iterator current3_
;
3703 const typename ParamGenerator
<T4
>::iterator begin4_
;
3704 const typename ParamGenerator
<T4
>::iterator end4_
;
3705 typename ParamGenerator
<T4
>::iterator current4_
;
3706 const typename ParamGenerator
<T5
>::iterator begin5_
;
3707 const typename ParamGenerator
<T5
>::iterator end5_
;
3708 typename ParamGenerator
<T5
>::iterator current5_
;
3709 ParamType current_value_
;
3710 }; // class CartesianProductGenerator5::Iterator
3712 // No implementation - assignment is unsupported.
3713 void operator=(const CartesianProductGenerator5
& other
);
3715 const ParamGenerator
<T1
> g1_
;
3716 const ParamGenerator
<T2
> g2_
;
3717 const ParamGenerator
<T3
> g3_
;
3718 const ParamGenerator
<T4
> g4_
;
3719 const ParamGenerator
<T5
> g5_
;
3720 }; // class CartesianProductGenerator5
3723 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
3725 class CartesianProductGenerator6
3726 : public ParamGeneratorInterface
< ::std::tr1::tuple
<T1
, T2
, T3
, T4
, T5
,
3729 typedef ::std::tr1::tuple
<T1
, T2
, T3
, T4
, T5
, T6
> ParamType
;
3731 CartesianProductGenerator6(const ParamGenerator
<T1
>& g1
,
3732 const ParamGenerator
<T2
>& g2
, const ParamGenerator
<T3
>& g3
,
3733 const ParamGenerator
<T4
>& g4
, const ParamGenerator
<T5
>& g5
,
3734 const ParamGenerator
<T6
>& g6
)
3735 : g1_(g1
), g2_(g2
), g3_(g3
), g4_(g4
), g5_(g5
), g6_(g6
) {}
3736 virtual ~CartesianProductGenerator6() {}
3738 virtual ParamIteratorInterface
<ParamType
>* Begin() const {
3739 return new Iterator(this, g1_
, g1_
.begin(), g2_
, g2_
.begin(), g3_
,
3740 g3_
.begin(), g4_
, g4_
.begin(), g5_
, g5_
.begin(), g6_
, g6_
.begin());
3742 virtual ParamIteratorInterface
<ParamType
>* End() const {
3743 return new Iterator(this, g1_
, g1_
.end(), g2_
, g2_
.end(), g3_
, g3_
.end(),
3744 g4_
, g4_
.end(), g5_
, g5_
.end(), g6_
, g6_
.end());
3748 class Iterator
: public ParamIteratorInterface
<ParamType
> {
3750 Iterator(const ParamGeneratorInterface
<ParamType
>* base
,
3751 const ParamGenerator
<T1
>& g1
,
3752 const typename ParamGenerator
<T1
>::iterator
& current1
,
3753 const ParamGenerator
<T2
>& g2
,
3754 const typename ParamGenerator
<T2
>::iterator
& current2
,
3755 const ParamGenerator
<T3
>& g3
,
3756 const typename ParamGenerator
<T3
>::iterator
& current3
,
3757 const ParamGenerator
<T4
>& g4
,
3758 const typename ParamGenerator
<T4
>::iterator
& current4
,
3759 const ParamGenerator
<T5
>& g5
,
3760 const typename ParamGenerator
<T5
>::iterator
& current5
,
3761 const ParamGenerator
<T6
>& g6
,
3762 const typename ParamGenerator
<T6
>::iterator
& current6
)
3764 begin1_(g1
.begin()), end1_(g1
.end()), current1_(current1
),
3765 begin2_(g2
.begin()), end2_(g2
.end()), current2_(current2
),
3766 begin3_(g3
.begin()), end3_(g3
.end()), current3_(current3
),
3767 begin4_(g4
.begin()), end4_(g4
.end()), current4_(current4
),
3768 begin5_(g5
.begin()), end5_(g5
.end()), current5_(current5
),
3769 begin6_(g6
.begin()), end6_(g6
.end()), current6_(current6
) {
3770 ComputeCurrentValue();
3772 virtual ~Iterator() {}
3774 virtual const ParamGeneratorInterface
<ParamType
>* BaseGenerator() const {
3777 // Advance should not be called on beyond-of-range iterators
3778 // so no component iterators must be beyond end of range, either.
3779 virtual void Advance() {
3782 if (current6_
== end6_
) {
3783 current6_
= begin6_
;
3786 if (current5_
== end5_
) {
3787 current5_
= begin5_
;
3790 if (current4_
== end4_
) {
3791 current4_
= begin4_
;
3794 if (current3_
== end3_
) {
3795 current3_
= begin3_
;
3798 if (current2_
== end2_
) {
3799 current2_
= begin2_
;
3802 ComputeCurrentValue();
3804 virtual ParamIteratorInterface
<ParamType
>* Clone() const {
3805 return new Iterator(*this);
3807 virtual const ParamType
* Current() const { return ¤t_value_
; }
3808 virtual bool Equals(const ParamIteratorInterface
<ParamType
>& other
) const {
3809 // Having the same base generator guarantees that the other
3810 // iterator is of the same type and we can downcast.
3811 GTEST_CHECK_(BaseGenerator() == other
.BaseGenerator())
3812 << "The program attempted to compare iterators "
3813 << "from different generators." << std::endl
;
3814 const Iterator
* typed_other
=
3815 CheckedDowncastToActualType
<const Iterator
>(&other
);
3816 // We must report iterators equal if they both point beyond their
3817 // respective ranges. That can happen in a variety of fashions,
3818 // so we have to consult AtEnd().
3819 return (AtEnd() && typed_other
->AtEnd()) ||
3821 current1_
== typed_other
->current1_
&&
3822 current2_
== typed_other
->current2_
&&
3823 current3_
== typed_other
->current3_
&&
3824 current4_
== typed_other
->current4_
&&
3825 current5_
== typed_other
->current5_
&&
3826 current6_
== typed_other
->current6_
);
3830 Iterator(const Iterator
& other
)
3831 : base_(other
.base_
),
3832 begin1_(other
.begin1_
),
3834 current1_(other
.current1_
),
3835 begin2_(other
.begin2_
),
3837 current2_(other
.current2_
),
3838 begin3_(other
.begin3_
),
3840 current3_(other
.current3_
),
3841 begin4_(other
.begin4_
),
3843 current4_(other
.current4_
),
3844 begin5_(other
.begin5_
),
3846 current5_(other
.current5_
),
3847 begin6_(other
.begin6_
),
3849 current6_(other
.current6_
) {
3850 ComputeCurrentValue();
3853 void ComputeCurrentValue() {
3855 current_value_
= ParamType(*current1_
, *current2_
, *current3_
,
3856 *current4_
, *current5_
, *current6_
);
3858 bool AtEnd() const {
3859 // We must report iterator past the end of the range when either of the
3860 // component iterators has reached the end of its range.
3862 current1_
== end1_
||
3863 current2_
== end2_
||
3864 current3_
== end3_
||
3865 current4_
== end4_
||
3866 current5_
== end5_
||
3870 // No implementation - assignment is unsupported.
3871 void operator=(const Iterator
& other
);
3873 const ParamGeneratorInterface
<ParamType
>* const base_
;
3874 // begin[i]_ and end[i]_ define the i-th range that Iterator traverses.
3875 // current[i]_ is the actual traversing iterator.
3876 const typename ParamGenerator
<T1
>::iterator begin1_
;
3877 const typename ParamGenerator
<T1
>::iterator end1_
;
3878 typename ParamGenerator
<T1
>::iterator current1_
;
3879 const typename ParamGenerator
<T2
>::iterator begin2_
;
3880 const typename ParamGenerator
<T2
>::iterator end2_
;
3881 typename ParamGenerator
<T2
>::iterator current2_
;
3882 const typename ParamGenerator
<T3
>::iterator begin3_
;
3883 const typename ParamGenerator
<T3
>::iterator end3_
;
3884 typename ParamGenerator
<T3
>::iterator current3_
;
3885 const typename ParamGenerator
<T4
>::iterator begin4_
;
3886 const typename ParamGenerator
<T4
>::iterator end4_
;
3887 typename ParamGenerator
<T4
>::iterator current4_
;
3888 const typename ParamGenerator
<T5
>::iterator begin5_
;
3889 const typename ParamGenerator
<T5
>::iterator end5_
;
3890 typename ParamGenerator
<T5
>::iterator current5_
;
3891 const typename ParamGenerator
<T6
>::iterator begin6_
;
3892 const typename ParamGenerator
<T6
>::iterator end6_
;
3893 typename ParamGenerator
<T6
>::iterator current6_
;
3894 ParamType current_value_
;
3895 }; // class CartesianProductGenerator6::Iterator
3897 // No implementation - assignment is unsupported.
3898 void operator=(const CartesianProductGenerator6
& other
);
3900 const ParamGenerator
<T1
> g1_
;
3901 const ParamGenerator
<T2
> g2_
;
3902 const ParamGenerator
<T3
> g3_
;
3903 const ParamGenerator
<T4
> g4_
;
3904 const ParamGenerator
<T5
> g5_
;
3905 const ParamGenerator
<T6
> g6_
;
3906 }; // class CartesianProductGenerator6
3909 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
3910 typename T6
, typename T7
>
3911 class CartesianProductGenerator7
3912 : public ParamGeneratorInterface
< ::std::tr1::tuple
<T1
, T2
, T3
, T4
, T5
, T6
,
3915 typedef ::std::tr1::tuple
<T1
, T2
, T3
, T4
, T5
, T6
, T7
> ParamType
;
3917 CartesianProductGenerator7(const ParamGenerator
<T1
>& g1
,
3918 const ParamGenerator
<T2
>& g2
, const ParamGenerator
<T3
>& g3
,
3919 const ParamGenerator
<T4
>& g4
, const ParamGenerator
<T5
>& g5
,
3920 const ParamGenerator
<T6
>& g6
, const ParamGenerator
<T7
>& g7
)
3921 : g1_(g1
), g2_(g2
), g3_(g3
), g4_(g4
), g5_(g5
), g6_(g6
), g7_(g7
) {}
3922 virtual ~CartesianProductGenerator7() {}
3924 virtual ParamIteratorInterface
<ParamType
>* Begin() const {
3925 return new Iterator(this, g1_
, g1_
.begin(), g2_
, g2_
.begin(), g3_
,
3926 g3_
.begin(), g4_
, g4_
.begin(), g5_
, g5_
.begin(), g6_
, g6_
.begin(), g7_
,
3929 virtual ParamIteratorInterface
<ParamType
>* End() const {
3930 return new Iterator(this, g1_
, g1_
.end(), g2_
, g2_
.end(), g3_
, g3_
.end(),
3931 g4_
, g4_
.end(), g5_
, g5_
.end(), g6_
, g6_
.end(), g7_
, g7_
.end());
3935 class Iterator
: public ParamIteratorInterface
<ParamType
> {
3937 Iterator(const ParamGeneratorInterface
<ParamType
>* base
,
3938 const ParamGenerator
<T1
>& g1
,
3939 const typename ParamGenerator
<T1
>::iterator
& current1
,
3940 const ParamGenerator
<T2
>& g2
,
3941 const typename ParamGenerator
<T2
>::iterator
& current2
,
3942 const ParamGenerator
<T3
>& g3
,
3943 const typename ParamGenerator
<T3
>::iterator
& current3
,
3944 const ParamGenerator
<T4
>& g4
,
3945 const typename ParamGenerator
<T4
>::iterator
& current4
,
3946 const ParamGenerator
<T5
>& g5
,
3947 const typename ParamGenerator
<T5
>::iterator
& current5
,
3948 const ParamGenerator
<T6
>& g6
,
3949 const typename ParamGenerator
<T6
>::iterator
& current6
,
3950 const ParamGenerator
<T7
>& g7
,
3951 const typename ParamGenerator
<T7
>::iterator
& current7
)
3953 begin1_(g1
.begin()), end1_(g1
.end()), current1_(current1
),
3954 begin2_(g2
.begin()), end2_(g2
.end()), current2_(current2
),
3955 begin3_(g3
.begin()), end3_(g3
.end()), current3_(current3
),
3956 begin4_(g4
.begin()), end4_(g4
.end()), current4_(current4
),
3957 begin5_(g5
.begin()), end5_(g5
.end()), current5_(current5
),
3958 begin6_(g6
.begin()), end6_(g6
.end()), current6_(current6
),
3959 begin7_(g7
.begin()), end7_(g7
.end()), current7_(current7
) {
3960 ComputeCurrentValue();
3962 virtual ~Iterator() {}
3964 virtual const ParamGeneratorInterface
<ParamType
>* BaseGenerator() const {
3967 // Advance should not be called on beyond-of-range iterators
3968 // so no component iterators must be beyond end of range, either.
3969 virtual void Advance() {
3972 if (current7_
== end7_
) {
3973 current7_
= begin7_
;
3976 if (current6_
== end6_
) {
3977 current6_
= begin6_
;
3980 if (current5_
== end5_
) {
3981 current5_
= begin5_
;
3984 if (current4_
== end4_
) {
3985 current4_
= begin4_
;
3988 if (current3_
== end3_
) {
3989 current3_
= begin3_
;
3992 if (current2_
== end2_
) {
3993 current2_
= begin2_
;
3996 ComputeCurrentValue();
3998 virtual ParamIteratorInterface
<ParamType
>* Clone() const {
3999 return new Iterator(*this);
4001 virtual const ParamType
* Current() const { return ¤t_value_
; }
4002 virtual bool Equals(const ParamIteratorInterface
<ParamType
>& other
) const {
4003 // Having the same base generator guarantees that the other
4004 // iterator is of the same type and we can downcast.
4005 GTEST_CHECK_(BaseGenerator() == other
.BaseGenerator())
4006 << "The program attempted to compare iterators "
4007 << "from different generators." << std::endl
;
4008 const Iterator
* typed_other
=
4009 CheckedDowncastToActualType
<const Iterator
>(&other
);
4010 // We must report iterators equal if they both point beyond their
4011 // respective ranges. That can happen in a variety of fashions,
4012 // so we have to consult AtEnd().
4013 return (AtEnd() && typed_other
->AtEnd()) ||
4015 current1_
== typed_other
->current1_
&&
4016 current2_
== typed_other
->current2_
&&
4017 current3_
== typed_other
->current3_
&&
4018 current4_
== typed_other
->current4_
&&
4019 current5_
== typed_other
->current5_
&&
4020 current6_
== typed_other
->current6_
&&
4021 current7_
== typed_other
->current7_
);
4025 Iterator(const Iterator
& other
)
4026 : base_(other
.base_
),
4027 begin1_(other
.begin1_
),
4029 current1_(other
.current1_
),
4030 begin2_(other
.begin2_
),
4032 current2_(other
.current2_
),
4033 begin3_(other
.begin3_
),
4035 current3_(other
.current3_
),
4036 begin4_(other
.begin4_
),
4038 current4_(other
.current4_
),
4039 begin5_(other
.begin5_
),
4041 current5_(other
.current5_
),
4042 begin6_(other
.begin6_
),
4044 current6_(other
.current6_
),
4045 begin7_(other
.begin7_
),
4047 current7_(other
.current7_
) {
4048 ComputeCurrentValue();
4051 void ComputeCurrentValue() {
4053 current_value_
= ParamType(*current1_
, *current2_
, *current3_
,
4054 *current4_
, *current5_
, *current6_
, *current7_
);
4056 bool AtEnd() const {
4057 // We must report iterator past the end of the range when either of the
4058 // component iterators has reached the end of its range.
4060 current1_
== end1_
||
4061 current2_
== end2_
||
4062 current3_
== end3_
||
4063 current4_
== end4_
||
4064 current5_
== end5_
||
4065 current6_
== end6_
||
4069 // No implementation - assignment is unsupported.
4070 void operator=(const Iterator
& other
);
4072 const ParamGeneratorInterface
<ParamType
>* const base_
;
4073 // begin[i]_ and end[i]_ define the i-th range that Iterator traverses.
4074 // current[i]_ is the actual traversing iterator.
4075 const typename ParamGenerator
<T1
>::iterator begin1_
;
4076 const typename ParamGenerator
<T1
>::iterator end1_
;
4077 typename ParamGenerator
<T1
>::iterator current1_
;
4078 const typename ParamGenerator
<T2
>::iterator begin2_
;
4079 const typename ParamGenerator
<T2
>::iterator end2_
;
4080 typename ParamGenerator
<T2
>::iterator current2_
;
4081 const typename ParamGenerator
<T3
>::iterator begin3_
;
4082 const typename ParamGenerator
<T3
>::iterator end3_
;
4083 typename ParamGenerator
<T3
>::iterator current3_
;
4084 const typename ParamGenerator
<T4
>::iterator begin4_
;
4085 const typename ParamGenerator
<T4
>::iterator end4_
;
4086 typename ParamGenerator
<T4
>::iterator current4_
;
4087 const typename ParamGenerator
<T5
>::iterator begin5_
;
4088 const typename ParamGenerator
<T5
>::iterator end5_
;
4089 typename ParamGenerator
<T5
>::iterator current5_
;
4090 const typename ParamGenerator
<T6
>::iterator begin6_
;
4091 const typename ParamGenerator
<T6
>::iterator end6_
;
4092 typename ParamGenerator
<T6
>::iterator current6_
;
4093 const typename ParamGenerator
<T7
>::iterator begin7_
;
4094 const typename ParamGenerator
<T7
>::iterator end7_
;
4095 typename ParamGenerator
<T7
>::iterator current7_
;
4096 ParamType current_value_
;
4097 }; // class CartesianProductGenerator7::Iterator
4099 // No implementation - assignment is unsupported.
4100 void operator=(const CartesianProductGenerator7
& other
);
4102 const ParamGenerator
<T1
> g1_
;
4103 const ParamGenerator
<T2
> g2_
;
4104 const ParamGenerator
<T3
> g3_
;
4105 const ParamGenerator
<T4
> g4_
;
4106 const ParamGenerator
<T5
> g5_
;
4107 const ParamGenerator
<T6
> g6_
;
4108 const ParamGenerator
<T7
> g7_
;
4109 }; // class CartesianProductGenerator7
4112 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
4113 typename T6
, typename T7
, typename T8
>
4114 class CartesianProductGenerator8
4115 : public ParamGeneratorInterface
< ::std::tr1::tuple
<T1
, T2
, T3
, T4
, T5
, T6
,
4118 typedef ::std::tr1::tuple
<T1
, T2
, T3
, T4
, T5
, T6
, T7
, T8
> ParamType
;
4120 CartesianProductGenerator8(const ParamGenerator
<T1
>& g1
,
4121 const ParamGenerator
<T2
>& g2
, const ParamGenerator
<T3
>& g3
,
4122 const ParamGenerator
<T4
>& g4
, const ParamGenerator
<T5
>& g5
,
4123 const ParamGenerator
<T6
>& g6
, const ParamGenerator
<T7
>& g7
,
4124 const ParamGenerator
<T8
>& g8
)
4125 : g1_(g1
), g2_(g2
), g3_(g3
), g4_(g4
), g5_(g5
), g6_(g6
), g7_(g7
),
4127 virtual ~CartesianProductGenerator8() {}
4129 virtual ParamIteratorInterface
<ParamType
>* Begin() const {
4130 return new Iterator(this, g1_
, g1_
.begin(), g2_
, g2_
.begin(), g3_
,
4131 g3_
.begin(), g4_
, g4_
.begin(), g5_
, g5_
.begin(), g6_
, g6_
.begin(), g7_
,
4132 g7_
.begin(), g8_
, g8_
.begin());
4134 virtual ParamIteratorInterface
<ParamType
>* End() const {
4135 return new Iterator(this, g1_
, g1_
.end(), g2_
, g2_
.end(), g3_
, g3_
.end(),
4136 g4_
, g4_
.end(), g5_
, g5_
.end(), g6_
, g6_
.end(), g7_
, g7_
.end(), g8_
,
4141 class Iterator
: public ParamIteratorInterface
<ParamType
> {
4143 Iterator(const ParamGeneratorInterface
<ParamType
>* base
,
4144 const ParamGenerator
<T1
>& g1
,
4145 const typename ParamGenerator
<T1
>::iterator
& current1
,
4146 const ParamGenerator
<T2
>& g2
,
4147 const typename ParamGenerator
<T2
>::iterator
& current2
,
4148 const ParamGenerator
<T3
>& g3
,
4149 const typename ParamGenerator
<T3
>::iterator
& current3
,
4150 const ParamGenerator
<T4
>& g4
,
4151 const typename ParamGenerator
<T4
>::iterator
& current4
,
4152 const ParamGenerator
<T5
>& g5
,
4153 const typename ParamGenerator
<T5
>::iterator
& current5
,
4154 const ParamGenerator
<T6
>& g6
,
4155 const typename ParamGenerator
<T6
>::iterator
& current6
,
4156 const ParamGenerator
<T7
>& g7
,
4157 const typename ParamGenerator
<T7
>::iterator
& current7
,
4158 const ParamGenerator
<T8
>& g8
,
4159 const typename ParamGenerator
<T8
>::iterator
& current8
)
4161 begin1_(g1
.begin()), end1_(g1
.end()), current1_(current1
),
4162 begin2_(g2
.begin()), end2_(g2
.end()), current2_(current2
),
4163 begin3_(g3
.begin()), end3_(g3
.end()), current3_(current3
),
4164 begin4_(g4
.begin()), end4_(g4
.end()), current4_(current4
),
4165 begin5_(g5
.begin()), end5_(g5
.end()), current5_(current5
),
4166 begin6_(g6
.begin()), end6_(g6
.end()), current6_(current6
),
4167 begin7_(g7
.begin()), end7_(g7
.end()), current7_(current7
),
4168 begin8_(g8
.begin()), end8_(g8
.end()), current8_(current8
) {
4169 ComputeCurrentValue();
4171 virtual ~Iterator() {}
4173 virtual const ParamGeneratorInterface
<ParamType
>* BaseGenerator() const {
4176 // Advance should not be called on beyond-of-range iterators
4177 // so no component iterators must be beyond end of range, either.
4178 virtual void Advance() {
4181 if (current8_
== end8_
) {
4182 current8_
= begin8_
;
4185 if (current7_
== end7_
) {
4186 current7_
= begin7_
;
4189 if (current6_
== end6_
) {
4190 current6_
= begin6_
;
4193 if (current5_
== end5_
) {
4194 current5_
= begin5_
;
4197 if (current4_
== end4_
) {
4198 current4_
= begin4_
;
4201 if (current3_
== end3_
) {
4202 current3_
= begin3_
;
4205 if (current2_
== end2_
) {
4206 current2_
= begin2_
;
4209 ComputeCurrentValue();
4211 virtual ParamIteratorInterface
<ParamType
>* Clone() const {
4212 return new Iterator(*this);
4214 virtual const ParamType
* Current() const { return ¤t_value_
; }
4215 virtual bool Equals(const ParamIteratorInterface
<ParamType
>& other
) const {
4216 // Having the same base generator guarantees that the other
4217 // iterator is of the same type and we can downcast.
4218 GTEST_CHECK_(BaseGenerator() == other
.BaseGenerator())
4219 << "The program attempted to compare iterators "
4220 << "from different generators." << std::endl
;
4221 const Iterator
* typed_other
=
4222 CheckedDowncastToActualType
<const Iterator
>(&other
);
4223 // We must report iterators equal if they both point beyond their
4224 // respective ranges. That can happen in a variety of fashions,
4225 // so we have to consult AtEnd().
4226 return (AtEnd() && typed_other
->AtEnd()) ||
4228 current1_
== typed_other
->current1_
&&
4229 current2_
== typed_other
->current2_
&&
4230 current3_
== typed_other
->current3_
&&
4231 current4_
== typed_other
->current4_
&&
4232 current5_
== typed_other
->current5_
&&
4233 current6_
== typed_other
->current6_
&&
4234 current7_
== typed_other
->current7_
&&
4235 current8_
== typed_other
->current8_
);
4239 Iterator(const Iterator
& other
)
4240 : base_(other
.base_
),
4241 begin1_(other
.begin1_
),
4243 current1_(other
.current1_
),
4244 begin2_(other
.begin2_
),
4246 current2_(other
.current2_
),
4247 begin3_(other
.begin3_
),
4249 current3_(other
.current3_
),
4250 begin4_(other
.begin4_
),
4252 current4_(other
.current4_
),
4253 begin5_(other
.begin5_
),
4255 current5_(other
.current5_
),
4256 begin6_(other
.begin6_
),
4258 current6_(other
.current6_
),
4259 begin7_(other
.begin7_
),
4261 current7_(other
.current7_
),
4262 begin8_(other
.begin8_
),
4264 current8_(other
.current8_
) {
4265 ComputeCurrentValue();
4268 void ComputeCurrentValue() {
4270 current_value_
= ParamType(*current1_
, *current2_
, *current3_
,
4271 *current4_
, *current5_
, *current6_
, *current7_
, *current8_
);
4273 bool AtEnd() const {
4274 // We must report iterator past the end of the range when either of the
4275 // component iterators has reached the end of its range.
4277 current1_
== end1_
||
4278 current2_
== end2_
||
4279 current3_
== end3_
||
4280 current4_
== end4_
||
4281 current5_
== end5_
||
4282 current6_
== end6_
||
4283 current7_
== end7_
||
4287 // No implementation - assignment is unsupported.
4288 void operator=(const Iterator
& other
);
4290 const ParamGeneratorInterface
<ParamType
>* const base_
;
4291 // begin[i]_ and end[i]_ define the i-th range that Iterator traverses.
4292 // current[i]_ is the actual traversing iterator.
4293 const typename ParamGenerator
<T1
>::iterator begin1_
;
4294 const typename ParamGenerator
<T1
>::iterator end1_
;
4295 typename ParamGenerator
<T1
>::iterator current1_
;
4296 const typename ParamGenerator
<T2
>::iterator begin2_
;
4297 const typename ParamGenerator
<T2
>::iterator end2_
;
4298 typename ParamGenerator
<T2
>::iterator current2_
;
4299 const typename ParamGenerator
<T3
>::iterator begin3_
;
4300 const typename ParamGenerator
<T3
>::iterator end3_
;
4301 typename ParamGenerator
<T3
>::iterator current3_
;
4302 const typename ParamGenerator
<T4
>::iterator begin4_
;
4303 const typename ParamGenerator
<T4
>::iterator end4_
;
4304 typename ParamGenerator
<T4
>::iterator current4_
;
4305 const typename ParamGenerator
<T5
>::iterator begin5_
;
4306 const typename ParamGenerator
<T5
>::iterator end5_
;
4307 typename ParamGenerator
<T5
>::iterator current5_
;
4308 const typename ParamGenerator
<T6
>::iterator begin6_
;
4309 const typename ParamGenerator
<T6
>::iterator end6_
;
4310 typename ParamGenerator
<T6
>::iterator current6_
;
4311 const typename ParamGenerator
<T7
>::iterator begin7_
;
4312 const typename ParamGenerator
<T7
>::iterator end7_
;
4313 typename ParamGenerator
<T7
>::iterator current7_
;
4314 const typename ParamGenerator
<T8
>::iterator begin8_
;
4315 const typename ParamGenerator
<T8
>::iterator end8_
;
4316 typename ParamGenerator
<T8
>::iterator current8_
;
4317 ParamType current_value_
;
4318 }; // class CartesianProductGenerator8::Iterator
4320 // No implementation - assignment is unsupported.
4321 void operator=(const CartesianProductGenerator8
& other
);
4323 const ParamGenerator
<T1
> g1_
;
4324 const ParamGenerator
<T2
> g2_
;
4325 const ParamGenerator
<T3
> g3_
;
4326 const ParamGenerator
<T4
> g4_
;
4327 const ParamGenerator
<T5
> g5_
;
4328 const ParamGenerator
<T6
> g6_
;
4329 const ParamGenerator
<T7
> g7_
;
4330 const ParamGenerator
<T8
> g8_
;
4331 }; // class CartesianProductGenerator8
4334 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
4335 typename T6
, typename T7
, typename T8
, typename T9
>
4336 class CartesianProductGenerator9
4337 : public ParamGeneratorInterface
< ::std::tr1::tuple
<T1
, T2
, T3
, T4
, T5
, T6
,
4340 typedef ::std::tr1::tuple
<T1
, T2
, T3
, T4
, T5
, T6
, T7
, T8
, T9
> ParamType
;
4342 CartesianProductGenerator9(const ParamGenerator
<T1
>& g1
,
4343 const ParamGenerator
<T2
>& g2
, const ParamGenerator
<T3
>& g3
,
4344 const ParamGenerator
<T4
>& g4
, const ParamGenerator
<T5
>& g5
,
4345 const ParamGenerator
<T6
>& g6
, const ParamGenerator
<T7
>& g7
,
4346 const ParamGenerator
<T8
>& g8
, const ParamGenerator
<T9
>& g9
)
4347 : g1_(g1
), g2_(g2
), g3_(g3
), g4_(g4
), g5_(g5
), g6_(g6
), g7_(g7
), g8_(g8
),
4349 virtual ~CartesianProductGenerator9() {}
4351 virtual ParamIteratorInterface
<ParamType
>* Begin() const {
4352 return new Iterator(this, g1_
, g1_
.begin(), g2_
, g2_
.begin(), g3_
,
4353 g3_
.begin(), g4_
, g4_
.begin(), g5_
, g5_
.begin(), g6_
, g6_
.begin(), g7_
,
4354 g7_
.begin(), g8_
, g8_
.begin(), g9_
, g9_
.begin());
4356 virtual ParamIteratorInterface
<ParamType
>* End() const {
4357 return new Iterator(this, g1_
, g1_
.end(), g2_
, g2_
.end(), g3_
, g3_
.end(),
4358 g4_
, g4_
.end(), g5_
, g5_
.end(), g6_
, g6_
.end(), g7_
, g7_
.end(), g8_
,
4359 g8_
.end(), g9_
, g9_
.end());
4363 class Iterator
: public ParamIteratorInterface
<ParamType
> {
4365 Iterator(const ParamGeneratorInterface
<ParamType
>* base
,
4366 const ParamGenerator
<T1
>& g1
,
4367 const typename ParamGenerator
<T1
>::iterator
& current1
,
4368 const ParamGenerator
<T2
>& g2
,
4369 const typename ParamGenerator
<T2
>::iterator
& current2
,
4370 const ParamGenerator
<T3
>& g3
,
4371 const typename ParamGenerator
<T3
>::iterator
& current3
,
4372 const ParamGenerator
<T4
>& g4
,
4373 const typename ParamGenerator
<T4
>::iterator
& current4
,
4374 const ParamGenerator
<T5
>& g5
,
4375 const typename ParamGenerator
<T5
>::iterator
& current5
,
4376 const ParamGenerator
<T6
>& g6
,
4377 const typename ParamGenerator
<T6
>::iterator
& current6
,
4378 const ParamGenerator
<T7
>& g7
,
4379 const typename ParamGenerator
<T7
>::iterator
& current7
,
4380 const ParamGenerator
<T8
>& g8
,
4381 const typename ParamGenerator
<T8
>::iterator
& current8
,
4382 const ParamGenerator
<T9
>& g9
,
4383 const typename ParamGenerator
<T9
>::iterator
& current9
)
4385 begin1_(g1
.begin()), end1_(g1
.end()), current1_(current1
),
4386 begin2_(g2
.begin()), end2_(g2
.end()), current2_(current2
),
4387 begin3_(g3
.begin()), end3_(g3
.end()), current3_(current3
),
4388 begin4_(g4
.begin()), end4_(g4
.end()), current4_(current4
),
4389 begin5_(g5
.begin()), end5_(g5
.end()), current5_(current5
),
4390 begin6_(g6
.begin()), end6_(g6
.end()), current6_(current6
),
4391 begin7_(g7
.begin()), end7_(g7
.end()), current7_(current7
),
4392 begin8_(g8
.begin()), end8_(g8
.end()), current8_(current8
),
4393 begin9_(g9
.begin()), end9_(g9
.end()), current9_(current9
) {
4394 ComputeCurrentValue();
4396 virtual ~Iterator() {}
4398 virtual const ParamGeneratorInterface
<ParamType
>* BaseGenerator() const {
4401 // Advance should not be called on beyond-of-range iterators
4402 // so no component iterators must be beyond end of range, either.
4403 virtual void Advance() {
4406 if (current9_
== end9_
) {
4407 current9_
= begin9_
;
4410 if (current8_
== end8_
) {
4411 current8_
= begin8_
;
4414 if (current7_
== end7_
) {
4415 current7_
= begin7_
;
4418 if (current6_
== end6_
) {
4419 current6_
= begin6_
;
4422 if (current5_
== end5_
) {
4423 current5_
= begin5_
;
4426 if (current4_
== end4_
) {
4427 current4_
= begin4_
;
4430 if (current3_
== end3_
) {
4431 current3_
= begin3_
;
4434 if (current2_
== end2_
) {
4435 current2_
= begin2_
;
4438 ComputeCurrentValue();
4440 virtual ParamIteratorInterface
<ParamType
>* Clone() const {
4441 return new Iterator(*this);
4443 virtual const ParamType
* Current() const { return ¤t_value_
; }
4444 virtual bool Equals(const ParamIteratorInterface
<ParamType
>& other
) const {
4445 // Having the same base generator guarantees that the other
4446 // iterator is of the same type and we can downcast.
4447 GTEST_CHECK_(BaseGenerator() == other
.BaseGenerator())
4448 << "The program attempted to compare iterators "
4449 << "from different generators." << std::endl
;
4450 const Iterator
* typed_other
=
4451 CheckedDowncastToActualType
<const Iterator
>(&other
);
4452 // We must report iterators equal if they both point beyond their
4453 // respective ranges. That can happen in a variety of fashions,
4454 // so we have to consult AtEnd().
4455 return (AtEnd() && typed_other
->AtEnd()) ||
4457 current1_
== typed_other
->current1_
&&
4458 current2_
== typed_other
->current2_
&&
4459 current3_
== typed_other
->current3_
&&
4460 current4_
== typed_other
->current4_
&&
4461 current5_
== typed_other
->current5_
&&
4462 current6_
== typed_other
->current6_
&&
4463 current7_
== typed_other
->current7_
&&
4464 current8_
== typed_other
->current8_
&&
4465 current9_
== typed_other
->current9_
);
4469 Iterator(const Iterator
& other
)
4470 : base_(other
.base_
),
4471 begin1_(other
.begin1_
),
4473 current1_(other
.current1_
),
4474 begin2_(other
.begin2_
),
4476 current2_(other
.current2_
),
4477 begin3_(other
.begin3_
),
4479 current3_(other
.current3_
),
4480 begin4_(other
.begin4_
),
4482 current4_(other
.current4_
),
4483 begin5_(other
.begin5_
),
4485 current5_(other
.current5_
),
4486 begin6_(other
.begin6_
),
4488 current6_(other
.current6_
),
4489 begin7_(other
.begin7_
),
4491 current7_(other
.current7_
),
4492 begin8_(other
.begin8_
),
4494 current8_(other
.current8_
),
4495 begin9_(other
.begin9_
),
4497 current9_(other
.current9_
) {
4498 ComputeCurrentValue();
4501 void ComputeCurrentValue() {
4503 current_value_
= ParamType(*current1_
, *current2_
, *current3_
,
4504 *current4_
, *current5_
, *current6_
, *current7_
, *current8_
,
4507 bool AtEnd() const {
4508 // We must report iterator past the end of the range when either of the
4509 // component iterators has reached the end of its range.
4511 current1_
== end1_
||
4512 current2_
== end2_
||
4513 current3_
== end3_
||
4514 current4_
== end4_
||
4515 current5_
== end5_
||
4516 current6_
== end6_
||
4517 current7_
== end7_
||
4518 current8_
== end8_
||
4522 // No implementation - assignment is unsupported.
4523 void operator=(const Iterator
& other
);
4525 const ParamGeneratorInterface
<ParamType
>* const base_
;
4526 // begin[i]_ and end[i]_ define the i-th range that Iterator traverses.
4527 // current[i]_ is the actual traversing iterator.
4528 const typename ParamGenerator
<T1
>::iterator begin1_
;
4529 const typename ParamGenerator
<T1
>::iterator end1_
;
4530 typename ParamGenerator
<T1
>::iterator current1_
;
4531 const typename ParamGenerator
<T2
>::iterator begin2_
;
4532 const typename ParamGenerator
<T2
>::iterator end2_
;
4533 typename ParamGenerator
<T2
>::iterator current2_
;
4534 const typename ParamGenerator
<T3
>::iterator begin3_
;
4535 const typename ParamGenerator
<T3
>::iterator end3_
;
4536 typename ParamGenerator
<T3
>::iterator current3_
;
4537 const typename ParamGenerator
<T4
>::iterator begin4_
;
4538 const typename ParamGenerator
<T4
>::iterator end4_
;
4539 typename ParamGenerator
<T4
>::iterator current4_
;
4540 const typename ParamGenerator
<T5
>::iterator begin5_
;
4541 const typename ParamGenerator
<T5
>::iterator end5_
;
4542 typename ParamGenerator
<T5
>::iterator current5_
;
4543 const typename ParamGenerator
<T6
>::iterator begin6_
;
4544 const typename ParamGenerator
<T6
>::iterator end6_
;
4545 typename ParamGenerator
<T6
>::iterator current6_
;
4546 const typename ParamGenerator
<T7
>::iterator begin7_
;
4547 const typename ParamGenerator
<T7
>::iterator end7_
;
4548 typename ParamGenerator
<T7
>::iterator current7_
;
4549 const typename ParamGenerator
<T8
>::iterator begin8_
;
4550 const typename ParamGenerator
<T8
>::iterator end8_
;
4551 typename ParamGenerator
<T8
>::iterator current8_
;
4552 const typename ParamGenerator
<T9
>::iterator begin9_
;
4553 const typename ParamGenerator
<T9
>::iterator end9_
;
4554 typename ParamGenerator
<T9
>::iterator current9_
;
4555 ParamType current_value_
;
4556 }; // class CartesianProductGenerator9::Iterator
4558 // No implementation - assignment is unsupported.
4559 void operator=(const CartesianProductGenerator9
& other
);
4561 const ParamGenerator
<T1
> g1_
;
4562 const ParamGenerator
<T2
> g2_
;
4563 const ParamGenerator
<T3
> g3_
;
4564 const ParamGenerator
<T4
> g4_
;
4565 const ParamGenerator
<T5
> g5_
;
4566 const ParamGenerator
<T6
> g6_
;
4567 const ParamGenerator
<T7
> g7_
;
4568 const ParamGenerator
<T8
> g8_
;
4569 const ParamGenerator
<T9
> g9_
;
4570 }; // class CartesianProductGenerator9
4573 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
4574 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
>
4575 class CartesianProductGenerator10
4576 : public ParamGeneratorInterface
< ::std::tr1::tuple
<T1
, T2
, T3
, T4
, T5
, T6
,
4577 T7
, T8
, T9
, T10
> > {
4579 typedef ::std::tr1::tuple
<T1
, T2
, T3
, T4
, T5
, T6
, T7
, T8
, T9
, T10
> ParamType
;
4581 CartesianProductGenerator10(const ParamGenerator
<T1
>& g1
,
4582 const ParamGenerator
<T2
>& g2
, const ParamGenerator
<T3
>& g3
,
4583 const ParamGenerator
<T4
>& g4
, const ParamGenerator
<T5
>& g5
,
4584 const ParamGenerator
<T6
>& g6
, const ParamGenerator
<T7
>& g7
,
4585 const ParamGenerator
<T8
>& g8
, const ParamGenerator
<T9
>& g9
,
4586 const ParamGenerator
<T10
>& g10
)
4587 : g1_(g1
), g2_(g2
), g3_(g3
), g4_(g4
), g5_(g5
), g6_(g6
), g7_(g7
), g8_(g8
),
4588 g9_(g9
), g10_(g10
) {}
4589 virtual ~CartesianProductGenerator10() {}
4591 virtual ParamIteratorInterface
<ParamType
>* Begin() const {
4592 return new Iterator(this, g1_
, g1_
.begin(), g2_
, g2_
.begin(), g3_
,
4593 g3_
.begin(), g4_
, g4_
.begin(), g5_
, g5_
.begin(), g6_
, g6_
.begin(), g7_
,
4594 g7_
.begin(), g8_
, g8_
.begin(), g9_
, g9_
.begin(), g10_
, g10_
.begin());
4596 virtual ParamIteratorInterface
<ParamType
>* End() const {
4597 return new Iterator(this, g1_
, g1_
.end(), g2_
, g2_
.end(), g3_
, g3_
.end(),
4598 g4_
, g4_
.end(), g5_
, g5_
.end(), g6_
, g6_
.end(), g7_
, g7_
.end(), g8_
,
4599 g8_
.end(), g9_
, g9_
.end(), g10_
, g10_
.end());
4603 class Iterator
: public ParamIteratorInterface
<ParamType
> {
4605 Iterator(const ParamGeneratorInterface
<ParamType
>* base
,
4606 const ParamGenerator
<T1
>& g1
,
4607 const typename ParamGenerator
<T1
>::iterator
& current1
,
4608 const ParamGenerator
<T2
>& g2
,
4609 const typename ParamGenerator
<T2
>::iterator
& current2
,
4610 const ParamGenerator
<T3
>& g3
,
4611 const typename ParamGenerator
<T3
>::iterator
& current3
,
4612 const ParamGenerator
<T4
>& g4
,
4613 const typename ParamGenerator
<T4
>::iterator
& current4
,
4614 const ParamGenerator
<T5
>& g5
,
4615 const typename ParamGenerator
<T5
>::iterator
& current5
,
4616 const ParamGenerator
<T6
>& g6
,
4617 const typename ParamGenerator
<T6
>::iterator
& current6
,
4618 const ParamGenerator
<T7
>& g7
,
4619 const typename ParamGenerator
<T7
>::iterator
& current7
,
4620 const ParamGenerator
<T8
>& g8
,
4621 const typename ParamGenerator
<T8
>::iterator
& current8
,
4622 const ParamGenerator
<T9
>& g9
,
4623 const typename ParamGenerator
<T9
>::iterator
& current9
,
4624 const ParamGenerator
<T10
>& g10
,
4625 const typename ParamGenerator
<T10
>::iterator
& current10
)
4627 begin1_(g1
.begin()), end1_(g1
.end()), current1_(current1
),
4628 begin2_(g2
.begin()), end2_(g2
.end()), current2_(current2
),
4629 begin3_(g3
.begin()), end3_(g3
.end()), current3_(current3
),
4630 begin4_(g4
.begin()), end4_(g4
.end()), current4_(current4
),
4631 begin5_(g5
.begin()), end5_(g5
.end()), current5_(current5
),
4632 begin6_(g6
.begin()), end6_(g6
.end()), current6_(current6
),
4633 begin7_(g7
.begin()), end7_(g7
.end()), current7_(current7
),
4634 begin8_(g8
.begin()), end8_(g8
.end()), current8_(current8
),
4635 begin9_(g9
.begin()), end9_(g9
.end()), current9_(current9
),
4636 begin10_(g10
.begin()), end10_(g10
.end()), current10_(current10
) {
4637 ComputeCurrentValue();
4639 virtual ~Iterator() {}
4641 virtual const ParamGeneratorInterface
<ParamType
>* BaseGenerator() const {
4644 // Advance should not be called on beyond-of-range iterators
4645 // so no component iterators must be beyond end of range, either.
4646 virtual void Advance() {
4649 if (current10_
== end10_
) {
4650 current10_
= begin10_
;
4653 if (current9_
== end9_
) {
4654 current9_
= begin9_
;
4657 if (current8_
== end8_
) {
4658 current8_
= begin8_
;
4661 if (current7_
== end7_
) {
4662 current7_
= begin7_
;
4665 if (current6_
== end6_
) {
4666 current6_
= begin6_
;
4669 if (current5_
== end5_
) {
4670 current5_
= begin5_
;
4673 if (current4_
== end4_
) {
4674 current4_
= begin4_
;
4677 if (current3_
== end3_
) {
4678 current3_
= begin3_
;
4681 if (current2_
== end2_
) {
4682 current2_
= begin2_
;
4685 ComputeCurrentValue();
4687 virtual ParamIteratorInterface
<ParamType
>* Clone() const {
4688 return new Iterator(*this);
4690 virtual const ParamType
* Current() const { return ¤t_value_
; }
4691 virtual bool Equals(const ParamIteratorInterface
<ParamType
>& other
) const {
4692 // Having the same base generator guarantees that the other
4693 // iterator is of the same type and we can downcast.
4694 GTEST_CHECK_(BaseGenerator() == other
.BaseGenerator())
4695 << "The program attempted to compare iterators "
4696 << "from different generators." << std::endl
;
4697 const Iterator
* typed_other
=
4698 CheckedDowncastToActualType
<const Iterator
>(&other
);
4699 // We must report iterators equal if they both point beyond their
4700 // respective ranges. That can happen in a variety of fashions,
4701 // so we have to consult AtEnd().
4702 return (AtEnd() && typed_other
->AtEnd()) ||
4704 current1_
== typed_other
->current1_
&&
4705 current2_
== typed_other
->current2_
&&
4706 current3_
== typed_other
->current3_
&&
4707 current4_
== typed_other
->current4_
&&
4708 current5_
== typed_other
->current5_
&&
4709 current6_
== typed_other
->current6_
&&
4710 current7_
== typed_other
->current7_
&&
4711 current8_
== typed_other
->current8_
&&
4712 current9_
== typed_other
->current9_
&&
4713 current10_
== typed_other
->current10_
);
4717 Iterator(const Iterator
& other
)
4718 : base_(other
.base_
),
4719 begin1_(other
.begin1_
),
4721 current1_(other
.current1_
),
4722 begin2_(other
.begin2_
),
4724 current2_(other
.current2_
),
4725 begin3_(other
.begin3_
),
4727 current3_(other
.current3_
),
4728 begin4_(other
.begin4_
),
4730 current4_(other
.current4_
),
4731 begin5_(other
.begin5_
),
4733 current5_(other
.current5_
),
4734 begin6_(other
.begin6_
),
4736 current6_(other
.current6_
),
4737 begin7_(other
.begin7_
),
4739 current7_(other
.current7_
),
4740 begin8_(other
.begin8_
),
4742 current8_(other
.current8_
),
4743 begin9_(other
.begin9_
),
4745 current9_(other
.current9_
),
4746 begin10_(other
.begin10_
),
4747 end10_(other
.end10_
),
4748 current10_(other
.current10_
) {
4749 ComputeCurrentValue();
4752 void ComputeCurrentValue() {
4754 current_value_
= ParamType(*current1_
, *current2_
, *current3_
,
4755 *current4_
, *current5_
, *current6_
, *current7_
, *current8_
,
4756 *current9_
, *current10_
);
4758 bool AtEnd() const {
4759 // We must report iterator past the end of the range when either of the
4760 // component iterators has reached the end of its range.
4762 current1_
== end1_
||
4763 current2_
== end2_
||
4764 current3_
== end3_
||
4765 current4_
== end4_
||
4766 current5_
== end5_
||
4767 current6_
== end6_
||
4768 current7_
== end7_
||
4769 current8_
== end8_
||
4770 current9_
== end9_
||
4771 current10_
== end10_
;
4774 // No implementation - assignment is unsupported.
4775 void operator=(const Iterator
& other
);
4777 const ParamGeneratorInterface
<ParamType
>* const base_
;
4778 // begin[i]_ and end[i]_ define the i-th range that Iterator traverses.
4779 // current[i]_ is the actual traversing iterator.
4780 const typename ParamGenerator
<T1
>::iterator begin1_
;
4781 const typename ParamGenerator
<T1
>::iterator end1_
;
4782 typename ParamGenerator
<T1
>::iterator current1_
;
4783 const typename ParamGenerator
<T2
>::iterator begin2_
;
4784 const typename ParamGenerator
<T2
>::iterator end2_
;
4785 typename ParamGenerator
<T2
>::iterator current2_
;
4786 const typename ParamGenerator
<T3
>::iterator begin3_
;
4787 const typename ParamGenerator
<T3
>::iterator end3_
;
4788 typename ParamGenerator
<T3
>::iterator current3_
;
4789 const typename ParamGenerator
<T4
>::iterator begin4_
;
4790 const typename ParamGenerator
<T4
>::iterator end4_
;
4791 typename ParamGenerator
<T4
>::iterator current4_
;
4792 const typename ParamGenerator
<T5
>::iterator begin5_
;
4793 const typename ParamGenerator
<T5
>::iterator end5_
;
4794 typename ParamGenerator
<T5
>::iterator current5_
;
4795 const typename ParamGenerator
<T6
>::iterator begin6_
;
4796 const typename ParamGenerator
<T6
>::iterator end6_
;
4797 typename ParamGenerator
<T6
>::iterator current6_
;
4798 const typename ParamGenerator
<T7
>::iterator begin7_
;
4799 const typename ParamGenerator
<T7
>::iterator end7_
;
4800 typename ParamGenerator
<T7
>::iterator current7_
;
4801 const typename ParamGenerator
<T8
>::iterator begin8_
;
4802 const typename ParamGenerator
<T8
>::iterator end8_
;
4803 typename ParamGenerator
<T8
>::iterator current8_
;
4804 const typename ParamGenerator
<T9
>::iterator begin9_
;
4805 const typename ParamGenerator
<T9
>::iterator end9_
;
4806 typename ParamGenerator
<T9
>::iterator current9_
;
4807 const typename ParamGenerator
<T10
>::iterator begin10_
;
4808 const typename ParamGenerator
<T10
>::iterator end10_
;
4809 typename ParamGenerator
<T10
>::iterator current10_
;
4810 ParamType current_value_
;
4811 }; // class CartesianProductGenerator10::Iterator
4813 // No implementation - assignment is unsupported.
4814 void operator=(const CartesianProductGenerator10
& other
);
4816 const ParamGenerator
<T1
> g1_
;
4817 const ParamGenerator
<T2
> g2_
;
4818 const ParamGenerator
<T3
> g3_
;
4819 const ParamGenerator
<T4
> g4_
;
4820 const ParamGenerator
<T5
> g5_
;
4821 const ParamGenerator
<T6
> g6_
;
4822 const ParamGenerator
<T7
> g7_
;
4823 const ParamGenerator
<T8
> g8_
;
4824 const ParamGenerator
<T9
> g9_
;
4825 const ParamGenerator
<T10
> g10_
;
4826 }; // class CartesianProductGenerator10
4829 // INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
4831 // Helper classes providing Combine() with polymorphic features. They allow
4832 // casting CartesianProductGeneratorN<T> to ParamGenerator<U> if T is
4833 // convertible to U.
4835 template <class Generator1
, class Generator2
>
4836 class CartesianProductHolder2
{
4838 CartesianProductHolder2(const Generator1
& g1
, const Generator2
& g2
)
4839 : g1_(g1
), g2_(g2
) {}
4840 template <typename T1
, typename T2
>
4841 operator ParamGenerator
< ::std::tr1::tuple
<T1
, T2
> >() const {
4842 return ParamGenerator
< ::std::tr1::tuple
<T1
, T2
> >(
4843 new CartesianProductGenerator2
<T1
, T2
>(
4844 static_cast<ParamGenerator
<T1
> >(g1_
),
4845 static_cast<ParamGenerator
<T2
> >(g2_
)));
4849 // No implementation - assignment is unsupported.
4850 void operator=(const CartesianProductHolder2
& other
);
4852 const Generator1 g1_
;
4853 const Generator2 g2_
;
4854 }; // class CartesianProductHolder2
4856 template <class Generator1
, class Generator2
, class Generator3
>
4857 class CartesianProductHolder3
{
4859 CartesianProductHolder3(const Generator1
& g1
, const Generator2
& g2
,
4860 const Generator3
& g3
)
4861 : g1_(g1
), g2_(g2
), g3_(g3
) {}
4862 template <typename T1
, typename T2
, typename T3
>
4863 operator ParamGenerator
< ::std::tr1::tuple
<T1
, T2
, T3
> >() const {
4864 return ParamGenerator
< ::std::tr1::tuple
<T1
, T2
, T3
> >(
4865 new CartesianProductGenerator3
<T1
, T2
, T3
>(
4866 static_cast<ParamGenerator
<T1
> >(g1_
),
4867 static_cast<ParamGenerator
<T2
> >(g2_
),
4868 static_cast<ParamGenerator
<T3
> >(g3_
)));
4872 // No implementation - assignment is unsupported.
4873 void operator=(const CartesianProductHolder3
& other
);
4875 const Generator1 g1_
;
4876 const Generator2 g2_
;
4877 const Generator3 g3_
;
4878 }; // class CartesianProductHolder3
4880 template <class Generator1
, class Generator2
, class Generator3
,
4882 class CartesianProductHolder4
{
4884 CartesianProductHolder4(const Generator1
& g1
, const Generator2
& g2
,
4885 const Generator3
& g3
, const Generator4
& g4
)
4886 : g1_(g1
), g2_(g2
), g3_(g3
), g4_(g4
) {}
4887 template <typename T1
, typename T2
, typename T3
, typename T4
>
4888 operator ParamGenerator
< ::std::tr1::tuple
<T1
, T2
, T3
, T4
> >() const {
4889 return ParamGenerator
< ::std::tr1::tuple
<T1
, T2
, T3
, T4
> >(
4890 new CartesianProductGenerator4
<T1
, T2
, T3
, T4
>(
4891 static_cast<ParamGenerator
<T1
> >(g1_
),
4892 static_cast<ParamGenerator
<T2
> >(g2_
),
4893 static_cast<ParamGenerator
<T3
> >(g3_
),
4894 static_cast<ParamGenerator
<T4
> >(g4_
)));
4898 // No implementation - assignment is unsupported.
4899 void operator=(const CartesianProductHolder4
& other
);
4901 const Generator1 g1_
;
4902 const Generator2 g2_
;
4903 const Generator3 g3_
;
4904 const Generator4 g4_
;
4905 }; // class CartesianProductHolder4
4907 template <class Generator1
, class Generator2
, class Generator3
,
4908 class Generator4
, class Generator5
>
4909 class CartesianProductHolder5
{
4911 CartesianProductHolder5(const Generator1
& g1
, const Generator2
& g2
,
4912 const Generator3
& g3
, const Generator4
& g4
, const Generator5
& g5
)
4913 : g1_(g1
), g2_(g2
), g3_(g3
), g4_(g4
), g5_(g5
) {}
4914 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
>
4915 operator ParamGenerator
< ::std::tr1::tuple
<T1
, T2
, T3
, T4
, T5
> >() const {
4916 return ParamGenerator
< ::std::tr1::tuple
<T1
, T2
, T3
, T4
, T5
> >(
4917 new CartesianProductGenerator5
<T1
, T2
, T3
, T4
, T5
>(
4918 static_cast<ParamGenerator
<T1
> >(g1_
),
4919 static_cast<ParamGenerator
<T2
> >(g2_
),
4920 static_cast<ParamGenerator
<T3
> >(g3_
),
4921 static_cast<ParamGenerator
<T4
> >(g4_
),
4922 static_cast<ParamGenerator
<T5
> >(g5_
)));
4926 // No implementation - assignment is unsupported.
4927 void operator=(const CartesianProductHolder5
& other
);
4929 const Generator1 g1_
;
4930 const Generator2 g2_
;
4931 const Generator3 g3_
;
4932 const Generator4 g4_
;
4933 const Generator5 g5_
;
4934 }; // class CartesianProductHolder5
4936 template <class Generator1
, class Generator2
, class Generator3
,
4937 class Generator4
, class Generator5
, class Generator6
>
4938 class CartesianProductHolder6
{
4940 CartesianProductHolder6(const Generator1
& g1
, const Generator2
& g2
,
4941 const Generator3
& g3
, const Generator4
& g4
, const Generator5
& g5
,
4942 const Generator6
& g6
)
4943 : g1_(g1
), g2_(g2
), g3_(g3
), g4_(g4
), g5_(g5
), g6_(g6
) {}
4944 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
4946 operator ParamGenerator
< ::std::tr1::tuple
<T1
, T2
, T3
, T4
, T5
, T6
> >() const {
4947 return ParamGenerator
< ::std::tr1::tuple
<T1
, T2
, T3
, T4
, T5
, T6
> >(
4948 new CartesianProductGenerator6
<T1
, T2
, T3
, T4
, T5
, T6
>(
4949 static_cast<ParamGenerator
<T1
> >(g1_
),
4950 static_cast<ParamGenerator
<T2
> >(g2_
),
4951 static_cast<ParamGenerator
<T3
> >(g3_
),
4952 static_cast<ParamGenerator
<T4
> >(g4_
),
4953 static_cast<ParamGenerator
<T5
> >(g5_
),
4954 static_cast<ParamGenerator
<T6
> >(g6_
)));
4958 // No implementation - assignment is unsupported.
4959 void operator=(const CartesianProductHolder6
& other
);
4961 const Generator1 g1_
;
4962 const Generator2 g2_
;
4963 const Generator3 g3_
;
4964 const Generator4 g4_
;
4965 const Generator5 g5_
;
4966 const Generator6 g6_
;
4967 }; // class CartesianProductHolder6
4969 template <class Generator1
, class Generator2
, class Generator3
,
4970 class Generator4
, class Generator5
, class Generator6
, class Generator7
>
4971 class CartesianProductHolder7
{
4973 CartesianProductHolder7(const Generator1
& g1
, const Generator2
& g2
,
4974 const Generator3
& g3
, const Generator4
& g4
, const Generator5
& g5
,
4975 const Generator6
& g6
, const Generator7
& g7
)
4976 : g1_(g1
), g2_(g2
), g3_(g3
), g4_(g4
), g5_(g5
), g6_(g6
), g7_(g7
) {}
4977 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
4978 typename T6
, typename T7
>
4979 operator ParamGenerator
< ::std::tr1::tuple
<T1
, T2
, T3
, T4
, T5
, T6
,
4981 return ParamGenerator
< ::std::tr1::tuple
<T1
, T2
, T3
, T4
, T5
, T6
, T7
> >(
4982 new CartesianProductGenerator7
<T1
, T2
, T3
, T4
, T5
, T6
, T7
>(
4983 static_cast<ParamGenerator
<T1
> >(g1_
),
4984 static_cast<ParamGenerator
<T2
> >(g2_
),
4985 static_cast<ParamGenerator
<T3
> >(g3_
),
4986 static_cast<ParamGenerator
<T4
> >(g4_
),
4987 static_cast<ParamGenerator
<T5
> >(g5_
),
4988 static_cast<ParamGenerator
<T6
> >(g6_
),
4989 static_cast<ParamGenerator
<T7
> >(g7_
)));
4993 // No implementation - assignment is unsupported.
4994 void operator=(const CartesianProductHolder7
& other
);
4996 const Generator1 g1_
;
4997 const Generator2 g2_
;
4998 const Generator3 g3_
;
4999 const Generator4 g4_
;
5000 const Generator5 g5_
;
5001 const Generator6 g6_
;
5002 const Generator7 g7_
;
5003 }; // class CartesianProductHolder7
5005 template <class Generator1
, class Generator2
, class Generator3
,
5006 class Generator4
, class Generator5
, class Generator6
, class Generator7
,
5008 class CartesianProductHolder8
{
5010 CartesianProductHolder8(const Generator1
& g1
, const Generator2
& g2
,
5011 const Generator3
& g3
, const Generator4
& g4
, const Generator5
& g5
,
5012 const Generator6
& g6
, const Generator7
& g7
, const Generator8
& g8
)
5013 : g1_(g1
), g2_(g2
), g3_(g3
), g4_(g4
), g5_(g5
), g6_(g6
), g7_(g7
),
5015 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
5016 typename T6
, typename T7
, typename T8
>
5017 operator ParamGenerator
< ::std::tr1::tuple
<T1
, T2
, T3
, T4
, T5
, T6
, T7
,
5019 return ParamGenerator
< ::std::tr1::tuple
<T1
, T2
, T3
, T4
, T5
, T6
, T7
, T8
> >(
5020 new CartesianProductGenerator8
<T1
, T2
, T3
, T4
, T5
, T6
, T7
, T8
>(
5021 static_cast<ParamGenerator
<T1
> >(g1_
),
5022 static_cast<ParamGenerator
<T2
> >(g2_
),
5023 static_cast<ParamGenerator
<T3
> >(g3_
),
5024 static_cast<ParamGenerator
<T4
> >(g4_
),
5025 static_cast<ParamGenerator
<T5
> >(g5_
),
5026 static_cast<ParamGenerator
<T6
> >(g6_
),
5027 static_cast<ParamGenerator
<T7
> >(g7_
),
5028 static_cast<ParamGenerator
<T8
> >(g8_
)));
5032 // No implementation - assignment is unsupported.
5033 void operator=(const CartesianProductHolder8
& other
);
5035 const Generator1 g1_
;
5036 const Generator2 g2_
;
5037 const Generator3 g3_
;
5038 const Generator4 g4_
;
5039 const Generator5 g5_
;
5040 const Generator6 g6_
;
5041 const Generator7 g7_
;
5042 const Generator8 g8_
;
5043 }; // class CartesianProductHolder8
5045 template <class Generator1
, class Generator2
, class Generator3
,
5046 class Generator4
, class Generator5
, class Generator6
, class Generator7
,
5047 class Generator8
, class Generator9
>
5048 class CartesianProductHolder9
{
5050 CartesianProductHolder9(const Generator1
& g1
, const Generator2
& g2
,
5051 const Generator3
& g3
, const Generator4
& g4
, const Generator5
& g5
,
5052 const Generator6
& g6
, const Generator7
& g7
, const Generator8
& g8
,
5053 const Generator9
& g9
)
5054 : g1_(g1
), g2_(g2
), g3_(g3
), g4_(g4
), g5_(g5
), g6_(g6
), g7_(g7
), g8_(g8
),
5056 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
5057 typename T6
, typename T7
, typename T8
, typename T9
>
5058 operator ParamGenerator
< ::std::tr1::tuple
<T1
, T2
, T3
, T4
, T5
, T6
, T7
, T8
,
5060 return ParamGenerator
< ::std::tr1::tuple
<T1
, T2
, T3
, T4
, T5
, T6
, T7
, T8
,
5062 new CartesianProductGenerator9
<T1
, T2
, T3
, T4
, T5
, T6
, T7
, T8
, T9
>(
5063 static_cast<ParamGenerator
<T1
> >(g1_
),
5064 static_cast<ParamGenerator
<T2
> >(g2_
),
5065 static_cast<ParamGenerator
<T3
> >(g3_
),
5066 static_cast<ParamGenerator
<T4
> >(g4_
),
5067 static_cast<ParamGenerator
<T5
> >(g5_
),
5068 static_cast<ParamGenerator
<T6
> >(g6_
),
5069 static_cast<ParamGenerator
<T7
> >(g7_
),
5070 static_cast<ParamGenerator
<T8
> >(g8_
),
5071 static_cast<ParamGenerator
<T9
> >(g9_
)));
5075 // No implementation - assignment is unsupported.
5076 void operator=(const CartesianProductHolder9
& other
);
5078 const Generator1 g1_
;
5079 const Generator2 g2_
;
5080 const Generator3 g3_
;
5081 const Generator4 g4_
;
5082 const Generator5 g5_
;
5083 const Generator6 g6_
;
5084 const Generator7 g7_
;
5085 const Generator8 g8_
;
5086 const Generator9 g9_
;
5087 }; // class CartesianProductHolder9
5089 template <class Generator1
, class Generator2
, class Generator3
,
5090 class Generator4
, class Generator5
, class Generator6
, class Generator7
,
5091 class Generator8
, class Generator9
, class Generator10
>
5092 class CartesianProductHolder10
{
5094 CartesianProductHolder10(const Generator1
& g1
, const Generator2
& g2
,
5095 const Generator3
& g3
, const Generator4
& g4
, const Generator5
& g5
,
5096 const Generator6
& g6
, const Generator7
& g7
, const Generator8
& g8
,
5097 const Generator9
& g9
, const Generator10
& g10
)
5098 : g1_(g1
), g2_(g2
), g3_(g3
), g4_(g4
), g5_(g5
), g6_(g6
), g7_(g7
), g8_(g8
),
5099 g9_(g9
), g10_(g10
) {}
5100 template <typename T1
, typename T2
, typename T3
, typename T4
, typename T5
,
5101 typename T6
, typename T7
, typename T8
, typename T9
, typename T10
>
5102 operator ParamGenerator
< ::std::tr1::tuple
<T1
, T2
, T3
, T4
, T5
, T6
, T7
, T8
,
5103 T9
, T10
> >() const {
5104 return ParamGenerator
< ::std::tr1::tuple
<T1
, T2
, T3
, T4
, T5
, T6
, T7
, T8
,
5106 new CartesianProductGenerator10
<T1
, T2
, T3
, T4
, T5
, T6
, T7
, T8
, T9
,
5108 static_cast<ParamGenerator
<T1
> >(g1_
),
5109 static_cast<ParamGenerator
<T2
> >(g2_
),
5110 static_cast<ParamGenerator
<T3
> >(g3_
),
5111 static_cast<ParamGenerator
<T4
> >(g4_
),
5112 static_cast<ParamGenerator
<T5
> >(g5_
),
5113 static_cast<ParamGenerator
<T6
> >(g6_
),
5114 static_cast<ParamGenerator
<T7
> >(g7_
),
5115 static_cast<ParamGenerator
<T8
> >(g8_
),
5116 static_cast<ParamGenerator
<T9
> >(g9_
),
5117 static_cast<ParamGenerator
<T10
> >(g10_
)));
5121 // No implementation - assignment is unsupported.
5122 void operator=(const CartesianProductHolder10
& other
);
5124 const Generator1 g1_
;
5125 const Generator2 g2_
;
5126 const Generator3 g3_
;
5127 const Generator4 g4_
;
5128 const Generator5 g5_
;
5129 const Generator6 g6_
;
5130 const Generator7 g7_
;
5131 const Generator8 g8_
;
5132 const Generator9 g9_
;
5133 const Generator10 g10_
;
5134 }; // class CartesianProductHolder10
5136 # endif // GTEST_HAS_COMBINE
5138 } // namespace internal
5139 } // namespace testing
5141 #endif // GTEST_HAS_PARAM_TEST
5143 #endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_GENERATED_H_