cppjieba_rb 0.4.2 → 0.4.4

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