diff options
author | Jordi Vilalta Prat | 2008-05-06 03:00:26 +0000 |
---|---|---|
committer | Jordi Vilalta Prat | 2008-05-06 03:00:26 +0000 |
commit | 38a8aa516e0fa315e318801e5399f82e51efa8df (patch) | |
tree | c6f7bc89fe2340a846ef891cefc9031cfdb32ec9 /base/plugins.h | |
parent | 3ac46924e311afb6b02615af04556da823c4f3f3 (diff) | |
download | scummvm-rg350-38a8aa516e0fa315e318801e5399f82e51efa8df.tar.gz scummvm-rg350-38a8aa516e0fa315e318801e5399f82e51efa8df.tar.bz2 scummvm-rg350-38a8aa516e0fa315e318801e5399f82e51efa8df.zip |
Allow static and dynamic plugins to be used at the same time
svn-id: r31888
Diffstat (limited to 'base/plugins.h')
-rw-r--r-- | base/plugins.h | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/base/plugins.h b/base/plugins.h index f317a533ae..ca08a0c628 100644 --- a/base/plugins.h +++ b/base/plugins.h @@ -100,6 +100,15 @@ public: }; +#define STATIC_PLUGIN 1 +#define DYNAMIC_PLUGIN 2 + +#define PLUGIN_ENABLED_STATIC(ID) \ + (defined(ENABLE_##ID) && !PLUGIN_ENABLED_DYNAMIC(ID)) + +#define PLUGIN_ENABLED_DYNAMIC(ID) \ + (defined(ENABLE_##ID) && (ENABLE_##ID == DYNAMIC_PLUGIN) && defined(DYNAMIC_MODULES)) + /** * REGISTER_PLUGIN is a convenience macro meant to ease writing * the plugin interface for our modules. In particular, using it @@ -109,15 +118,16 @@ public: * @todo add some means to query the plugin API version etc. */ -#ifndef DYNAMIC_MODULES -#define REGISTER_PLUGIN(ID,TYPE,PLUGINCLASS) \ +#define REGISTER_PLUGIN_STATIC(ID,TYPE,PLUGINCLASS) \ PluginType g_##ID##_type = TYPE; \ PluginObject *g_##ID##_getObject() { \ return new PLUGINCLASS(); \ } \ void dummyFuncToAllowTrailingSemicolon() -#else -#define REGISTER_PLUGIN(ID,TYPE,PLUGINCLASS) \ + +#ifdef DYNAMIC_MODULES + +#define REGISTER_PLUGIN_DYNAMIC(ID,TYPE,PLUGINCLASS) \ extern "C" { \ PLUGIN_EXPORT int32 PLUGIN_getVersion() { return PLUGIN_VERSION; } \ PLUGIN_EXPORT int32 PLUGIN_getType() { return TYPE; } \ @@ -127,7 +137,8 @@ public: } \ } \ void dummyFuncToAllowTrailingSemicolon() -#endif + +#endif // DYNAMIC_MODULES /** List of plugins. */ |