69#    pragma warning(disable : 4251)  
   85        static constexpr const char *path{ 
"" };
 
   88        static constexpr const char *name{ 
"FrameInfo" };
 
   91        static constexpr const char *description{ R
"description(Various information for a frame)description" }; 
   93        static constexpr size_t version{ 3 };
 
  103        static constexpr std::array<uint8_t, 3> binaryId{ 
'f', 
'i', 
'f' };
 
  117            static constexpr const char *path{ 
"SoftwareVersion" };
 
  120            static constexpr const char *name{ 
"SoftwareVersion" };
 
  123            static constexpr const char *description{
 
  124                R
"description(The version information for installed software at the time of image capture)description" 
  137                static constexpr const char *path{ 
"SoftwareVersion/Core" };
 
  140                static constexpr const char *name{ 
"Core" };
 
  143                static constexpr const char *description{ R
"description(Core version)description" }; 
  151                    return { 0, std::numeric_limits<ValueType::size_type>::max() };
 
  158                explicit Core(std::string value)
 
  159                    : m_value{ std::move(value) }
 
  171                    return m_value == other.m_value;
 
  177                    return m_value != other.m_value;
 
  183                    return m_value < other.m_value;
 
  189                    return m_value > other.m_value;
 
  195                    return m_value <= other.m_value;
 
  201                    return m_value >= other.m_value;
 
  211                void setFromString(
const std::string &value);
 
  213                std::string m_value{ 
"No-version" };
 
  215                friend struct DataModel::Detail::Befriend<
Core>;
 
  237                typename std::enable_if<
sizeof...(Args) >= 1, 
int>::type = 0,
 
  238                typename std::enable_if<
 
  239                    Zivid::Detail::TypeTraits::AllArgsAreInTuple<
Descendants, 
typename std::decay<Args>::type...>::
 
  243            template<typename... Args>
 
  247                using namespace Zivid::Detail::TypeTraits;
 
  250                    AllArgsDecayedAreUnique<Args...>::value,
 
  251                    "Found duplicate types among the arguments passed to SoftwareVersion(...). " 
  252                    "Types should be listed at most once.");
 
  254                set(std::forward<Args>(args)...);
 
  268            template<
typename... Args, 
typename std::enable_if<
sizeof...(Args) >= 2, 
int>::type = 0>
 
  270            template<typename... Args>
 
  274                using namespace Zivid::Detail::TypeTraits;
 
  276                using AllArgsAreDescendantNodes = AllArgsAreInTuple<Descendants, typename std::decay<Args>::type...>;
 
  278                    AllArgsAreDescendantNodes::value, 
"All arguments passed to set(...) must be descendant nodes.");
 
  281                    AllArgsDecayedAreUnique<Args...>::value,
 
  282                    "Found duplicate types among the arguments passed to set(...). " 
  283                    "Types should be listed at most once.");
 
  285                Zivid::DataModel::Detail::invokeSetWithEachArgument(*
this, std::forward<Args>(args)...);
 
  300            template<
typename... Args, 
typename std::enable_if<
sizeof...(Args) >= 1, 
int>::type = 0>
 
  302            template<typename... Args>
 
  306                using namespace Zivid::Detail::TypeTraits;
 
  308                using AllArgsAreDescendantNodes = AllArgsAreInTuple<Descendants, typename std::decay<Args>::type...>;
 
  310                    AllArgsAreDescendantNodes::value,
 
  311                    "All arguments passed to copyWith(...) must be descendant nodes.");
 
  314                    AllArgsDecayedAreUnique<Args...>::value,
 
  315                    "Found duplicate types among the arguments passed to copyWith(...). " 
  316                    "Types should be listed at most once.");
 
  319                copy.
set(std::forward<Args>(args)...);
 
  344                typename std::enable_if<std::is_same<T, FrameInfo::SoftwareVersion::Core>::value, 
int>::type = 0>
 
  350            template<size_t i, typename std::enable_if<i == 0, int>::type = 0>
 
  386            void setFromString(
const std::string &value);
 
  388            void setFromString(
const std::string &fullPath, 
const std::string &value);
 
  390            std::string getString(
const std::string &fullPath) 
const;
 
  407            static constexpr const char *path{ 
"SystemInfo" };
 
  410            static constexpr const char *name{ 
"SystemInfo" };
 
  413            static constexpr const char *description{
 
  414                R
"description(Information about the system that captured this frame)description" 
  427                static constexpr const char *path{ 
"SystemInfo/CPU" };
 
  430                static constexpr const char *name{ 
"CPU" };
 
  433                static constexpr const char *description{ R
"description(CPU)description" }; 
  445                    static constexpr const char *path{ 
"SystemInfo/CPU/Model" };
 
  448                    static constexpr const char *name{ 
"Model" };
 
  451                    static constexpr const char *description{ R
"description(CPU model)description" }; 
  459                        return { 0, std::numeric_limits<ValueType::size_type>::max() };
 
  467                        : m_value{ std::move(value) }
 
  479                        return m_value == other.m_value;
 
  485                        return m_value != other.m_value;
 
  491                        return m_value < other.m_value;
 
  497                        return m_value > other.m_value;
 
  503                        return m_value <= other.m_value;
 
  509                        return m_value >= other.m_value;
 
  519                    void setFromString(
const std::string &value);
 
  521                    std::string m_value{};
 
  523                    friend struct DataModel::Detail::Befriend<
Model>;
 
  526                using Descendants = std::tuple<FrameInfo::SystemInfo::CPU::Model>;
 
  545                    typename std::enable_if<
sizeof...(Args) >= 1, 
int>::type = 0,
 
  546                    typename std::enable_if<
 
  547                        Zivid::Detail::TypeTraits::AllArgsAreInTuple<
Descendants, 
typename std::decay<Args>::type...>::
 
  551                template<typename... Args>
 
  553                explicit 
CPU(Args &&...args)
 
  555                    using namespace Zivid::Detail::TypeTraits;
 
  558                        AllArgsDecayedAreUnique<Args...>::value,
 
  559                        "Found duplicate types among the arguments passed to CPU(...). " 
  560                        "Types should be listed at most once.");
 
  562                    set(std::forward<Args>(args)...);
 
  576                template<
