diff options
Diffstat (limited to 'base/plugins.h')
-rw-r--r-- | base/plugins.h | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/base/plugins.h b/base/plugins.h index a4c7f114f9..84b1af5599 100644 --- a/base/plugins.h +++ b/base/plugins.h @@ -212,6 +212,11 @@ public: * @return a list of Plugin instances */ virtual PluginList getPlugins() = 0; + + /** + * @return whether or not object is a FilePluginProvider. + */ + virtual bool isFilePluginProvider() { return false; } }; #ifdef DYNAMIC_MODULES @@ -234,6 +239,11 @@ public: */ virtual PluginList getPlugins(); + /** + * @return whether or not object is a FilePluginProvider. + */ + bool isFilePluginProvider() { return true; } + protected: /** * Create a Plugin instance from a loadable code module with the specified name. @@ -276,8 +286,15 @@ private: PluginList _plugins[PLUGIN_TYPE_MAX]; ProviderList _providers; - bool tryLoadPlugin(Plugin *plugin); + PluginList _allPlugs; + PluginList::iterator _currentPlugin; + + bool _skipStaticPlugs; + uint _nonEnginePlugs; + + bool tryLoadPlugin(Plugin *plugin); + friend class Common::Singleton<SingletonBaseType>; PluginManager(); @@ -286,6 +303,9 @@ public: void addPluginProvider(PluginProvider *pp); + void loadFirstPlugin(); + bool loadNextPlugin(); + void loadPlugins(); void unloadPlugins(); void unloadPluginsExcept(PluginType type, const Plugin *plugin); |