112#    pragma warning(push) 
  113#    pragma warning(disable : 4251)  
  127        static constexpr const char *path{ 
"" };
 
  130        static constexpr const char *name{ 
"FrameInfo" };
 
  133        static constexpr const char *description{ R
"description(Various information for a frame)description" }; 
  135        static constexpr size_t version{ 3 };
 
  145        static constexpr std::array<uint8_t, 3> binaryId{ 
'f', 
'i', 
'f' };
 
  157            static constexpr const char *path{ 
"SoftwareVersion" };
 
  160            static constexpr const char *name{ 
"SoftwareVersion" };
 
  163            static constexpr const char *description{
 
  164                R
"description(The version information for installed software at the time of image capture)description" 
  175                static constexpr const char *path{ 
"SoftwareVersion/Core" };
 
  178                static constexpr const char *name{ 
"Core" };
 
  181                static constexpr const char *description{ R
"description(Core version)description" }; 
  189                    return { 0, std::numeric_limits<ValueType::size_type>::max() };
 
  196                explicit Core(std::string value)
 
  197                    : m_value{ std::move(value) }
 
  209                    return m_value == other.m_value;
 
  215                    return m_value != other.m_value;
 
  221                    return m_value < other.m_value;
 
  227                    return m_value > other.m_value;
 
  237                void setFromString(
const std::string &value);
 
  239                std::string m_value{ 
"No-version" };
 
  241                friend struct DataModel::Detail::Befriend<
Core>;
 
  263                typename std::enable_if<
sizeof...(Args) >= 1, 
int>::type = 0,
 
  264                typename std::enable_if<
 
  265                    Zivid::Detail::TypeTraits::AllArgsAreInTuple<
Descendants, 
typename std::decay<Args>::type...>::
 
  269            template<typename... Args>
 
  273                using namespace Zivid::Detail::TypeTraits;
 
  276                    AllArgsDecayedAreUnique<Args...>::value,
 
  277                    "Found duplicate types among the arguments passed to SoftwareVersion(...). " 
  278                    "Types should be listed at most once.");
 
  280                set(std::forward<Args>(args)...);
 
  294            template<
typename... Args, 
typename std::enable_if<
sizeof...(Args) >= 2, 
int>::type = 0>
 
  296            template<typename... Args>
 
  300                using namespace Zivid::Detail::TypeTraits;
 
  302                using AllArgsAreDescendantNodes = AllArgsAreInTuple<Descendants, typename std::decay<Args>::type...>;
 
  304                    AllArgsAreDescendantNodes::value, 
"All arguments passed to set(...) must be descendant nodes.");
 
  307                    AllArgsDecayedAreUnique<Args...>::value,
 
  308                    "Found duplicate types among the arguments passed to set(...). " 
  309                    "Types should be listed at most once.");
 
  311                Zivid::DataModel::Detail::invokeSetWithEachArgument(*
this, std::forward<Args>(args)...);
 
  326            template<
typename... Args, 
typename std::enable_if<
sizeof...(Args) >= 1, 
int>::type = 0>
 
  328            template<typename... Args>
 
  332                using namespace Zivid::Detail::TypeTraits;
 
  334                using AllArgsAreDescendantNodes = AllArgsAreInTuple<Descendants, typename std::decay<Args>::type...>;
 
  336                    AllArgsAreDescendantNodes::value,
 
  337                    "All arguments passed to copyWith(...) must be descendant nodes.");
 
  340                    AllArgsDecayedAreUnique<Args...>::value,
 
  341                    "Found duplicate types among the arguments passed to copyWith(...). " 
  342                    "Types should be listed at most once.");
 
  345                copy.
set(std::forward<Args>(args)...);
 
  370                typename std::enable_if<std::is_same<T, FrameInfo::SoftwareVersion::Core>::value, 
int>::type = 0>
 
  376            template<size_t i, typename std::enable_if<i == 0, int>::type = 0>
 
  412            void setFromString(
const std::string &value);
 
  414            void setFromString(
const std::string &fullPath, 
const std::string &value);
 
  416            std::string getString(
const std::string &fullPath) 
const;
 
  431            static constexpr const char *path{ 
"SystemInfo" };
 
  434            static constexpr const char *name{ 
"SystemInfo" };
 
  437            static constexpr const char *description{
 
  438                R
"description(Information about the system that captured this frame)description" 
  449                static constexpr const char *path{ 
"SystemInfo/CPU" };
 
  452                static constexpr const char *name{ 
"CPU" };
 
  455                static constexpr const char *description{ R
"description(CPU)description" }; 
  465                    static constexpr const char *path{ 
"SystemInfo/CPU/Model" };
 
  468                    static constexpr const char *name{ 
"Model" };
 
  471                    static constexpr const char *description{ R
"description(CPU model)description" }; 
  479                        return { 0, std::numeric_limits<ValueType::size_type>::max() };
 
  487                        : m_value{ std::move(value) }
 
  499                        return m_value == other.m_value;
 
  505                        return m_value != other.m_value;
 
  511                        return m_value < other.m_value;
 
  517                        return m_value > other.m_value;
 
  527                    void setFromString(
const std::string &value);
 
  529                    std::string m_value{};
 
  531                    friend struct DataModel::Detail::Befriend<
Model>;
 
  534                using Descendants = std::tuple<FrameInfo::SystemInfo::CPU::Model>;
 
  553                    typename std::enable_if<
sizeof...(Args) >= 1, 
int>::type = 0,
 
  554                    typename std::enable_if<
 
  555                        Zivid::Detail::TypeTraits::AllArgsAreInTuple<
Descendants, 
typename std::decay<Args>::type...>::
 
  559                template<typename... Args>
 
  561                explicit CPU(Args &&...args)
 
  563                    using namespace Zivid::Detail::TypeTraits;
 
  566                        AllArgsDecayedAreUnique<Args...>::value,
 
  567                        "Found duplicate types among the arguments passed to CPU(...). " 
  568                        "Types should be listed at most once.");
 
  570                    set(std::forward<Args>(args)...);
 
  584                template<