typename... Args, 
typename std::enable_if<
sizeof...(Args) >= 2, 
int>::type = 0>
 
  578                template<typename... Args>
 
  582                    using namespace Zivid::Detail::TypeTraits;
 
  584                    using AllArgsAreDescendantNodes =
 
  585                        AllArgsAreInTuple<Descendants, typename std::decay<Args>::type...>;
 
  587                        AllArgsAreDescendantNodes::value, 
"All arguments passed to set(...) must be descendant nodes.");
 
  590                        AllArgsDecayedAreUnique<Args...>::value,
 
  591                        "Found duplicate types among the arguments passed to set(...). " 
  592                        "Types should be listed at most once.");
 
  594                    Zivid::DataModel::Detail::invokeSetWithEachArgument(*
this, std::forward<Args>(args)...);
 
  609                template<
typename... Args, 
typename std::enable_if<
sizeof...(Args) >= 1, 
int>::type = 0>
 
  611                template<typename... Args>
 
  615                    using namespace Zivid::Detail::TypeTraits;
 
  617                    using AllArgsAreDescendantNodes =
 
  618                        AllArgsAreInTuple<Descendants, typename std::decay<Args>::type...>;
 
  620                        AllArgsAreDescendantNodes::value,
 
  621                        "All arguments passed to copyWith(...) must be descendant nodes.");
 
  624                        AllArgsDecayedAreUnique<Args...>::value,
 
  625                        "Found duplicate types among the arguments passed to copyWith(...). " 
  626                        "Types should be listed at most once.");
 
  629                    copy.
set(std::forward<Args>(args)...);
 
  654                    typename std::enable_if<std::is_same<T, FrameInfo::SystemInfo::CPU::Model>::value, 
int>::type = 0>
 
  660                template<size_t i, typename std::enable_if<i == 0, int>::type = 0>
 
  696                void setFromString(
const std::string &value);
 
  698                void setFromString(
const std::string &fullPath, 
const std::string &value);
 
  700                std::string getString(
const std::string &fullPath) 
const;
 
  704                friend struct DataModel::Detail::Befriend<
CPU>;
 
  717                static constexpr const char *path{ 
"SystemInfo/ComputeDevice" };
 
  720                static constexpr const char *name{ 
"ComputeDevice" };
 
  723                static constexpr const char *description{ R
"description(Compute device)description" }; 
  735                    static constexpr const char *path{ 
"SystemInfo/ComputeDevice/Model" };
 
  738                    static constexpr const char *name{ 
"Model" };
 
  741                    static constexpr const char *description{ R
"description(Compute device model)description" }; 
  749                        return { 0, std::numeric_limits<ValueType::size_type>::max() };
 
  757                        : m_value{ std::move(value) }
 
  769                        return m_value == other.m_value;
 
  775                        return m_value != other.m_value;
 
  781                        return m_value < other.m_value;
 
  787                        return m_value > other.m_value;
 
  793                        return m_value <= other.m_value;
 
  799                        return m_value >= other.m_value;
 
  809                    void setFromString(
const std::string &value);
 
  811                    std::string m_value{};
 
  813                    friend struct DataModel::Detail::Befriend<
Model>;
 
  826                    static constexpr const char *path{ 
"SystemInfo/ComputeDevice/Vendor" };
 
  829                    static constexpr const char *name{ 
"Vendor" };
 
  832                    static constexpr const char *description{ R
"description(Compute device vendor)description" }; 
  840                        return { 0, std::numeric_limits<ValueType::size_type>::max() };
 
  848                        : m_value{ std::move(value) }
 
  860                        return m_value == other.m_value;
 
  866                        return m_value != other.m_value;
 
  872                        return m_value < other.m_value;
 
  878                        return m_value > other.m_value;
 
  884                        return m_value <= other.m_value;
 
  890                        return m_value >= other.m_value;
 
  900                    void setFromString(
const std::string &value);
 
  902                    std::string m_value{};
 
  904                    friend struct DataModel::Detail::Befriend<
Vendor>;
 
  908                    tuple<FrameInfo::SystemInfo::ComputeDevice::Model, FrameInfo::SystemInfo::ComputeDevice::Vendor>;
 
  928                    typename std::enable_if<
sizeof...(Args) >= 1, 
int>::type = 0,
 
  929                    typename std::enable_if<
 
  930                        Zivid::Detail::TypeTraits::AllArgsAreInTuple<
Descendants, 
typename std::decay<Args>::type...>::
 
  934                template<typename... Args>
 
  938                    using namespace Zivid::Detail::TypeTraits;
 
  941                        AllArgsDecayedAreUnique<Args...>::value,
 
  942                        "Found duplicate types among the arguments passed to ComputeDevice(...). " 
  943                        "Types should be listed at most once.");
 
  945                    set(std::forward<Args>(args)...);
 
  960                template<
typename... Args, 
typename std::enable_if<
sizeof...(Args) >= 2, 
int>::type = 0>
 
  962                template<typename... Args>
 
  966                    using namespace Zivid::Detail::TypeTraits;
 
  968                    using AllArgsAreDescendantNodes =
 
  969                        AllArgsAreInTuple<Descendants, typename std::decay<Args>::type...>;
 
  971                        AllArgsAreDescendantNodes::value, 
