25 #ifndef PXR_USD_NDR_DECLARE_H
26 #define PXR_USD_NDR_DECLARE_H
31 #include "pxr/usd/ndr/api.h"
36 #include <unordered_map>
37 #include <unordered_set>
40 PXR_NAMESPACE_OPEN_SCOPE
52 inline const std::string&
53 NdrGetIdentifierString(
const NdrIdentifier&
id) {
return id.GetString(); }
54 typedef std::vector<NdrIdentifier> NdrIdentifierVec;
59 typedef std::vector<TfToken> NdrTokenVec;
60 typedef std::unordered_map<
TfToken, std::string,
66 typedef std::unique_ptr<NdrProperty> NdrPropertyUniquePtr;
67 typedef std::vector<NdrPropertyUniquePtr> NdrPropertyUniquePtrVec;
68 typedef std::unordered_map<TfToken, NdrPropertyConstPtr,
73 typedef NdrNode const* NdrNodeConstPtr;
74 typedef std::unique_ptr<NdrNode> NdrNodeUniquePtr;
75 typedef std::vector<NdrNodeConstPtr> NdrNodeConstPtrVec;
76 typedef std::vector<NdrNodeUniquePtr> NdrNodeUniquePtrVec;
79 typedef std::vector<std::string> NdrStringVec;
80 typedef std::pair<TfToken, TfToken> NdrOption;
81 typedef std::vector<NdrOption> NdrOptionVec;
82 typedef std::unordered_set<std::string> NdrStringSet;
83 typedef std::pair<SdfValueTypeName, TfToken> NdrSdfTypeIndicator;
90 NdrVersion() =
default;
95 NdrVersion(
int major,
int minor = 0);
99 NdrVersion(
const std::string& x);
104 NdrVersion GetAsDefault()
const
106 return NdrVersion(*
this,
true);
111 int GetMajor()
const {
return _major; }
114 int GetMinor()
const {
return _minor; }
117 bool IsDefault()
const {
return _isDefault; }
121 std::string GetString()
const;
125 std::string GetStringSuffix()
const;
129 std::size_t GetHash()
const
131 return (static_cast<std::size_t>(_major) << 32) +
132 static_cast<std::size_t
>(_minor);
137 explicit operator bool()
const
144 bool operator!()
const
146 return _major == 0 && _minor == 0;
151 friend bool operator==(
const NdrVersion& lhs,
const NdrVersion& rhs)
153 return lhs._major == rhs._major && lhs._minor == rhs._minor;
158 friend bool operator!=(
const NdrVersion& lhs,
const NdrVersion& rhs)
160 return !(lhs == rhs);
165 friend bool operator<(
const NdrVersion& lhs,
const NdrVersion& rhs)
167 return lhs._major < rhs._major ||
168 (lhs._major == rhs._major && lhs._minor < rhs._minor);
173 friend bool operator<=(
const NdrVersion& lhs,
const NdrVersion& rhs)
175 return lhs._major < rhs._major ||
176 (lhs._major == rhs._major && lhs._minor <= rhs._minor);
181 friend bool operator>(
const NdrVersion& lhs,
const NdrVersion& rhs)
183 return !(lhs <= rhs);
188 friend bool operator>=(
const NdrVersion& lhs,
const NdrVersion& rhs)
194 NdrVersion(
const NdrVersion& x,
bool)
195 : _major(x._major), _minor(x._minor), _isDefault(true) { }
198 int _major = 0, _minor = 0;
199 bool _isDefault =
false;
204 NdrVersionFilterDefaultOnly,
205 NdrVersionFilterAllVersions,
209 PXR_NAMESPACE_CLOSE_SCOPE
211 #endif // PXR_USD_NDR_DECLARE_H
NdrVersionFilter
Enumeration used to select nodes by version.
Functor to use for hash maps from tokens to other things.
Represents a value type name, i.e.
Token for efficient comparison, assignment, and hashing of known strings.
Represents a property (input or output) that is part of a NdrNode instance.
Represents an abstract node.
VT_API bool operator==(VtDictionary const &, VtDictionary const &)
Equality comparison.
TfToken class for efficient string referencing and hashing, plus conversions to and from stl string c...