typename... Args, 
typename std::enable_if<
sizeof...(Args) >= 2, 
int>::type = 0>
 
  586                template<typename... Args>
 
  590                    using namespace Zivid::Detail::TypeTraits;
 
  592                    using AllArgsAreDescendantNodes =
 
  593                        AllArgsAreInTuple<Descendants, typename std::decay<Args>::type...>;
 
  595                        AllArgsAreDescendantNodes::value, 
"All arguments passed to set(...) must be descendant nodes.");
 
  598                        AllArgsDecayedAreUnique<Args...>::value,
 
  599                        "Found duplicate types among the arguments passed to set(...). " 
  600                        "Types should be listed at most once.");
 
  602                    Zivid::DataModel::Detail::invokeSetWithEachArgument(*
this, std::forward<Args>(args)...);
 
  617                template<
typename... Args, 
typename std::enable_if<
sizeof...(Args) >= 1, 
int>::type = 0>
 
  619                template<typename... Args>
 
  623                    using namespace Zivid::Detail::TypeTraits;
 
  625                    using AllArgsAreDescendantNodes =
 
  626                        AllArgsAreInTuple<Descendants, typename std::decay<Args>::type...>;
 
  628                        AllArgsAreDescendantNodes::value,
 
  629                        "All arguments passed to copyWith(...) must be descendant nodes.");
 
  632                        AllArgsDecayedAreUnique<Args...>::value,
 
  633                        "Found duplicate types among the arguments passed to copyWith(...). " 
  634                        "Types should be listed at most once.");
 
  637                    copy.
set(std::forward<Args>(args)...);
 
  662                    typename std::enable_if<std::is_same<T, FrameInfo::SystemInfo::CPU::Model>::value, 
int>::type = 0>
 
  668                template<size_t i, typename std::enable_if<i == 0, int>::type = 0>
 
  704                void setFromString(
const std::string &value);
 
  706                void setFromString(
const std::string &fullPath, 
const std::string &value);
 
  708                std::string getString(
const std::string &fullPath) 
const;
 
  712                friend struct DataModel::Detail::Befriend<
CPU>;
 
  723                static constexpr const char *path{ 
"SystemInfo/ComputeDevice" };
 
  726                static constexpr const char *name{ 
"ComputeDevice" };
 
  729                static constexpr const char *description{ R
"description(Compute device)description" }; 
  739                    static constexpr const char *path{ 
"SystemInfo/ComputeDevice/Model" };
 
  742                    static constexpr const char *name{ 
"Model" };
 
  745                    static constexpr const char *description{ R
"description(Compute device model)description" }; 
  753                        return { 0, std::numeric_limits<ValueType::size_type>::max() };
 
  761                        : m_value{ std::move(value) }
 
  773                        return m_value == other.m_value;
 
  779                        return m_value != other.m_value;
 
  785                        return m_value < other.m_value;
 
  791                        return m_value > other.m_value;
 
  801                    void setFromString(
const std::string &value);
 
  803                    std::string m_value{};
 
  805                    friend struct DataModel::Detail::Befriend<
Model>;
 
  816                    static constexpr const char *path{ 
"SystemInfo/ComputeDevice/Vendor" };
 
  819                    static constexpr const char *name{ 
"Vendor" };
 
  822                    static constexpr const char *description{ R
"description(Compute device vendor)description" }; 
  830                        return { 0, std::numeric_limits<ValueType::size_type>::max() };
 
  838                        : m_value{ std::move(value) }
 
  850                        return m_value == other.m_value;
 
  856                        return m_value != other.m_value;
 
  862                        return m_value < other.m_value;
 
  868                        return m_value > other.m_value;
 
  878                    void setFromString(
const std::string &value);
 
  880                    std::string m_value{};
 
  882                    friend struct DataModel::Detail::Befriend<
Vendor>;
 
  886                    tuple<FrameInfo::SystemInfo::ComputeDevice::Model, FrameInfo::SystemInfo::ComputeDevice::Vendor>;
 
  906                    typename std::enable_if<
sizeof...(Args) >= 1, 
int>::type = 0,
 
  907                    typename std::enable_if<
 
  908                        Zivid::Detail::TypeTraits::AllArgsAreInTuple<
Descendants, 
typename std::decay<Args>::type...>::
 
  912                template<typename... Args>
 
  916                    using namespace Zivid::Detail::TypeTraits;
 
  919                        AllArgsDecayedAreUnique<Args...>::value,
 
  920                        "Found duplicate types among the arguments passed to ComputeDevice(...). " 
  921                        "Types should be listed at most once.");
 
  923                    set(std::forward<Args>(args)...);
 
  938                template<
typename... Args, 
typename std::enable_if<
sizeof...(Args) >= 2, 
int>::type = 0>
 
  940                template<typename... Args>
 
  944                    using namespace Zivid::Detail::TypeTraits;
 
  946                    using AllArgsAreDescendantNodes =
 
  947                        AllArgsAreInTuple<Descendants, typename std::decay<Args>::type...>;
 
  949                        AllArgsAreDescendantNodes::value, 