"All arguments passed to set(...) must be descendant nodes.");
 
  974                        AllArgsDecayedAreUnique<Args...>::value,
 
  975                        "Found duplicate types among the arguments passed to set(...). " 
  976                        "Types should be listed at most once.");
 
  978                    Zivid::DataModel::Detail::invokeSetWithEachArgument(*
this, std::forward<Args>(args)...);
 
  994                template<
typename... Args, 
typename std::enable_if<
sizeof...(Args) >= 1, 
int>::type = 0>
 
  996                template<typename... Args>
 
 1000                    using namespace Zivid::Detail::TypeTraits;
 
 1002                    using AllArgsAreDescendantNodes =
 
 1003                        AllArgsAreInTuple<Descendants, typename std::decay<Args>::type...>;
 
 1005                        AllArgsAreDescendantNodes::value,
 
 1006                        "All arguments passed to copyWith(...) must be descendant nodes.");
 
 1009                        AllArgsDecayedAreUnique<Args...>::value,
 
 1010                        "Found duplicate types among the arguments passed to copyWith(...). " 
 1011                        "Types should be listed at most once.");
 
 1014                    copy.
set(std::forward<Args>(args)...);
 
 1058                    typename std::enable_if<std::is_same<T, FrameInfo::SystemInfo::ComputeDevice::Model>::value, 
int>::
 
 1067                    typename std::enable_if<std::is_same<T, FrameInfo::SystemInfo::ComputeDevice::Vendor>::value, 
int>::
 
 1074                template<size_t i, typename std::enable_if<i == 0, int>::type = 0>
 
 1080                template<size_t i, typename std::enable_if<i == 1, int>::type = 0>
 
 1087                template<
typename F>
 
 1095                template<
typename F>
 
 1118                void setFromString(
const std::string &value);
 
 1120                void setFromString(
const std::string &fullPath, 
const std::string &value);
 
 1122                std::string getString(
const std::string &fullPath) 
const;
 
 1140                static constexpr const char *path{ 
"SystemInfo/OperatingSystem" };
 
 1143                static constexpr const char *name{ 
"OperatingSystem" };
 
 1146                static constexpr const char *description{ R
"description(Operating system)description" }; 
 1154                    return { 0, std::numeric_limits<ValueType::size_type>::max() };
 
 1162                    : m_value{ std::move(value) }
 
 1174                    return m_value == other.m_value;
 
 1180                    return m_value != other.m_value;
 
 1186                    return m_value < other.m_value;
 
 1192                    return m_value > other.m_value;
 
 1198                    return m_value <= other.m_value;
 
 1204                    return m_value >= other.m_value;
 
 1214                void setFromString(
const std::string &value);
 
 1216                std::string m_value{};
 
 1251                typename std::enable_if<
sizeof...(Args) >= 1, 
int>::type = 0,
 
 1252                typename std::enable_if<
 
 1253                    Zivid::Detail::TypeTraits::AllArgsAreInTuple<
Descendants, 
typename std::decay<Args>::type...>::
 
 1257            template<typename... Args>
 
 1261                using namespace Zivid::Detail::TypeTraits;
 
 1264                    AllArgsDecayedAreUnique<Args...>::value,
 
 1265                    "Found duplicate types among the arguments passed to SystemInfo(...). " 
 1266                    "Types should be listed at most once.");
 
 1268                set(std::forward<Args>(args)...);
 
 1287            template<
typename... Args, 
typename std::enable_if<
sizeof...(Args) >= 2, 
int>::type = 0>
 
 1289            template<typename... Args>
 
 1293                using namespace Zivid::Detail::TypeTraits;
 
 1295                using AllArgsAreDescendantNodes = AllArgsAreInTuple<Descendants, typename std::decay<Args>::type...>;
 
 1297                    AllArgsAreDescendantNodes::value, 
"All arguments passed to set(...) must be descendant nodes.");
 
 1300                    AllArgsDecayedAreUnique<Args...>::value,
 
 1301                    "Found duplicate types among the arguments passed to set(...). " 
 1302                    "Types should be listed at most once.");
 
 1304                Zivid::DataModel::Detail::invokeSetWithEachArgument(*
this, std::forward<Args>(args)...);
 
 1324            template<
typename... Args, 
typename std::enable_if<
sizeof...(Args) >= 1, 
int>::type = 0>
 
 1326            template<typename... Args>
 
 1330                using namespace Zivid::Detail::TypeTraits;
 
 1332                using AllArgsAreDescendantNodes = AllArgsAreInTuple<Descendants, typename std::decay<Args>::type...>;
 
 1334                    AllArgsAreDescendantNodes::value,
 
 1335                    "All arguments passed to copyWith(...) must be descendant nodes.");
 
 1338                    AllArgsDecayedAreUnique<Args...>::value,
 
 1339                    "Found duplicate types among the arguments passed to copyWith(...). " 
 1340                    "Types should be listed at most once.");
 
 1343                copy.
set(std::forward<Args>(args)...);
 
 1376                return m_computeDevice;
 
 1382                return m_computeDevice;
 
 1388                m_computeDevice = value;
 
 1395                m_computeDevice.
set(value);
 
 1402                m_computeDevice.
set(value);
 
 1409                return m_operatingSystem;
 
 1415                return m_operatingSystem;
 
 1421                m_operatingSystem = value;
 
 1427                typename std::enable_if<std::is_same<T, FrameInfo::SystemInfo::CPU>::value, 
int>::type = 0>
 
 1435                typename std::enable_if<std::is_same<T, FrameInfo::SystemInfo::CPU::Model>::value, 
int>::type = 0>
 
 1443                typename std::enable_if<std::is_same<T, FrameInfo::SystemInfo::ComputeDevice>::value, 
