7#ifndef PXR_USD_SDF_FILE_VERSION_H
8#define PXR_USD_SDF_FILE_VERSION_H
11#include "pxr/usd/sdf/api.h"
17PXR_NAMESPACE_OPEN_SCOPE
24 uint8_t majver, minver, patchver;
26 constexpr SdfFileVersion()
27 : SdfFileVersion(0,0,0) {}
29 constexpr SdfFileVersion(uint8_t majver, uint8_t minver, uint8_t patchver)
30 : majver(majver), minver(minver), patchver(patchver) {}
34 explicit SdfFileVersion(
const uint8_t version[])
35 : SdfFileVersion(version[0], version[1], version[2]) {}
39 static SdfFileVersion FromString(
char const *str);
42 static SdfFileVersion FromString(std::string str) {
43 return FromString(str.c_str());
49 constexpr uint32_t AsInt()
const {
50 return static_cast<uint32_t
>(majver) << 16 |
51 static_cast<uint32_t
>(minver) << 8 |
52 static_cast<uint32_t
>(patchver);
58 std::string AsString()
const;
63 std::string AsFullString()
const;
66 bool IsValid()
const {
return AsInt() != 0; }
68 explicit operator bool()
const {
76 bool CanRead(SdfFileVersion
const &fileVer)
const {
77 return fileVer.majver == majver && fileVer.minver <= minver;
83 bool CanWrite(SdfFileVersion
const &fileVer)
const {
84 return fileVer.majver == majver &&
85 (fileVer.minver < minver ||
86 (fileVer.minver == minver && fileVer.patchver <= patchver));
90 constexpr bool operator op(SdfFileVersion const &other) const { \
91 return AsInt() op other.AsInt(); \
93 LOGIC_OP(==); LOGIC_OP(!=);
94 LOGIC_OP(<); LOGIC_OP(>);
95 LOGIC_OP(<=); LOGIC_OP(>=);
99PXR_NAMESPACE_CLOSE_SCOPE