68# pragma warning(disable : 4251)
84 static constexpr const char *
path{
"" };
87 static constexpr const char *
name{
"Frame2DStreamStatistics" };
91 R
"description(Streaming performance statistics for Frame2DGrabber.)description"
104 static constexpr std::array<uint8_t, 3> binaryId{
'f',
'2',
's' };
118 static constexpr const char *
path{
"AverageGrabInterval" };
121 static constexpr const char *
name{
"AverageGrabInterval" };
125 R
"description(Average interval between successfully grabbed streamed frames.)description"
134 return { std::chrono::microseconds::min(), std::chrono::microseconds::max() };
146 std::chrono::microseconds
value()
const;
154 return m_value == other.m_value;
160 return m_value != other.m_value;
166 return m_value < other.m_value;
172 return m_value > other.m_value;
178 return m_value <= other.m_value;
184 return m_value >= other.m_value;
190 return stream <<
value.toString();
194 void setFromString(
const std::string &value);
196 std::chrono::microseconds m_value{ -1 };
211 static constexpr const char *
path{
"AverageGrabRateHz" };
214 static constexpr const char *
name{
"AverageGrabRateHz" };
218 R
"description(Average rate of successfully grabbed streamed frames in frames per second.)description"
227 return { std::numeric_limits<double>::lowest(), std::numeric_limits<double>::max() };
247 return m_value == other.m_value;
253 return m_value != other.m_value;
259 return m_value < other.m_value;
265 return m_value > other.m_value;
271 return m_value <= other.m_value;
277 return m_value >= other.m_value;
283 return stream <<
value.toString();
287 void setFromString(
const std::string &value);
289 double m_value{ 0.0 };
304 static constexpr const char *
path{
"KernelComputeTime" };
307 static constexpr const char *
name{
"KernelComputeTime" };
311 R
"description(Average kernel compute time on the GPU per streamed frame.)description"
320 return { std::chrono::microseconds::min(), std::chrono::microseconds::max() };
332 std::chrono::microseconds
value()
const;
340 return m_value == other.m_value;
346 return m_value != other.m_value;
352 return m_value < other.m_value;
358 return m_value > other.m_value;
364 return m_value <= other.m_value;
370 return m_value >= other.m_value;
376 return stream <<
value.toString();
380 void setFromString(
const std::string &value);
382 std::chrono::microseconds m_value{ -1 };
397 static constexpr const char *
path{
"NumberOfFramesUsedForStatistics" };
400 static constexpr const char *
name{
"NumberOfFramesUsedForStatistics" };
404 R
"description(Number of streamed frames included in the stream-level averages.)description"
413 return { std::numeric_limits<uint64_t>::lowest(), std::numeric_limits<uint64_t>::max() };
433 return m_value == other.m_value;
439 return m_value != other.m_value;
445 return m_value < other.m_value;
451 return m_value > other.m_value;
457 return m_value <= other.m_value;
463 return m_value >= other.m_value;
469 return stream <<
value.toString();
473 void setFromString(
const std::string &value);
475 uint64_t m_value{ 0 };
523 typename std::enable_if<
sizeof...(Args) >= 1,
int>::type = 0,
524 typename std::enable_if<
525 Zivid::Detail::TypeTraits::AllArgsAreInTuple<
Descendants,
typename std::decay<Args>::type...>::value,
528 template<typename... Args>
532 using namespace Zivid::Detail::TypeTraits;
535 AllArgsDecayedAreUnique<Args...>::value,
536 "Found duplicate types among the arguments passed to Frame2DStreamStatistics(...). "
537 "Types should be listed at most once.");
539 set(std::forward<Args>(args)...);
556 template<
typename... Args,
typename std::enable_if<
sizeof...(Args) >= 2,
int>::type = 0>
558 template<typename... Args>
562 using namespace Zivid::Detail::TypeTraits;
564 using AllArgsAreDescendantNodes = AllArgsAreInTuple<Descendants, typename std::decay<Args>::type...>;
566 AllArgsAreDescendantNodes::value,
"All arguments passed to set(...) must be descendant nodes.");
569 AllArgsDecayedAreUnique<Args...>::value,
570 "Found duplicate types among the arguments passed to set(...). "
571 "Types should be listed at most once.");
573 Zivid::DataModel::Detail::invokeSetWithEachArgument(*
this, std::forward<Args>(args)...);
591 template<
typename... Args,
typename std::enable_if<
sizeof...(Args) >= 1,
int>::type = 0>
593 template<typename... Args>
597 using namespace Zivid::Detail::TypeTraits;
599 using AllArgsAreDescendantNodes = AllArgsAreInTuple<Descendants, typename std::decay<Args>::type...>;
601 AllArgsAreDescendantNodes::value,
"All arguments passed to copyWith(...) must be descendant nodes.");
604 AllArgsDecayedAreUnique<Args...>::value,
605 "Found duplicate types among the arguments passed to copyWith(...). "
606 "Types should be listed at most once.");
609 copy.set(std::forward<Args>(args)...);
616 return m_averageGrabInterval;
622 return m_averageGrabInterval;
628 m_averageGrabInterval = value;
635 return m_averageGrabRateHz;
641 return m_averageGrabRateHz;
647 m_averageGrabRateHz = value;
654 return m_kernelComputeTime;
660 return m_kernelComputeTime;
666 m_kernelComputeTime = value;
673 return m_numberOfFramesUsedForStatistics;
679 return m_numberOfFramesUsedForStatistics;
685 m_numberOfFramesUsedForStatistics = value;
691 typename std::enable_if<std::is_same<T, Frame2DStreamStatistics::AverageGrabInterval>::value,
int>::type =
695 return m_averageGrabInterval;
700 typename std::enable_if<std::is_same<T, Frame2DStreamStatistics::AverageGrabRateHz>::value,
int>::type = 0>
703 return m_averageGrabRateHz;
708 typename std::enable_if<std::is_same<T, Frame2DStreamStatistics::KernelComputeTime>::value,
int>::type = 0>
711 return m_kernelComputeTime;
716 typename std::enable_if<
717 std::is_same<T, Frame2DStreamStatistics::NumberOfFramesUsedForStatistics>::value,
721 return m_numberOfFramesUsedForStatistics;
724 template<size_t i, typename std::enable_if<i == 0, int>::type = 0>
727 return m_averageGrabInterval;
730 template<size_t i, typename std::enable_if<i == 1, int>::type = 0>
733 return m_averageGrabRateHz;
736 template<size_t i, typename std::enable_if<i == 2, int>::type = 0>
739 return m_kernelComputeTime;
742 template<size_t i, typename std::enable_if<i == 3, int>::type = 0>
745 return m_numberOfFramesUsedForStatistics;
752 f(m_averageGrabInterval);
753 f(m_averageGrabRateHz);
754 f(m_kernelComputeTime);
755 f(m_numberOfFramesUsedForStatistics);
762 f(m_averageGrabInterval);
763 f(m_averageGrabRateHz);
764 f(m_kernelComputeTime);
765 f(m_numberOfFramesUsedForStatistics);
784 void save(
const std::string &fileName)
const;
787 void load(
const std::string &fileName);
790 void setFromString(
const std::string &value);
792 void setFromString(
const std::string &fullPath,
const std::string &value);
794 std::string getString(
const std::string &fullPath)
const;
806 struct Frame2DStreamStatistics::Version<1>
819 ZIVID_CORE_EXPORT void save(
const Zivid::Frame2DStreamStatistics &dataModel, std::ostream &ostream);
820 ZIVID_CORE_EXPORT void load(Zivid::Frame2DStreamStatistics &dataModel, std::istream &istream);
830# if !(defined(_MSC_VER) && (_MSC_VER <= 1900))
835 struct tuple_size<Zivid::Frame2DStreamStatistics> : integral_constant<size_t, 4>
839 struct tuple_element<i, Zivid::Frame2DStreamStatistics>
841 static_assert(i < tuple_size<Zivid::Frame2DStreamStatistics>::value,
"Index must be less than 4");
844 =
decltype(declval<Zivid::Frame2DStreamStatistics>().get<i>());
853#if defined(__has_include) && !defined(NO_DOC)
854# if __has_include("Zivid/Frame2DStreamStatisticsInternal.h") && __has_include("Zivid/DataModelNodeMetaData.h")
855# include "Zivid/Frame2DStreamStatisticsInternal.h"
#define ZIVID_CORE_EXPORT
Definition CoreExport.h:56
Average interval between successfully grabbed streamed frames.
Definition Frame2DStreamStatistics.h:112
bool operator>(const AverageGrabInterval &other) const
Comparison operator.
Definition Frame2DStreamStatistics.h:170
bool operator<(const AverageGrabInterval &other) const
Comparison operator.
Definition Frame2DStreamStatistics.h:164
bool operator!=(const AverageGrabInterval &other) const
Comparison operator.
Definition Frame2DStreamStatistics.h:158
bool operator==(const AverageGrabInterval &other) const
Comparison operator.
Definition Frame2DStreamStatistics.h:152
static constexpr Range< std::chrono::microseconds > validRange()
The range of valid values for AverageGrabInterval.
Definition Frame2DStreamStatistics.h:132
bool operator>=(const AverageGrabInterval &other) const
Comparison operator.
Definition Frame2DStreamStatistics.h:182
std::chrono::microseconds ValueType
The type of the underlying value.
Definition Frame2DStreamStatistics.h:129
std::string toString() const
Get the value as string.
friend std::ostream & operator<<(std::ostream &stream, const AverageGrabInterval &value)
Operator to serialize the value to a stream.
Definition Frame2DStreamStatistics.h:188
static constexpr DataModel::NodeType nodeType
The type of this node.
Definition Frame2DStreamStatistics.h:115
static constexpr const char * name
The name of this value.
Definition Frame2DStreamStatistics.h:121
static constexpr const char * path
The full path for this value.
Definition Frame2DStreamStatistics.h:118
bool operator<=(const AverageGrabInterval &other) const
Comparison operator.
Definition Frame2DStreamStatistics.h:176
AverageGrabInterval()=default
Default constructor.
static constexpr const char * description
The description for this value.
Definition Frame2DStreamStatistics.h:124
constexpr AverageGrabInterval(std::chrono::microseconds value)
Constructor.
Definition Frame2DStreamStatistics.h:141
std::chrono::microseconds value() const
Get the value.
Average rate of successfully grabbed streamed frames in frames per second.
Definition Frame2DStreamStatistics.h:205
static constexpr const char * path
The full path for this value.
Definition Frame2DStreamStatistics.h:211
friend std::ostream & operator<<(std::ostream &stream, const AverageGrabRateHz &value)
Operator to serialize the value to a stream.
Definition Frame2DStreamStatistics.h:281
constexpr AverageGrabRateHz(double value)
Constructor.
Definition Frame2DStreamStatistics.h:234
static constexpr Range< double > validRange()
The range of valid values for AverageGrabRateHz.
Definition Frame2DStreamStatistics.h:225
static constexpr const char * name
The name of this value.
Definition Frame2DStreamStatistics.h:214
bool operator<(const AverageGrabRateHz &other) const
Comparison operator.
Definition Frame2DStreamStatistics.h:257
bool operator!=(const AverageGrabRateHz &other) const
Comparison operator.
Definition Frame2DStreamStatistics.h:251
AverageGrabRateHz()=default
Default constructor.
static constexpr DataModel::NodeType nodeType
The type of this node.
Definition Frame2DStreamStatistics.h:208
std::string toString() const
Get the value as string.
bool operator==(const AverageGrabRateHz &other) const
Comparison operator.
Definition Frame2DStreamStatistics.h:245
bool operator>=(const AverageGrabRateHz &other) const
Comparison operator.
Definition Frame2DStreamStatistics.h:275
bool operator>(const AverageGrabRateHz &other) const
Comparison operator.
Definition Frame2DStreamStatistics.h:263
double ValueType
The type of the underlying value.
Definition Frame2DStreamStatistics.h:222
static constexpr const char * description
The description for this value.
Definition Frame2DStreamStatistics.h:217
bool operator<=(const AverageGrabRateHz &other) const
Comparison operator.
Definition Frame2DStreamStatistics.h:269
double value() const
Get the value.
Average kernel compute time on the GPU per streamed frame.
Definition Frame2DStreamStatistics.h:298
bool operator<(const KernelComputeTime &other) const
Comparison operator.
Definition Frame2DStreamStatistics.h:350
bool operator<=(const KernelComputeTime &other) const
Comparison operator.
Definition Frame2DStreamStatistics.h:362
static constexpr const char * description
The description for this value.
Definition Frame2DStreamStatistics.h:310
KernelComputeTime()=default
Default constructor.
static constexpr DataModel::NodeType nodeType
The type of this node.
Definition Frame2DStreamStatistics.h:301
static constexpr const char * path
The full path for this value.
Definition Frame2DStreamStatistics.h:304
bool operator!=(const KernelComputeTime &other) const
Comparison operator.
Definition Frame2DStreamStatistics.h:344
bool operator==(const KernelComputeTime &other) const
Comparison operator.
Definition Frame2DStreamStatistics.h:338
bool operator>(const KernelComputeTime &other) const
Comparison operator.
Definition Frame2DStreamStatistics.h:356
bool operator>=(const KernelComputeTime &other) const
Comparison operator.
Definition Frame2DStreamStatistics.h:368
std::chrono::microseconds ValueType
The type of the underlying value.
Definition Frame2DStreamStatistics.h:315
static constexpr Range< std::chrono::microseconds > validRange()
The range of valid values for KernelComputeTime.
Definition Frame2DStreamStatistics.h:318
static constexpr const char * name
The name of this value.
Definition Frame2DStreamStatistics.h:307
std::chrono::microseconds value() const
Get the value.
friend std::ostream & operator<<(std::ostream &stream, const KernelComputeTime &value)
Operator to serialize the value to a stream.
Definition Frame2DStreamStatistics.h:374
std::string toString() const
Get the value as string.
constexpr KernelComputeTime(std::chrono::microseconds value)
Constructor.
Definition Frame2DStreamStatistics.h:327
Number of streamed frames included in the stream-level averages.
Definition Frame2DStreamStatistics.h:391
friend std::ostream & operator<<(std::ostream &stream, const NumberOfFramesUsedForStatistics &value)
Operator to serialize the value to a stream.
Definition Frame2DStreamStatistics.h:467
uint64_t value() const
Get the value.
static constexpr Range< uint64_t > validRange()
The range of valid values for NumberOfFramesUsedForStatistics.
Definition Frame2DStreamStatistics.h:411
static constexpr DataModel::NodeType nodeType
The type of this node.
Definition Frame2DStreamStatistics.h:394
uint64_t ValueType
The type of the underlying value.
Definition Frame2DStreamStatistics.h:408
bool operator>(const NumberOfFramesUsedForStatistics &other) const
Comparison operator.
Definition Frame2DStreamStatistics.h:449
NumberOfFramesUsedForStatistics()=default
Default constructor.
bool operator==(const NumberOfFramesUsedForStatistics &other) const
Comparison operator.
Definition Frame2DStreamStatistics.h:431
static constexpr const char * name
The name of this value.
Definition Frame2DStreamStatistics.h:400
bool operator!=(const NumberOfFramesUsedForStatistics &other) const
Comparison operator.
Definition Frame2DStreamStatistics.h:437
constexpr NumberOfFramesUsedForStatistics(uint64_t value)
Constructor.
Definition Frame2DStreamStatistics.h:420
bool operator<=(const NumberOfFramesUsedForStatistics &other) const
Comparison operator.
Definition Frame2DStreamStatistics.h:455
static constexpr const char * description
The description for this value.
Definition Frame2DStreamStatistics.h:403
static constexpr const char * path
The full path for this value.
Definition Frame2DStreamStatistics.h:397
bool operator<(const NumberOfFramesUsedForStatistics &other) const
Comparison operator.
Definition Frame2DStreamStatistics.h:443
bool operator>=(const NumberOfFramesUsedForStatistics &other) const
Comparison operator.
Definition Frame2DStreamStatistics.h:461
std::string toString() const
Get the value as string.
Streaming performance statistics for Frame2DGrabber.
Definition Frame2DStreamStatistics.h:78
const Frame2DStreamStatistics::AverageGrabRateHz & get() const
Definition Frame2DStreamStatistics.h:701
static constexpr const char * path
The full path for this value.
Definition Frame2DStreamStatistics.h:84
void load(const std::string &fileName)
Load from the given file.
const AverageGrabRateHz & averageGrabRateHz() const
Get AverageGrabRateHz.
Definition Frame2DStreamStatistics.h:633
friend std::ostream & operator<<(std::ostream &stream, const Frame2DStreamStatistics &value)
Operator to send the value as string to a stream.
Definition Frame2DStreamStatistics.h:778
Frame2DStreamStatistics & set(const AverageGrabRateHz &value)
Set AverageGrabRateHz.
Definition Frame2DStreamStatistics.h:645
static Frame2DStreamStatistics fromSerialized(const std::string &value)
Construct a new Frame2DStreamStatistics instance from a previously serialized string.
std::string serialize() const
Serialize to a string.
std::tuple< Frame2DStreamStatistics::AverageGrabInterval, Frame2DStreamStatistics::AverageGrabRateHz, Frame2DStreamStatistics::KernelComputeTime, Frame2DStreamStatistics::NumberOfFramesUsedForStatistics > Descendants
Definition Frame2DStreamStatistics.h:480
const NumberOfFramesUsedForStatistics & numberOfFramesUsedForStatistics() const
Get NumberOfFramesUsedForStatistics.
Definition Frame2DStreamStatistics.h:671
const Frame2DStreamStatistics::KernelComputeTime & get() const
Definition Frame2DStreamStatistics.h:709
bool operator!=(const Frame2DStreamStatistics &other) const
Inequality operator.
const AverageGrabInterval & averageGrabInterval() const
Get AverageGrabInterval.
Definition Frame2DStreamStatistics.h:614
static constexpr size_t version
Definition Frame2DStreamStatistics.h:94
std::string toString() const
Get the value as string.
void forEach(const F &f) const
Run the given function on each direct member with the value of the member as parameter.
Definition Frame2DStreamStatistics.h:750
const KernelComputeTime & kernelComputeTime() const
Get KernelComputeTime.
Definition Frame2DStreamStatistics.h:652
AverageGrabRateHz & averageGrabRateHz()
Get AverageGrabRateHz.
Definition Frame2DStreamStatistics.h:639
void save(const std::string &fileName) const
Save to the given file.
Frame2DStreamStatistics(Args &&...args)
Constructor taking variadic number of arguments.
Definition Frame2DStreamStatistics.h:530
const Frame2DStreamStatistics::NumberOfFramesUsedForStatistics & get() const
Definition Frame2DStreamStatistics.h:719
void set(Args &&...args)
Set multiple arguments.
Definition Frame2DStreamStatistics.h:560
bool operator==(const Frame2DStreamStatistics &other) const
Equality operator.
Frame2DStreamStatistics & set(const NumberOfFramesUsedForStatistics &value)
Set NumberOfFramesUsedForStatistics.
Definition Frame2DStreamStatistics.h:683
void forEach(const F &f)
Run the given function on each direct member with the value of the member as parameter.
Definition Frame2DStreamStatistics.h:760
Frame2DStreamStatistics & set(const KernelComputeTime &value)
Set KernelComputeTime.
Definition Frame2DStreamStatistics.h:664
KernelComputeTime & kernelComputeTime()
Get KernelComputeTime.
Definition Frame2DStreamStatistics.h:658
const Frame2DStreamStatistics::AverageGrabInterval & get() const
Definition Frame2DStreamStatistics.h:693
static constexpr DataModel::NodeType nodeType
The type of this node.
Definition Frame2DStreamStatistics.h:81
NumberOfFramesUsedForStatistics & numberOfFramesUsedForStatistics()
Get NumberOfFramesUsedForStatistics.
Definition Frame2DStreamStatistics.h:677
Frame2DStreamStatistics()
Default constructor.
Frame2DStreamStatistics & set(const AverageGrabInterval &value)
Set AverageGrabInterval.
Definition Frame2DStreamStatistics.h:626
Frame2DStreamStatistics(const std::string &fileName)
Construct Frame2DStreamStatistics by loading from file.
Frame2DStreamStatistics copyWith(Args &&...args) const
Returns a copy of this object with the given argument(s) set to the new value(s)
Definition Frame2DStreamStatistics.h:595
static constexpr const char * description
The description for this value.
Definition Frame2DStreamStatistics.h:90
static constexpr const char * name
The name of this value.
Definition Frame2DStreamStatistics.h:87
AverageGrabInterval & averageGrabInterval()
Get AverageGrabInterval.
Definition Frame2DStreamStatistics.h:620
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:85