[Scummvm-cvs-logs] SF.net SVN: scummvm:[51845] scummvm/branches/gsoc2010-plugins/backends/ plugins

toneman1138 at users.sourceforge.net toneman1138 at users.sourceforge.net
Sun Aug 8 00:27:23 CEST 2010


Revision: 51845
          http://scummvm.svn.sourceforge.net/scummvm/?rev=51845&view=rev
Author:   toneman1138
Date:     2010-08-07 22:27:23 +0000 (Sat, 07 Aug 2010)

Log Message:
-----------
refined constructors, removed destructors, got rid of unneccessary method duplication in DLObject and its subtypes

Modified Paths:
--------------
    scummvm/branches/gsoc2010-plugins/backends/plugins/arm-loader.h
    scummvm/branches/gsoc2010-plugins/backends/plugins/ds/ds-provider.cpp
    scummvm/branches/gsoc2010-plugins/backends/plugins/elf-loader.h
    scummvm/branches/gsoc2010-plugins/backends/plugins/elf-provider.cpp
    scummvm/branches/gsoc2010-plugins/backends/plugins/elf-provider.h
    scummvm/branches/gsoc2010-plugins/backends/plugins/mips-loader.h
    scummvm/branches/gsoc2010-plugins/backends/plugins/ps2/ps2-provider.cpp
    scummvm/branches/gsoc2010-plugins/backends/plugins/psp/psp-provider.cpp

Modified: scummvm/branches/gsoc2010-plugins/backends/plugins/arm-loader.h
===================================================================
--- scummvm/branches/gsoc2010-plugins/backends/plugins/arm-loader.h	2010-08-07 22:20:28 UTC (rev 51844)
+++ scummvm/branches/gsoc2010-plugins/backends/plugins/arm-loader.h	2010-08-07 22:27:23 UTC (rev 51845)
@@ -33,14 +33,5 @@
     bool relocateRels(Common::SeekableReadStream* DLFile, Elf32_Ehdr *ehdr, Elf32_Shdr *shdr);
 
 public:
-    ARMDLObject() {
-    	_segment = NULL;
-    	_symtab = NULL;
-    	_strtab = NULL;
-    	_symbol_cnt = 0;
-    	_symtab_sect = -1;
-    	_dtors_start = NULL;
-    	_dtors_end = NULL;
-    	_segmentSize = 0;
-    }
+    ARMDLObject() : DLObject() {}
 };

Modified: scummvm/branches/gsoc2010-plugins/backends/plugins/ds/ds-provider.cpp
===================================================================
--- scummvm/branches/gsoc2010-plugins/backends/plugins/ds/ds-provider.cpp	2010-08-07 22:20:28 UTC (rev 51844)
+++ scummvm/branches/gsoc2010-plugins/backends/plugins/ds/ds-provider.cpp	2010-08-07 22:27:23 UTC (rev 51845)
@@ -32,43 +32,11 @@
 
 class DSPlugin : public ELFPlugin {
 public:
-	DSPlugin(const Common::String &filename) {
-		_dlHandle = 0;
-		_filename = filename;
-	}
+	DSPlugin(const Common::String &filename) : ELFPlugin(filename) {}
 
-	~DSPlugin() {
-		if (_dlHandle)
-			unloadPlugin();
-	}
-
-	bool loadPlugin();
+	DLObject *makeDLObject() { return new ARMDLObject(); }
 };
 
-bool DSPlugin::loadPlugin() {
-		assert(!_dlHandle);
-		DLObject *obj = new ARMDLObject();
-		if (obj->open(_filename.c_str())) {
-			_dlHandle = obj;
-		} else {
-			delete obj;
-			_dlHandle = NULL;
-		}
-
-		if (!_dlHandle) {
-			warning("Failed loading plugin '%s'", _filename.c_str());
-			return false;
-		}
-
-		bool ret = DynamicPlugin::loadPlugin();
-
-		if (ret && _dlHandle) {
-			_dlHandle->discard_symtab();
-		}
-
-		return ret;
-};
-
 Plugin* DSPluginProvider::createPlugin(const Common::FSNode &node) const {
 	return new DSPlugin(node.getPath());
 }

