Zivid C++ API 2.17.1+7516d437-1
FrameInfo.h
Go to the documentation of this file.
1/*******************************************************************************
2 * This file is part of the Zivid API
3 *
4 * Copyright 2015-2025 (C) Zivid AS
5 * All rights reserved.
6 *
7 * Zivid Software License, v1.0
8 *
9 * Redistribution and use in source and binary forms, with or without
10 * modification, are permitted provided that the following conditions are met:
11 *
12 * 1. Redistributions of source code must retain the above copyright notice,
13 * this list of conditions and the following disclaimer.
14 *
15 * 2. Redistributions in binary form must reproduce the above copyright notice,
16 * this list of conditions and the following disclaimer in the documentation
17 * and/or other materials provided with the distribution.
18 *
19 * 3. Neither the name of Zivid AS nor the names of its contributors may be used
20 * to endorse or promote products derived from this software without specific
21 * prior written permission.
22 *
23 * 4. This software, with or without modification, must not be used with any
24 * other 3D camera than from Zivid AS.
25 *
26 * 5. Any software provided in binary form under this license must not be
27 * reverse engineered, decompiled, modified and/or disassembled.
28 *
29 * THIS SOFTWARE IS PROVIDED BY ZIVID AS "AS IS" AND ANY EXPRESS OR IMPLIED
30 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
31 * MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE
32 * DISCLAIMED. IN NO EVENT SHALL ZIVID AS OR CONTRIBUTORS BE LIABLE FOR ANY
33 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
34 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
35 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
36 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
37 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
38 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
39 *
40 * Contact: Zivid Customer Success Team <customersuccess@zivid.com>
41 * Info: http://www.zivid.com
42 ******************************************************************************/
43
44#pragma once
45
46#include <array>
47#include <chrono>
48#include <cmath>
49#include <ctime>
50#include <iomanip>
51#include <memory>
52#include <optional>
53#include <set>
54#include <sstream>
55#include <string>
56#include <tuple>
57#include <utility>
58#include <vector>
59
65#include "Zivid/Range.h"
66
67#ifdef _MSC_VER
68# pragma warning(push)
69# pragma warning(disable : 4251) // "X needs to have dll-interface to be used by clients of class Y."
70#endif
71
72namespace Zivid
73{
74
76
77 // NOLINTNEXTLINE(clang-analyzer-optin.performance.Padding)
79 {
80 public:
83
85 static constexpr const char *path{ "" };
86
88 static constexpr const char *name{ "FrameInfo" };
89
91 static constexpr const char *description{ R"description(Various information for a frame)description" };
92
93 static constexpr size_t version{ 6 };
94
95#ifndef NO_DOC
96 template<size_t>
97 struct Version;
98
99 using LatestVersion = Zivid::FrameInfo;
100
101 // Short identifier. This value is not guaranteed to be universally unique
102 // Todo(ZIVID-2808): Move this to internal DataModelExt header
103 static constexpr std::array<uint8_t, 3> binaryId{ 'f', 'i', 'f' };
104
105#endif
106
108
109 // NOLINTNEXTLINE(clang-analyzer-optin.performance.Padding)
111 {
112 public:
115
117 static constexpr const char *path{ "Metrics" };
118
120 static constexpr const char *name{ "Metrics" };
121
123 static constexpr const char *description{ R"description(Metrics related to this capture.)description" };
124
130
131 // NOLINTNEXTLINE(clang-analyzer-optin.performance.Padding)
133 {
134 public:
137
139 static constexpr const char *path{ "Metrics/AcquisitionTime" };
140
142 static constexpr const char *name{ "AcquisitionTime" };
143
145 static constexpr const char *description{
146 R"description(Acquisition Time is the duration from the start of the capture to when the camera has acquired the
147last image. After this time, the camera has finished its acquisition and you can move the robot,
148or capture with another camera with overlapping field of view. Acquisition Time is equal to the
149time it takes for the Camera::capture(settings) API function call to return.
150)description"
151 };
152
154 using ValueType = std::chrono::microseconds;
155
158 {
159 return { std::chrono::microseconds::min(), std::chrono::microseconds::max() };
160 }
161
163 AcquisitionTime() = default;
164
166 explicit constexpr AcquisitionTime(std::chrono::microseconds value)
167 : m_value{ value }
168 {}
169
171 std::chrono::microseconds value() const;
172
174 std::string toString() const;
175
177 bool operator==(const AcquisitionTime &other) const
178 {
179 return m_value == other.m_value;
180 }
181
183 bool operator!=(const AcquisitionTime &other) const
184 {
185 return m_value != other.m_value;
186 }
187
189 bool operator<(const AcquisitionTime &other) const
190 {
191 return m_value < other.m_value;
192 }
193
195 bool operator>(const AcquisitionTime &other) const
196 {
197 return m_value > other.m_value;
198 }
199
201 bool operator<=(const AcquisitionTime &other) const
202 {
203 return m_value <= other.m_value;
204 }
205
207 bool operator>=(const AcquisitionTime &other) const
208 {
209 return m_value >= other.m_value;
210 }
211
213 friend std::ostream &operator<<(std::ostream &stream, const AcquisitionTime &value)
214 {
215 return stream << value.toString();
216 }
217
218 private:
219 void setFromString(const std::string &value);
220
221 std::chrono::microseconds m_value{ -1 };
222
223 friend struct DataModel::Detail::Befriend<AcquisitionTime>;
224 };
225
230
231 // NOLINTNEXTLINE(clang-analyzer-optin.performance.Padding)
233 {
234 public:
237
239 static constexpr const char *path{ "Metrics/CaptureTime" };
240
242 static constexpr const char *name{ "CaptureTime" };
243
245 static constexpr const char *description{
246 R"description(Capture Time is the duration from the start of the capture to when all of the data transfer and
247processing has completed. After this time the 3D point cloud and/or 2D color image is ready and
248available on the GPU memory, and can be copied to the system memory (RAM).
249)description"
250 };
251
253 using ValueType = std::chrono::microseconds;
254
257 {
258 return { std::chrono::microseconds::min(), std::chrono::microseconds::max() };
259 }
260
262 CaptureTime() = default;
263
265 explicit constexpr CaptureTime(std::chrono::microseconds value)
266 : m_value{ value }
267 {}
268
270 std::chrono::microseconds value() const;
271
273 std::string toString() const;
274
276 bool operator==(const CaptureTime &other) const
277 {
278 return m_value == other.m_value;
279 }
280
282 bool operator!=(const CaptureTime &other) const
283 {
284 return m_value != other.m_value;
285 }
286
288 bool operator<(const CaptureTime &other) const
289 {
290 return m_value < other.m_value;
291 }
292
294 bool operator>(const CaptureTime &other) const
295 {
296 return m_value > other.m_value;
297 }
298
300 bool operator<=(const CaptureTime &other) const
301 {
302 return m_value <= other.m_value;
303 }
304
306 bool operator>=(const CaptureTime &other) const
307 {
308 return m_value >= other.m_value;
309 }
310
312 friend std::ostream &operator<<(std::ostream &stream, const CaptureTime &value)
313 {
314 return stream << value.toString();
315 }
316
317 private:
318 void setFromString(const std::string &value);
319
320 std::chrono::microseconds m_value{ -1 };
321
322 friend struct DataModel::Detail::Befriend<CaptureTime>;
323 };
324
341
342 // NOLINTNEXTLINE(clang-analyzer-optin.performance.Padding)
344 {
345 public:
348
350 static constexpr const char *path{ "Metrics/ReprocessingTime" };
351
353 static constexpr const char *name{ "ReprocessingTime" };
354
356 static constexpr const char *description{
357 R"description(Reprocessing re-runs the entire processing pipeline (including filters, color balance etc.) on a
358previously acquired frame. Reprocessing is available in Zivid Studio for captures with Diagnostics Mode
359enabled. The ReprocessingTime field is only set if this frame was reprocessed after it was initially
360captured, otherwise it will be unset.
361
362Reprocessing Time is the duration from the start of the reprocessing action and until all processing
363of the new frame has finished. After this time the 3D point cloud and/or 2D color image is ready and
364available on the GPU memory and can be copied to the system memory (RAM).
365
366Reprocessing Time depends on the processing settings that are enabled, which capture engine that was
367used, the pixel sampling setting and the number of acquisitions used. Reprocessing Time also depends on
368the compute power of the compute device.
369
370Note that for a frame that has been re-processed, the Acquisition Time and Capture Time refers to
371the originally captured frame. Only Reprocessing Time is updated in a reprocessed frame.
372)description"
373 };
374
376 using ValueType = std::chrono::microseconds;
377
380 {
381 return { std::chrono::microseconds::min(), std::chrono::microseconds::max() };
382 }
383
385 ReprocessingTime() = default;
386
388 explicit constexpr ReprocessingTime(std::chrono::microseconds value)
389 : m_opt{ value }
390 {}
391
396 std::chrono::microseconds value() const;
397
399 bool hasValue() const;
400
402 void reset();
403
405 std::string toString() const;
406
408 bool operator==(const ReprocessingTime &other) const
409 {
410 return m_opt == other.m_opt;
411 }
412
414 bool operator!=(const ReprocessingTime &other) const
415 {
416 return m_opt != other.m_opt;
417 }
418
420 bool operator<(const ReprocessingTime &other) const
421 {
422 return m_opt < other.m_opt;
423 }
424
426 bool operator>(const ReprocessingTime &other) const
427 {
428 return m_opt > other.m_opt;
429 }
430
432 bool operator<=(const ReprocessingTime &other) const
433 {
434 return m_opt <= other.m_opt;
435 }
436
438 bool operator>=(const ReprocessingTime &other) const
439 {
440 return m_opt >= other.m_opt;
441 }
442
444 friend std::ostream &operator<<(std::ostream &stream, const ReprocessingTime &value)
445 {
446 return stream << value.toString();
447 }
448
449 private:
450 void setFromString(const std::string &value);
451
452 std::optional<std::chrono::microseconds> m_opt;
453
454 friend struct DataModel::Detail::Befriend<ReprocessingTime>;
455 };
456
464
465 // NOLINTNEXTLINE(clang-analyzer-optin.performance.Padding)
467 {
468 public:
471
473 static constexpr const char *path{ "Metrics/ThrottlingTime" };
474
476 static constexpr const char *name{ "ThrottlingTime" };
477
479 static constexpr const char *description{
480 R"description(Throttling Time is the duration that the capture was paused due to thermal or other constraints on the
481camera's components while it was capturing this frame. This duration is part of the overall Acquisition
482Time. If the camera throttled during a capture, it will result in a longer Acquisition Time.
483
484Whether or not the camera will throttle depends on the ambient temperature, the capture settings, and
485the how frequently the camera is capturing.
486)description"
487 };
488
490 using ValueType = std::chrono::microseconds;
491
494 {
495 return { std::chrono::microseconds::min(), std::chrono::microseconds::max() };
496 }
497
499 ThrottlingTime() = default;
500
502 explicit constexpr ThrottlingTime(std::chrono::microseconds value)
503 : m_value{ value }
504 {}
505
507 std::chrono::microseconds value() const;
508
510 std::string toString() const;
511
513 bool operator==(const ThrottlingTime &other) const
514 {
515 return m_value == other.m_value;
516 }
517
519 bool operator!=(const ThrottlingTime &other) const
520 {
521 return m_value != other.m_value;
522 }
523
525 bool operator<(const ThrottlingTime &other) const
526 {
527 return m_value < other.m_value;
528 }
529
531 bool operator>(const ThrottlingTime &other) const
532 {
533 return m_value > other.m_value;
534 }
535
537 bool operator<=(const ThrottlingTime &other) const
538 {
539 return m_value <= other.m_value;
540 }
541
543 bool operator>=(const ThrottlingTime &other) const
544 {
545 return m_value >= other.m_value;
546 }
547
549 friend std::ostream &operator<<(std::ostream &stream, const ThrottlingTime &value)
550 {
551 return stream << value.toString();
552 }
553
554 private:
555 void setFromString(const std::string &value);
556
557 std::chrono::microseconds m_value{ -1 };
558
559 friend struct DataModel::Detail::Befriend<ThrottlingTime>;
560 };
561
562 using Descendants = std::tuple<
567
570
585#ifndef NO_DOC
586 template<
587 typename... Args,
588 typename std::enable_if<sizeof...(Args) >= 1, int>::type = 0,
589 typename std::enable_if<
590 Zivid::Detail::TypeTraits::AllArgsAreInTuple<Descendants, typename std::decay<Args>::type...>::
591 value,
592 int>::type = 0>
593#else
594 template<typename... Args>
595#endif
596 explicit Metrics(Args &&...args)
597 {
598 using namespace Zivid::Detail::TypeTraits;
599
600 static_assert(
601 AllArgsDecayedAreUnique<Args...>::value,
602 "Found duplicate types among the arguments passed to Metrics(...). "
603 "Types should be listed at most once.");
604
605 set(std::forward<Args>(args)...);
606 }
607
621#ifndef NO_DOC
622 template<typename... Args, typename std::enable_if<sizeof...(Args) >= 2, int>::type = 0>
623#else
624 template<typename... Args>
625#endif
626 void set(Args &&...args)
627 {
628 using namespace Zivid::Detail::TypeTraits;
629
630 using AllArgsAreDescendantNodes = AllArgsAreInTuple<Descendants, typename std::decay<Args>::type...>;
631 static_assert(
632 AllArgsAreDescendantNodes::value, "All arguments passed to set(...) must be descendant nodes.");
633
634 static_assert(
635 AllArgsDecayedAreUnique<Args...>::value,
636 "Found duplicate types among the arguments passed to set(...). "
637 "Types should be listed at most once.");
638
639 Zivid::DataModel::Detail::invokeSetWithEachArgument(*this, std::forward<Args>(args)...);
640 }
641
656#ifndef NO_DOC
657 template<typename... Args, typename std::enable_if<sizeof...(Args) >= 1, int>::type = 0>
658#else
659 template<typename... Args>
660#endif
661 Metrics copyWith(Args &&...args) const
662 {
663 using namespace Zivid::Detail::TypeTraits;
664
665 using AllArgsAreDescendantNodes = AllArgsAreInTuple<Descendants, typename std::decay<Args>::type...>;
666 static_assert(
667 AllArgsAreDescendantNodes::value,
668 "All arguments passed to copyWith(...) must be descendant nodes.");
669
670 static_assert(
671 AllArgsDecayedAreUnique<Args...>::value,
672 "Found duplicate types among the arguments passed to copyWith(...). "
673 "Types should be listed at most once.");
674
675 auto copy{ *this };
676 copy.set(std::forward<Args>(args)...);
677 return copy;
678 }
679
682 {
683 return m_acquisitionTime;
684 }
685
688 {
689 return m_acquisitionTime;
690 }
691
694 {
695 m_acquisitionTime = value;
696 return *this;
697 }
698
701 {
702 return m_captureTime;
703 }
704
707 {
708 return m_captureTime;
709 }
710
712 Metrics &set(const CaptureTime &value)
713 {
714 m_captureTime = value;
715 return *this;
716 }
717
720 {
721 return m_reprocessingTime;
722 }
723
726 {
727 return m_reprocessingTime;
728 }
729
732 {
733 m_reprocessingTime = value;
734 return *this;
735 }
736
739 {
740 return m_throttlingTime;
741 }
742
745 {
746 return m_throttlingTime;
747 }
748
751 {
752 m_throttlingTime = value;
753 return *this;
754 }
755
756 template<
757 typename T,
758 typename std::enable_if<std::is_same<T, FrameInfo::Metrics::AcquisitionTime>::value, int>::type = 0>
760 {
761 return m_acquisitionTime;
762 }
763
764 template<
765 typename T,
766 typename std::enable_if<std::is_same<T, FrameInfo::Metrics::CaptureTime>::value, int>::type = 0>
768 {
769 return m_captureTime;
770 }
771
772 template<
773 typename T,
774 typename std::enable_if<std::is_same<T, FrameInfo::Metrics::ReprocessingTime>::value, int>::type = 0>
776 {
777 return m_reprocessingTime;
778 }
779
780 template<
781 typename T,
782 typename std::enable_if<std::is_same<T, FrameInfo::Metrics::ThrottlingTime>::value, int>::type = 0>
784 {
785 return m_throttlingTime;
786 }
787
788 template<size_t i, typename std::enable_if<i == 0, int>::type = 0>
790 {
791 return m_acquisitionTime;
792 }
793
794 template<size_t i, typename std::enable_if<i == 1, int>::type = 0>
796 {
797 return m_captureTime;
798 }
799
800 template<size_t i, typename std::enable_if<i == 2, int>::type = 0>
802 {
803 return m_reprocessingTime;
804 }
805
806 template<size_t i, typename std::enable_if<i == 3, int>::type = 0>
808 {
809 return m_throttlingTime;
810 }
811
813 template<typename F>
814 void forEach(const F &f) const
815 {
816 f(m_acquisitionTime);
817 f(m_captureTime);
818 f(m_reprocessingTime);
819 f(m_throttlingTime);
820 }
821
823 template<typename F>
824 void forEach(const F &f)
825 {
826 f(m_acquisitionTime);
827 f(m_captureTime);
828 f(m_reprocessingTime);
829 f(m_throttlingTime);
830 }
831
833 bool operator==(const Metrics &other) const;
834
836 bool operator!=(const Metrics &other) const;
837
839 std::string toString() const;
840
842 friend std::ostream &operator<<(std::ostream &stream, const Metrics &value)
843 {
844 return stream << value.toString();
845 }
846
847 private:
848 void setFromString(const std::string &value);
849
850 void setFromString(const std::string &fullPath, const std::string &value);
851
852 std::string getString(const std::string &fullPath) const;
853
854 AcquisitionTime m_acquisitionTime;
855 CaptureTime m_captureTime;
856 ReprocessingTime m_reprocessingTime;
857 ThrottlingTime m_throttlingTime;
858
859 friend struct DataModel::Detail::Befriend<Metrics>;
860 };
861
863
864 // NOLINTNEXTLINE(clang-analyzer-optin.performance.Padding)
866 {
867 public:
870
872 static constexpr const char *path{ "SoftwareVersion" };
873
875 static constexpr const char *name{ "SoftwareVersion" };
876
878 static constexpr const char *description{
879 R"description(The version information for installed software at the time of image capture)description"
880 };
881
883
884 // NOLINTNEXTLINE(clang-analyzer-optin.performance.Padding)
886 {
887 public:
890
892 static constexpr const char *path{ "SoftwareVersion/Core" };
893
895 static constexpr const char *name{ "Core" };
896
898 static constexpr const char *description{ R"description(Core version)description" };
899
901 using ValueType = std::string;
902
905 {
906 return { 0, std::numeric_limits<ValueType::size_type>::max() };
907 }
908
910 Core() = default;
911
913 explicit Core(std::string value)
914 : m_value{ std::move(value) }
915 {}
916
918 const std::string &value() const;
919
921 std::string toString() const;
922
924 bool operator==(const Core &other) const
925 {
926 return m_value == other.m_value;
927 }
928
930 bool operator!=(const Core &other) const
931 {
932 return m_value != other.m_value;
933 }
934
936 bool operator<(const Core &other) const
937 {
938 return m_value < other.m_value;
939 }
940
942 bool operator>(const Core &other) const
943 {
944 return m_value > other.m_value;
945 }
946
948 bool operator<=(const Core &other) const
949 {
950 return m_value <= other.m_value;
951 }
952
954 bool operator>=(const Core &other) const
955 {
956 return m_value >= other.m_value;
957 }
958
960 friend std::ostream &operator<<(std::ostream &stream, const Core &value)
961 {
962 return stream << value.toString();
963 }
964
965 private:
966 void setFromString(const std::string &value);
967
968 std::string m_value{ "No-version" };
969
970 friend struct DataModel::Detail::Befriend<Core>;
971 };
972
973 using Descendants = std::tuple<FrameInfo::SoftwareVersion::Core>;
974
977
989#ifndef NO_DOC
990 template<
991 typename... Args,
992 typename std::enable_if<sizeof...(Args) >= 1, int>::type = 0,
993 typename std::enable_if<
994 Zivid::Detail::TypeTraits::AllArgsAreInTuple<Descendants, typename std::decay<Args>::type...>::
995 value,
996 int>::type = 0>
997#else
998 template<typename... Args>
999#endif
1000 explicit SoftwareVersion(Args &&...args)
1001 {
1002 using namespace Zivid::Detail::TypeTraits;
1003
1004 static_assert(
1005 AllArgsDecayedAreUnique<Args...>::value,
1006 "Found duplicate types among the arguments passed to SoftwareVersion(...). "
1007 "Types should be listed at most once.");
1008
1009 set(std::forward<Args>(args)...);
1010 }
1011
1022#ifndef NO_DOC
1023 template<typename... Args, typename std::enable_if<sizeof...(Args) >= 2, int>::type = 0>
1024#else
1025 template<typename... Args>
1026#endif
1027 void set(Args &&...args)
1028 {
1029 using namespace Zivid::Detail::TypeTraits;
1030
1031 using AllArgsAreDescendantNodes = AllArgsAreInTuple<Descendants, typename std::decay<Args>::type...>;
1032 static_assert(
1033 AllArgsAreDescendantNodes::value, "All arguments passed to set(...) must be descendant nodes.");
1034
1035 static_assert(
1036 AllArgsDecayedAreUnique<Args...>::value,
1037 "Found duplicate types among the arguments passed to set(...). "
1038 "Types should be listed at most once.");
1039
1040 Zivid::DataModel::Detail::invokeSetWithEachArgument(*this, std::forward<Args>(args)...);
1041 }
1042
1054#ifndef NO_DOC
1055 template<typename... Args, typename std::enable_if<sizeof...(Args) >= 1, int>::type = 0>
1056#else
1057 template<typename... Args>
1058#endif
1059 SoftwareVersion copyWith(Args &&...args) const
1060 {
1061 using namespace Zivid::Detail::TypeTraits;
1062
1063 using AllArgsAreDescendantNodes = AllArgsAreInTuple<Descendants, typename std::decay<Args>::type...>;
1064 static_assert(
1065 AllArgsAreDescendantNodes::value,
1066 "All arguments passed to copyWith(...) must be descendant nodes.");
1067
1068 static_assert(
1069 AllArgsDecayedAreUnique<Args...>::value,
1070 "Found duplicate types among the arguments passed to copyWith(...). "
1071 "Types should be listed at most once.");
1072
1073 auto copy{ *this };
1074 copy.set(std::forward<Args>(args)...);
1075 return copy;
1076 }
1077
1079 const Core &core() const
1080 {
1081 return m_core;
1082 }
1083
1086 {
1087 return m_core;
1088 }
1089
1091 SoftwareVersion &set(const Core &value)
1092 {
1093 m_core = value;
1094 return *this;
1095 }
1096
1097 template<
1098 typename T,
1099 typename std::enable_if<std::is_same<T, FrameInfo::SoftwareVersion::Core>::value, int>::type = 0>
1101 {
1102 return m_core;
1103 }
1104
1105 template<size_t i, typename std::enable_if<i == 0, int>::type = 0>
1107 {
1108 return m_core;
1109 }
1110
1112 template<typename F>
1113 void forEach(const F &f) const
1114 {
1115 f(m_core);
1116 }
1117
1119 template<typename F>
1120 void forEach(const F &f)
1121 {
1122 f(m_core);
1123 }
1124
1126 bool operator==(const SoftwareVersion &other) const;
1127
1129 bool operator!=(const SoftwareVersion &other) const;
1130
1132 std::string toString() const;
1133
1135 friend std::ostream &operator<<(std::ostream &stream, const SoftwareVersion &value)
1136 {
1137 return stream << value.toString();
1138 }
1139
1140 private:
1141 void setFromString(const std::string &value);
1142
1143 void setFromString(const std::string &fullPath, const std::string &value);
1144
1145 std::string getString(const std::string &fullPath) const;
1146
1147 Core m_core;
1148
1149 friend struct DataModel::Detail::Befriend<SoftwareVersion>;
1150 };
1151
1153
1154 // NOLINTNEXTLINE(clang-analyzer-optin.performance.Padding)
1156 {
1157 public:
1160
1162 static constexpr const char *path{ "SystemInfo" };
1163
1165 static constexpr const char *name{ "SystemInfo" };
1166
1168 static constexpr const char *description{
1169 R"description(Information about the system that captured this frame)description"
1170 };
1171
1173
1174 // NOLINTNEXTLINE(clang-analyzer-optin.performance.Padding)
1176 {
1177 public:
1180
1182 static constexpr const char *path{ "SystemInfo/CPU" };
1183
1185 static constexpr const char *name{ "CPU" };
1186
1188 static constexpr const char *description{ R"description(CPU)description" };
1189
1191
1192 // NOLINTNEXTLINE(clang-analyzer-optin.performance.Padding)
1194 {
1195 public:
1198
1200 static constexpr const char *path{ "SystemInfo/CPU/Model" };
1201
1203 static constexpr const char *name{ "Model" };
1204
1206 static constexpr const char *description{ R"description(CPU model)description" };
1207
1209 using ValueType = std::string;
1210
1213 {
1214 return { 0, std::numeric_limits<ValueType::size_type>::max() };
1215 }
1216
1218 Model() = default;
1219
1221 explicit Model(std::string value)
1222 : m_value{ std::move(value) }
1223 {}
1224
1226 const std::string &value() const;
1227
1229 std::string toString() const;
1230
1232 bool operator==(const Model &other) const
1233 {
1234 return m_value == other.m_value;
1235 }
1236
1238 bool operator!=(const Model &other) const
1239 {
1240 return m_value != other.m_value;
1241 }
1242
1244 bool operator<(const Model &other) const
1245 {
1246 return m_value < other.m_value;
1247 }
1248
1250 bool operator>(const Model &other) const
1251 {
1252 return m_value > other.m_value;
1253 }
1254
1256 bool operator<=(const Model &other) const
1257 {
1258 return m_value <= other.m_value;
1259 }
1260
1262 bool operator>=(const Model &other) const
1263 {
1264 return m_value >= other.m_value;
1265 }
1266
1268 friend std::ostream &operator<<(std::ostream &stream, const Model &value)
1269 {
1270 return stream << value.toString();
1271 }
1272
1273 private:
1274 void setFromString(const std::string &value);
1275
1276 std::string m_value{};
1277
1278 friend struct DataModel::Detail::Befriend<Model>;
1279 };
1280
1281 using Descendants = std::tuple<FrameInfo::SystemInfo::CPU::Model>;
1282
1285
1297#ifndef NO_DOC
1298 template<
1299 typename... Args,
1300 typename std::enable_if<sizeof...(Args) >= 1, int>::type = 0,
1301 typename std::enable_if<
1302 Zivid::Detail::TypeTraits::AllArgsAreInTuple<Descendants, typename std::decay<Args>::type...>::
1303 value,
1304 int>::type = 0>
1305#else
1306 template<typename... Args>
1307#endif
1308 explicit CPU(Args &&...args)
1309 {
1310 using namespace Zivid::Detail::TypeTraits;
1311
1312 static_assert(
1313 AllArgsDecayedAreUnique<Args...>::value,
1314 "Found duplicate types among the arguments passed to CPU(...). "
1315 "Types should be listed at most once.");
1316
1317 set(std::forward<Args>(args)...);
1318 }
1319
1330#ifndef NO_DOC
1331 template<typename... Args, typename std::enable_if<sizeof...(Args) >= 2, int>::type = 0>
1332#else
1333 template<typename... Args>
1334#endif
1335 void set(Args &&...args)
1336 {
1337 using namespace Zivid::Detail::TypeTraits;
1338
1339 using AllArgsAreDescendantNodes =
1340 AllArgsAreInTuple<Descendants, typename std::decay<Args>::type...>;
1341 static_assert(
1342 AllArgsAreDescendantNodes::value, "All arguments passed to set(...) must be descendant nodes.");
1343
1344 static_assert(
1345 AllArgsDecayedAreUnique<Args...>::value,
1346 "Found duplicate types among the arguments passed to set(...). "
1347 "Types should be listed at most once.");
1348
1349 Zivid::DataModel::Detail::invokeSetWithEachArgument(*this, std::forward<Args>(args)...);
1350 }
1351
1363#ifndef NO_DOC
1364 template<typename... Args, typename std::enable_if<sizeof...(Args) >= 1, int>::type = 0>
1365#else
1366 template<typename... Args>
1367#endif
1368 CPU copyWith(Args &&...args) const
1369 {
1370 using namespace Zivid::Detail::TypeTraits;
1371
1372 using AllArgsAreDescendantNodes =
1373 AllArgsAreInTuple<Descendants, typename std::decay<Args>::type...>;
1374 static_assert(
1375 AllArgsAreDescendantNodes::value,
1376 "All arguments passed to copyWith(...) must be descendant nodes.");
1377
1378 static_assert(
1379 AllArgsDecayedAreUnique<Args...>::value,
1380 "Found duplicate types among the arguments passed to copyWith(...). "
1381 "Types should be listed at most once.");
1382
1383 auto copy{ *this };
1384 copy.set(std::forward<Args>(args)...);
1385 return copy;
1386 }
1387
1389 const Model &model() const
1390 {
1391 return m_model;
1392 }
1393
1396 {
1397 return m_model;
1398 }
1399
1401 CPU &set(const Model &value)
1402 {
1403 m_model = value;
1404 return *this;
1405 }
1406
1407 template<
1408 typename T,
1409 typename std::enable_if<std::is_same<T, FrameInfo::SystemInfo::CPU::Model>::value, int>::type = 0>
1411 {
1412 return m_model;
1413 }
1414
1415 template<size_t i, typename std::enable_if<i == 0, int>::type = 0>
1417 {
1418 return m_model;
1419 }
1420
1422 template<typename F>
1423 void forEach(const F &f) const
1424 {
1425 f(m_model);
1426 }
1427
1429 template<typename F>
1430 void forEach(const F &f)
1431 {
1432 f(m_model);
1433 }
1434
1436 bool operator==(const CPU &other) const;
1437
1439 bool operator!=(const CPU &other) const;
1440
1442 std::string toString() const;
1443
1445 friend std::ostream &operator<<(std::ostream &stream, const CPU &value)
1446 {
1447 return stream << value.toString();
1448 }
1449
1450 private:
1451 void setFromString(const std::string &value);
1452
1453 void setFromString(const std::string &fullPath, const std::string &value);
1454
1455 std::string getString(const std::string &fullPath) const;
1456
1457 Model m_model;
1458
1459 friend struct DataModel::Detail::Befriend<CPU>;
1460 };
1461
1463
1464 // NOLINTNEXTLINE(clang-analyzer-optin.performance.Padding)
1466 {
1467 public:
1470
1472 static constexpr const char *path{ "SystemInfo/ComputeDevice" };
1473
1475 static constexpr const char *name{ "ComputeDevice" };
1476
1478 static constexpr const char *description{ R"description(Compute device)description" };
1479
1481
1482 // NOLINTNEXTLINE(clang-analyzer-optin.performance.Padding)
1484 {
1485 public:
1488
1490 static constexpr const char *path{ "SystemInfo/ComputeDevice/Model" };
1491
1493 static constexpr const char *name{ "Model" };
1494
1496 static constexpr const char *description{ R"description(Compute device model)description" };
1497
1499 using ValueType = std::string;
1500
1503 {
1504 return { 0, std::numeric_limits<ValueType::size_type>::max() };
1505 }
1506
1508 Model() = default;
1509
1511 explicit Model(std::string value)
1512 : m_value{ std::move(value) }
1513 {}
1514
1516 const std::string &value() const;
1517
1519 std::string toString() const;
1520
1522 bool operator==(const Model &other) const
1523 {
1524 return m_value == other.m_value;
1525 }
1526
1528 bool operator!=(const Model &other) const
1529 {
1530 return m_value != other.m_value;
1531 }
1532
1534 bool operator<(const Model &other) const
1535 {
1536 return m_value < other.m_value;
1537 }
1538
1540 bool operator>(const Model &other) const
1541 {
1542 return m_value > other.m_value;
1543 }
1544
1546 bool operator<=(const Model &other) const
1547 {
1548 return m_value <= other.m_value;
1549 }
1550
1552 bool operator>=(const Model &other) const
1553 {
1554 return m_value >= other.m_value;
1555 }
1556
1558 friend std::ostream &operator<<(std::ostream &stream, const Model &value)
1559 {
1560 return stream << value.toString();
1561 }
1562
1563 private:
1564 void setFromString(const std::string &value);
1565
1566 std::string m_value{};
1567
1568 friend struct DataModel::Detail::Befriend<Model>;
1569 };
1570
1572
1573 // NOLINTNEXTLINE(clang-analyzer-optin.performance.Padding)
1575 {
1576 public:
1579
1581 static constexpr const char *path{ "SystemInfo/ComputeDevice/Vendor" };
1582
1584 static constexpr const char *name{ "Vendor" };
1585
1587 static constexpr const char *description{ R"description(Compute device vendor)description" };
1588
1590 using ValueType = std::string;
1591
1594 {
1595 return { 0, std::numeric_limits<ValueType::size_type>::max() };
1596 }
1597
1599 Vendor() = default;
1600
1602 explicit Vendor(std::string value)
1603 : m_value{ std::move(value) }
1604 {}
1605
1607 const std::string &value() const;
1608
1610 std::string toString() const;
1611
1613 bool operator==(const Vendor &other) const
1614 {
1615 return m_value == other.m_value;
1616 }
1617
1619 bool operator!=(const Vendor &other) const
1620 {
1621 return m_value != other.m_value;
1622 }
1623
1625 bool operator<(const Vendor &other) const
1626 {
1627 return m_value < other.m_value;
1628 }
1629
1631 bool operator>(const Vendor &other) const
1632 {
1633 return m_value > other.m_value;
1634 }
1635
1637 bool operator<=(const Vendor &other) const
1638 {
1639 return m_value <= other.m_value;
1640 }
1641
1643 bool operator>=(const Vendor &other) const
1644 {
1645 return m_value >= other.m_value;
1646 }
1647
1649 friend std::ostream &operator<<(std::ostream &stream, const Vendor &value)
1650 {
1651 return stream << value.toString();
1652 }
1653
1654 private:
1655 void setFromString(const std::string &value);
1656
1657 std::string m_value{};
1658
1659 friend struct DataModel::Detail::Befriend<Vendor>;
1660 };
1661
1662 using Descendants = std::
1663 tuple<FrameInfo::SystemInfo::ComputeDevice::Model, FrameInfo::SystemInfo::ComputeDevice::Vendor>;
1664
1667
1680#ifndef NO_DOC
1681 template<
1682 typename... Args,
1683 typename std::enable_if<sizeof...(Args) >= 1, int>::type = 0,
1684 typename std::enable_if<
1685 Zivid::Detail::TypeTraits::AllArgsAreInTuple<Descendants, typename std::decay<Args>::type...>::
1686 value,
1687 int>::type = 0>
1688#else
1689 template<typename... Args>
1690#endif
1691 explicit ComputeDevice(Args &&...args)
1692 {
1693 using namespace Zivid::Detail::TypeTraits;
1694
1695 static_assert(
1696 AllArgsDecayedAreUnique<Args...>::value,
1697 "Found duplicate types among the arguments passed to ComputeDevice(...). "
1698 "Types should be listed at most once.");
1699
1700 set(std::forward<Args>(args)...);
1701 }
1702
1714#ifndef NO_DOC
1715 template<typename... Args, typename std::enable_if<sizeof...(Args) >= 2, int>::type = 0>
1716#else
1717 template<typename... Args>
1718#endif
1719 void set(Args &&...args)
1720 {
1721 using namespace Zivid::Detail::TypeTraits;
1722
1723 using AllArgsAreDescendantNodes =
1724 AllArgsAreInTuple<Descendants, typename std::decay<Args>::type...>;
1725 static_assert(
1726 AllArgsAreDescendantNodes::value, "All arguments passed to set(...) must be descendant nodes.");
1727
1728 static_assert(
1729 AllArgsDecayedAreUnique<Args...>::value,
1730 "Found duplicate types among the arguments passed to set(...). "
1731 "Types should be listed at most once.");
1732
1733 Zivid::DataModel::Detail::invokeSetWithEachArgument(*this, std::forward<Args>(args)...);
1734 }
1735
1748#ifndef NO_DOC
1749 template<typename... Args, typename std::enable_if<sizeof...(Args) >= 1, int>::type = 0>
1750#else
1751 template<typename... Args>
1752#endif
1753 ComputeDevice copyWith(Args &&...args) const
1754 {
1755 using namespace Zivid::Detail::TypeTraits;
1756
1757 using AllArgsAreDescendantNodes =
1758 AllArgsAreInTuple<Descendants, typename std::decay<Args>::type...>;
1759 static_assert(
1760 AllArgsAreDescendantNodes::value,
1761 "All arguments passed to copyWith(...) must be descendant nodes.");
1762
1763 static_assert(
1764 AllArgsDecayedAreUnique<Args...>::value,
1765 "Found duplicate types among the arguments passed to copyWith(...). "
1766 "Types should be listed at most once.");
1767
1768 auto copy{ *this };
1769 copy.set(std::forward<Args>(args)...);
1770 return copy;
1771 }
1772
1774 const Model &model() const
1775 {
1776 return m_model;
1777 }
1778
1781 {
1782 return m_model;
1783 }
1784
1786 ComputeDevice &set(const Model &value)
1787 {
1788 m_model = value;
1789 return *this;
1790 }
1791
1793 const Vendor &vendor() const
1794 {
1795 return m_vendor;
1796 }
1797
1800 {
1801 return m_vendor;
1802 }
1803
1805 ComputeDevice &set(const Vendor &value)
1806 {
1807 m_vendor = value;
1808 return *this;
1809 }
1810
1811 template<
1812 typename T,
1813 typename std::enable_if<std::is_same<T, FrameInfo::SystemInfo::ComputeDevice::Model>::value, int>::
1814 type = 0>
1816 {
1817 return m_model;
1818 }
1819
1820 template<
1821 typename T,
1822 typename std::enable_if<std::is_same<T, FrameInfo::SystemInfo::ComputeDevice::Vendor>::value, int>::
1823 type = 0>
1825 {
1826 return m_vendor;
1827 }
1828
1829 template<size_t i, typename std::enable_if<i == 0, int>::type = 0>
1831 {
1832 return m_model;
1833 }
1834
1835 template<size_t i, typename std::enable_if<i == 1, int>::type = 0>
1837 {
1838 return m_vendor;
1839 }
1840
1842 template<typename F>
1843 void forEach(const F &f) const
1844 {
1845 f(m_model);
1846 f(m_vendor);
1847 }
1848
1850 template<typename F>
1851 void forEach(const F &f)
1852 {
1853 f(m_model);
1854 f(m_vendor);
1855 }
1856
1858 bool operator==(const ComputeDevice &other) const;
1859
1861 bool operator!=(const ComputeDevice &other) const;
1862
1864 std::string toString() const;
1865
1867 friend std::ostream &operator<<(std::ostream &stream, const ComputeDevice &value)
1868 {
1869 return stream << value.toString();
1870 }
1871
1872 private:
1873 void setFromString(const std::string &value);
1874
1875 void setFromString(const std::string &fullPath, const std::string &value);
1876
1877 std::string getString(const std::string &fullPath) const;
1878
1879 Model m_model;
1880 Vendor m_vendor;
1881
1882 friend struct DataModel::Detail::Befriend<ComputeDevice>;
1883 };
1884
1886
1887 // NOLINTNEXTLINE(clang-analyzer-optin.performance.Padding)
1889 {
1890 public:
1893
1895 static constexpr const char *path{ "SystemInfo/OperatingSystem" };
1896
1898 static constexpr const char *name{ "OperatingSystem" };
1899
1901 static constexpr const char *description{ R"description(Operating system)description" };
1902
1904 using ValueType = std::string;
1905
1908 {
1909 return { 0, std::numeric_limits<ValueType::size_type>::max() };
1910 }
1911
1913 OperatingSystem() = default;
1914
1916 explicit OperatingSystem(std::string value)
1917 : m_value{ std::move(value) }
1918 {}
1919
1921 const std::string &value() const;
1922
1924 std::string toString() const;
1925
1927 bool operator==(const OperatingSystem &other) const
1928 {
1929 return m_value == other.m_value;
1930 }
1931
1933 bool operator!=(const OperatingSystem &other) const
1934 {
1935 return m_value != other.m_value;
1936 }
1937
1939 bool operator<(const OperatingSystem &other) const
1940 {
1941 return m_value < other.m_value;
1942 }
1943
1945 bool operator>(const OperatingSystem &other) const
1946 {
1947 return m_value > other.m_value;
1948 }
1949
1951 bool operator<=(const OperatingSystem &other) const
1952 {
1953 return m_value <= other.m_value;
1954 }
1955
1957 bool operator>=(const OperatingSystem &other) const
1958 {
1959 return m_value >= other.m_value;
1960 }
1961
1963 friend std::ostream &operator<<(std::ostream &stream, const OperatingSystem &value)
1964 {
1965 return stream << value.toString();
1966 }
1967
1968 private:
1969 void setFromString(const std::string &value);
1970
1971 std::string m_value{};
1972
1973 friend struct DataModel::Detail::Befriend<OperatingSystem>;
1974 };
1975
1976 using Descendants = std::tuple<
1983
1986
2003#ifndef NO_DOC
2004 template<
2005 typename... Args,
2006 typename std::enable_if<sizeof...(Args) >= 1, int>::type = 0,
2007 typename std::enable_if<
2008 Zivid::Detail::TypeTraits::AllArgsAreInTuple<Descendants, typename std::decay<Args>::type...>::
2009 value,
2010 int>::type = 0>
2011#else
2012 template<typename... Args>
2013#endif
2014 explicit SystemInfo(Args &&...args)
2015 {
2016 using namespace Zivid::Detail::TypeTraits;
2017
2018 static_assert(
2019 AllArgsDecayedAreUnique<Args...>::value,
2020 "Found duplicate types among the arguments passed to SystemInfo(...). "
2021 "Types should be listed at most once.");
2022
2023 set(std::forward<Args>(args)...);
2024 }
2025
2041#ifndef NO_DOC
2042 template<typename... Args, typename std::enable_if<sizeof...(Args) >= 2, int>::type = 0>
2043#else
2044 template<typename... Args>
2045#endif
2046 void set(Args &&...args)
2047 {
2048 using namespace Zivid::Detail::TypeTraits;
2049
2050 using AllArgsAreDescendantNodes = AllArgsAreInTuple<Descendants, typename std::decay<Args>::type...>;
2051 static_assert(
2052 AllArgsAreDescendantNodes::value, "All arguments passed to set(...) must be descendant nodes.");
2053
2054 static_assert(
2055 AllArgsDecayedAreUnique<Args...>::value,
2056 "Found duplicate types among the arguments passed to set(...). "
2057 "Types should be listed at most once.");
2058
2059 Zivid::DataModel::Detail::invokeSetWithEachArgument(*this, std::forward<Args>(args)...);
2060 }
2061
2078#ifndef NO_DOC
2079 template<typename... Args, typename std::enable_if<sizeof...(Args) >= 1, int>::type = 0>
2080#else
2081 template<typename... Args>
2082#endif
2083 SystemInfo copyWith(Args &&...args) const
2084 {
2085 using namespace Zivid::Detail::TypeTraits;
2086
2087 using AllArgsAreDescendantNodes = AllArgsAreInTuple<Descendants, typename std::decay<Args>::type...>;
2088 static_assert(
2089 AllArgsAreDescendantNodes::value,
2090 "All arguments passed to copyWith(...) must be descendant nodes.");
2091
2092 static_assert(
2093 AllArgsDecayedAreUnique<Args...>::value,
2094 "Found duplicate types among the arguments passed to copyWith(...). "
2095 "Types should be listed at most once.");
2096
2097 auto copy{ *this };
2098 copy.set(std::forward<Args>(args)...);
2099 return copy;
2100 }
2101
2103 const CPU &cpu() const
2104 {
2105 return m_cpu;
2106 }
2107
2110 {
2111 return m_cpu;
2112 }
2113
2115 SystemInfo &set(const CPU &value)
2116 {
2117 m_cpu = value;
2118 return *this;
2119 }
2120
2123 {
2124 m_cpu.set(value);
2125 return *this;
2126 }
2127
2130 {
2131 return m_computeDevice;
2132 }
2133
2136 {
2137 return m_computeDevice;
2138 }
2139
2142 {
2143 m_computeDevice = value;
2144 return *this;
2145 }
2146
2149 {
2150 m_computeDevice.set(value);
2151 return *this;
2152 }
2153
2156 {
2157 m_computeDevice.set(value);
2158 return *this;
2159 }
2160
2163 {
2164 return m_operatingSystem;
2165 }
2166
2169 {
2170 return m_operatingSystem;
2171 }
2172
2175 {
2176 m_operatingSystem = value;
2177 return *this;
2178 }
2179
2180 template<
2181 typename T,
2182 typename std::enable_if<std::is_same<T, FrameInfo::SystemInfo::CPU>::value, int>::type = 0>
2184 {
2185 return m_cpu;
2186 }
2187
2188 template<
2189 typename T,
2190 typename std::enable_if<std::is_same<T, FrameInfo::SystemInfo::CPU::Model>::value, int>::type = 0>
2192 {
2193 return m_cpu.get<FrameInfo::SystemInfo::CPU::Model>();
2194 }
2195
2196 template<
2197 typename T,
2198 typename std::enable_if<std::is_same<T, FrameInfo::SystemInfo::ComputeDevice>::value, int>::type = 0>
2200 {
2201 return m_computeDevice;
2202 }
2203
2204 template<
2205 typename T,
2206 typename std::enable_if<std::is_same<T, FrameInfo::SystemInfo::ComputeDevice::Model>::value, int>::
2207 type = 0>
2209 {
2210 return m_computeDevice.get<FrameInfo::SystemInfo::ComputeDevice::Model>();
2211 }
2212
2213 template<
2214 typename T,
2215 typename std::enable_if<std::is_same<T, FrameInfo::SystemInfo::ComputeDevice::Vendor>::value, int>::
2216 type = 0>
2218 {
2219 return m_computeDevice.get<FrameInfo::SystemInfo::ComputeDevice::Vendor>();
2220 }
2221
2222 template<
2223 typename T,
2224 typename std::enable_if<std::is_same<T, FrameInfo::SystemInfo::OperatingSystem>::value, int>::type = 0>
2226 {
2227 return m_operatingSystem;
2228 }
2229
2230 template<size_t i, typename std::enable_if<i == 0, int>::type = 0>
2232 {
2233 return m_cpu;
2234 }
2235
2236 template<size_t i, typename std::enable_if<i == 1, int>::type = 0>
2238 {
2239 return m_computeDevice;
2240 }
2241
2242 template<size_t i, typename std::enable_if<i == 2, int>::type = 0>
2244 {
2245 return m_operatingSystem;
2246 }
2247
2249 template<typename F>
2250 void forEach(const F &f) const
2251 {
2252 f(m_cpu);
2253 f(m_computeDevice);
2254 f(m_operatingSystem);
2255 }
2256
2258 template<typename F>
2259 void forEach(const F &f)
2260 {
2261 f(m_cpu);
2262 f(m_computeDevice);
2263 f(m_operatingSystem);
2264 }
2265
2267 bool operator==(const SystemInfo &other) const;
2268
2270 bool operator!=(const SystemInfo &other) const;
2271
2273 std::string toString() const;
2274
2276 friend std::ostream &operator<<(std::ostream &stream, const SystemInfo &value)
2277 {
2278 return stream << value.toString();
2279 }
2280
2281 private:
2282 void setFromString(const std::string &value);
2283
2284 void setFromString(const std::string &fullPath, const std::string &value);
2285
2286 std::string getString(const std::string &fullPath) const;
2287
2288 CPU m_cpu;
2289 ComputeDevice m_computeDevice;
2290 OperatingSystem m_operatingSystem;
2291
2292 friend struct DataModel::Detail::Befriend<SystemInfo>;
2293 };
2294
2296
2297 // NOLINTNEXTLINE(clang-analyzer-optin.performance.Padding)
2299 {
2300 public:
2303
2305 static constexpr const char *path{ "TimeStamp" };
2306
2308 static constexpr const char *name{ "TimeStamp" };
2309
2311 static constexpr const char *description{ R"description(The time of frame capture)description" };
2312
2314 using ValueType = std::chrono::system_clock::time_point;
2315
2318 {
2319 return { std::chrono::system_clock::time_point::min(), std::chrono::system_clock::time_point::max() };
2320 }
2321
2323 TimeStamp() = default;
2324
2326 explicit constexpr TimeStamp(std::chrono::system_clock::time_point value)
2327 : m_value{ value }
2328 {}
2329
2331 std::chrono::system_clock::time_point value() const;
2332
2334 std::string toString() const;
2335
2337 bool operator==(const TimeStamp &other) const
2338 {
2339 return m_value == other.m_value;
2340 }
2341
2343 bool operator!=(const TimeStamp &other) const
2344 {
2345 return m_value != other.m_value;
2346 }
2347
2349 bool operator<(const TimeStamp &other) const
2350 {
2351 return m_value < other.m_value;
2352 }
2353
2355 bool operator>(const TimeStamp &other) const
2356 {
2357 return m_value > other.m_value;
2358 }
2359
2361 bool operator<=(const TimeStamp &other) const
2362 {
2363 return m_value <= other.m_value;
2364 }
2365
2367 bool operator>=(const TimeStamp &other) const
2368 {
2369 return m_value >= other.m_value;
2370 }
2371
2373 friend std::ostream &operator<<(std::ostream &stream, const TimeStamp &value)
2374 {
2375 return stream << value.toString();
2376 }
2377
2378 private:
2379 void setFromString(const std::string &value);
2380
2381 std::chrono::system_clock::time_point m_value{};
2382
2383 friend struct DataModel::Detail::Befriend<TimeStamp>;
2384 };
2385
2386 using Descendants = std::tuple<
2402
2405
2407 explicit FrameInfo(const std::string &fileName);
2408
2414 [[nodiscard]] static FrameInfo fromSerialized(const std::string &value);
2415
2421 std::string serialize() const;
2422
2448#ifndef NO_DOC
2449 template<
2450 typename... Args,
2451 typename std::enable_if<sizeof...(Args) >= 1, int>::type = 0,
2452 typename std::enable_if<
2453 Zivid::Detail::TypeTraits::AllArgsAreInTuple<Descendants, typename std::decay<Args>::type...>::value,
2454 int>::type = 0>
2455#else
2456 template<typename... Args>
2457#endif
2458 explicit FrameInfo(Args &&...args)
2459 {
2460 using namespace Zivid::Detail::TypeTraits;
2461
2462 static_assert(
2463 AllArgsDecayedAreUnique<Args...>::value,
2464 "Found duplicate types among the arguments passed to FrameInfo(...). "
2465 "Types should be listed at most once.");
2466
2467 set(std::forward<Args>(args)...);
2468 }
2469
2494#ifndef NO_DOC
2495 template<typename... Args, typename std::enable_if<sizeof...(Args) >= 2, int>::type = 0>
2496#else
2497 template<typename... Args>
2498#endif
2499 void set(Args &&...args)
2500 {
2501 using namespace Zivid::Detail::TypeTraits;
2502
2503 using AllArgsAreDescendantNodes = AllArgsAreInTuple<Descendants, typename std::decay<Args>::type...>;
2504 static_assert(
2505 AllArgsAreDescendantNodes::value, "All arguments passed to set(...) must be descendant nodes.");
2506
2507 static_assert(
2508 AllArgsDecayedAreUnique<Args...>::value,
2509 "Found duplicate types among the arguments passed to set(...). "
2510 "Types should be listed at most once.");
2511
2512 Zivid::DataModel::Detail::invokeSetWithEachArgument(*this, std::forward<Args>(args)...);
2513 }
2514
2540#ifndef NO_DOC
2541 template<typename... Args, typename std::enable_if<sizeof...(Args) >= 1, int>::type = 0>
2542#else
2543 template<typename... Args>
2544#endif
2545 FrameInfo copyWith(Args &&...args) const
2546 {
2547 using namespace Zivid::Detail::TypeTraits;
2548
2549 using AllArgsAreDescendantNodes = AllArgsAreInTuple<Descendants, typename std::decay<Args>::type...>;
2550 static_assert(
2551 AllArgsAreDescendantNodes::value, "All arguments passed to copyWith(...) must be descendant nodes.");
2552
2553 static_assert(
2554 AllArgsDecayedAreUnique<Args...>::value,
2555 "Found duplicate types among the arguments passed to copyWith(...). "
2556 "Types should be listed at most once.");
2557
2558 auto copy{ *this };
2559 copy.set(std::forward<Args>(args)...);
2560 return copy;
2561 }
2562
2564 const Metrics &metrics() const
2565 {
2566 return m_metrics;
2567 }
2568
2571 {
2572 return m_metrics;
2573 }
2574
2576 FrameInfo &set(const Metrics &value)
2577 {
2578 m_metrics = value;
2579 return *this;
2580 }
2581
2584 {
2585 m_metrics.set(value);
2586 return *this;
2587 }
2588
2591 {
2592 m_metrics.set(value);
2593 return *this;
2594 }
2595
2598 {
2599 m_metrics.set(value);
2600 return *this;
2601 }
2602
2605 {
2606 m_metrics.set(value);
2607 return *this;
2608 }
2609
2612 {
2613 return m_softwareVersion;
2614 }
2615
2618 {
2619 return m_softwareVersion;
2620 }
2621
2624 {
2625 m_softwareVersion = value;
2626 return *this;
2627 }
2628
2631 {
2632 m_softwareVersion.set(value);
2633 return *this;
2634 }
2635
2637 const SystemInfo &systemInfo() const
2638 {
2639 return m_systemInfo;
2640 }
2641
2644 {
2645 return m_systemInfo;
2646 }
2647
2649 FrameInfo &set(const SystemInfo &value)
2650 {
2651 m_systemInfo = value;
2652 return *this;
2653 }
2654
2657 {
2658 m_systemInfo.set(value);
2659 return *this;
2660 }
2661
2664 {
2665 m_systemInfo.set(value);
2666 return *this;
2667 }
2668
2671 {
2672 m_systemInfo.set(value);
2673 return *this;
2674 }
2675
2678 {
2679 m_systemInfo.set(value);
2680 return *this;
2681 }
2682
2685 {
2686 m_systemInfo.set(value);
2687 return *this;
2688 }
2689
2692 {
2693 m_systemInfo.set(value);
2694 return *this;
2695 }
2696
2698 const TimeStamp &timeStamp() const
2699 {
2700 return m_timeStamp;
2701 }
2702
2705 {
2706 return m_timeStamp;
2707 }
2708
2710 FrameInfo &set(const TimeStamp &value)
2711 {
2712 m_timeStamp = value;
2713 return *this;
2714 }
2715
2716 template<typename T, typename std::enable_if<std::is_same<T, FrameInfo::Metrics>::value, int>::type = 0>
2718 {
2719 return m_metrics;
2720 }
2721
2722 template<
2723 typename T,
2724 typename std::enable_if<std::is_same<T, FrameInfo::Metrics::AcquisitionTime>::value, int>::type = 0>
2726 {
2727 return m_metrics.get<FrameInfo::Metrics::AcquisitionTime>();
2728 }
2729
2730 template<
2731 typename T,
2732 typename std::enable_if<std::is_same<T, FrameInfo::Metrics::CaptureTime>::value, int>::type = 0>
2734 {
2735 return m_metrics.get<FrameInfo::Metrics::CaptureTime>();
2736 }
2737
2738 template<
2739 typename T,
2740 typename std::enable_if<std::is_same<T, FrameInfo::Metrics::ReprocessingTime>::value, int>::type = 0>
2742 {
2743 return m_metrics.get<FrameInfo::Metrics::ReprocessingTime>();
2744 }
2745
2746 template<
2747 typename T,
2748 typename std::enable_if<std::is_same<T, FrameInfo::Metrics::ThrottlingTime>::value, int>::type = 0>
2750 {
2751 return m_metrics.get<FrameInfo::Metrics::ThrottlingTime>();
2752 }
2753
2754 template<typename T, typename std::enable_if<std::is_same<T, FrameInfo::SoftwareVersion>::value, int>::type = 0>
2756 {
2757 return m_softwareVersion;
2758 }
2759
2760 template<
2761 typename T,
2762 typename std::enable_if<std::is_same<T, FrameInfo::SoftwareVersion::Core>::value, int>::type = 0>
2764 {
2765 return m_softwareVersion.get<FrameInfo::SoftwareVersion::Core>();
2766 }
2767
2768 template<typename T, typename std::enable_if<std::is_same<T, FrameInfo::SystemInfo>::value, int>::type = 0>
2770 {
2771 return m_systemInfo;
2772 }
2773
2774 template<typename T, typename std::enable_if<std::is_same<T, FrameInfo::SystemInfo::CPU>::value, int>::type = 0>
2776 {
2777 return m_systemInfo.get<FrameInfo::SystemInfo::CPU>();
2778 }
2779
2780 template<
2781 typename T,
2782 typename std::enable_if<std::is_same<T, FrameInfo::SystemInfo::CPU::Model>::value, int>::type = 0>
2784 {
2785 return m_systemInfo.get<FrameInfo::SystemInfo::CPU::Model>();
2786 }
2787
2788 template<
2789 typename T,
2790 typename std::enable_if<std::is_same<T, FrameInfo::SystemInfo::ComputeDevice>::value, int>::type = 0>
2792 {
2793 return m_systemInfo.get<FrameInfo::SystemInfo::ComputeDevice>();
2794 }
2795
2796 template<
2797 typename T,
2798 typename std::enable_if<std::is_same<T, FrameInfo::SystemInfo::ComputeDevice::Model>::value, int>::type = 0>
2800 {
2801 return m_systemInfo.get<FrameInfo::SystemInfo::ComputeDevice::Model>();
2802 }
2803
2804 template<
2805 typename T,
2806 typename std::enable_if<std::is_same<T, FrameInfo::SystemInfo::ComputeDevice::Vendor>::value, int>::type =
2807 0>
2809 {
2810 return m_systemInfo.get<FrameInfo::SystemInfo::ComputeDevice::Vendor>();
2811 }
2812
2813 template<
2814 typename T,
2815 typename std::enable_if<std::is_same<T, FrameInfo::SystemInfo::OperatingSystem>::value, int>::type = 0>
2817 {
2818 return m_systemInfo.get<FrameInfo::SystemInfo::OperatingSystem>();
2819 }
2820
2821 template<typename T, typename std::enable_if<std::is_same<T, FrameInfo::TimeStamp>::value, int>::type = 0>
2823 {
2824 return m_timeStamp;
2825 }
2826
2827 template<size_t i, typename std::enable_if<i == 0, int>::type = 0>
2829 {
2830 return m_metrics;
2831 }
2832
2833 template<size_t i, typename std::enable_if<i == 1, int>::type = 0>
2835 {
2836 return m_softwareVersion;
2837 }
2838
2839 template<size_t i, typename std::enable_if<i == 2, int>::type = 0>
2841 {
2842 return m_systemInfo;
2843 }
2844
2845 template<size_t i, typename std::enable_if<i == 3, int>::type = 0>
2847 {
2848 return m_timeStamp;
2849 }
2850
2852 template<typename F>
2853 void forEach(const F &f) const
2854 {
2855 f(m_metrics);
2856 f(m_softwareVersion);
2857 f(m_systemInfo);
2858 f(m_timeStamp);
2859 }
2860
2862 template<typename F>
2863 void forEach(const F &f)
2864 {
2865 f(m_metrics);
2866 f(m_softwareVersion);
2867 f(m_systemInfo);
2868 f(m_timeStamp);
2869 }
2870
2872 bool operator==(const FrameInfo &other) const;
2873
2875 bool operator!=(const FrameInfo &other) const;
2876
2878 std::string toString() const;
2879
2881 friend std::ostream &operator<<(std::ostream &stream, const FrameInfo &value)
2882 {
2883 return stream << value.toString();
2884 }
2885
2887 void save(const std::string &fileName) const;
2888
2890 void load(const std::string &fileName);
2891
2892 private:
2893 void setFromString(const std::string &value);
2894
2895 void setFromString(const std::string &fullPath, const std::string &value);
2896
2897 std::string getString(const std::string &fullPath) const;
2898
2899 Metrics m_metrics;
2900 SoftwareVersion m_softwareVersion;
2901 SystemInfo m_systemInfo;
2902 TimeStamp m_timeStamp;
2903
2904 friend struct DataModel::Detail::Befriend<FrameInfo>;
2905 };
2906
2907#ifndef NO_DOC
2908 template<>
2909 struct FrameInfo::Version<6>
2910 {
2911 using Type = FrameInfo;
2912 };
2913#endif
2914
2915} // namespace Zivid
2916
2917#ifndef NO_DOC
2919namespace Zivid::Detail
2920{
2921
2922 ZIVID_CORE_EXPORT void save(const Zivid::FrameInfo &dataModel, std::ostream &ostream);
2923 ZIVID_CORE_EXPORT void load(Zivid::FrameInfo &dataModel, std::istream &istream);
2924
2925 ZIVID_CORE_EXPORT std::vector<uint8_t> serializeToBinaryVector(const Zivid::FrameInfo &source);
2926 ZIVID_CORE_EXPORT void deserializeFromBinaryVector(Zivid::FrameInfo &dest, const std::vector<uint8_t> &data);
2927
2928} // namespace Zivid::Detail
2929#endif
2930
2931#ifdef _MSC_VER
2932# pragma warning(pop)
2933#endif
2934
2935#ifndef NO_DOC
2936# if !(defined(_MSC_VER) && (_MSC_VER <= 1900))
2937namespace std // NOLINT
2938{
2939
2940 template<>
2941 struct tuple_size<Zivid::FrameInfo::Metrics> : integral_constant<size_t, 4>
2942 {};
2943
2944 template<size_t i>
2945 struct tuple_element<i, Zivid::FrameInfo::Metrics>
2946 {
2947 static_assert(i < tuple_size<Zivid::FrameInfo::Metrics>::value, "Index must be less than 4");
2948
2949 using type // NOLINT
2950 = decltype(declval<Zivid::FrameInfo::Metrics>().get<i>());
2951 };
2952
2953 template<>
2954 struct tuple_size<Zivid::FrameInfo::SoftwareVersion> : integral_constant<size_t, 1>
2955 {};
2956
2957 template<size_t i>
2958 struct tuple_element<i, Zivid::FrameInfo::SoftwareVersion>
2959 {
2960 static_assert(i < tuple_size<Zivid::FrameInfo::SoftwareVersion>::value, "Index must be less than 1");
2961
2962 using type // NOLINT
2963 = decltype(declval<Zivid::FrameInfo::SoftwareVersion>().get<i>());
2964 };
2965
2966 template<>
2967 struct tuple_size<Zivid::FrameInfo::SystemInfo> : integral_constant<size_t, 3>
2968 {};
2969
2970 template<size_t i>
2971 struct tuple_element<i, Zivid::FrameInfo::SystemInfo>
2972 {
2973 static_assert(i < tuple_size<Zivid::FrameInfo::SystemInfo>::value, "Index must be less than 3");
2974
2975 using type // NOLINT
2976 = decltype(declval<Zivid::FrameInfo::SystemInfo>().get<i>());
2977 };
2978
2979 template<>
2980 struct tuple_size<Zivid::FrameInfo::SystemInfo::CPU> : integral_constant<size_t, 1>
2981 {};
2982
2983 template<size_t i>
2984 struct tuple_element<i, Zivid::FrameInfo::SystemInfo::CPU>
2985 {
2986 static_assert(i < tuple_size<Zivid::FrameInfo::SystemInfo::CPU>::value, "Index must be less than 1");
2987
2988 using type // NOLINT
2989 = decltype(declval<Zivid::FrameInfo::SystemInfo::CPU>().get<i>());
2990 };
2991
2992 template<>
2993 struct tuple_size<Zivid::FrameInfo::SystemInfo::ComputeDevice> : integral_constant<size_t, 2>
2994 {};
2995
2996 template<size_t i>
2997 struct tuple_element<i, Zivid::FrameInfo::SystemInfo::ComputeDevice>
2998 {
2999 static_assert(i < tuple_size<Zivid::FrameInfo::SystemInfo::ComputeDevice>::value, "Index must be less than 2");
3000
3001 using type // NOLINT
3002 = decltype(declval<Zivid::FrameInfo::SystemInfo::ComputeDevice>().get<i>());
3003 };
3004
3005 template<>
3006 struct tuple_size<Zivid::FrameInfo> : integral_constant<size_t, 4>
3007 {};
3008
3009 template<size_t i>
3010 struct tuple_element<i, Zivid::FrameInfo>
3011 {
3012 static_assert(i < tuple_size<Zivid::FrameInfo>::value, "Index must be less than 4");
3013
3014 using type // NOLINT
3015 = decltype(declval<Zivid::FrameInfo>().get<i>());
3016 };
3017
3018} // namespace std
3019# endif
3020#endif
3021
3022// If we have access to the DataModel library, automatically include internal DataModel
3023// header. This header is necessary for serialization and deserialization.
3024#if defined(__has_include) && !defined(NO_DOC)
3025# if __has_include("Zivid/FrameInfoInternal.h") && __has_include("Zivid/DataModelNodeMetaData.h")
3026# include "Zivid/FrameInfoInternal.h"
3027# endif
3028#endif
#define ZIVID_CORE_EXPORT
Definition CoreExport.h:56
Contains information about the compute device used by Zivid::Application.
Definition ComputeDevice.h:58
Acquisition Time is the duration from the start of the capture to when the camera has acquired the la...
Definition FrameInfo.h:133
AcquisitionTime()=default
Default constructor.
bool operator<(const AcquisitionTime &other) const
Comparison operator.
Definition FrameInfo.h:189
static constexpr const char * description
The description for this value.
Definition FrameInfo.h:145
static constexpr const char * path
The full path for this value.
Definition FrameInfo.h:139
bool operator<=(const AcquisitionTime &other) const
Comparison operator.
Definition FrameInfo.h:201
std::chrono::microseconds ValueType
The type of the underlying value.
Definition FrameInfo.h:154
bool operator>=(const AcquisitionTime &other) const
Comparison operator.
Definition FrameInfo.h:207
std::chrono::microseconds value() const
Get the value.
bool operator>(const AcquisitionTime &other) const
Comparison operator.
Definition FrameInfo.h:195
static constexpr const char * name
The name of this value.
Definition FrameInfo.h:142
bool operator==(const AcquisitionTime &other) const
Comparison operator.
Definition FrameInfo.h:177
static constexpr DataModel::NodeType nodeType
The type of this node.
Definition FrameInfo.h:136
bool operator!=(const AcquisitionTime &other) const
Comparison operator.
Definition FrameInfo.h:183
constexpr AcquisitionTime(std::chrono::microseconds value)
Constructor.
Definition FrameInfo.h:166
static constexpr Range< std::chrono::microseconds > validRange()
The range of valid values for AcquisitionTime.
Definition FrameInfo.h:157
std::string toString() const
Get the value as string.
friend std::ostream & operator<<(std::ostream &stream, const AcquisitionTime &value)
Operator to serialize the value to a stream.
Definition FrameInfo.h:213
Capture Time is the duration from the start of the capture to when all of the data transfer and proce...
Definition FrameInfo.h:233
static constexpr const char * description
The description for this value.
Definition FrameInfo.h:245
constexpr CaptureTime(std::chrono::microseconds value)
Constructor.
Definition FrameInfo.h:265
static constexpr DataModel::NodeType nodeType
The type of this node.
Definition FrameInfo.h:236
std::string toString() const
Get the value as string.
CaptureTime()=default
Default constructor.
bool operator<(const CaptureTime &other) const
Comparison operator.
Definition FrameInfo.h:288
static constexpr const char * path
The full path for this value.
Definition FrameInfo.h:239
std::chrono::microseconds ValueType
The type of the underlying value.
Definition FrameInfo.h:253
static constexpr const char * name
The name of this value.
Definition FrameInfo.h:242
bool operator>(const CaptureTime &other) const
Comparison operator.
Definition FrameInfo.h:294
bool operator==(const CaptureTime &other) const
Comparison operator.
Definition FrameInfo.h:276
bool operator<=(const CaptureTime &other) const
Comparison operator.
Definition FrameInfo.h:300
bool operator>=(const CaptureTime &other) const
Comparison operator.
Definition FrameInfo.h:306
static constexpr Range< std::chrono::microseconds > validRange()
The range of valid values for CaptureTime.
Definition FrameInfo.h:256
bool operator!=(const CaptureTime &other) const
Comparison operator.
Definition FrameInfo.h:282
std::chrono::microseconds value() const
Get the value.
friend std::ostream & operator<<(std::ostream &stream, const CaptureTime &value)
Operator to serialize the value to a stream.
Definition FrameInfo.h:312
Reprocessing re-runs the entire processing pipeline (including filters, color balance etc....
Definition FrameInfo.h:344
bool operator<(const ReprocessingTime &other) const
Comparison operator.
Definition FrameInfo.h:420
constexpr ReprocessingTime(std::chrono::microseconds value)
Constructor.
Definition FrameInfo.h:388
static constexpr Range< std::chrono::microseconds > validRange()
The range of valid values for ReprocessingTime.
Definition FrameInfo.h:379
bool operator>=(const ReprocessingTime &other) const
Comparison operator.
Definition FrameInfo.h:438
bool hasValue() const
Check if the value is set.
static constexpr const char * description
The description for this value.
Definition FrameInfo.h:356
static constexpr const char * path
The full path for this value.
Definition FrameInfo.h:350
bool operator>(const ReprocessingTime &other) const
Comparison operator.
Definition FrameInfo.h:426
std::string toString() const
Get the value as string.
void reset()
Reset the node to unset state.
static constexpr const char * name
The name of this value.
Definition FrameInfo.h:353
static constexpr DataModel::NodeType nodeType
The type of this node.
Definition FrameInfo.h:347
std::chrono::microseconds value() const
Get the value.
bool operator<=(const ReprocessingTime &other) const
Comparison operator.
Definition FrameInfo.h:432
friend std::ostream & operator<<(std::ostream &stream, const ReprocessingTime &value)
Operator to serialize the value to a stream.
Definition FrameInfo.h:444
std::chrono::microseconds ValueType
The type of the underlying value.
Definition FrameInfo.h:376
bool operator==(const ReprocessingTime &other) const
Comparison operator.
Definition FrameInfo.h:408
ReprocessingTime()=default
Default constructor.
bool operator!=(const ReprocessingTime &other) const
Comparison operator.
Definition FrameInfo.h:414
Throttling Time is the duration that the capture was paused due to thermal or other constraints on th...
Definition FrameInfo.h:467
ThrottlingTime()=default
Default constructor.
static constexpr DataModel::NodeType nodeType
The type of this node.
Definition FrameInfo.h:470
static constexpr const char * path
The full path for this value.
Definition FrameInfo.h:473
static constexpr const char * description
The description for this value.
Definition FrameInfo.h:479
static constexpr const char * name
The name of this value.
Definition FrameInfo.h:476
bool operator==(const ThrottlingTime &other) const
Comparison operator.
Definition FrameInfo.h:513
static constexpr Range< std::chrono::microseconds > validRange()
The range of valid values for ThrottlingTime.
Definition FrameInfo.h:493
bool operator<=(const ThrottlingTime &other) const
Comparison operator.
Definition FrameInfo.h:537
std::chrono::microseconds ValueType
The type of the underlying value.
Definition FrameInfo.h:490
bool operator<(const ThrottlingTime &other) const
Comparison operator.
Definition FrameInfo.h:525
constexpr ThrottlingTime(std::chrono::microseconds value)
Constructor.
Definition FrameInfo.h:502
friend std::ostream & operator<<(std::ostream &stream, const ThrottlingTime &value)
Operator to serialize the value to a stream.
Definition FrameInfo.h:549
bool operator>(const ThrottlingTime &other) const
Comparison operator.
Definition FrameInfo.h:531
std::chrono::microseconds value() const
Get the value.
std::string toString() const
Get the value as string.
bool operator>=(const ThrottlingTime &other) const
Comparison operator.
Definition FrameInfo.h:543
bool operator!=(const ThrottlingTime &other) const
Comparison operator.
Definition FrameInfo.h:519
Metrics related to this capture.
Definition FrameInfo.h:111
const FrameInfo::Metrics::ThrottlingTime & get() const
Definition FrameInfo.h:783
static constexpr const char * name
The name of this value.
Definition FrameInfo.h:120
const ThrottlingTime & throttlingTime() const
Get ThrottlingTime.
Definition FrameInfo.h:738
friend std::ostream & operator<<(std::ostream &stream, const Metrics &value)
Operator to send the value as string to a stream.
Definition FrameInfo.h:842
bool operator!=(const Metrics &other) const
Inequality operator.
static constexpr const char * description
The description for this value.
Definition FrameInfo.h:123
Metrics()
Default constructor.
std::tuple< FrameInfo::Metrics::AcquisitionTime, FrameInfo::Metrics::CaptureTime, FrameInfo::Metrics::ReprocessingTime, FrameInfo::Metrics::ThrottlingTime > Descendants
Definition FrameInfo.h:562
static constexpr DataModel::NodeType nodeType
The type of this node.
Definition FrameInfo.h:114
const FrameInfo::Metrics::ReprocessingTime & get() const
Definition FrameInfo.h:775
void forEach(const F &f) const
Run the given function on each direct member with the value of the member as parameter.
Definition FrameInfo.h:814
Metrics copyWith(Args &&...args) const
Returns a copy of this object with the given argument(s) set to the new value(s)
Definition FrameInfo.h:661
const CaptureTime & captureTime() const
Get CaptureTime.
Definition FrameInfo.h:700
void forEach(const F &f)
Run the given function on each direct member with the value of the member as parameter.
Definition FrameInfo.h:824
CaptureTime & captureTime()
Get CaptureTime.
Definition FrameInfo.h:706
static constexpr const char * path
The full path for this value.
Definition FrameInfo.h:117
void set(Args &&...args)
Set multiple arguments.
Definition FrameInfo.h:626
Metrics & set(const CaptureTime &value)
Set CaptureTime.
Definition FrameInfo.h:712
const AcquisitionTime & acquisitionTime() const
Get AcquisitionTime.
Definition FrameInfo.h:681
const ReprocessingTime & reprocessingTime() const
Get ReprocessingTime.
Definition FrameInfo.h:719
const FrameInfo::Metrics::CaptureTime & get() const
Definition FrameInfo.h:767
Metrics & set(const ThrottlingTime &value)
Set ThrottlingTime.
Definition FrameInfo.h:750
AcquisitionTime & acquisitionTime()
Get AcquisitionTime.
Definition FrameInfo.h:687
ThrottlingTime & throttlingTime()
Get ThrottlingTime.
Definition FrameInfo.h:744
std::string toString() const
Get the value as string.
Metrics & set(const AcquisitionTime &value)
Set AcquisitionTime.
Definition FrameInfo.h:693
Metrics & set(const ReprocessingTime &value)
Set ReprocessingTime.
Definition FrameInfo.h:731
bool operator==(const Metrics &other) const
Equality operator.
ReprocessingTime & reprocessingTime()
Get ReprocessingTime.
Definition FrameInfo.h:725
const FrameInfo::Metrics::AcquisitionTime & get() const
Definition FrameInfo.h:759
Core version.
Definition FrameInfo.h:886
std::string toString() const
Get the value as string.
bool operator>=(const Core &other) const
Comparison operator.
Definition FrameInfo.h:954
static constexpr const char * path
The full path for this value.
Definition FrameInfo.h:892
const std::string & value() const
Get the value.
static constexpr const char * description
The description for this value.
Definition FrameInfo.h:898
bool operator!=(const Core &other) const
Comparison operator.
Definition FrameInfo.h:930
Core(std::string value)
Constructor.
Definition FrameInfo.h:913
static constexpr DataModel::NodeType nodeType
The type of this node.
Definition FrameInfo.h:889
bool operator==(const Core &other) const
Comparison operator.
Definition FrameInfo.h:924
Core()=default
Default constructor.
bool operator>(const Core &other) const
Comparison operator.
Definition FrameInfo.h:942
bool operator<(const Core &other) const
Comparison operator.
Definition FrameInfo.h:936
friend std::ostream & operator<<(std::ostream &stream, const Core &value)
Operator to serialize the value to a stream.
Definition FrameInfo.h:960
bool operator<=(const Core &other) const
Comparison operator.
Definition FrameInfo.h:948
std::string ValueType
The type of the underlying value.
Definition FrameInfo.h:901
static constexpr const char * name
The name of this value.
Definition FrameInfo.h:895
static constexpr Range< ValueType::size_type > validSize()
The valid sizes for Core.
Definition FrameInfo.h:904
The version information for installed software at the time of image capture.
Definition FrameInfo.h:866
const Core & core() const
Get Core.
Definition FrameInfo.h:1079
friend std::ostream & operator<<(std::ostream &stream, const SoftwareVersion &value)
Operator to send the value as string to a stream.
Definition FrameInfo.h:1135
bool operator!=(const SoftwareVersion &other) const
Inequality operator.
bool operator==(const SoftwareVersion &other) const
Equality operator.
void forEach(const F &f)
Run the given function on each direct member with the value of the member as parameter.
Definition FrameInfo.h:1120
static constexpr const char * name
The name of this value.
Definition FrameInfo.h:875
SoftwareVersion()
Default constructor.
const FrameInfo::SoftwareVersion::Core & get() const
Definition FrameInfo.h:1100
SoftwareVersion copyWith(Args &&...args) const
Returns a copy of this object with the given argument(s) set to the new value(s)
Definition FrameInfo.h:1059
Core & core()
Get Core.
Definition FrameInfo.h:1085
void forEach(const F &f) const
Run the given function on each direct member with the value of the member as parameter.
Definition FrameInfo.h:1113
static constexpr const char * description
The description for this value.
Definition FrameInfo.h:878
static constexpr DataModel::NodeType nodeType
The type of this node.
Definition FrameInfo.h:869
static constexpr const char * path
The full path for this value.
Definition FrameInfo.h:872
void set(Args &&...args)
Set multiple arguments.
Definition FrameInfo.h:1027
std::tuple< FrameInfo::SoftwareVersion::Core > Descendants
Definition FrameInfo.h:973
SoftwareVersion & set(const Core &value)
Set Core.
Definition FrameInfo.h:1091
std::string toString() const
Get the value as string.
CPU model.
Definition FrameInfo.h:1194
static constexpr const char * name
The name of this value.
Definition FrameInfo.h:1203
static constexpr DataModel::NodeType nodeType
The type of this node.
Definition FrameInfo.h:1197
const std::string & value() const
Get the value.
bool operator!=(const Model &other) const
Comparison operator.
Definition FrameInfo.h:1238
Model()=default
Default constructor.
bool operator<(const Model &other) const
Comparison operator.
Definition FrameInfo.h:1244
std::string toString() const
Get the value as string.
static constexpr const char * description
The description for this value.
Definition FrameInfo.h:1206
bool operator==(const Model &other) const
Comparison operator.
Definition FrameInfo.h:1232
static constexpr const char * path
The full path for this value.
Definition FrameInfo.h:1200
bool operator>=(const Model &other) const
Comparison operator.
Definition FrameInfo.h:1262
friend std::ostream & operator<<(std::ostream &stream, const Model &value)
Operator to serialize the value to a stream.
Definition FrameInfo.h:1268
bool operator<=(const Model &other) const
Comparison operator.
Definition FrameInfo.h:1256
static constexpr Range< ValueType::size_type > validSize()
The valid sizes for Model.
Definition FrameInfo.h:1212
std::string ValueType
The type of the underlying value.
Definition FrameInfo.h:1209
Model(std::string value)
Constructor.
Definition FrameInfo.h:1221
bool operator>(const Model &other) const
Comparison operator.
Definition FrameInfo.h:1250
CPU.
Definition FrameInfo.h:1176
static constexpr const char * path
The full path for this value.
Definition FrameInfo.h:1182
void forEach(const F &f)
Run the given function on each direct member with the value of the member as parameter.
Definition FrameInfo.h:1430
const Model & model() const
Get Model.
Definition FrameInfo.h:1389
static constexpr const char * description
The description for this value.
Definition FrameInfo.h:1188
std::tuple< FrameInfo::SystemInfo::CPU::Model > Descendants
Definition FrameInfo.h:1281
void forEach(const F &f) const
Run the given function on each direct member with the value of the member as parameter.
Definition FrameInfo.h:1423
bool operator!=(const CPU &other) const
Inequality operator.
std::string toString() const
Get the value as string.
bool operator==(const CPU &other) const
Equality operator.
friend std::ostream & operator<<(std::ostream &stream, const CPU &value)
Operator to send the value as string to a stream.
Definition FrameInfo.h:1445
CPU & set(const Model &value)
Set Model.
Definition FrameInfo.h:1401
void set(Args &&...args)
Set multiple arguments.
Definition FrameInfo.h:1335
static constexpr DataModel::NodeType nodeType
The type of this node.
Definition FrameInfo.h:1179
CPU copyWith(Args &&...args) const
Returns a copy of this object with the given argument(s) set to the new value(s)
Definition FrameInfo.h:1368
Model & model()
Get Model.
Definition FrameInfo.h:1395
const FrameInfo::SystemInfo::CPU::Model & get() const
Definition FrameInfo.h:1410
static constexpr const char * name
The name of this value.
Definition FrameInfo.h:1185
Compute device model.
Definition FrameInfo.h:1484
static constexpr Range< ValueType::size_type > validSize()
The valid sizes for Model.
Definition FrameInfo.h:1502
static constexpr const char * description
The description for this value.
Definition FrameInfo.h:1496
std::string toString() const
Get the value as string.
bool operator<=(const Model &other) const
Comparison operator.
Definition FrameInfo.h:1546
Model(std::string value)
Constructor.
Definition FrameInfo.h:1511
std::string ValueType
The type of the underlying value.
Definition FrameInfo.h:1499
const std::string & value() const
Get the value.
bool operator==(const Model &other) const
Comparison operator.
Definition FrameInfo.h:1522
bool operator!=(const Model &other) const
Comparison operator.
Definition FrameInfo.h:1528
bool operator>=(const Model &other) const
Comparison operator.
Definition FrameInfo.h:1552
static constexpr DataModel::NodeType nodeType
The type of this node.
Definition FrameInfo.h:1487
bool operator>(const Model &other) const
Comparison operator.
Definition FrameInfo.h:1540
static constexpr const char * name
The name of this value.
Definition FrameInfo.h:1493
friend std::ostream & operator<<(std::ostream &stream, const Model &value)
Operator to serialize the value to a stream.
Definition FrameInfo.h:1558
static constexpr const char * path
The full path for this value.
Definition FrameInfo.h:1490
bool operator<(const Model &other) const
Comparison operator.
Definition FrameInfo.h:1534
Compute device vendor.
Definition FrameInfo.h:1575
static constexpr const char * path
The full path for this value.
Definition FrameInfo.h:1581
static constexpr DataModel::NodeType nodeType
The type of this node.
Definition FrameInfo.h:1578
bool operator>(const Vendor &other) const
Comparison operator.
Definition FrameInfo.h:1631
static constexpr Range< ValueType::size_type > validSize()
The valid sizes for Vendor.
Definition FrameInfo.h:1593
friend std::ostream & operator<<(std::ostream &stream, const Vendor &value)
Operator to serialize the value to a stream.
Definition FrameInfo.h:1649
bool operator>=(const Vendor &other) const
Comparison operator.
Definition FrameInfo.h:1643
bool operator<(const Vendor &other) const
Comparison operator.
Definition FrameInfo.h:1625
bool operator==(const Vendor &other) const
Comparison operator.
Definition FrameInfo.h:1613
std::string ValueType
The type of the underlying value.
Definition FrameInfo.h:1590
static constexpr const char * name
The name of this value.
Definition FrameInfo.h:1584
static constexpr const char * description
The description for this value.
Definition FrameInfo.h:1587
std::string toString() const
Get the value as string.
bool operator<=(const Vendor &other) const
Comparison operator.
Definition FrameInfo.h:1637
const std::string & value() const
Get the value.
bool operator!=(const Vendor &other) const
Comparison operator.
Definition FrameInfo.h:1619
Vendor(std::string value)
Constructor.
Definition FrameInfo.h:1602
Compute device.
Definition FrameInfo.h:1466
static constexpr const char * name
The name of this value.
Definition FrameInfo.h:1475
void set(Args &&...args)
Set multiple arguments.
Definition FrameInfo.h:1719
ComputeDevice & set(const Model &value)
Set Model.
Definition FrameInfo.h:1786
void forEach(const F &f) const
Run the given function on each direct member with the value of the member as parameter.
Definition FrameInfo.h:1843
const Vendor & vendor() const
Get Vendor.
Definition FrameInfo.h:1793
std:: tuple< FrameInfo::SystemInfo::ComputeDevice::Model, FrameInfo::SystemInfo::ComputeDevice::Vendor > Descendants
Definition FrameInfo.h:1662
void forEach(const F &f)
Run the given function on each direct member with the value of the member as parameter.
Definition FrameInfo.h:1851
Model & model()
Get Model.
Definition FrameInfo.h:1780
Vendor & vendor()
Get Vendor.
Definition FrameInfo.h:1799
bool operator==(const ComputeDevice &other) const
Equality operator.
const FrameInfo::SystemInfo::ComputeDevice::Vendor & get() const
Definition FrameInfo.h:1824
static constexpr const char * description
The description for this value.
Definition FrameInfo.h:1478
const Model & model() const
Get Model.
Definition FrameInfo.h:1774
friend std::ostream & operator<<(std::ostream &stream, const ComputeDevice &value)
Operator to send the value as string to a stream.
Definition FrameInfo.h:1867
bool operator!=(const ComputeDevice &other) const
Inequality operator.
std::string toString() const
Get the value as string.
ComputeDevice & set(const Vendor &value)
Set Vendor.
Definition FrameInfo.h:1805
ComputeDevice copyWith(Args &&...args) const
Returns a copy of this object with the given argument(s) set to the new value(s)
Definition FrameInfo.h:1753
static constexpr DataModel::NodeType nodeType
The type of this node.
Definition FrameInfo.h:1469
const FrameInfo::SystemInfo::ComputeDevice::Model & get() const
Definition FrameInfo.h:1815
static constexpr const char * path
The full path for this value.
Definition FrameInfo.h:1472
Operating system.
Definition FrameInfo.h:1889
bool operator>(const OperatingSystem &other) const
Comparison operator.
Definition FrameInfo.h:1945
OperatingSystem(std::string value)
Constructor.
Definition FrameInfo.h:1916
bool operator!=(const OperatingSystem &other) const
Comparison operator.
Definition FrameInfo.h:1933
bool operator<(const OperatingSystem &other) const
Comparison operator.
Definition FrameInfo.h:1939
bool operator>=(const OperatingSystem &other) const
Comparison operator.
Definition FrameInfo.h:1957
bool operator==(const OperatingSystem &other) const
Comparison operator.
Definition FrameInfo.h:1927
std::string ValueType
The type of the underlying value.
Definition FrameInfo.h:1904
OperatingSystem()=default
Default constructor.
static constexpr const char * name
The name of this value.
Definition FrameInfo.h:1898
bool operator<=(const OperatingSystem &other) const
Comparison operator.
Definition FrameInfo.h:1951
static constexpr const char * description
The description for this value.
Definition FrameInfo.h:1901
static constexpr DataModel::NodeType nodeType
The type of this node.
Definition FrameInfo.h:1892
const std::string & value() const
Get the value.
static constexpr const char * path
The full path for this value.
Definition FrameInfo.h:1895
friend std::ostream & operator<<(std::ostream &stream, const OperatingSystem &value)
Operator to serialize the value to a stream.
Definition FrameInfo.h:1963
std::string toString() const
Get the value as string.
static constexpr Range< ValueType::size_type > validSize()
The valid sizes for OperatingSystem.
Definition FrameInfo.h:1907
Information about the system that captured this frame.
Definition FrameInfo.h:1156
SystemInfo & set(const CPU::Model &value)
Set CPU::Model.
Definition FrameInfo.h:2122
static constexpr const char * description
The description for this value.
Definition FrameInfo.h:1168
std::string toString() const
Get the value as string.
const FrameInfo::SystemInfo::CPU & get() const
Definition FrameInfo.h:2183
void forEach(const F &f) const
Run the given function on each direct member with the value of the member as parameter.
Definition FrameInfo.h:2250
ComputeDevice & computeDevice()
Get ComputeDevice.
Definition FrameInfo.h:2135
SystemInfo & set(const ComputeDevice &value)
Set ComputeDevice.
Definition FrameInfo.h:2141
const FrameInfo::SystemInfo::ComputeDevice::Vendor & get() const
Definition FrameInfo.h:2217
SystemInfo & set(const CPU &value)
Set CPU.
Definition FrameInfo.h:2115
bool operator==(const SystemInfo &other) const
Equality operator.
void set(Args &&...args)
Set multiple arguments.
Definition FrameInfo.h:2046
friend std::ostream & operator<<(std::ostream &stream, const SystemInfo &value)
Operator to send the value as string to a stream.
Definition FrameInfo.h:2276
static constexpr const char * name
The name of this value.
Definition FrameInfo.h:1165
const ComputeDevice & computeDevice() const
Get ComputeDevice.
Definition FrameInfo.h:2129
void forEach(const F &f)
Run the given function on each direct member with the value of the member as parameter.
Definition FrameInfo.h:2259
SystemInfo & set(const ComputeDevice::Vendor &value)
Set ComputeDevice::Vendor.
Definition FrameInfo.h:2155
SystemInfo & set(const OperatingSystem &value)
Set OperatingSystem.
Definition FrameInfo.h:2174
SystemInfo copyWith(Args &&...args) const
Returns a copy of this object with the given argument(s) set to the new value(s)
Definition FrameInfo.h:2083
bool operator!=(const SystemInfo &other) const
Inequality operator.
SystemInfo & set(const ComputeDevice::Model &value)
Set ComputeDevice::Model.
Definition FrameInfo.h:2148
const FrameInfo::SystemInfo::OperatingSystem & get() const
Definition FrameInfo.h:2225
CPU & cpu()
Get CPU.
Definition FrameInfo.h:2109
const FrameInfo::SystemInfo::ComputeDevice & get() const
Definition FrameInfo.h:2199
const OperatingSystem & operatingSystem() const
Get OperatingSystem.
Definition FrameInfo.h:2162
OperatingSystem & operatingSystem()
Get OperatingSystem.
Definition FrameInfo.h:2168
SystemInfo()
Default constructor.
const CPU & cpu() const
Get CPU.
Definition FrameInfo.h:2103
const FrameInfo::SystemInfo::ComputeDevice::Model & get() const
Definition FrameInfo.h:2208
std::tuple< FrameInfo::SystemInfo::CPU, FrameInfo::SystemInfo::CPU::Model, FrameInfo::SystemInfo::ComputeDevice, FrameInfo::SystemInfo::ComputeDevice::Model, FrameInfo::SystemInfo::ComputeDevice::Vendor, FrameInfo::SystemInfo::OperatingSystem > Descendants
Definition FrameInfo.h:1976
static constexpr DataModel::NodeType nodeType
The type of this node.
Definition FrameInfo.h:1159
const FrameInfo::SystemInfo::CPU::Model & get() const
Definition FrameInfo.h:2191
static constexpr const char * path
The full path for this value.
Definition FrameInfo.h:1162
The time of frame capture.
Definition FrameInfo.h:2299
std::chrono::system_clock::time_point value() const
Get the value.
static constexpr const char * name
The name of this value.
Definition FrameInfo.h:2308
bool operator>(const TimeStamp &other) const
Comparison operator.
Definition FrameInfo.h:2355
bool operator<(const TimeStamp &other) const
Comparison operator.
Definition FrameInfo.h:2349
bool operator<=(const TimeStamp &other) const
Comparison operator.
Definition FrameInfo.h:2361
static constexpr Range< std::chrono::system_clock::time_point > validRange()
The range of valid values for TimeStamp.
Definition FrameInfo.h:2317
bool operator>=(const TimeStamp &other) const
Comparison operator.
Definition FrameInfo.h:2367
static constexpr const char * description
The description for this value.
Definition FrameInfo.h:2311
std::string toString() const
Get the value as string.
friend std::ostream & operator<<(std::ostream &stream, const TimeStamp &value)
Operator to serialize the value to a stream.
Definition FrameInfo.h:2373
TimeStamp()=default
Default constructor.
constexpr TimeStamp(std::chrono::system_clock::time_point value)
Constructor.
Definition FrameInfo.h:2326
static constexpr const char * path
The full path for this value.
Definition FrameInfo.h:2305
bool operator!=(const TimeStamp &other) const
Comparison operator.
Definition FrameInfo.h:2343
bool operator==(const TimeStamp &other) const
Comparison operator.
Definition FrameInfo.h:2337
static constexpr DataModel::NodeType nodeType
The type of this node.
Definition FrameInfo.h:2302
std::chrono::system_clock::time_point ValueType
The type of the underlying value.
Definition FrameInfo.h:2314
Various information for a frame.
Definition FrameInfo.h:79
const FrameInfo::Metrics::ReprocessingTime & get() const
Definition FrameInfo.h:2741
TimeStamp & timeStamp()
Get TimeStamp.
Definition FrameInfo.h:2704
const FrameInfo::Metrics::ThrottlingTime & get() const
Definition FrameInfo.h:2749
std::string toString() const
Get the value as string.
Metrics & metrics()
Get Metrics.
Definition FrameInfo.h:2570
void forEach(const F &f) const
Run the given function on each direct member with the value of the member as parameter.
Definition FrameInfo.h:2853
const FrameInfo::SoftwareVersion::Core & get() const
Definition FrameInfo.h:2763
const FrameInfo::Metrics & get() const
Definition FrameInfo.h:2717
const FrameInfo::Metrics::CaptureTime & get() const
Definition FrameInfo.h:2733
FrameInfo & set(const SystemInfo::ComputeDevice &value)
Set SystemInfo::ComputeDevice.
Definition FrameInfo.h:2670
FrameInfo()
Default constructor.
std::tuple< FrameInfo::Metrics, FrameInfo::Metrics::AcquisitionTime, FrameInfo::Metrics::CaptureTime, FrameInfo::Metrics::ReprocessingTime, FrameInfo::Metrics::ThrottlingTime, FrameInfo::SoftwareVersion, FrameInfo::SoftwareVersion::Core, FrameInfo::SystemInfo, FrameInfo::SystemInfo::CPU, FrameInfo::SystemInfo::CPU::Model, FrameInfo::SystemInfo::ComputeDevice, FrameInfo::SystemInfo::ComputeDevice::Model, FrameInfo::SystemInfo::ComputeDevice::Vendor, FrameInfo::SystemInfo::OperatingSystem, FrameInfo::TimeStamp > Descendants
Definition FrameInfo.h:2386
FrameInfo & set(const Metrics::ThrottlingTime &value)
Set Metrics::ThrottlingTime.
Definition FrameInfo.h:2604
static constexpr DataModel::NodeType nodeType
The type of this node.
Definition FrameInfo.h:82
void set(Args &&...args)
Set multiple arguments.
Definition FrameInfo.h:2499
const FrameInfo::SystemInfo::ComputeDevice::Model & get() const
Definition FrameInfo.h:2799
const FrameInfo::Metrics::AcquisitionTime & get() const
Definition FrameInfo.h:2725
FrameInfo & set(const SystemInfo::OperatingSystem &value)
Set SystemInfo::OperatingSystem.
Definition FrameInfo.h:2691
static constexpr const char * path
The full path for this value.
Definition FrameInfo.h:85
void save(const std::string &fileName) const
Save to the given file.
const SystemInfo & systemInfo() const
Get SystemInfo.
Definition FrameInfo.h:2637
FrameInfo & set(const Metrics::CaptureTime &value)
Set Metrics::CaptureTime.
Definition FrameInfo.h:2590
FrameInfo & set(const SystemInfo &value)
Set SystemInfo.
Definition FrameInfo.h:2649
const TimeStamp & timeStamp() const
Get TimeStamp.
Definition FrameInfo.h:2698
SoftwareVersion & softwareVersion()
Get SoftwareVersion.
Definition FrameInfo.h:2617
FrameInfo(const std::string &fileName)
Construct FrameInfo by loading from file.
std::string serialize() const
Serialize to a string.
FrameInfo & set(const SystemInfo::ComputeDevice::Vendor &value)
Set SystemInfo::ComputeDevice::Vendor.
Definition FrameInfo.h:2684
const FrameInfo::SoftwareVersion & get() const
Definition FrameInfo.h:2755
friend std::ostream & operator<<(std::ostream &stream, const FrameInfo &value)
Operator to send the value as string to a stream.
Definition FrameInfo.h:2881
FrameInfo & set(const TimeStamp &value)
Set TimeStamp.
Definition FrameInfo.h:2710
FrameInfo(Args &&...args)
Constructor taking variadic number of arguments.
Definition FrameInfo.h:2458
static constexpr const char * name
The name of this value.
Definition FrameInfo.h:88
const FrameInfo::TimeStamp & get() const
Definition FrameInfo.h:2822
const SoftwareVersion & softwareVersion() const
Get SoftwareVersion.
Definition FrameInfo.h:2611
FrameInfo & set(const SystemInfo::CPU::Model &value)
Set SystemInfo::CPU::Model.
Definition FrameInfo.h:2663
static FrameInfo fromSerialized(const std::string &value)
Construct a new FrameInfo instance from a previously serialized string.
FrameInfo & set(const SystemInfo::ComputeDevice::Model &value)
Set SystemInfo::ComputeDevice::Model.
Definition FrameInfo.h:2677
const FrameInfo::SystemInfo::CPU::Model & get() const
Definition FrameInfo.h:2783
const FrameInfo::SystemInfo::ComputeDevice::Vendor & get() const
Definition FrameInfo.h:2808
FrameInfo & set(const SoftwareVersion &value)
Set SoftwareVersion.
Definition FrameInfo.h:2623
const FrameInfo::SystemInfo & get() const
Definition FrameInfo.h:2769
FrameInfo & set(const Metrics::ReprocessingTime &value)
Set Metrics::ReprocessingTime.
Definition FrameInfo.h:2597
static constexpr const char * description
The description for this value.
Definition FrameInfo.h:91
const FrameInfo::SystemInfo::ComputeDevice & get() const
Definition FrameInfo.h:2791
FrameInfo & set(const SoftwareVersion::Core &value)
Set SoftwareVersion::Core.
Definition FrameInfo.h:2630
static constexpr size_t version
Definition FrameInfo.h:93
SystemInfo & systemInfo()
Get SystemInfo.
Definition FrameInfo.h:2643
bool operator!=(const FrameInfo &other) const
Inequality operator.
void forEach(const F &f)
Run the given function on each direct member with the value of the member as parameter.
Definition FrameInfo.h:2863
FrameInfo & set(const Metrics::AcquisitionTime &value)
Set Metrics::AcquisitionTime.
Definition FrameInfo.h:2583
bool operator==(const FrameInfo &other) const
Equality operator.
FrameInfo & set(const SystemInfo::CPU &value)
Set SystemInfo::CPU.
Definition FrameInfo.h:2656
const FrameInfo::SystemInfo::CPU & get() const
Definition FrameInfo.h:2775
void load(const std::string &fileName)
Load from the given file.
FrameInfo copyWith(Args &&...args) const
Returns a copy of this object with the given argument(s) set to the new value(s)
Definition FrameInfo.h:2545
FrameInfo & set(const Metrics &value)
Set Metrics.
Definition FrameInfo.h:2576
const Metrics & metrics() const
Get Metrics.
Definition FrameInfo.h:2564
const FrameInfo::SystemInfo::OperatingSystem & get() const
Definition FrameInfo.h:2816
Class describing a range of values for a given type T.
Definition Range.h:75
NodeType
Definition NodeType.h:49
@ leafValue
Definition NodeType.h:52
@ group
Definition NodeType.h:50
Definition EnvironmentInfo.h:74
Get version information for the library.
Definition Version.h:58
The main Zivid namespace. All Zivid code is found here.
Definition Application.h:84