"All arguments passed to set(...) must be descendant nodes.");
 
  952                        AllArgsDecayedAreUnique<Args...>::value,
 
  953                        "Found duplicate types among the arguments passed to set(...). " 
  954                        "Types should be listed at most once.");
 
  956                    Zivid::DataModel::Detail::invokeSetWithEachArgument(*
this, std::forward<Args>(args)...);
 
  972                template<
typename... Args, 
typename std::enable_if<
sizeof...(Args) >= 1, 
int>::type = 0>
 
  974                template<typename... Args>
 
  978                    using namespace Zivid::Detail::TypeTraits;
 
  980                    using AllArgsAreDescendantNodes =
 
  981                        AllArgsAreInTuple<Descendants, typename std::decay<Args>::type...>;
 
  983                        AllArgsAreDescendantNodes::value,
 
  984                        "All arguments passed to copyWith(...) must be descendant nodes.");
 
  987                        AllArgsDecayedAreUnique<Args...>::value,
 
  988                        "Found duplicate types among the arguments passed to copyWith(...). " 
  989                        "Types should be listed at most once.");
 
  992                    copy.
set(std::forward<Args>(args)...);
 
 1036                    typename std::enable_if<std::is_same<T, FrameInfo::SystemInfo::ComputeDevice::Model>::value, 
int>::
 
 1045                    typename std::enable_if<std::is_same<T, FrameInfo::SystemInfo::ComputeDevice::Vendor>::value, 
int>::
 
 1052                template<size_t i, typename std::enable_if<i == 0, int>::type = 0>
 
 1058                template<size_t i, typename std::enable_if<i == 1, int>::type = 0>
 
 1065                template<
typename F>
 
 1073                template<
typename F>
 
 1096                void setFromString(
const std::string &value);
 
 1098                void setFromString(
const std::string &fullPath, 
const std::string &value);
 
 1100                std::string getString(
const std::string &fullPath) 
const;
 
 1116                static constexpr const char *path{ 
"SystemInfo/OperatingSystem" };
 
 1119                static constexpr const char *name{ 
"OperatingSystem" };
 
 1122                static constexpr const char *description{ R
"description(Operating system)description" }; 
 1130                    return { 0, std::numeric_limits<ValueType::size_type>::max() };
 
 1138                    : m_value{ std::move(value) }
 
 1150                    return m_value == other.m_value;
 
 1156                    return m_value != other.m_value;
 
 1162                    return m_value < other.m_value;
 
 1168                    return m_value > other.m_value;
 
 1178                void setFromString(
const std::string &value);
 
 1180                std::string m_value{};
 
 1215                typename std::enable_if<
sizeof...(Args) >= 1, 
int>::type = 0,
 
 1216                typename std::enable_if<
 
 1217                    Zivid::Detail::TypeTraits::AllArgsAreInTuple<
Descendants, 
typename std::decay<Args>::type...>::
 
 1221            template<typename... Args>
 
 1225                using namespace Zivid::Detail::TypeTraits;
 
 1228                    AllArgsDecayedAreUnique<Args...>::value,
 
 1229                    "Found duplicate types among the arguments passed to SystemInfo(...). " 
 1230                    "Types should be listed at most once.");
 
 1232                set(std::forward<Args>(args)...);
 
 1251            template<
typename... Args, 
typename std::enable_if<
sizeof...(Args) >= 2, 
int>::type = 0>
 
 1253            template<typename... Args>
 
 1257                using namespace Zivid::Detail::TypeTraits;
 
 1259                using AllArgsAreDescendantNodes = AllArgsAreInTuple<Descendants, typename std::decay<Args>::type...>;
 
 1261                    AllArgsAreDescendantNodes::value, 
"All arguments passed to set(...) must be descendant nodes.");
 
 1264                    AllArgsDecayedAreUnique<Args...>::value,
 
 1265                    "Found duplicate types among the arguments passed to set(...). " 
 1266                    "Types should be listed at most once.");
 
 1268                Zivid::DataModel::Detail::invokeSetWithEachArgument(*
this, std::forward<Args>(args)...);
 
 1288            template<
typename... Args, 
typename std::enable_if<
sizeof...(Args) >= 1, 
int>::type = 0>
 
 1290            template<typename... Args>
 
 1294                using namespace Zivid::Detail::TypeTraits;
 
 1296                using AllArgsAreDescendantNodes = AllArgsAreInTuple<Descendants, typename std::decay<Args>::type...>;
 
 1298                    AllArgsAreDescendantNodes::value,
 
 1299                    "All arguments passed to copyWith(...) must be descendant nodes.");
 
 1302                    AllArgsDecayedAreUnique<Args...>::value,
 
 1303                    "Found duplicate types among the arguments passed to copyWith(...). " 
 1304                    "Types should be listed at most once.");
 
 1307                copy.
set(std::forward<Args>(args)...);
 
 1340                return m_computeDevice;
 
 1346                return m_computeDevice;
 
 1352                m_computeDevice = value;
 
 1359                m_computeDevice.
set(value);
 
 1366                m_computeDevice.
set(value);
 
 1373                return m_operatingSystem;
 
 1379                return m_operatingSystem;
 
 1385                m_operatingSystem = value;
 
 1391                typename std::enable_if<std::is_same<T, FrameInfo::SystemInfo::CPU>::value, 