Modified: scummvm/branches/gsoc2010-plugins/backends/plugins/elf-loader.h
===================================================================
--- scummvm/branches/gsoc2010-plugins/backends/plugins/elf-loader.h	2010-08-07 22:20:28 UTC (rev 51844)
+++ scummvm/branches/gsoc2010-plugins/backends/plugins/elf-loader.h	2010-08-07 22:27:23 UTC (rev 51845)
@@ -60,6 +60,8 @@
     void *symbol(const char *name);
     void discard_symtab();
 
+	DLObject() : _segment(NULL), _symtab(NULL), _strtab(NULL), _symbol_cnt(0),
+				 _symtab_sect(-1), _dtors_start(NULL), _dtors_end(NULL), _segmentSize(0) {}
 };
 
 #endif /* ELF_LOADER_H */

Modified: scummvm/branches/gsoc2010-plugins/backends/plugins/elf-provider.cpp
===================================================================
--- scummvm/branches/gsoc2010-plugins/backends/plugins/elf-provider.cpp	2010-08-07 22:20:28 UTC (rev 51844)
+++ scummvm/branches/gsoc2010-plugins/backends/plugins/elf-provider.cpp	2010-08-07 22:27:23 UTC (rev 51845)
@@ -58,6 +58,30 @@
 	return tmp;
 }
 
+bool ELFPlugin::loadPlugin() {
+		assert(!_dlHandle);
+		DLObject *obj = makeDLObject();
+		if (obj->open(_filename.c_str())) {
+			_dlHandle = obj;
+		} else {
+			delete obj;
+			_dlHandle = NULL;
+		}
+
+		if (!_dlHandle) {
+			warning("Failed loading plugin '%s'", _filename.c_str());
+			return false;
+		}
+
+		bool ret = DynamicPlugin::loadPlugin();
+
+		if (ret && _dlHandle) {
+			_dlHandle->discard_symtab();
+		}
+
+		return ret;
+};
+
 void ELFPlugin::unloadPlugin() {
 	DynamicPlugin::unloadPlugin();
 	if (_dlHandle) {

Modified: scummvm/branches/gsoc2010-plugins/backends/plugins/elf-provider.h
===================================================================
--- scummvm/branches/gsoc2010-plugins/backends/plugins/elf-provider.h	2010-08-07 22:20:28 UTC (rev 51844)
+++ scummvm/branches/gsoc2010-plugins/backends/plugins/elf-provider.h	2010-08-07 22:27:23 UTC (rev 51845)
@@ -42,9 +42,6 @@
 	virtual VoidFunc findSymbol(const char *symbol);
 
 public:
-	ELFPlugin() {
-	}
-
 	ELFPlugin(const Common::String &filename)
 		: _dlHandle(0), _filename(filename) {}
 
@@ -53,7 +50,9 @@
 			unloadPlugin();
 	}
 
-	virtual bool loadPlugin() = 0;
+	virtual DLObject *makeDLObject() = 0;
+
+	bool loadPlugin();
 	void unloadPlugin();
 
 };

Modified: scummvm/branches/gsoc2010-plugins/backends/plugins/mips-loader.h
===================================================================
--- scummvm/branches/gsoc2010-plugins/backends/plugins/mips-loader.h	2010-08-07 22:20:28 UTC (rev 51844)
+++ scummvm/branches/gsoc2010-plugins/backends/plugins/mips-loader.h	2010-08-07 22:27:23 UTC (rev 51845)
@@ -39,15 +39,7 @@
     void unload();
 
 public:
-    MIPSDLObject() {
-    	_segment = NULL;
-    	_symtab = NULL;
-    	_strtab = NULL;
-    	_symbol_cnt = 0;
-    	_symtab_sect = -1;
-    	_dtors_start = NULL;
-    	_dtors_end = NULL;
-    	_segmentSize = 0;
+    MIPSDLObject() : DLObject() {
 		_shortsSegment = NULL;
 		_gpVal = 0;
     }

Modified: scummvm/branches/gsoc2010-plugins/backends/plugins/ps2/ps2-provider.cpp
===================================================================
--- scummvm/branches/gsoc2010-plugins/backends/plugins/ps2/ps2-provider.cpp	2010-08-07 22:20:28 UTC (rev 51844)
+++ scummvm/branches/gsoc2010-plugins/backends/plugins/ps2/ps2-provider.cpp	2010-08-07 22:27:23 UTC (rev 51845)
@@ -32,43 +32,11 @@
 
 class PS2Plugin : public ELFPlugin {
 public:
-	PS2Plugin(const Common::String &filename) {
-		_dlHandle = 0;
-		_filename = filename;
-	}
+	PS2Plugin(const Common::String &filename) : ELFPlugin(filename) {}
 
-	~PS2Plugin() {
-		if (_dlHandle)
-			unloadPlugin();
-	}
-
-	bool loadPlugin();
+	DLObject *makeDLObject() { return new MIPSDLObject(); }
 };
 
-bool PS2Plugin::loadPlugin() {
-		assert(!_dlHandle);
-		DLObject *obj = new MIPSDLObject();
-		if (obj->open(_filename.c_str())) {
-			_dlHandle = obj;
-		} else {
-			delete obj;
-			_dlHandle = NULL;
-		}
-
-		if (!_dlHandle) {
-			warning("Failed loading plugin '%s'", _filename.c_str());
-			return false;
-		}
-
-		bool ret = DynamicPlugin::loadPlugin();
-
-		if (ret && _dlHandle) {
-			_dlHandle->discard_symtab();
-		}
-
-		return ret;
-};
-
 Plugin* PS2PluginProvider::createPlugin(const Common::FSNode &node) const {
 	return new PS2Plugin(node.getPath());
 }

Modified: scummvm/branches/gsoc2010-plugins/backends/plugins/psp/psp-provider.cpp
===================================================================
--- scummvm/branches/gsoc2010-plugins/backends/plugins/psp/psp-provider.cpp	2010-08-07 22:20:28 UTC (rev 51844)
+++ scummvm/branches/gsoc2010-plugins/backends/plugins/psp/psp-provider.cpp	2010-08-07 22:27:23 UTC (rev 51845)
@@ -32,43 +32,11 @@
 
 class PSPPlugin : public ELFPlugin {
 public:
-	PSPPlugin(const Common::String &filename) {
-		_dlHandle = 0;
-		_filename = filename;
-	}
+	PSPPlugin(const Common::String &filename) : ELFPlugin(filename) {}
 
-	~PSPPlugin() {
-		if (_dlHandle)
-			unloadPlugin();
-	}
-
-	bool loadPlugin();
+	DLObject *makeDLObject() { return new MIPSDLObject(); }
 };
 
-bool PSPPlugin::loadPlugin() {
-		assert(!_dlHandle);
-		DLObject *obj = new MIPSDLObject();
-		if (obj->open(_filename.c_str())) {
-			_dlHandle = obj;
-		} else {
-			delete obj;
-			_dlHandle = NULL;
-		}
-
-		if (!_dlHandle) {
-			warning("Failed loading plugin '%s'", _filename.c_str());
-			return false;
-		}
-
-		bool ret = DynamicPlugin::loadPlugin();
-
-		if (ret && _dlHandle) {
-			_dlHandle->discard_symtab();
-		}
-
-		return ret;
-};
-
 Plugin* PSPPluginProvider::createPlugin(const Common::FSNode &node) const {
 	return new PSPPlugin(node.getPath());
 }


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list