25 #ifndef PXR_USD_NDR_REGISTRY_H
26 #define PXR_USD_NDR_REGISTRY_H
287 using _TypeToParserPluginMap =
288 std::unordered_map<TfToken, NdrParserPlugin*, TfToken::HashFunctor>;
292 using _NodeMapKey = std::pair<NdrIdentifier, TfToken>;
293 using _NodeMap = std::unordered_map<_NodeMapKey, NdrNodeUniquePtr, TfHash>;
297 using _DiscoveryResultsByIdentifier = std::unordered_multimap<
299 using _DiscoveryResultsByIdentifierRange =
300 std::pair<_DiscoveryResultsByIdentifier::const_iterator,
301 _DiscoveryResultsByIdentifier::const_iterator>;
306 using _DiscoveryResultPtrsByName = std::unordered_multimap<
308 using _DiscoveryResultPtrsByNameRange =
309 std::pair<_DiscoveryResultPtrsByName::const_iterator,
310 _DiscoveryResultPtrsByName::const_iterator>;
314 mutable std::mutex _discoveryResultMutex;
318 mutable std::mutex _nodeMapMutex;
329 void _FindAndInstantiateDiscoveryPlugins();
332 void _FindAndInstantiateParserPlugins();
336 void _InstantiateParserPlugins(
const std::set<TfType>& parserPluginTypes);
348 _DiscoveryResultsByIdentifierRange
range,
const TfToken& sourceType);
354 _DiscoveryResultPtrsByNameRange
range,
const TfToken& sourceType,
376 _GetParserForDiscoveryType(
const TfToken& discoveryType)
const;
384 _TypeToParserPluginMap _parserPluginMap;
387 std::vector<std::unique_ptr<NdrParserPlugin>> _parserPlugins;
392 _DiscoveryResultsByIdentifier _discoveryResultsByIdentifier;
393 _DiscoveryResultPtrsByName _discoveryResultPtrsByName;
407 #endif // PXR_USD_NDR_REGISTRY_H
NDR_API NdrStringVec GetSearchURIs() const
NdrVersionFilter
Enumeration used to select nodes by version.
std::vector< TfToken > NdrTokenVec
NDR_API NdrNodeConstPtr GetNodeByNameAndType(const std::string &name, const TfToken &sourceType, NdrVersionFilter filter=NdrVersionFilterDefaultOnly)
NdrNode const * NdrNodeConstPtr
std::vector< NdrNodeConstPtr > NdrNodeConstPtrVec
NdrRegistry & operator=(const NdrRegistry &)=delete
GLuint const GLchar * name
NDR_API NdrNodeConstPtr GetNodeByIdentifier(const NdrIdentifier &identifier, const NdrTokenVec &sourceTypePriority=NdrTokenVec())
friend class _DiscoveryContext
NDR_API NdrNodeConstPtr GetNodeByIdentifierAndType(const NdrIdentifier &identifier, const TfToken &sourceType)
std::vector< NdrIdentifier > NdrIdentifierVec
NDR_API NdrNodeConstPtr GetNodeByName(const std::string &name, const NdrTokenVec &sourceTypePriority=NdrTokenVec(), NdrVersionFilter filter=NdrVersionFilterDefaultOnly)
NDR_API NdrIdentifierVec GetNodeIdentifiers(const TfToken &family=TfToken(), NdrVersionFilter filter=NdrVersionFilterDefaultOnly) const
std::vector< std::string > NdrStringVec
GLsizei const GLchar *const * string
NDR_API NdrNodeConstPtr GetNodeFromSourceCode(const std::string &sourceCode, const TfToken &sourceType, const NdrTokenMap &metadata)
GLint GLint GLint GLint GLint GLint GLint GLbitfield GLenum filter
NdrDiscoveryPluginRefPtrVector DiscoveryPluginRefPtrVec
NDR_API NdrNodeConstPtrVec GetNodesByIdentifier(const NdrIdentifier &identifier)
PXR_NAMESPACE_CLOSE_SCOPE PXR_NAMESPACE_OPEN_SCOPE
NDR_API void SetExtraDiscoveryPlugins(DiscoveryPluginRefPtrVec plugins)
std::unique_ptr< NdrNode > NdrNodeUniquePtr
#define PXR_NAMESPACE_CLOSE_SCOPE
NDR_API NdrStringVec GetNodeNames(const TfToken &family=TfToken()) const
std::unordered_map< TfToken, std::string, TfToken::HashFunctor > NdrTokenMap
NDR_API void SetExtraParserPlugins(const std::vector< TfType > &pluginTypes)
NDR_API NdrNodeConstPtr GetNodeFromAsset(const SdfAssetPath &asset, const NdrTokenMap &metadata, const TfToken &subIdentifier=TfToken(), const TfToken &sourceType=TfToken())
std::set< TfToken, TfTokenFastArbitraryLessThan > Set
NDR_API NdrNodeConstPtrVec GetNodesByName(const std::string &name, NdrVersionFilter filter=NdrVersionFilterDefaultOnly)
NDR_API NdrNodeConstPtrVec GetNodesByFamily(const TfToken &family=TfToken(), NdrVersionFilter filter=NdrVersionFilterDefaultOnly)
NDR_API NdrTokenVec GetAllNodeSourceTypes() const