int>::type = 0>
 
 1446                return m_computeDevice;
 
 1451                typename std::enable_if<std::is_same<T, FrameInfo::SystemInfo::ComputeDevice::Model>::value, 
int>::
 
 1460                typename std::enable_if<std::is_same<T, FrameInfo::SystemInfo::ComputeDevice::Vendor>::value, 
int>::
 
 1469                typename std::enable_if<std::is_same<T, FrameInfo::SystemInfo::OperatingSystem>::value, 
int>::type = 0>
 
 1472                return m_operatingSystem;
 
 1475            template<size_t i, typename std::enable_if<i == 0, int>::type = 0>
 
 1481            template<size_t i, typename std::enable_if<i == 1, int>::type = 0>
 
 1484                return m_computeDevice;
 
 1487            template<size_t i, typename std::enable_if<i == 2, int>::type = 0>
 
 1490                return m_operatingSystem;
 
 1494            template<
typename F>
 
 1499                f(m_operatingSystem);
 
 1503            template<
typename F>
 
 1508                f(m_operatingSystem);
 
 1527            void setFromString(
const std::string &value);
 
 1529            void setFromString(
const std::string &fullPath, 
const std::string &value);
 
 1531            std::string getString(
const std::string &fullPath) 
const;
 
 1537            friend struct DataModel::Detail::Befriend<
SystemInfo>;
 
 1550            static constexpr const char *path{ 
"TimeStamp" };
 
 1553            static constexpr const char *name{ 
"TimeStamp" };
 
 1556            static constexpr const char *description{ R
"description(The time of frame capture)description" }; 
 1564                return { std::chrono::system_clock::time_point::min(), std::chrono::system_clock::time_point::max() };
 
 1571            explicit constexpr TimeStamp(std::chrono::system_clock::time_point value)
 
 1576            std::chrono::system_clock::time_point 
value() 
const;
 
 1584                return m_value == other.m_value;
 
 1590                return m_value != other.m_value;
 
 1596                return m_value < other.m_value;
 
 1602                return m_value > other.m_value;
 
 1608                return m_value <= other.m_value;
 
 1614                return m_value >= other.m_value;
 
 1624            void setFromString(
const std::string &value);
 
 1626            std::chrono::system_clock::time_point m_value{};
 
 1628            friend struct DataModel::Detail::Befriend<
TimeStamp>;
 
 1686            typename std::enable_if<
sizeof...(Args) >= 1, 
int>::type = 0,
 
 1687            typename std::enable_if<
 
 1688                Zivid::Detail::TypeTraits::AllArgsAreInTuple<
Descendants, 
typename std::decay<Args>::type...>::value,
 
 1691        template<typename... Args>
 
 1695            using namespace Zivid::Detail::TypeTraits;
 
 1698                AllArgsDecayedAreUnique<Args...>::value,
 
 1699                "Found duplicate types among the arguments passed to FrameInfo(...). " 
 1700                "Types should be listed at most once.");
 
 1702            set(std::forward<Args>(args)...);
 
 1725        template<
typename... Args, 
typename std::enable_if<
sizeof...(Args) >= 2, 
int>::type = 0>
 
 1727        template<typename... Args>
 
 1731            using namespace Zivid::Detail::TypeTraits;
 
 1733            using AllArgsAreDescendantNodes = AllArgsAreInTuple<Descendants, typename std::decay<Args>::type...>;
 
 1735                AllArgsAreDescendantNodes::value, 
"All arguments passed to set(...) must be descendant nodes.");
 
 1738                AllArgsDecayedAreUnique<Args...>::value,
 
 1739                "Found duplicate types among the arguments passed to set(...). " 
 1740                "Types should be listed at most once.");
 
 1742            Zivid::DataModel::Detail::invokeSetWithEachArgument(*
this, std::forward<Args>(args)...);
 
 1766        template<
typename... Args, 
typename std::enable_if<
sizeof...(Args) >= 1, 
int>::type = 0>
 
 1768        template<typename... Args>
 
 1772            using namespace Zivid::Detail::TypeTraits;
 
 1774            using AllArgsAreDescendantNodes = AllArgsAreInTuple<Descendants, typename std::decay<Args>::type...>;
 
 1776                AllArgsAreDescendantNodes::value, 
"All arguments passed to copyWith(...) must be descendant nodes.");
 
 1779                AllArgsDecayedAreUnique<Args...>::value,
 
 1780                "Found duplicate types among the arguments passed to copyWith(...). " 
 1781                "Types should be listed at most once.");
 
 1784            copy.
set(std::forward<Args>(args)...);
 
 1791            return m_softwareVersion;
 
 1797            return m_softwareVersion;
 
 1803            m_softwareVersion = value;
 
 1810            m_softwareVersion.
set(value);
 
 1817            return m_systemInfo;
 
 1823            return m_systemInfo;
 
 1829            m_systemInfo = value;
 
 1836            m_systemInfo.
set(value);
 
 1843            m_systemInfo.
set(value);
 
 1850            m_systemInfo.
set(value);
 
 1857            m_systemInfo.
set(value);
 
 1864            m_systemInfo.
set(value);
 
 1871            m_systemInfo.
set(value);
 
 1890            m_timeStamp = value;
 
 1894        template<typename T, typename std::enable_if<std::is_same<T, FrameInfo::SoftwareVersion>::value, 
int>::type = 0>
 
 1897            return m_softwareVersion;
 
 1902            typename std::enable_if<std::is_same<T, FrameInfo::SoftwareVersion::Core>::value, 
int>::type = 0>
 
 1908        template<typename T, typename std::enable_if<std::is_same<T, FrameInfo::SystemInfo>::value, 
