8#ifndef PXR_USD_NDR_DECLARE_H
9#define PXR_USD_NDR_DECLARE_H
18#include "pxr/usd/ndr/api.h"
23#include <unordered_map>
24#include <unordered_set>
27PXR_NAMESPACE_OPEN_SCOPE
43inline const std::string&
44NdrGetIdentifierString(
const NdrIdentifier&
id) {
return id.GetString(); }
45typedef std::vector<NdrIdentifier> NdrIdentifierVec;
50typedef std::vector<TfToken> NdrTokenVec;
51typedef std::unordered_map<
TfToken, std::string,
57typedef std::unique_ptr<NdrProperty> NdrPropertyUniquePtr;
58typedef std::vector<NdrPropertyUniquePtr> NdrPropertyUniquePtrVec;
59typedef std::unordered_map<
TfToken, NdrPropertyConstPtr,
64typedef NdrNode const* NdrNodeConstPtr;
65typedef std::unique_ptr<NdrNode> NdrNodeUniquePtr;
66typedef std::vector<NdrNodeConstPtr> NdrNodeConstPtrVec;
67typedef std::vector<NdrNodeUniquePtr> NdrNodeUniquePtrVec;
70typedef std::vector<std::string> NdrStringVec;
71typedef std::pair<TfToken, TfToken> NdrOption;
72typedef std::vector<NdrOption> NdrOptionVec;
73typedef std::unordered_set<std::string> NdrStringSet;
124 return (
static_cast<std::size_t
>(_major) << 32) +
125 static_cast<std::size_t
>(_minor);
130 explicit operator bool()
const
139 return _major == 0 && _minor == 0;
146 return lhs._major == rhs._major && lhs._minor == rhs._minor;
153 return !(lhs == rhs);
160 return lhs._major < rhs._major ||
161 (lhs._major == rhs._major && lhs._minor < rhs._minor);
168 return lhs._major < rhs._major ||
169 (lhs._major == rhs._major && lhs._minor <= rhs._minor);
176 return !(lhs <= rhs);
188 : _major(x._major), _minor(x._minor), _isDefault(true) { }
191 int _major = 0, _minor = 0;
192 bool _isDefault =
false;
199 NdrVersionFilterDefaultOnly,
200 NdrVersionFilterAllVersions,
204PXR_NAMESPACE_CLOSE_SCOPE
Represents an abstract node.
Represents a property (input or output) that is part of a NdrNode instance.
NDR_API NdrVersion()=default
Create an invalid version.
NDR_API int GetMajor() const
Return the major version number or zero for an invalid version.
NDR_API std::string GetStringSuffix() const
Return the version as a identifier suffix.
NDR_API NdrVersion(int major, int minor=0)
Create a version with the given major and minor numbers.
NDR_API NdrVersion(const std::string &x)
Create a version from a string.
NDR_API friend bool operator<(const NdrVersion &lhs, const NdrVersion &rhs)
Return true iff the left side is less than the right side.
NDR_API std::size_t GetHash() const
Return a hash for the version.
NDR_API bool IsDefault() const
Return true iff this version is marked as default.
NDR_API friend bool operator>=(const NdrVersion &lhs, const NdrVersion &rhs)
Return true iff the left side is greater than or equal to the right side.
NDR_API friend bool operator>(const NdrVersion &lhs, const NdrVersion &rhs)
Return true iff the left side is greater than the right side.
NDR_API NdrVersion GetAsDefault() const
Return an equal version marked as default.
NDR_API std::string GetString() const
Return the version as a string.
NDR_API int GetMinor() const
Return the minor version number or zero for an invalid version.
NDR_API friend bool operator!=(const NdrVersion &lhs, const NdrVersion &rhs)
Return true iff versions are not equal.
NDR_API friend bool operator==(const NdrVersion &lhs, const NdrVersion &rhs)
Return true iff versions are equal.
NDR_API friend bool operator<=(const NdrVersion &lhs, const NdrVersion &rhs)
Return true iff the left side is less than or equal to the right side.
NDR_API bool operator!() const
Return true iff the version is invalid.
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.