60 template <u
int01 t_index>
66 template <u
int01 t_index>
69 return Vector<2, fltp08>(getValue<t_index + 10>(bad_value), getValue<t_index + 20>(bad_value));
72 template <u
int01 t_index>
75 return Vector<3, fltp08>(getValue<t_index + 10>(bad_value), getValue<t_index + 20>(bad_value), getValue<t_index + 30>(bad_value));
77 template <u
int01 t_index>
80 return Vector<3, fltp08>(getValue<t_index + 10>(bad_value[X]), getValue<t_index + 20>(bad_value[Y]), getValue<t_index + 30>(bad_value[Z]));
82 bool usingActiveValueSet()
const
84 return m_use_active_value_set;
86 void setUseActiveValueSet(
bool use_active_value_set)
88 m_use_active_value_set = use_active_value_set;
92 return m_active_value_set;
95 template<u
int04 t_value,
class t_type>
96 bool setValue(
const t_type& value)
98 if (m_use_active_value_set)
99 m_active_value_set.insert(t_value);
101 (t_value < 10) || (t_value >= 10 && t_value < 60) || (t_value >= 60 && t_value < 80)
102 || (t_value >= 90 && t_value < 100) || (t_value == 100) || (t_value == 102)
103 || (t_value == 105) || (t_value >= 110 && t_value < 150) || (t_value >= 160 && t_value < 170)
104 || (t_value >= 170 && t_value < 176) || (t_value == 210) || (t_value == 220) || (t_value == 230)
105 || (t_value >= 280 && t_value < 290) || (t_value >= 300 && t_value < 310) || (t_value >= 310 && t_value < 320)
106 || (t_value >= 320 && t_value < 330) || (t_value >= 330 && t_value < 370) || (t_value >= 370 && t_value < 380)
107 || (t_value == 420) || (t_value == 999) || (t_value >= 1000 && t_value < 1010)
108 || (t_value >= 1010 && t_value < 1060) || (t_value >= 1060 && t_value < 1070) || (t_value == 1071)
109 ,
"Unknown Value Type");
112 value_0[t_value].setFrom(value);
113 else if (t_value == 5)
115 else if (t_value >= 6 && t_value < 10)
116 value_6[t_value - 6].setFrom(value);
118 else if (t_value >= 10 && t_value < 60)
121 else if (t_value >= 60 && t_value < 80)
124 else if (t_value >= 90 && t_value < 100)
127 else if (t_value == 100)
128 value_100.setFrom(value);
130 else if (t_value == 102)
131 value_102.setFrom(value);
133 else if (t_value == 105)
134 value_105.setFrom(value);
136 else if (t_value >= 110 && t_value < 150)
138 else if (t_value >= 160 && t_value < 170)
141 else if (t_value >= 170 && t_value < 180)
144 else if (t_value == 210)
146 else if (t_value == 220)
148 else if (t_value == 230)
151 else if (t_value >= 280 && t_value < 290)
153 else if (t_value >= 290 && t_value < 300)
156 else if (t_value >= 300 && t_value < 310)
157 value_300[t_value - 300].setFrom(value);
159 else if (t_value >= 310 && t_value < 320)
160 value_310[t_value - 310].setFrom(value);
162 else if (t_value >= 320 && t_value < 330)
163 value_320[t_value - 320].setFrom(value);
165 else if (t_value >= 330 && t_value < 370)
167 else if (t_value >= 370 && t_value < 380)
169 else if (t_value >= 420 && t_value < 430)
172 else if (t_value == 999)
173 value_999.setFrom(value);
175 else if (t_value >= 1000 && t_value < 1010)
176 value_1000[t_value - 1000].setFrom(value);
178 else if (t_value >= 1010 && t_value < 1060)
181 else if (t_value >= 1060 && t_value < 1070)
184 else if (t_value == 1071)
190 template<u
int04 t_value,
class t_type>
191 bool appendValue(
const t_type& value)
193 if (m_use_active_value_set)
194 m_active_value_set.insert(t_value);
196 (t_value < 10) || (t_value == 100) || (t_value == 102)
197 || (t_value == 105) || (t_value >= 300 && t_value < 310) || (t_value >= 310 && t_value < 320)
198 || (t_value >= 320 && t_value < 330) || (t_value >= 330 && t_value < 370) || (t_value == 999)
199 || (t_value >= 1000 && t_value < 1010)
200 ,
"Unknown Value Type");
203 value_0[t_value].append(value);
204 else if (t_value >= 6 && t_value < 10)
205 value_6[t_value - 6].append(value);
206 else if (t_value == 100)
207 value_100.append(value);
209 else if (t_value == 102)
210 value_102.append(value);
212 else if (t_value == 105)
213 value_105.append(value);
214 else if (t_value >= 300 && t_value < 310)
215 value_300[t_value - 300].append(value);
217 else if (t_value >= 310 && t_value < 320)
218 value_310[t_value - 310].append(value);
220 else if (t_value >= 320 && t_value < 330)
221 value_320[t_value - 320].append(value);
223 else if (t_value == 999)
224 value_999.append(value);
226 else if (t_value >= 1000 && t_value < 1010)
227 value_1000[t_value - 1000].append(value);
236 template<u
int04 t_value,
class t_type>
237 [[nodiscard]] t_type getValue(
const t_type& default_value)
const
240 (t_value < 10) || (t_value >= 10 && t_value < 60) || (t_value >= 60 && t_value < 80)
241 || (t_value >= 90 && t_value < 100) || (t_value == 100) || (t_value == 102)
242 || (t_value == 105) || (t_value >= 110 && t_value < 150) || (t_value >= 160 && t_value < 170)
243 || (t_value >= 170 && t_value < 176) || (t_value == 210) || (t_value == 220) || (t_value == 230)
244 || (t_value >= 280 && t_value < 290) || (t_value >= 300 && t_value < 310) || (t_value >= 310 && t_value < 320)
245 || (t_value >= 320 && t_value < 330) || (t_value >= 330 && t_value < 370) || (t_value >= 370 && t_value < 380)
246 || (t_value == 420) || (t_value == 999) || (t_value >= 1000 && t_value < 1010)
247 || (t_value >= 1010 && t_value < 1060) || (t_value >= 1060 && t_value < 1070) || (t_value == 1071)
248 ,
"Unknown Value Type");
249 if (!hasValue<t_value>())
250 return default_value;
252#pragma warning (disable: 4800)
253#pragma warning (disable: 26454)
256 if constexpr (t_value < 5)
257 return value_0[t_value].getAs<t_type>();
258 else if constexpr (t_value == 5)
260 else if constexpr (t_value >= 6 && t_value < 10)
261 return value_6[t_value - 6].getAs<t_type>();
263 else if constexpr (t_value >= 10 && t_value < 60)
266 else if constexpr (t_value >= 60 && t_value < 80)
269 else if constexpr (t_value >= 90 && t_value < 100)
272 else if constexpr (t_value == 100)
273 return value_100.getAs<t_type>();
275 else if constexpr (t_value == 102)
276 return value_102.getAs<t_type>();
278 else if constexpr (t_value == 105)
279 return value_105.getAs<t_type>();
281 else if constexpr (t_value >= 110 && t_value < 150)
283 else if constexpr (t_value >= 160 && t_value < 170)
286 else if constexpr (t_value >= 170 && t_value < 180)
289 else if constexpr (t_value == 210)
291 else if constexpr (t_value == 220)
293 else if constexpr (t_value == 230)
296 else if constexpr (t_value >= 280 && t_value < 290)
298 else if constexpr (t_value >= 290 && t_value < 300)
301 else if constexpr (t_value >= 300 && t_value < 310)
302 return value_300[t_value - 300].getAs<t_type>();
304 else if constexpr (t_value >= 310 && t_value < 320)
305 return value_310[t_value - 310].getAs<t_type>();
307 else if constexpr (t_value >= 320 && t_value < 330)
308 return value_320[t_value - 320].getAs<t_type>();
311 else if constexpr (t_value >= 330 && t_value < 370)
313 else if constexpr (t_value >= 370 && t_value < 380)
315 else if constexpr (t_value >= 420 && t_value < 430)
318 else if constexpr (t_value == 999)
319 return value_999.getAs<t_type>();
321 else if constexpr (t_value >= 1000 && t_value < 1010)
322 return value_1000[t_value - 1000].getAs<t_type>();
324 else if constexpr (t_value >= 1010 && t_value < 1060)
327 else if constexpr (t_value >= 1060 && t_value < 1070)
330 else if constexpr (t_value == 1071)
333 lib_assert(
false,
"Unknown Index Value");
336#pragma warning (default: 4800)
337#pragma warning (default: 26454)
345 template <u
int04 t_value>
346 [[nodiscard]]
bool hasValue()
const
349 (t_value < 10) || (t_value >= 10 && t_value < 60) || (t_value >= 60 && t_value < 80)
350 || (t_value >= 90 && t_value < 100) || (t_value == 100) || (t_value == 102)
351 || (t_value == 105) || (t_value >= 110 && t_value < 150) || (t_value >= 160 && t_value < 170)
352 || (t_value >= 170 && t_value < 176) || (t_value == 210) || (t_value == 220) || (t_value == 230)
353 || (t_value >= 280 && t_value < 290) || (t_value >= 300 && t_value < 310) || (t_value >= 310 && t_value < 320)
354 || (t_value >= 320 && t_value < 330) || (t_value >= 330 && t_value < 370) || (t_value >= 370 && t_value < 380)
355 || (t_value == 420) || (t_value == 999) || (t_value >= 1000 && t_value < 1010)
356 || (t_value >= 1010 && t_value < 1060) || (t_value >= 1060 && t_value < 1070) || (t_value == 1071)
357 ,
"Unknown Value Type");
359 if constexpr (t_value < 5)
360 return value_0[t_value].size() != 0;
361 else if constexpr (t_value == 5)
363 else if constexpr (t_value >= 6 && t_value < 10)
364 return value_6[t_value - 6].size() != 0;
366 else if constexpr (t_value >= 10 && t_value < 60)
369 else if constexpr (t_value >= 60 && t_value < 80)
372 else if constexpr (t_value >= 90 && t_value < 100)
375 else if constexpr (t_value == 100)
376 return value_100.size() != 0;
378 else if constexpr (t_value == 102)
379 return value_102.size() != 0;
381 else if constexpr (t_value == 105)
382 return value_105.size() != 0;
384 else if constexpr (t_value >= 110 && t_value < 150)
386 else if constexpr (t_value >= 160 && t_value < 170)
389 else if constexpr (t_value >= 170 && t_value < 180)
392 else if constexpr (t_value == 210)
394 else if constexpr (t_value == 220)
396 else if constexpr (t_value == 230)
399 else if constexpr (t_value >= 280 && t_value < 290)
401 else if constexpr (t_value >= 290 && t_value < 300)
404 else if constexpr (t_value >= 300 && t_value < 310)
405 return value_300[t_value - 300].size() != 0;
407 else if constexpr (t_value >= 310 && t_value < 320)
408 return value_310[t_value - 310].size() != 0;
410 else if constexpr (t_value >= 320 && t_value < 330)
411 return value_320[t_value - 320].size() != 0;
413 else if constexpr (t_value >= 330 && t_value < 370)
415 else if constexpr (t_value >= 370 && t_value < 380)
417 else if constexpr (t_value == 420)
420 else if constexpr (t_value == 999)
421 return value_999.size() != 0;
423 else if constexpr (t_value >= 1000 && t_value < 1010)
424 return value_1000[t_value - 1000].size() != 0;
426 else if constexpr (t_value >= 1010 && t_value < 1060)
429 else if constexpr (t_value >= 1060 && t_value < 1070)
432 else if constexpr (t_value == 1071)
435 lib_assert(
false,
"Unknown Index Value");
440 template <u
int01 t_index, u
int01 t_dims,
class t_type>
443 static_assert(t_index < 10,
"Bad Vector Index");
445 setValue<t_index + 10>(value[0]);
447 setValue<t_index + 20>(value[1]);
449 setValue<t_index + 30>(value[2]);
451 setValue<t_index + 40>(value[3]);
453 setValue<t_index + 50>(value[4]);
455 setValue<t_index + 60>(value[5]);
472 template <
class t_type>
473 [[nodiscard]] t_type getValue(
uint04 value,
const t_type& default_value)
const
475 if (!hasValue(value))
476 return default_value;
479 return value_0[value].getAs<t_type>();
482 if (value >= 6 && value < 10)
483 return value_6[value - 6].getAs<t_type>();
485 if (value >= 10 && value < 60)
488 if (value >= 60 && value < 80)
491 if (value >= 90 && value < 100)
495 return value_100.getAs<t_type>();
498 return value_102.getAs<t_type>();
501 return value_105.getAs<t_type>();
503 if (value >= 110 && value < 150)
505 if (value >= 160 && value < 170)
508 if (value >= 170 && value < 180)
517 if (value >= 280 && value < 290)
519 if (value >= 290 && value < 300)
522 if (value >= 300 && value < 310)
523 return value_300[value - 300].getAs<t_type>();
525 if (value >= 310 && value < 320)
526 return value_310[value - 310].getAs<t_type>();
528 if (value >= 320 && value < 330)
529 return value_320[value - 320].getAs<t_type>();
531 if (value >= 330 && value < 370)
533 if (value >= 370 && value < 390)
535 if (value >= 390 && value < 400)
536 return value_390[value - 390].getAs<t_type>();
537 if (value >= 420 && value < 430)
541 return value_999.getAs<t_type>();
543 if (value >= 1000 && value < 1010)
544 return value_1000[value - 1000].getAs<t_type>();
546 if (value >= 1010 && value < 1060)
549 if (value >= 1060 && value < 1070)
554 lib_assert(
false,
"Unknown Index Value");
555 return default_value;
565 else if(value >= 6 && value < 10)
566 s.
append(value_6[value - 6]);
568 else if (value >= 10 && value < 60)
571 else if (value >= 60 && value < 80)
574 else if (value >= 90 && value < 100)
577 else if (value == 100)
580 else if (value == 102)
583 else if (value == 105)
586 else if (value >= 110 && value < 150)
588 else if (value >= 160 && value < 170)
591 else if (value >= 170 && value < 180)
593 else if (value == 210)
595 else if (value == 220)
597 else if (value == 230)
600 else if (value >= 280 && value < 290)
602 else if (value >= 290 && value < 300)
605 else if (value >= 300 && value < 310)
606 s.
append(value_300[value - 300]);
608 else if (value >= 310 && value < 320)
609 s.
append(value_310[value - 310]);
611 else if (value >= 320 && value < 330)
612 s.
append(value_320[value - 320]);
614 else if (value >= 330 && value < 370)
616 else if (value >= 370 && value < 390)
618 else if (value >= 390 && value < 400)
619 s.addAll(value_390[value - 390]);
620 else if (value >= 420 && value < 430)
623 else if (value == 999)
626 else if (value >= 1000 && value < 1010)
627 s.
append(value_1000[value - 1000]);
629 else if (value >= 1010 && value < 1060)
632 else if (value >= 1060 && value < 1070)
635 else if (value == 1071)
638 lib_assert(
false,
"Unknown Index Value");
647 bool hasValue(
uint04 value)
const;
651 uint04 value_5 = Constant<uint04>::Invalid;
671 fltp08 value_210 = Constant<fltp08>::Invalid;
672 fltp08 value_220 = Constant<fltp08>::Invalid;
673 fltp08 value_230 = Constant<fltp08>::Invalid;
706 sint04 value_1071 = Constant<sint04>::Invalid;
708 bool m_use_active_value_set =
false;