int>::type = 0>
 
 1399                typename std::enable_if<std::is_same<T, FrameInfo::SystemInfo::CPU::Model>::value, 
int>::type = 0>
 
 1407                typename std::enable_if<std::is_same<T, FrameInfo::SystemInfo::ComputeDevice>::value, 
int>::type = 0>
 
 1410                return m_computeDevice;
 
 1415                typename std::enable_if<std::is_same<T, FrameInfo::SystemInfo::ComputeDevice::Model>::value, 
int>::
 
 1424                typename std::enable_if<std::is_same<T, FrameInfo::SystemInfo::ComputeDevice::Vendor>::value, 
int>::
 
 1433                typename std::enable_if<std::is_same<T, FrameInfo::SystemInfo::OperatingSystem>::value, 
int>::type = 0>
 
 1436                return m_operatingSystem;
 
 1439            template<size_t i, typename std::enable_if<i == 0, int>::type = 0>
 
 1445            template<size_t i, typename std::enable_if<i == 1, int>::type = 0>
 
 1448                return m_computeDevice;
 
 1451            template<size_t i, typename std::enable_if<i == 2, int>::type = 0>
 
 1454                return m_operatingSystem;
 
 1458            template<
typename F>
 
 1463                f(m_operatingSystem);
 
 1467            template<
typename F>
 
 1472                f(m_operatingSystem);
 
 1491            void setFromString(
const std::string &value);
 
 1493            void setFromString(
const std::string &fullPath, 
const std::string &value);
 
 1495            std::string getString(
const std::string &fullPath) 
const;
 
 1501            friend struct DataModel::Detail::Befriend<
SystemInfo>;
 
 1512            static constexpr const char *path{ 
"TimeStamp" };
 
 1515            static constexpr const char *name{ 
"TimeStamp" };
 
 1518            static constexpr const char *description{ R
"description(The time of frame capture)description" }; 
 1526                return { std::chrono::system_clock::time_point::min(), std::chrono::system_clock::time_point::max() };
 
 1533            explicit constexpr TimeStamp(std::chrono::system_clock::time_point value)
 
 1538            std::chrono::system_clock::time_point 
value() 
const;
 
 1546                return m_value == other.m_value;
 
 1552                return m_value != other.m_value;
 
 1558                return m_value < other.m_value;
 
 1564                return m_value > other.m_value;
 
 1574            void setFromString(
const std::string &value);
 
 1576            std::chrono::system_clock::time_point m_value{};
 
 1578            friend struct DataModel::Detail::Befriend<
TimeStamp>;
 
 1622            typename std::enable_if<
sizeof...(Args) >= 1, 
int>::type = 0,
 
 1623            typename std::enable_if<
 
 1624                Zivid::Detail::TypeTraits::AllArgsAreInTuple<
Descendants, 
typename std::decay<Args>::type...>::value,
 
 1627        template<typename... Args>
 
 1631            using namespace Zivid::Detail::TypeTraits;
 
 1634                AllArgsDecayedAreUnique<Args...>::value,
 
 1635                "Found duplicate types among the arguments passed to FrameInfo(...). " 
 1636                "Types should be listed at most once.");
 
 1638            set(std::forward<Args>(args)...);
 
 1661        template<
typename... Args, 
typename std::enable_if<
sizeof...(Args) >= 2, 
int>::type = 0>
 
 1663        template<typename... Args>
 
 1667            using namespace Zivid::Detail::TypeTraits;
 
 1669            using AllArgsAreDescendantNodes = AllArgsAreInTuple<Descendants, typename std::decay<Args>::type...>;
 
 1671                AllArgsAreDescendantNodes::value, 
"All arguments passed to set(...) must be descendant nodes.");
 
 1674                AllArgsDecayedAreUnique<Args...>::value,
 
 1675                "Found duplicate types among the arguments passed to set(...). " 
 1676                "Types should be listed at most once.");
 
 1678            Zivid::DataModel::Detail::invokeSetWithEachArgument(*
this, std::forward<Args>(args)...);
 
 1702        template<
typename... Args, 
typename std::enable_if<
sizeof...(Args) >= 1, 
int>::type = 0>
 
 1704        template<typename... Args>
 
 1708            using namespace Zivid::Detail::TypeTraits;
 
 1710            using AllArgsAreDescendantNodes = AllArgsAreInTuple<Descendants, typename std::decay<Args>::type...>;
 
 1712                AllArgsAreDescendantNodes::value, 
"All arguments passed to copyWith(...) must be descendant nodes.");
 
 1715                AllArgsDecayedAreUnique<Args...>::value,
 
 1716                "Found duplicate types among the arguments passed to copyWith(...). " 
 1717                "Types should be listed at most once.");
 
 1720            copy.
set(std::forward<Args>(args)...);
 
 1727            return m_softwareVersion;
 
 1733            return m_softwareVersion;
 
 1739            m_softwareVersion = value;
 
 1746            m_softwareVersion.
set(value);
 
 1753            return m_systemInfo;
 
 1759            return m_systemInfo;
 
 1765            m_systemInfo = value;
 
 1772            m_systemInfo.
set(value);
 
 1779            m_systemInfo.
set(value);
 
 1786            m_systemInfo.
set(value);
 
 1793            m_systemInfo.
set(value);
 
 1800            m_systemInfo.
set(value);
 
 1807            m_systemInfo.
set(value);
 
 1826            m_timeStamp = value;
 
 1830        template<typename T, typename std::enable_if<std::is_same<T, FrameInfo::SoftwareVersion>::value, 
