[Scummvm-cvs-logs] CVS: scummvm/base plugins.cpp,1.51,1.52 plugins.h,1.32,1.33

Max Horn fingolfin at users.sourceforge.net
Sat Nov 19 09:58:02 CET 2005


Update of /cvsroot/scummvm/scummvm/base
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv19293

Modified Files:
	plugins.cpp plugins.h 
Log Message:
Tried to unify plugin code for PalmOS and non-PalmOS (hopefully I didn't break the PalmOS code this way, please verify)

Index: plugins.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/base/plugins.cpp,v
retrieving revision 1.51
retrieving revision 1.52
diff -u -d -r1.51 -r1.52
--- plugins.cpp	18 Oct 2005 01:30:16 -0000	1.51
+++ plugins.cpp	19 Nov 2005 17:57:24 -0000	1.52
@@ -86,24 +86,25 @@
 #pragma mark -
 
 class StaticPlugin : public Plugin {
-	const char *_name;
-	EngineFactory _ef;
-	DetectFunc _df;
-	GameList _games;
+	PluginRegistrator *_plugin;
 public:
-	StaticPlugin(const char *name, GameList games, EngineFactory ef, DetectFunc df)
-		: _name(name), _ef(ef), _df(df), _games(games) {
+	StaticPlugin(PluginRegistrator *plugin)
+		: _plugin(plugin) {
+	}
+	
+	~StaticPlugin() {
+		delete _plugin;
 	}
 
-	const char *getName() const					{ return _name; }
+	const char *getName() const { return _plugin->_name; }
 
 	Engine *createInstance(GameDetector *detector, OSystem *syst) const {
-		return (*_ef)(detector, syst);
+		return (*_plugin->_ef)(detector, syst);
 	}
 
-	GameList getSupportedGames() const { return _games; }
+	GameList getSupportedGames() const { return _plugin->_games; }
 	DetectedGameList detectGames(const FSList &fslist) const {
-		return (*_df)(fslist);
+		return (*_plugin->_df)(fslist);
 	}
 };
 
@@ -287,23 +288,13 @@
 
 #else
 
-#if defined(PALMOS_ARM) || defined(PALMOS_DEBUG)
-	#define FREE_PLUGIN(ID) \
-		extern PluginRegistrator *g_##ID##_PluginReg; \
-		delete g_##ID##_PluginReg;
-
 	#define LINK_PLUGIN(ID) \
 		extern PluginRegistrator *g_##ID##_PluginReg; \
 		extern void g_##ID##_PluginReg_alloc(); \
 		g_##ID##_PluginReg_alloc(); \
 		plugin = g_##ID##_PluginReg; \
-		tryLoadPlugin(new StaticPlugin(plugin->_name, plugin->_games, plugin->_ef, plugin->_df));
-#else
-	#define LINK_PLUGIN(ID) \
-		extern PluginRegistrator g_##ID##_PluginReg; \
-		plugin = &g_##ID##_PluginReg; \
-		tryLoadPlugin(new StaticPlugin(plugin->_name, plugin->_games, plugin->_ef, plugin->_df));
-#endif
+		tryLoadPlugin(new StaticPlugin(plugin));
+
 	// "Loader" for the static plugins.
 	// Iterate over all registered (static) plugins and load them.
 	PluginRegistrator *plugin;
@@ -341,36 +332,6 @@
 
 void PluginManager::unloadPlugins() {
 	unloadPluginsExcept(NULL);
-
-#if defined(PALMOS_ARM) || defined(PALMOS_DEBUG)
-	#ifndef DISABLE_SCUMM
-	FREE_PLUGIN(SCUMM)
-	#endif
-	#ifndef DISABLE_SKY
-	FREE_PLUGIN(SKY)
-	#endif
-	#ifndef DISABLE_SWORD1
-	FREE_PLUGIN(SWORD1)
-	#endif
-	#ifndef DISABLE_SWORD2
-	FREE_PLUGIN(SWORD2)
-	#endif
-	#ifndef DISABLE_SIMON
-	FREE_PLUGIN(SIMON)
-	#endif
-	#ifndef DISABLE_QUEEN
-	FREE_PLUGIN(QUEEN)
-	#endif
-	#ifndef DISABLE_SAGA
-	FREE_PLUGIN(SAGA)
-	#endif
-	#ifndef DISABLE_KYRA
-	FREE_PLUGIN(KYRA)
-	#endif
-	#ifndef DISABLE_GOB
-	FREE_PLUGIN(GOB)
-	#endif
-#endif
 }
 
 void PluginManager::unloadPluginsExcept(const Plugin *plugin) {

Index: plugins.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/base/plugins.h,v
retrieving revision 1.32
retrieving revision 1.33
diff -u -d -r1.32 -r1.33
--- plugins.h	18 Oct 2005 01:30:16 -0000	1.32
+++ plugins.h	19 Nov 2005 17:57:24 -0000	1.33
@@ -26,12 +26,12 @@
 #include "common/array.h"
 #include "common/singleton.h"
 #include "common/util.h"
+#include "base/gameDetector.h"	// For GameSettings
 
 class Engine;
 class FSList;
 class GameDetector;
 class OSystem;
-struct GameSettings;
 
 /** List of games. */
 typedef Common::Array<GameSettings> GameList;
@@ -84,21 +84,15 @@
  * both as a static and a dynamic plugin.
  *
  * @todo	add some means to query the plugin API version etc.
- * @todo	on Windows, we might need __declspec(dllexport) ?
  */
 
-#if defined(PALMOS_ARM) || defined(PALMOS_DEBUG)
+#ifndef DYNAMIC_MODULES
 #define REGISTER_PLUGIN(ID,name) \
 	PluginRegistrator *g_##ID##_PluginReg; \
 	void g_##ID##_PluginReg_alloc() { \
 		g_##ID##_PluginReg = new PluginRegistrator(name, Engine_##ID##_gameList(), Engine_##ID##_create, Engine_##ID##_detectGames);\
 	}
 #else
-
-#ifndef DYNAMIC_MODULES
-#define REGISTER_PLUGIN(ID,name) \
-	PluginRegistrator g_##ID##_PluginReg(name, Engine_##ID##_gameList(), Engine_##ID##_create, Engine_##ID##_detectGames);
-#else
 #define REGISTER_PLUGIN(ID,name) \
 	extern "C" { \
 		PLUGIN_EXPORT const char *PLUGIN_name() { return name; } \
@@ -107,7 +101,6 @@
 		PLUGIN_EXPORT DetectedGameList PLUGIN_detectGames(const FSList &fslist) { return Engine_##ID##_detectGames(fslist); } \
 	}
 #endif
-#endif
 
 #ifndef DYNAMIC_MODULES
 /**
@@ -115,7 +108,7 @@
  * to allow static 'plugins' to register with the PluginManager.
  */
 class PluginRegistrator {
-	friend class PluginManager;
+	friend class StaticPlugin;
 public:
 	typedef Engine *(*EngineFactory)(GameDetector *detector, OSystem *syst);
 	typedef DetectedGameList (*DetectFunc)(const FSList &fslist);





More information about the Scummvm-git-logs mailing list