int>::type = 0>
 
 1911            return m_systemInfo;
 
 1914        template<typename T, typename std::enable_if<std::is_same<T, FrameInfo::SystemInfo::CPU>::value, 
int>::type = 0>
 
 1922            typename std::enable_if<std::is_same<T, FrameInfo::SystemInfo::CPU::Model>::value, 
int>::type = 0>
 
 1930            typename std::enable_if<std::is_same<T, FrameInfo::SystemInfo::ComputeDevice>::value, 
int>::type = 0>
 
 1938            typename std::enable_if<std::is_same<T, FrameInfo::SystemInfo::ComputeDevice::Model>::value, 
int>::type = 0>
 
 1946            typename std::enable_if<std::is_same<T, FrameInfo::SystemInfo::ComputeDevice::Vendor>::value, 
int>::type =
 
 1955            typename std::enable_if<std::is_same<T, FrameInfo::SystemInfo::OperatingSystem>::value, 
int>::type = 0>
 
 1961        template<typename T, typename std::enable_if<std::is_same<T, FrameInfo::TimeStamp>::value, 
int>::type = 0>
 
 1967        template<size_t i, typename std::enable_if<i == 0, int>::type = 0>
 
 1970            return m_softwareVersion;
 
 1973        template<size_t i, typename std::enable_if<i == 1, int>::type = 0>
 
 1976            return m_systemInfo;
 
 1979        template<size_t i, typename std::enable_if<i == 2, int>::type = 0>
 
 1986        template<
typename F>
 
 1989            f(m_softwareVersion);
 
 1995        template<
typename F>
 
 1998            f(m_softwareVersion);
 
 2019        void save(
const std::string &fileName) 
const;
 
 2022        void load(
const std::string &fileName);
 
 2025        void setFromString(
const std::string &value);
 
 2027        void setFromString(
const std::string &fullPath, 
const std::string &value);
 
 2029        std::string getString(
const std::string &fullPath) 
const;
 
 2035        friend struct DataModel::Detail::Befriend<
FrameInfo>;
 
 2049    struct FrameInfo::Version<3>
 
 2051        using Type = FrameInfo;
 
 2058#    pragma warning(pop) 
 2062#    if !(defined(_MSC_VER) && (_MSC_VER <= 1900)) 
 2067    struct tuple_size<
Zivid::FrameInfo::SoftwareVersion> : integral_constant<size_t, 1>
 
 2071    struct tuple_element<i, 
Zivid::FrameInfo::SoftwareVersion>
 
 2073        static_assert(i < tuple_size<Zivid::FrameInfo::SoftwareVersion>::value, 
"Index must be less than 1");
 
 2076            = 
decltype(declval<Zivid::FrameInfo::SoftwareVersion>().get<i>());
 
 2080    struct tuple_size<
Zivid::FrameInfo::SystemInfo> : integral_constant<size_t, 3>
 
 2084    struct tuple_element<i, 
Zivid::FrameInfo::SystemInfo>
 
 2086        static_assert(i < tuple_size<Zivid::FrameInfo::SystemInfo>::value, 
"Index must be less than 3");
 
 2089            = 
decltype(declval<Zivid::FrameInfo::SystemInfo>().get<i>());
 
 2093    struct tuple_size<
Zivid::FrameInfo::SystemInfo::CPU> : integral_constant<size_t, 1>
 
 2097    struct tuple_element<i, 
Zivid::FrameInfo::SystemInfo::CPU>
 
 2099        static_assert(i < tuple_size<Zivid::FrameInfo::SystemInfo::CPU>::value, 
"Index must be less than 1");
 
 2102            = 
decltype(declval<Zivid::FrameInfo::SystemInfo::CPU>().get<i>());
 
 2106    struct tuple_size<
Zivid::FrameInfo::SystemInfo::ComputeDevice> : integral_constant<size_t, 2>
 
 2110    struct tuple_element<i, 
Zivid::FrameInfo::SystemInfo::ComputeDevice>
 
 2112        static_assert(i < tuple_size<Zivid::FrameInfo::SystemInfo::ComputeDevice>::value, 
"Index must be less than 2");
 
 2115            = 
decltype(declval<Zivid::FrameInfo::SystemInfo::ComputeDevice>().get<i>());
 
 2119    struct tuple_size<
Zivid::FrameInfo> : integral_constant<size_t, 3>
 
 2123    struct tuple_element<i, 
Zivid::FrameInfo>
 
 2125        static_assert(i < tuple_size<Zivid::FrameInfo>::value, 
"Index must be less than 3");
 
 2128            = 
decltype(declval<Zivid::FrameInfo>().get<i>());
 
 2137#if defined(__has_include) && !defined(NO_DOC) 
 2138#    if __has_include("Zivid/FrameInfoInternal.h") && __has_include("Zivid/DataModelNodeMetaData.h") 
 2139#        include "Zivid/FrameInfoInternal.h" 
#define ZIVID_NODISCARD
Definition Attributes.h:49
 
#define ZIVID_CORE_EXPORT
Definition CoreExport.h:56
 
Contains information about the compute device used by Zivid::Application.
Definition ComputeDevice.h:58
 
Core version.
Definition FrameInfo.h:131
 
std::string toString() const
Get the value as string.
 
bool operator>=(const Core &other) const
Comparison operator.
Definition FrameInfo.h:199
 
const std::string & value() const
Get the value.
 
bool operator!=(const Core &other) const
Comparison operator.
Definition FrameInfo.h:175
 
Core(std::string value)
Constructor.
Definition FrameInfo.h:158
 
bool operator==(const Core &other) const
Comparison operator.
Definition FrameInfo.h:169
 
Core()=default
Default constructor.
 
bool operator>(const Core &other) const
Comparison operator.
Definition FrameInfo.h:187
 