int>::type = 0>
 
 1833            return m_softwareVersion;
 
 1838            typename std::enable_if<std::is_same<T, FrameInfo::SoftwareVersion::Core>::value, 
int>::type = 0>
 
 1844        template<typename T, typename std::enable_if<std::is_same<T, FrameInfo::SystemInfo>::value, 
int>::type = 0>
 
 1847            return m_systemInfo;
 
 1850        template<typename T, typename std::enable_if<std::is_same<T, FrameInfo::SystemInfo::CPU>::value, 
int>::type = 0>
 
 1858            typename std::enable_if<std::is_same<T, FrameInfo::SystemInfo::CPU::Model>::value, 
int>::type = 0>
 
 1866            typename std::enable_if<std::is_same<T, FrameInfo::SystemInfo::ComputeDevice>::value, 
int>::type = 0>
 
 1874            typename std::enable_if<std::is_same<T, FrameInfo::SystemInfo::ComputeDevice::Model>::value, 
int>::type = 0>
 
 1882            typename std::enable_if<std::is_same<T, FrameInfo::SystemInfo::ComputeDevice::Vendor>::value, 
int>::type =
 
 1891            typename std::enable_if<std::is_same<T, FrameInfo::SystemInfo::OperatingSystem>::value, 
int>::type = 0>
 
 1897        template<typename T, typename std::enable_if<std::is_same<T, FrameInfo::TimeStamp>::value, 
int>::type = 0>
 
 1903        template<size_t i, typename std::enable_if<i == 0, int>::type = 0>
 
 1906            return m_softwareVersion;
 
 1909        template<size_t i, typename std::enable_if<i == 1, int>::type = 0>
 
 1912            return m_systemInfo;
 
 1915        template<size_t i, typename std::enable_if<i == 2, int>::type = 0>
 
 1922        template<
typename F>
 
 1925            f(m_softwareVersion);
 
 1931        template<
typename F>
 
 1934            f(m_softwareVersion);
 
 1955        void save(
const std::string &fileName) 
const;
 
 1958        void load(
const std::string &fileName);
 
 1961        void setFromString(
const std::string &value);
 
 1963        void setFromString(
const std::string &fullPath, 
const std::string &value);
 
 1965        std::string getString(
const std::string &fullPath) 
const;
 
 1971        friend struct DataModel::Detail::Befriend<
FrameInfo>;
 
 1976    struct FrameInfo::Version<3>
 
 1985#    pragma warning(pop) 
 1989#    if !(defined(_MSC_VER) && (_MSC_VER <= 1900)) 
 1994    struct tuple_size<
Zivid::FrameInfo::SoftwareVersion> : integral_constant<size_t, 1>
 
 1998    struct tuple_element<i, 
Zivid::FrameInfo::SoftwareVersion>
 
 2000        static_assert(i < tuple_size<Zivid::FrameInfo::SoftwareVersion>::value, 
"Index must be less than 1");
 
 2003            = 
decltype(declval<Zivid::FrameInfo::SoftwareVersion>().get<i>());
 
 2007    struct tuple_size<
Zivid::FrameInfo::SystemInfo> : integral_constant<size_t, 3>
 
 2011    struct tuple_element<i, 
Zivid::FrameInfo::SystemInfo>
 
 2013        static_assert(i < tuple_size<Zivid::FrameInfo::SystemInfo>::value, 
"Index must be less than 3");
 
 2016            = 
decltype(declval<Zivid::FrameInfo::SystemInfo>().get<i>());
 
 2020    struct tuple_size<
Zivid::FrameInfo::SystemInfo::CPU> : integral_constant<size_t, 1>
 
 2024    struct tuple_element<i, 
Zivid::FrameInfo::SystemInfo::CPU>
 
 2026        static_assert(i < tuple_size<Zivid::FrameInfo::SystemInfo::CPU>::value, 
"Index must be less than 1");
 
 2029            = 
decltype(declval<Zivid::FrameInfo::SystemInfo::CPU>().get<i>());
 
 2033    struct tuple_size<
Zivid::FrameInfo::SystemInfo::ComputeDevice> : integral_constant<size_t, 2>
 
 2037    struct tuple_element<i, 
Zivid::FrameInfo::SystemInfo::ComputeDevice>
 
 2039        static_assert(i < tuple_size<Zivid::FrameInfo::SystemInfo::ComputeDevice>::value, 
"Index must be less than 2");
 
 2042            = 
decltype(declval<Zivid::FrameInfo::SystemInfo::ComputeDevice>().get<i>());
 
 2046    struct tuple_size<
Zivid::FrameInfo> : integral_constant<size_t, 3>
 
 2050    struct tuple_element<i, 
Zivid::FrameInfo>
 
 2052        static_assert(i < tuple_size<Zivid::FrameInfo>::value, 
"Index must be less than 3");
 
 2055            = 
decltype(declval<Zivid::FrameInfo>().get<i>());
 
 2064#if defined(__has_include) && !defined(NO_DOC) 
 2065#    if __has_include("Zivid/FrameInfoInternal.h") && __has_include("Zivid/DataModelSerializationMetaData.h")
 
 2066#        include "Zivid/FrameInfoInternal.h" 
#define ZIVID_CORE_EXPORT
Definition: CoreExport.h:101
 
Contains information about the compute device used by Zivid::Application.
Definition: ComputeDevice.h:103
 
Core version
Definition: FrameInfo.h:169
 
