aboutsummaryrefslogtreecommitdiff
path: root/base/plugins.h
diff options
context:
space:
mode:
Diffstat (limited to 'base/plugins.h')
-rw-r--r--base/plugins.h22
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);