8 #ifndef PXR_USD_NDR_REGISTRY_H
9 #define PXR_USD_NDR_REGISTRY_H
337 using _TypeToParserPluginMap =
338 std::unordered_map<TfToken, NdrParserPlugin*, TfToken::HashFunctor>;
342 using _NodeMapKey = std::pair<NdrIdentifier, TfToken>;
343 using _NodeMap = std::unordered_map<_NodeMapKey, NdrNodeUniquePtr, TfHash>;
347 using _DiscoveryResultsByIdentifier = std::unordered_multimap<
349 using _DiscoveryResultsByIdentifierRange =
350 std::pair<_DiscoveryResultsByIdentifier::const_iterator,
351 _DiscoveryResultsByIdentifier::const_iterator>;
356 using _DiscoveryResultPtrsByName = std::unordered_multimap<
358 using _DiscoveryResultPtrsByNameRange =
359 std::pair<_DiscoveryResultPtrsByName::const_iterator,
360 _DiscoveryResultPtrsByName::const_iterator>;
364 mutable std::mutex _discoveryResultMutex;
368 mutable std::mutex _nodeMapMutex;
379 void _FindAndInstantiateDiscoveryPlugins();
382 void _FindAndInstantiateParserPlugins();
386 void _InstantiateParserPlugins(
const std::set<TfType>& parserPluginTypes);
398 _DiscoveryResultsByIdentifierRange
range,
const TfToken& sourceType);
404 _DiscoveryResultPtrsByNameRange
range,
const TfToken& sourceType,
426 _GetParserForDiscoveryType(
const TfToken& discoveryType)
const;
434 _TypeToParserPluginMap _parserPluginMap;
437 std::vector<std::unique_ptr<NdrParserPlugin>> _parserPlugins;
442 _DiscoveryResultsByIdentifier _discoveryResultsByIdentifier;
443 _DiscoveryResultPtrsByName _discoveryResultPtrsByName;
457 #endif // PXR_USD_NDR_REGISTRY_H
NDR_API void AddDiscoveryResult(NdrNodeDiscoveryResult &&discoveryResult)
NDR_API NdrStringVec GetSearchURIs() const
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
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
NDR_API NdrNodeConstPtr GetNodeFromSourceCode(const std::string &sourceCode, const TfToken &sourceType, const NdrTokenMap &metadata)
NdrDiscoveryPluginRefPtrVector DiscoveryPluginRefPtrVec
GLuint const GLchar * name
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)
GLint GLint GLint GLint GLint GLint GLint GLbitfield GLenum filter
NDR_API NdrTokenVec GetAllNodeSourceTypes() const