std::string toString() const
Get the value as string
 
const std::string & value() const
Get the value
 
bool operator!=(const Core &other) const
Comparison operator
Definition: FrameInfo.h:213
 
Core(std::string value)
Constructor
Definition: FrameInfo.h:196
 
bool operator==(const Core &other) const
Comparison operator
Definition: FrameInfo.h:207
 
Core()=default
Default constructor
 
bool operator>(const Core &other) const
Comparison operator
Definition: FrameInfo.h:225
 
bool operator<(const Core &other) const
Comparison operator
Definition: FrameInfo.h:219
 
friend std::ostream & operator<<(std::ostream &stream, const Core &value)
Operator to serialize the value to a stream
Definition: FrameInfo.h:231
 
std::string ValueType
The type of the underlying value
Definition: FrameInfo.h:184
 
static constexpr Range< ValueType::size_type > validSize()
The valid sizes for Core
Definition: FrameInfo.h:187
 
The version information for installed software at the time of image capture
Definition: FrameInfo.h:151
 
const Core & core() const
Get Core
Definition: FrameInfo.h:350
 
friend std::ostream & operator<<(std::ostream &stream, const SoftwareVersion &value)
Operator to send the value as string to a stream
Definition: FrameInfo.h:406
 
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:391
 
SoftwareVersion()
Default constructor
 
const FrameInfo::SoftwareVersion::Core & get() const
Definition: FrameInfo.h:371
 
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:330
 
Core & core()
Get Core
Definition: FrameInfo.h:356
 
SoftwareVersion(Args &&...args)
Constructor taking variadic number of arguments
Definition: FrameInfo.h:271
 
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:384
 
void set(Args &&...args)
Set multiple arguments
Definition: FrameInfo.h:298
 
std::tuple< FrameInfo::SoftwareVersion::Core > Descendants
Definition: FrameInfo.h:244
 
SoftwareVersion & set(const Core &value)
Set Core
Definition: FrameInfo.h:362
 
std::string toString() const
Get the value as string
 
CPU model
Definition: FrameInfo.h:459
 
const std::string & value() const
Get the value
 
bool operator!=(const Model &other) const
Comparison operator
Definition: FrameInfo.h:503
 
Model()=default
Default constructor
 
bool operator<(const Model &other) const
Comparison operator
Definition: FrameInfo.h:509
 
std::string toString() const
Get the value as string
 
bool operator==(const Model &other) const
Comparison operator
Definition: FrameInfo.h:497
 
friend std::ostream & operator<<(std::ostream &stream, const Model &value)
Operator to serialize the value to a stream
Definition: FrameInfo.h:521
 
static constexpr Range< ValueType::size_type > validSize()
The valid sizes for Model
Definition: FrameInfo.h:477
 
std::string ValueType
The type of the underlying value
Definition: FrameInfo.h:474
 
Model(std::string value)
Constructor
Definition: FrameInfo.h:486
 
bool operator>(const Model &other) const
Comparison operator
Definition: FrameInfo.h:515
 
CPU
Definition: FrameInfo.h:443
 
void forEach(const F &f)
Run the given function on each direct member with the value of the member as parameter
Definition: FrameInfo.h:683
 
const Model & model() const
Get Model
Definition: FrameInfo.h:642
 
std::tuple< FrameInfo::SystemInfo::CPU::Model > Descendants
Definition: FrameInfo.h:534
 
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:676
 
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:698
 
CPU(Args &&...args)
Constructor taking variadic number of arguments
Definition: FrameInfo.h:561
 
CPU & set(const Model &value)
Set Model
Definition: FrameInfo.h:654
 
void set(Args &&...args)
Set multiple arguments
Definition: FrameInfo.h:588
 
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:621
 
Model & model()
Get Model
Definition: FrameInfo.h:648
 
const FrameInfo::SystemInfo::CPU::Model & get() const
Definition: FrameInfo.h:663
 
Compute device model
Definition: FrameInfo.h:733
 
static constexpr Range< ValueType::size_type > validSize()
The valid sizes for Model
Definition: FrameInfo.h:751
 
std::string toString() const
Get the value as string
 
Model(std::string value)
Constructor
Definition: FrameInfo.h:760
 
std::string ValueType
The type of the underlying value
Definition: FrameInfo.h:748
 
const std::string & value() const
Get the value
 
bool operator==(const Model &other) const
Comparison operator
Definition: FrameInfo.h:771
 
bool operator!=(const Model &other) const
Comparison operator
Definition: FrameInfo.h:777
 
bool operator>(const Model &other) const
Comparison operator
Definition: FrameInfo.h:789
 
friend std::ostream & operator<<(std::ostream &stream, const Model &value)
Operator to serialize the value to a stream
Definition: FrameInfo.h:795
 
bool operator<(const Model &other) const
Comparison operator
Definition: FrameInfo.h:783
 
Model()=default
Default constructor
 
Compute device vendor
Definition: FrameInfo.h:810
 
bool operator>(const Vendor &other) const
Comparison operator
Definition: FrameInfo.h:866
 
static constexpr Range< ValueType::size_type > validSize()
The valid sizes for Vendor
Definition: FrameInfo.h:828
 
friend std::ostream & operator<<(std::ostream &stream, const Vendor &value)
Operator to serialize the value to a stream
Definition: FrameInfo.h:872
 
bool operator<(const Vendor &other) const
Comparison operator
Definition: FrameInfo.h:860
 
bool operator==(const Vendor &other) const
Comparison operator
Definition: FrameInfo.h:848
 
