8#ifndef PXR_USD_NDR_DECLARE_H
9#define PXR_USD_NDR_DECLARE_H
14#include "pxr/usd/ndr/api.h"
19#include <unordered_map>
20#include <unordered_set>
23PXR_NAMESPACE_OPEN_SCOPE
35inline const std::string&
36NdrGetIdentifierString(
const NdrIdentifier&
id) {
return id.GetString(); }
37typedef std::vector<NdrIdentifier> NdrIdentifierVec;
42typedef std::vector<TfToken> NdrTokenVec;
43typedef std::unordered_map<
TfToken, std::string,
49typedef std::unique_ptr<NdrProperty> NdrPropertyUniquePtr;
50typedef std::vector<NdrPropertyUniquePtr> NdrPropertyUniquePtrVec;
51typedef std::unordered_map<
TfToken, NdrPropertyConstPtr,
56typedef NdrNode const* NdrNodeConstPtr;
57typedef std::unique_ptr<NdrNode> NdrNodeUniquePtr;
58typedef std::vector<NdrNodeConstPtr> NdrNodeConstPtrVec;
59typedef std::vector<NdrNodeUniquePtr> NdrNodeUniquePtrVec;
62typedef std::vector<std::string> NdrStringVec;
63typedef std::pair<TfToken, TfToken> NdrOption;
64typedef std::vector<NdrOption> NdrOptionVec;
65typedef std::unordered_set<std::string> NdrStringSet;
66typedef std::pair<SdfValueTypeName, TfToken> NdrSdfTypeIndicator;
73 NdrVersion() =
default;
78 NdrVersion(
int major,
int minor = 0);
82 NdrVersion(
const std::string& x);
87 NdrVersion GetAsDefault()
const
89 return NdrVersion(*
this,
true);
94 int GetMajor()
const {
return _major; }
97 int GetMinor()
const {
return _minor; }
100 bool IsDefault()
const {
return _isDefault; }
104 std::string GetString()
const;
108 std::string GetStringSuffix()
const;
112 std::size_t GetHash()
const
114 return (
static_cast<std::size_t
>(_major) << 32) +
115 static_cast<std::size_t
>(_minor);
120 explicit operator bool()
const
127 bool operator!()
const
129 return _major == 0 && _minor == 0;
134 friend bool operator==(
const NdrVersion& lhs,
const NdrVersion& rhs)
136 return lhs._major == rhs._major && lhs._minor == rhs._minor;
141 friend bool operator!=(
const NdrVersion& lhs,
const NdrVersion& rhs)
143 return !(lhs == rhs);
148 friend bool operator<(
const NdrVersion& lhs,
const NdrVersion& rhs)
150 return lhs._major < rhs._major ||
151 (lhs._major == rhs._major && lhs._minor < rhs._minor);
156 friend bool operator<=(
const NdrVersion& lhs,
const NdrVersion& rhs)
158 return lhs._major < rhs._major ||
159 (lhs._major == rhs._major && lhs._minor <= rhs._minor);
164 friend bool operator>(
const NdrVersion& lhs,
const NdrVersion& rhs)
166 return !(lhs <= rhs);
171 friend bool operator>=(
const NdrVersion& lhs,
const NdrVersion& rhs)
177 NdrVersion(
const NdrVersion& x,
bool)
178 : _major(x._major), _minor(x._minor), _isDefault(true) { }
181 int _major = 0, _minor = 0;
182 bool _isDefault =
false;
187 NdrVersionFilterDefaultOnly,
188 NdrVersionFilterAllVersions,
192PXR_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.