bool operator<(const Core &other) const
Comparison operator.
Definition FrameInfo.h:181
 
friend std::ostream & operator<<(std::ostream &stream, const Core &value)
Operator to serialize the value to a stream.
Definition FrameInfo.h:205
 
bool operator<=(const Core &other) const
Comparison operator.
Definition FrameInfo.h:193
 
std::string ValueType
The type of the underlying value.
Definition FrameInfo.h:146
 
static constexpr Range< ValueType::size_type > validSize()
The valid sizes for Core.
Definition FrameInfo.h:149
 
The version information for installed software at the time of image capture.
Definition FrameInfo.h:111
 
const Core & core() const
Get Core.
Definition FrameInfo.h:324
 
friend std::ostream & operator<<(std::ostream &stream, const SoftwareVersion &value)
Operator to send the value as string to a stream.
Definition FrameInfo.h:380
 
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:365
 
SoftwareVersion()
Default constructor.
 
const FrameInfo::SoftwareVersion::Core & get() const
Definition FrameInfo.h:345
 
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:304
 
Core & core()
Get Core.
Definition FrameInfo.h:330
 
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:358
 
void set(Args &&...args)
Set multiple arguments.
Definition FrameInfo.h:272
 
std::tuple< FrameInfo::SoftwareVersion::Core > Descendants
Definition FrameInfo.h:218
 
SoftwareVersion & set(const Core &value)
Set Core.
Definition FrameInfo.h:336
 
std::string toString() const
Get the value as string.
 
CPU model.
Definition FrameInfo.h:439
 
const std::string & value() const
Get the value.
 
bool operator!=(const Model &other) const
Comparison operator.
Definition FrameInfo.h:483
 
Model()=default
Default constructor.
 
bool operator<(const Model &other) const
Comparison operator.
Definition FrameInfo.h:489
 
std::string toString() const
Get the value as string.
 
bool operator==(const Model &other) const
Comparison operator.
Definition FrameInfo.h:477
 
bool operator>=(const Model &other) const
Comparison operator.
Definition FrameInfo.h:507
 
friend std::ostream & operator<<(std::ostream &stream, const Model &value)
Operator to serialize the value to a stream.
Definition FrameInfo.h:513
 
bool operator<=(const Model &other) const
Comparison operator.
Definition FrameInfo.h:501
 
static constexpr Range< ValueType::size_type > validSize()
The valid sizes for Model.
Definition FrameInfo.h:457
 
std::string ValueType
The type of the underlying value.
Definition FrameInfo.h:454
 
Model(std::string value)
Constructor.
Definition FrameInfo.h:466
 
bool operator>(const Model &other) const
Comparison operator.
Definition FrameInfo.h:495
 
CPU.
Definition FrameInfo.h:421
 
void forEach(const F &f)
Run the given function on each direct member with the value of the member as parameter.
Definition FrameInfo.h:675
 
const Model & model() const
Get Model.
Definition FrameInfo.h:634
 
std::tuple< FrameInfo::SystemInfo::CPU::Model > Descendants
Definition FrameInfo.h:526
 
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:668
 
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.
 
CPU()
Default constructor.
 
friend std::ostream & operator<<(std::ostream &stream, const CPU &value)
Operator to send the value as string to a stream.
Definition FrameInfo.h:690
 
CPU & set(const Model &value)
Set Model.
Definition FrameInfo.h:646
 
void set(Args &&...args)
Set multiple arguments.
Definition FrameInfo.h:580
 
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:613
 
Model & model()
Get Model.
Definition FrameInfo.h:640
 
const FrameInfo::SystemInfo::CPU::Model & get() const
Definition FrameInfo.h:655
 
Compute device model.
Definition FrameInfo.h:729
 
static constexpr Range< ValueType::size_type > validSize()
The valid sizes for Model.
Definition FrameInfo.h:747
 
std::string toString() const
Get the value as string.
 
bool operator<=(const Model &other) const
Comparison operator.
Definition FrameInfo.h:791
 
Model(std::string value)
Constructor.
Definition FrameInfo.h:756
 
std::string ValueType
The type of the underlying value.
Definition FrameInfo.h:744
 
const std::string & value() const
Get the value.
 
bool operator==(const Model &other) const
Comparison operator.
Definition FrameInfo.h:767
 
bool operator!=(const Model &other) const
Comparison operator.
Definition FrameInfo.h:773
 
bool operator>=(const Model &other) const
Comparison operator.
Definition FrameInfo.h:797
 
bool operator>(const Model &other) const
Comparison operator.
Definition FrameInfo.h:785
 
friend std::ostream & operator<<(std::ostream &stream, const Model &value)
Operator to serialize the value to a stream.
Definition FrameInfo.h:803
 
bool operator<(const Model &other) const
Comparison operator.
Definition FrameInfo.h:779
 
Model()=default
Default constructor.
 
Compute device vendor.
Definition FrameInfo.h:820
 
bool operator>(const Vendor &other) const
Comparison operator.
Definition FrameInfo.h:876
 
static constexpr Range< ValueType::size_type > validSize()
The valid sizes for Vendor.
Definition FrameInfo.h:838
 
friend std::ostream & operator<<(std::ostream &stream, const Vendor &value)
Operator to serialize the value to a stream.
Definition FrameInfo.h:894
 
bool operator>=(const Vendor &other) const
Comparison operator.
Definition FrameInfo.h:888
 
bool operator<(const Vendor &other) const
Comparison operator.
Definition FrameInfo.h:870
 
bool operator==(const Vendor &other) const
Comparison operator.
Definition FrameInfo.h:858
 
std::string ValueType
The type of the underlying value.
Definition FrameInfo.h:835
 
Vendor()=default
Default constructor.
 
std::string toString() const
Get the value as string.
 
