diff options
author | Max Horn | 2010-11-05 01:20:34 +0000 |
---|---|---|
committer | Max Horn | 2010-11-05 01:20:34 +0000 |
commit | 7ace85e63646d3fd4843e7f45595bc04f3b2c7dc (patch) | |
tree | 31fb058c695dab2969f5bf6a4f33db6973c20a33 /backends/plugins/psp | |
parent | 102e7ee88cf04fa470ec372a1ac38846d278d463 (diff) | |
download | scummvm-rg350-7ace85e63646d3fd4843e7f45595bc04f3b2c7dc.tar.gz scummvm-rg350-7ace85e63646d3fd4843e7f45595bc04f3b2c7dc.tar.bz2 scummvm-rg350-7ace85e63646d3fd4843e7f45595bc04f3b2c7dc.zip |
PLUGINS: Simplify ELF plugin providers & DLObject subclasses
* Remove DLObject virtual methods allocSegment and freeSegment.
As long as all DLObject implementations use memalign + free to
allocate/release segments, there is no point in wrapping those.
This enables further simplifications.
* Add TemplatedELFPlugin template class. Use this instead of explicit
ELFPlugin subclasses.
* Rename DLObject::discard_symtab to discardSymtab
svn-id: r54082
Diffstat (limited to 'backends/plugins/psp')
-rw-r--r-- | backends/plugins/psp/psp-provider.cpp | 30 |
1 files changed, 1 insertions, 29 deletions
diff --git a/backends/plugins/psp/psp-provider.cpp b/backends/plugins/psp/psp-provider.cpp index 5bf9b0cc20..87e4428024 100644 --- a/backends/plugins/psp/psp-provider.cpp +++ b/backends/plugins/psp/psp-provider.cpp @@ -32,43 +32,15 @@ #include "backends/plugins/elf/mips-loader.h" class PSPDLObject : public MIPSDLObject { -public: - PSPDLObject() : - MIPSDLObject() { - } - - virtual ~PSPDLObject() { - unload(); - } - protected: - virtual void *allocSegment(size_t boundary, size_t size) const { - return memalign(boundary, size); - } - - virtual void freeSegment(void *segment) const { - free(segment); - } - virtual void flushDataCache(void *ptr, uint32 len) const { sceKernelDcacheWritebackRange(ptr, len); sceKernelIcacheInvalidateRange(ptr, len); } }; -class PSPPlugin : public ELFPlugin { -public: - PSPPlugin(const Common::String &filename) : - ELFPlugin(filename) { - } - - virtual DLObject *makeDLObject() { - return new PSPDLObject(); - } -}; - Plugin *PSPPluginProvider::createPlugin(const Common::FSNode &node) const { - return new PSPPlugin(node.getPath()); + return new TemplatedELFPlugin<PSPDLObject>(node.getPath()); } #endif // defined(DYNAMIC_MODULES) && defined(__PSP__) |