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>
40PXR_NAMESPACE_OPEN_SCOPE
52inline const std::string&
53NdrGetIdentifierString(
const NdrIdentifier&
id) {
return id.GetString(); }
54typedef std::vector<NdrIdentifier> NdrIdentifierVec;
59typedef std::vector<TfToken> NdrTokenVec;
60typedef std::unordered_map<
TfToken, std::string,
66typedef std::unique_ptr<NdrProperty> NdrPropertyUniquePtr;
67typedef std::vector<NdrPropertyUniquePtr> NdrPropertyUniquePtrVec;
68typedef std::unordered_map<
TfToken, NdrPropertyConstPtr,
73typedef NdrNode const* NdrNodeConstPtr;
74typedef std::unique_ptr<NdrNode> NdrNodeUniquePtr;
75typedef std::vector<NdrNodeConstPtr> NdrNodeConstPtrVec;
76typedef std::vector<NdrNodeUniquePtr> NdrNodeUniquePtrVec;
79typedef std::vector<std::string> NdrStringVec;
80typedef std::pair<TfToken, TfToken> NdrOption;
81typedef std::vector<NdrOption> NdrOptionVec;
82typedef std::unordered_set<std::string> NdrStringSet;
83typedef 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,
209PXR_NAMESPACE_CLOSE_SCOPE
Represents an abstract node.
Represents a property (input or output) that is part of a NdrNode instance.
Represents a value type name, i.e.
Token for efficient comparison, assignment, and hashing of known strings.
Functor to use for hash maps from tokens to other things.
TfToken class for efficient string referencing and hashing, plus conversions to and from stl string c...
NdrVersionFilter
Enumeration used to select nodes by version.