bool operator<=(const Vendor &other) const
Comparison operator.
Definition FrameInfo.h:882
 
const std::string & value() const
Get the value.
 
bool operator!=(const Vendor &other) const
Comparison operator.
Definition FrameInfo.h:864
 
Vendor(std::string value)
Constructor.
Definition FrameInfo.h:847
 
Compute device.
Definition FrameInfo.h:711
 
void set(Args &&...args)
Set multiple arguments.
Definition FrameInfo.h:964
 
ComputeDevice & set(const Model &value)
Set Model.
Definition FrameInfo.h:1031
 
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:1088
 
const Vendor & vendor() const
Get Vendor.
Definition FrameInfo.h:1038
 
std:: tuple< FrameInfo::SystemInfo::ComputeDevice::Model, FrameInfo::SystemInfo::ComputeDevice::Vendor > Descendants
Definition FrameInfo.h:907
 
void forEach(const F &f)
Run the given function on each direct member with the value of the member as parameter.
Definition FrameInfo.h:1096
 
Model & model()
Get Model.
Definition FrameInfo.h:1025
 
Vendor & vendor()
Get Vendor.
Definition FrameInfo.h:1044
 
bool operator==(const ComputeDevice &other) const
Equality operator.
 
const FrameInfo::SystemInfo::ComputeDevice::Vendor & get() const
Definition FrameInfo.h:1069
 
const Model & model() const
Get Model.
Definition FrameInfo.h:1019
 
friend std::ostream & operator<<(std::ostream &stream, const ComputeDevice &value)
Operator to send the value as string to a stream.
Definition FrameInfo.h:1112
 
bool operator!=(const ComputeDevice &other) const
Inequality operator.
 
std::string toString() const
Get the value as string.
 
ComputeDevice()
Default constructor.
 
ComputeDevice & set(const Vendor &value)
Set Vendor.
Definition FrameInfo.h:1050
 
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:998
 
const FrameInfo::SystemInfo::ComputeDevice::Model & get() const
Definition FrameInfo.h:1060
 
Operating system.
Definition FrameInfo.h:1134
 
bool operator>(const OperatingSystem &other) const
Comparison operator.
Definition FrameInfo.h:1190
 
OperatingSystem(std::string value)
Constructor.
Definition FrameInfo.h:1161
 
bool operator!=(const OperatingSystem &other) const
Comparison operator.
Definition FrameInfo.h:1178
 
bool operator<(const OperatingSystem &other) const
Comparison operator.
Definition FrameInfo.h:1184
 
bool operator>=(const OperatingSystem &other) const
Comparison operator.
Definition FrameInfo.h:1202
 
bool operator==(const OperatingSystem &other) const
Comparison operator.
Definition FrameInfo.h:1172
 
std::string ValueType
The type of the underlying value.
Definition FrameInfo.h:1149
 
OperatingSystem()=default
Default constructor.
 
bool operator<=(const OperatingSystem &other) const
Comparison operator.
Definition FrameInfo.h:1196
 
const std::string & value() const
Get the value.
 
friend std::ostream & operator<<(std::ostream &stream, const OperatingSystem &value)
Operator to serialize the value to a stream.
Definition FrameInfo.h:1208
 
std::string toString() const
Get the value as string.
 
static constexpr Range< ValueType::size_type > validSize()
The valid sizes for OperatingSystem.
Definition FrameInfo.h:1152
 
Information about the system that captured this frame.
Definition FrameInfo.h:401
 
SystemInfo & set(const CPU::Model &value)
Set CPU::Model.
Definition FrameInfo.h:1367
 
std::string toString() const
Get the value as string.
 
const FrameInfo::SystemInfo::CPU & get() const
Definition FrameInfo.h:1428
 
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:1495
 
ComputeDevice & computeDevice()
Get ComputeDevice.
Definition FrameInfo.h:1380
 
SystemInfo & set(const ComputeDevice &value)
Set ComputeDevice.
Definition FrameInfo.h:1386
 
const FrameInfo::SystemInfo::ComputeDevice::Vendor & get() const
Definition FrameInfo.h:1462
 
SystemInfo & set(const CPU &value)
Set CPU.
Definition FrameInfo.h:1360
 
bool operator==(const SystemInfo &other) const
Equality operator.
 
void set(Args &&...args)
Set multiple arguments.
Definition FrameInfo.h:1291
 
friend std::ostream & operator<<(std::ostream &stream, const SystemInfo &value)
Operator to send the value as string to a stream.
Definition FrameInfo.h:1521
 
const ComputeDevice & computeDevice() const
Get ComputeDevice.
Definition FrameInfo.h:1374
 
void forEach(const F &f)
Run the given function on each direct member with the value of the member as parameter.
Definition FrameInfo.h:1504
 
SystemInfo & set(const ComputeDevice::Vendor &value)
Set ComputeDevice::Vendor.
Definition FrameInfo.h:1400
 
SystemInfo & set(const OperatingSystem &value)
Set OperatingSystem.
Definition FrameInfo.h:1419
 
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:1328
 
bool operator!=(const SystemInfo &other) const
Inequality operator.
 
SystemInfo & set(const ComputeDevice::Model &value)
Set ComputeDevice::Model.
Definition FrameInfo.h:1393
 
const FrameInfo::SystemInfo::OperatingSystem & get() const
Definition FrameInfo.h:1470
 
CPU & cpu()
Get CPU.
Definition FrameInfo.h:1354
 
const FrameInfo::SystemInfo::ComputeDevice & get() const
Definition FrameInfo.h:1444
 
const OperatingSystem & operatingSystem() const
Get OperatingSystem.
Definition FrameInfo.h:1407
 
OperatingSystem & operatingSystem()
Get OperatingSystem.
Definition FrameInfo.h:1413
 