std::string ValueType
The type of the underlying value
Definition: FrameInfo.h:825
 
Vendor()=default
Default constructor
 
std::string toString() const
Get the value as string
 
const std::string & value() const
Get the value
 
bool operator!=(const Vendor &other) const
Comparison operator
Definition: FrameInfo.h:854
 
Vendor(std::string value)
Constructor
Definition: FrameInfo.h:837
 
Compute device
Definition: FrameInfo.h:717
 
void set(Args &&...args)
Set multiple arguments
Definition: FrameInfo.h:942
 
ComputeDevice & set(const Model &value)
Set Model
Definition: FrameInfo.h:1009
 
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:1066
 
const Vendor & vendor() const
Get Vendor
Definition: FrameInfo.h:1016
 
ComputeDevice(Args &&...args)
Constructor taking variadic number of arguments
Definition: FrameInfo.h:914
 
void forEach(const F &f)
Run the given function on each direct member with the value of the member as parameter
Definition: FrameInfo.h:1074
 
Model & model()
Get Model
Definition: FrameInfo.h:1003
 
Vendor & vendor()
Get Vendor
Definition: FrameInfo.h:1022
 
bool operator==(const ComputeDevice &other) const
Equality operator
 
const FrameInfo::SystemInfo::ComputeDevice::Vendor & get() const
Definition: FrameInfo.h:1047
 
const Model & model() const
Get Model
Definition: FrameInfo.h:997
 
friend std::ostream & operator<<(std::ostream &stream, const ComputeDevice &value)
Operator to send the value as string to a stream
Definition: FrameInfo.h:1090
 
std::tuple< FrameInfo::SystemInfo::ComputeDevice::Model, FrameInfo::SystemInfo::ComputeDevice::Vendor > Descendants
Definition: FrameInfo.h:886
 
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:1028
 
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:976
 
const FrameInfo::SystemInfo::ComputeDevice::Model & get() const
Definition: FrameInfo.h:1038
 
Operating system
Definition: FrameInfo.h:1110
 
bool operator>(const OperatingSystem &other) const
Comparison operator
Definition: FrameInfo.h:1166
 
OperatingSystem(std::string value)
Constructor
Definition: FrameInfo.h:1137
 
bool operator!=(const OperatingSystem &other) const
Comparison operator
Definition: FrameInfo.h:1154
 
bool operator<(const OperatingSystem &other) const
Comparison operator
Definition: FrameInfo.h:1160
 
bool operator==(const OperatingSystem &other) const
Comparison operator
Definition: FrameInfo.h:1148
 
std::string ValueType
The type of the underlying value
Definition: FrameInfo.h:1125
 
OperatingSystem()=default
Default constructor
 
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:1172
 
std::string toString() const
Get the value as string
 
static constexpr Range< ValueType::size_type > validSize()
The valid sizes for OperatingSystem
Definition: FrameInfo.h:1128
 
Information about the system that captured this frame
Definition: FrameInfo.h:425
 
SystemInfo & set(const CPU::Model &value)
Set CPU::Model
Definition: FrameInfo.h:1331
 
std::string toString() const
Get the value as string
 
const FrameInfo::SystemInfo::CPU & get() const
Definition: FrameInfo.h:1392
 
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:1459
 
ComputeDevice & computeDevice()
Get ComputeDevice
Definition: FrameInfo.h:1344
 
SystemInfo & set(const ComputeDevice &value)
Set ComputeDevice
Definition: FrameInfo.h:1350
 
const FrameInfo::SystemInfo::ComputeDevice::Vendor & get() const
Definition: FrameInfo.h:1426
 
SystemInfo & set(const CPU &value)
Set CPU
Definition: FrameInfo.h:1324
 
bool operator==(const SystemInfo &other) const
Equality operator
 
void set(Args &&...args)
Set multiple arguments
Definition: FrameInfo.h:1255
 
friend std::ostream & operator<<(std::ostream &stream, const SystemInfo &value)
Operator to send the value as string to a stream
Definition: FrameInfo.h:1485
 
const ComputeDevice & computeDevice() const
Get ComputeDevice
Definition: FrameInfo.h:1338
 
void forEach(const F &f)
Run the given function on each direct member with the value of the member as parameter
Definition: FrameInfo.h:1468
 
SystemInfo & set(const ComputeDevice::Vendor &value)
Set ComputeDevice::Vendor
Definition: FrameInfo.h:1364
 
SystemInfo & set(const OperatingSystem &value)
Set OperatingSystem
Definition: FrameInfo.h:1383
 
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:1292
 
bool operator!=(const SystemInfo &other) const
Inequality operator
 
SystemInfo & set(const ComputeDevice::Model &value)
Set ComputeDevice::Model
Definition: FrameInfo.h:1357
 
const FrameInfo::SystemInfo::OperatingSystem & get() const
Definition: FrameInfo.h:1434
 
CPU & cpu()
Get CPU
Definition: FrameInfo.h:1318
 
const FrameInfo::SystemInfo::ComputeDevice & get() const
Definition: FrameInfo.h:1408
 
SystemInfo(Args &&...args)
Constructor taking variadic number of arguments
Definition: FrameInfo.h:1223
 
const OperatingSystem & operatingSystem() const
Get OperatingSystem
Definition: FrameInfo.h:1371
 
OperatingSystem & operatingSystem()
Get OperatingSystem
Definition: FrameInfo.h:1377
 
SystemInfo()
Default constructor
 
