16 #ifndef INCLUDE_NN_NLIB_TESTING_PARAMVALUETYPES_H_ 17 #define INCLUDE_NN_NLIB_TESTING_PARAMVALUETYPES_H_ 32 bool Gen(Nlist<T>* v)
const {
33 return v->push_back(
false) && v->push_back(
true);
37 ValuesBool& operator=(
const ValuesBool&);
40 template<
class C,
size_t N>
43 explicit ValuesInObjArray(
const C (&a)[N]) : array_(a) {}
46 bool Gen(Nlist<T>* v)
const {
47 for (
size_t i = 0; i < N; ++i) {
48 if (!v->push_back(array_[i]))
return false;
55 ValuesInObjArray& operator=(
const ValuesInObjArray&);
61 explicit ValuesInObjContainer(
const C& c) : container_(&c) {}
64 bool Gen(Nlist<T>* v)
const {
65 typename C::const_iterator it = container_->begin();
66 typename C::const_iterator end = container_->end();
67 for (; it != end; ++it) {
68 if (!v->push_back(*it))
return false;
75 ValuesInObjContainer& operator=(
const ValuesInObjContainer&);
78 template<
class Iterator>
81 ValuesInObjIterator(Iterator first, Iterator last) : first_(first), last_(last) {}
84 bool Gen(Nlist<T>* v)
const {
86 for (; it != last_; ++it) {
87 if (!v->push_back(*it))
return false;
95 ValuesInObjIterator& operator=(
const ValuesInObjIterator&);
98 template<
class T1,
class T2>
101 ValuesRange(T1 first, T1 last, T2 step) : first_(first), last_(last), step_(step) {}
104 bool Gen(Nlist<T>* v)
const;
110 ValuesRange& operator=(
const ValuesRange&);
113 template<
class T1,
class T2>
115 bool ValuesRange<T1, T2>::Gen(Nlist<T>* v)
const {
123 while (first < last) {
124 if (!v->push_back(first))
return false;
125 first = first + step;
132 typedef Values1 SelfType;
135 explicit Values1(T1 v1) : v1_(v1) {}
138 bool Gen(Nlist<T>* v)
const {
139 return v->push_back(v1_) !=
nullptr;
144 SelfType& operator=(
const SelfType&);
147 template<
class T1,
class T2>
149 typedef Values2 SelfType;
152 Values2(T1 v1, T2 v2) : v1_(v1), v2_(v2) {}
155 bool Gen(Nlist<T>* v)
const {
156 return v->push_back(v1_) !=
nullptr && v->push_back(v2_) !=
nullptr;
162 SelfType& operator=(
const SelfType&);
165 template<
class T1,
class T2,
class T3>
167 typedef Values3 SelfType;
170 Values3(T1 v1, T2 v2, T3 v3) : v1_(v1), v2_(v2), v3_(v3) {}
173 bool Gen(Nlist<T>* v)
const {
174 return v->push_back(v1_) !=
nullptr && v->push_back(v2_) !=
nullptr &&
175 v->push_back(v3_) !=
nullptr;
182 SelfType& operator=(
const SelfType&);
185 template<
class T1,
class T2,
class T3,
class T4>
187 typedef Values4 SelfType;
190 Values4(T1 v1, T2 v2, T3 v3, T4 v4) : v1_(v1), v2_(v2), v3_(v3), v4_(v4) {}
193 bool Gen(Nlist<T>* v)
const {
194 return v->push_back(v1_) !=
nullptr && v->push_back(v2_) !=
nullptr &&
195 v->push_back(v3_) !=
nullptr && v->push_back(v4_) !=
nullptr;
203 SelfType& operator=(
const SelfType&);
206 template<
class T1,
class T2,
class T3,
class T4,
class T5>
208 typedef Values5 SelfType;
211 Values5(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5) {}
214 bool Gen(Nlist<T>* v)
const {
215 return v->push_back(v1_) !=
nullptr && v->push_back(v2_) !=
nullptr &&
216 v->push_back(v3_) !=
nullptr && v->push_back(v4_) !=
nullptr &&
217 v->push_back(v5_) !=
nullptr;
226 SelfType& operator=(
const SelfType&);
229 template<
class T1,
class T2,
class T3,
class T4,
class T5,
class T6>
231 typedef Values6 SelfType;
234 Values6(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6) :
243 bool Gen(Nlist<T>* v)
const {
244 return v->push_back(v1_) !=
nullptr && v->push_back(v2_) !=
nullptr &&
245 v->push_back(v3_) !=
nullptr && v->push_back(v4_) !=
nullptr &&
246 v->push_back(v5_) !=
nullptr && v->push_back(v6_) !=
nullptr;
256 SelfType& operator=(
const SelfType&);
259 template<
class T1,
class T2,
class T3,
class T4,
class T5,
class T6,
class T7>
261 typedef Values7 SelfType;
264 Values7(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7) :
274 bool Gen(Nlist<T>* v)
const {
275 return v->push_back(v1_) !=
nullptr && v->push_back(v2_) !=
nullptr &&
276 v->push_back(v3_) !=
nullptr && v->push_back(v4_) !=
nullptr &&
277 v->push_back(v5_) !=
nullptr && v->push_back(v6_) !=
nullptr &&
278 v->push_back(v7_) !=
nullptr;
289 SelfType& operator=(
const SelfType&);
292 template<
class T1,
class T2,
class T3,
class T4,
class T5,
class T6,
class T7,
class T8>
294 typedef Values8 SelfType;
297 Values8(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8) :
308 bool Gen(Nlist<T>* v)
const {
309 return v->push_back(v1_) !=
nullptr && v->push_back(v2_) !=
nullptr &&
310 v->push_back(v3_) !=
nullptr && v->push_back(v4_) !=
nullptr &&
311 v->push_back(v5_) !=
nullptr && v->push_back(v6_) !=
nullptr &&
312 v->push_back(v7_) !=
nullptr && v->push_back(v8_) !=
nullptr;
324 SelfType& operator=(
const SelfType&);
327 template<
class T1,
class T2,
class T3,
class T4,
class T5,
class T6,
class T7,
class T8,
class T9>
329 typedef Values9 SelfType;
332 Values9(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9) :
344 bool Gen(Nlist<T>* v)
const {
345 return v->push_back(v1_) !=
nullptr && v->push_back(v2_) !=
nullptr &&
346 v->push_back(v3_) !=
nullptr && v->push_back(v4_) !=
nullptr &&
347 v->push_back(v5_) !=
nullptr && v->push_back(v6_) !=
nullptr &&
348 v->push_back(v7_) !=
nullptr && v->push_back(v8_) !=
nullptr &&
349 v->push_back(v9_) !=
nullptr;
362 SelfType& operator=(
const SelfType&);
365 template<
class T1,
class T2,
class T3,
class T4,
class T5,
class T6,
class T7,
class T8,
class T9,
368 typedef Values10 SelfType;
371 Values10(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10) :
384 bool Gen(Nlist<T>* v)
const {
385 return v->push_back(v1_) !=
nullptr && v->push_back(v2_) !=
nullptr &&
386 v->push_back(v3_) !=
nullptr && v->push_back(v4_) !=
nullptr &&
387 v->push_back(v5_) !=
nullptr && v->push_back(v6_) !=
nullptr &&
388 v->push_back(v7_) !=
nullptr && v->push_back(v8_) !=
nullptr &&
389 v->push_back(v9_) !=
nullptr && v->push_back(v10_) !=
nullptr;
403 SelfType& operator=(
const SelfType&);
410 #endif // INCLUDE_NN_NLIB_TESTING_PARAMVALUETYPES_H_ std::unique_ptrに相当するクラスが定義されています。
std::vectorに似ていますが、コピーできないオブジェクトを格納可能なクラスが定義されています。 ...
#define NLIB_FINAL
利用可能であればfinalが定義されます。そうでない場合は空文字列です。