SystemInfo()
Default constructor.
 
const CPU & cpu() const
Get CPU.
Definition FrameInfo.h:1348
 
const FrameInfo::SystemInfo::ComputeDevice::Model & get() const
Definition FrameInfo.h:1453
 
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:1221
 
const FrameInfo::SystemInfo::CPU::Model & get() const
Definition FrameInfo.h:1436
 
The time of frame capture.
Definition FrameInfo.h:1544
 
std::chrono::system_clock::time_point value() const
Get the value.
 
bool operator>(const TimeStamp &other) const
Comparison operator.
Definition FrameInfo.h:1600
 
bool operator<(const TimeStamp &other) const
Comparison operator.
Definition FrameInfo.h:1594
 
bool operator<=(const TimeStamp &other) const
Comparison operator.
Definition FrameInfo.h:1606
 
static constexpr Range< std::chrono::system_clock::time_point > validRange()
The range of valid values for TimeStamp.
Definition FrameInfo.h:1562
 
bool operator>=(const TimeStamp &other) const
Comparison operator.
Definition FrameInfo.h:1612
 
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:1618
 
TimeStamp()=default
Default constructor.
 
constexpr TimeStamp(std::chrono::system_clock::time_point value)
Constructor.
Definition FrameInfo.h:1571
 
bool operator!=(const TimeStamp &other) const
Comparison operator.
Definition FrameInfo.h:1588
 
bool operator==(const TimeStamp &other) const
Comparison operator.
Definition FrameInfo.h:1582
 
std::chrono::system_clock::time_point ValueType
The type of the underlying value.
Definition FrameInfo.h:1559
 
Various information for a frame.
Definition FrameInfo.h:79
 
TimeStamp & timeStamp()
Get TimeStamp.
Definition FrameInfo.h:1882
 
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 FrameInfo.h:1987
 
const FrameInfo::SoftwareVersion::Core & get() const
Definition FrameInfo.h:1903
 
FrameInfo & set(const SystemInfo::ComputeDevice &value)
Set SystemInfo::ComputeDevice.
Definition FrameInfo.h:1848
 
FrameInfo()
Default constructor.
 
void set(Args &&...args)
Set multiple arguments.
Definition FrameInfo.h:1729
 
const FrameInfo::SystemInfo::ComputeDevice::Model & get() const
Definition FrameInfo.h:1939
 
FrameInfo & set(const SystemInfo::OperatingSystem &value)
Set SystemInfo::OperatingSystem.
Definition FrameInfo.h:1869
 
void save(const std::string &fileName) const
Save to the given file.
 
const SystemInfo & systemInfo() const
Get SystemInfo.
Definition FrameInfo.h:1815
 
FrameInfo & set(const SystemInfo &value)
Set SystemInfo.
Definition FrameInfo.h:1827
 
const TimeStamp & timeStamp() const
Get TimeStamp.
Definition FrameInfo.h:1876
 
SoftwareVersion & softwareVersion()
Get SoftwareVersion.
Definition FrameInfo.h:1795
 
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:1862
 
const FrameInfo::SoftwareVersion & get() const
Definition FrameInfo.h:1895
 
friend std::ostream & operator<<(std::ostream &stream, const FrameInfo &value)
Operator to send the value as string to a stream.
Definition FrameInfo.h:2013
 
FrameInfo & set(const TimeStamp &value)
Set TimeStamp.
Definition FrameInfo.h:1888
 
FrameInfo(Args &&...args)
Constructor taking variadic number of arguments.
Definition FrameInfo.h:1693
 
const FrameInfo::TimeStamp & get() const
Definition FrameInfo.h:1962
 
const SoftwareVersion & softwareVersion() const
Get SoftwareVersion.
Definition FrameInfo.h:1789
 
FrameInfo & set(const SystemInfo::CPU::Model &value)
Set SystemInfo::CPU::Model.
Definition FrameInfo.h:1841
 
FrameInfo & set(const SystemInfo::ComputeDevice::Model &value)
Set SystemInfo::ComputeDevice::Model.
Definition FrameInfo.h:1855
 
const FrameInfo::SystemInfo::CPU::Model & get() const
Definition FrameInfo.h:1923
 
const FrameInfo::SystemInfo::ComputeDevice::Vendor & get() const
Definition FrameInfo.h:1948
 
FrameInfo & set(const SoftwareVersion &value)
Set SoftwareVersion.
Definition FrameInfo.h:1801
 
const FrameInfo::SystemInfo & get() const
Definition FrameInfo.h:1909
 
std::tuple< 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:1631
 
static ZIVID_NODISCARD FrameInfo fromSerialized(const std::string &value)
Construct a new FrameInfo instance from a previously serialized string.
 
const FrameInfo::SystemInfo::ComputeDevice & get() const
Definition FrameInfo.h:1931
 
FrameInfo & set(const SoftwareVersion::Core &value)
Set SoftwareVersion::Core.
Definition FrameInfo.h:1808
 
SystemInfo & systemInfo()
Get SystemInfo.
Definition FrameInfo.h:1821
 
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:1996
 
bool operator==(const FrameInfo &other) const
Equality operator.
 
FrameInfo & set(const SystemInfo::CPU &value)
Set SystemInfo::CPU.
Definition FrameInfo.h:1834
 
const FrameInfo::SystemInfo::CPU & get() const
Definition FrameInfo.h:1915
 
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:1770
 
const FrameInfo::SystemInfo::OperatingSystem & get() const
Definition FrameInfo.h:1956
 
Class describing a range of values for a given type T.
Definition Range.h:73
 
NodeType
Definition NodeType.h:55
 
The main Zivid namespace. All Zivid code is found here.
Definition Application.h:56