7 #ifndef PXR_IMAGING_HF_PLUGIN_REGISTRY_H
8 #define PXR_IMAGING_HF_PLUGIN_REGISTRY_H
124 template<
typename T,
typename PluginBaseType,
typename... Bases>
134 typedef std::vector<Hf_PluginEntry> _PluginEntryVector;
135 typedef std::map<TfToken, size_t> _TokenMap;
142 typedef std::function<HfPluginBase *()> _FactoryFn;
156 _PluginEntryVector _pluginEntries;
157 _TokenMap _pluginIndex;
160 bool _pluginCachePopulated;
163 void _DiscoverPlugins();
166 Hf_PluginEntry *_GetEntryForPlugin(
HfPluginBase *plugin);
171 HfPluginRegistry() =
delete;
172 HfPluginRegistry(
const HfPluginRegistry &) =
delete;
173 HfPluginRegistry &operator=(
const HfPluginRegistry &) =
delete;
178 HfPluginRegistry::_CreatePlugin()
185 template<
typename T,
typename PluginBaseType,
typename... Bases>
192 _FactoryFn
func = &_CreatePlugin<T>;
193 _SetFactory(type, func);
200 #endif //PXR_IMAGING_HF_PLUGIN_REGISTRY_H
HF_API TfToken GetPluginId(const HfPluginBase *plugin) const
#define HF_MALLOC_TAG_FUNCTION()
virtual HF_API void _CollectAdditionalMetadata(const PlugRegistry &plugRegistry, const TfType &pluginType)
HF_API void ReleasePlugin(HfPluginBase *plugin)
HF_API bool IsRegisteredPlugin(const TfToken &pluginId)
GLint GLint GLsizei GLint GLenum GLenum type
static TfType const & Define()
HF_API bool GetPluginDesc(const TfToken &pluginId, HfPluginDesc *desc)
HF_API void GetPluginDescs(HfPluginDescVector *plugins)
PXR_NAMESPACE_CLOSE_SCOPE PXR_NAMESPACE_OPEN_SCOPE
HF_API HfPluginBase * GetPlugin(const TfToken &pluginId)
#define PXR_NAMESPACE_CLOSE_SCOPE
std::vector< HfPluginDesc > HfPluginDescVector
HF_API void AddPluginReference(HfPluginBase *plugin)
virtual HF_API ~HfPluginRegistry()