const CPU & cpu() const
Get CPU
Definition: FrameInfo.h:1312
 
const FrameInfo::SystemInfo::ComputeDevice::Model & get() const
Definition: FrameInfo.h:1417
 
const FrameInfo::SystemInfo::CPU::Model & get() const
Definition: FrameInfo.h:1400
 
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:1191
 
The time of frame capture
Definition: FrameInfo.h:1506
 
std::chrono::system_clock::time_point value() const
Get the value
 
bool operator>(const TimeStamp &other) const
Comparison operator
Definition: FrameInfo.h:1562
 
bool operator<(const TimeStamp &other) const
Comparison operator
Definition: FrameInfo.h:1556
 
static constexpr Range< std::chrono::system_clock::time_point > validRange()
The range of valid values for TimeStamp
Definition: FrameInfo.h:1524
 
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:1568
 
TimeStamp()=default
Default constructor
 
constexpr TimeStamp(std::chrono::system_clock::time_point value)
Constructor
Definition: FrameInfo.h:1533
 
bool operator!=(const TimeStamp &other) const
Comparison operator
Definition: FrameInfo.h:1550
 
bool operator==(const TimeStamp &other) const
Comparison operator
Definition: FrameInfo.h:1544
 
std::chrono::system_clock::time_point ValueType
The type of the underlying value
Definition: FrameInfo.h:1521
 
Various information for a frame
Definition: FrameInfo.h:121
 
TimeStamp & timeStamp()
Get TimeStamp
Definition: FrameInfo.h:1818
 
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:1923
 
const FrameInfo::SoftwareVersion::Core & get() const
Definition: FrameInfo.h:1839
 
FrameInfo & set(const SystemInfo::ComputeDevice &value)
Set SystemInfo::ComputeDevice
Definition: FrameInfo.h:1784
 
FrameInfo()
Default constructor
 
void set(Args &&...args)
Set multiple arguments
Definition: FrameInfo.h:1665
 
const FrameInfo::SystemInfo::ComputeDevice::Model & get() const
Definition: FrameInfo.h:1875
 
FrameInfo & set(const SystemInfo::OperatingSystem &value)
Set SystemInfo::OperatingSystem
Definition: FrameInfo.h:1805
 
void save(const std::string &fileName) const
Save to the given file
 
const SystemInfo & systemInfo() const
Get SystemInfo
Definition: FrameInfo.h:1751
 
FrameInfo & set(const SystemInfo &value)
Set SystemInfo
Definition: FrameInfo.h:1763
 
const TimeStamp & timeStamp() const
Get TimeStamp
Definition: FrameInfo.h:1812
 
SoftwareVersion & softwareVersion()
Get SoftwareVersion
Definition: FrameInfo.h:1731
 
FrameInfo(const std::string &fileName)
Construct FrameInfo by loading from file
 
FrameInfo & set(const SystemInfo::ComputeDevice::Vendor &value)
Set SystemInfo::ComputeDevice::Vendor
Definition: FrameInfo.h:1798
 
const FrameInfo::SoftwareVersion & get() const
Definition: FrameInfo.h:1831
 
friend std::ostream & operator<<(std::ostream &stream, const FrameInfo &value)
Operator to send the value as string to a stream
Definition: FrameInfo.h:1949
 
FrameInfo & set(const TimeStamp &value)
Set TimeStamp
Definition: FrameInfo.h:1824
 
FrameInfo(Args &&...args)
Constructor taking variadic number of arguments
Definition: FrameInfo.h:1629
 
const FrameInfo::TimeStamp & get() const
Definition: FrameInfo.h:1898
 
const SoftwareVersion & softwareVersion() const
Get SoftwareVersion
Definition: FrameInfo.h:1725
 
FrameInfo & set(const SystemInfo::CPU::Model &value)
Set SystemInfo::CPU::Model
Definition: FrameInfo.h:1777
 
FrameInfo & set(const SystemInfo::ComputeDevice::Model &value)
Set SystemInfo::ComputeDevice::Model
Definition: FrameInfo.h:1791
 
const FrameInfo::SystemInfo::CPU::Model & get() const
Definition: FrameInfo.h:1859
 
const FrameInfo::SystemInfo::ComputeDevice::Vendor & get() const
Definition: FrameInfo.h:1884
 
FrameInfo & set(const SoftwareVersion &value)
Set SoftwareVersion
Definition: FrameInfo.h:1737
 
const FrameInfo::SystemInfo & get() const
Definition: FrameInfo.h:1845
 
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:1591
 
const FrameInfo::SystemInfo::ComputeDevice & get() const
Definition: FrameInfo.h:1867
 
FrameInfo & set(const SoftwareVersion::Core &value)
Set SoftwareVersion::Core
Definition: FrameInfo.h:1744
 
SystemInfo & systemInfo()
Get SystemInfo
Definition: FrameInfo.h:1757
 
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:1932
 
bool operator==(const FrameInfo &other) const
Equality operator
 
FrameInfo & set(const SystemInfo::CPU &value)
Set SystemInfo::CPU
Definition: FrameInfo.h:1770
 
const FrameInfo::SystemInfo::CPU & get() const
Definition: FrameInfo.h:1851
 
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:1706
 
const FrameInfo::SystemInfo::OperatingSystem & get() const
Definition: FrameInfo.h:1892
 
Class describing a range of values for a given type T
Definition: Range.h:102
 
NodeType
Definition: NodeType.h:100
 
The main Zivid namespace. All Zivid code is found here
Definition: Application.h:99