[Scummvm-cvs-logs] SF.net SVN: scummvm:[34304] scummvm/trunk/backends

fingolfin at users.sourceforge.net fingolfin at users.sourceforge.net
Wed Sep 3 14:56:49 CEST 2008


Revision: 34304
          http://scummvm.svn.sourceforge.net/scummvm/?rev=34304&view=rev
Author:   fingolfin
Date:     2008-09-03 12:56:46 +0000 (Wed, 03 Sep 2008)

Log Message:
-----------
Pushed AbstractFilesystemNode::openForReading() / openForWriting() impls out to backends

Modified Paths:
--------------
    scummvm/trunk/backends/fs/abstract-fs.cpp
    scummvm/trunk/backends/fs/abstract-fs.h
    scummvm/trunk/backends/fs/amigaos4/amigaos4-fs.cpp
    scummvm/trunk/backends/fs/ds/ds-fs.cpp
    scummvm/trunk/backends/fs/ds/ds-fs.h
    scummvm/trunk/backends/fs/palmos/palmos-fs.cpp
    scummvm/trunk/backends/fs/posix/posix-fs.cpp
    scummvm/trunk/backends/fs/posix/posix-fs.h
    scummvm/trunk/backends/fs/ps2/ps2-fs.cpp
    scummvm/trunk/backends/fs/psp/psp-fs.cpp
    scummvm/trunk/backends/fs/stdiostream.cpp
    scummvm/trunk/backends/fs/stdiostream.h
    scummvm/trunk/backends/fs/symbian/symbian-fs.cpp
    scummvm/trunk/backends/fs/wii/wii-fs.cpp
    scummvm/trunk/backends/fs/windows/windows-fs.cpp
    scummvm/trunk/backends/platform/dc/dc-fs.cpp

Modified: scummvm/trunk/backends/fs/abstract-fs.cpp
===================================================================
--- scummvm/trunk/backends/fs/abstract-fs.cpp	2008-09-03 11:49:02 UTC (rev 34303)
+++ scummvm/trunk/backends/fs/abstract-fs.cpp	2008-09-03 12:56:46 UTC (rev 34304)
@@ -23,9 +23,9 @@
  */
 
 #include "backends/fs/abstract-fs.h"
-#include "backends/fs/stdiostream.h"
 
 const char *AbstractFilesystemNode::lastPathComponent(const Common::String &str, const char sep) {
+	// TODO: Get rid of this eventually! Use Common::lastPathComponent instead
 	if(str.empty())
 		return "";
 
@@ -38,21 +38,3 @@
 
 	return cur + 1;
 }
-
-Common::SeekableReadStream *AbstractFilesystemNode::openForReading() {
-	// FIXME: Until openForReading is supported by all AbstractFilesystemNode
-	// implementations, we provide this "generic" one, using Common::File.
-	FILE *handle = fopen(getPath().c_str(), "rb");
-	if (handle)
-		return new StdioStream(handle);
-	return 0;
-}
-
-Common::WriteStream *AbstractFilesystemNode::openForWriting() {
-	// FIXME: Until openForWriting is supported by all AbstractFilesystemNode
-	// implementations, we provide this "generic" one.
-	FILE *handle = fopen(getPath().c_str(), "wb");
-	if (handle)
-		return new StdioStream(handle);
-	return 0;
-}

Modified: scummvm/trunk/backends/fs/abstract-fs.h
===================================================================
--- scummvm/trunk/backends/fs/abstract-fs.h	2008-09-03 11:49:02 UTC (rev 34303)
+++ scummvm/trunk/backends/fs/abstract-fs.h	2008-09-03 12:56:46 UTC (rev 34304)
@@ -169,7 +169,7 @@
 	 *
 	 * @return pointer to the stream object, 0 in case of a failure
 	 */
-	virtual Common::SeekableReadStream *openForReading();
+	virtual Common::SeekableReadStream *openForReading() = 0;
 
 	/**
 	 * Creates a WriteStream instance corresponding to the file
@@ -178,7 +178,7 @@
 	 *
 	 * @return pointer to the stream object, 0 in case of a failure
 	 */
-	virtual Common::WriteStream *openForWriting();
+	virtual Common::WriteStream *openForWriting() = 0;
 };
 
 

Modified: scummvm/trunk/backends/fs/amigaos4/amigaos4-fs.cpp
===================================================================
--- scummvm/trunk/backends/fs/amigaos4/amigaos4-fs.cpp	2008-09-03 11:49:02 UTC (rev 34303)
+++ scummvm/trunk/backends/fs/amigaos4/amigaos4-fs.cpp	2008-09-03 12:56:46 UTC (rev 34304)
@@ -36,8 +36,9 @@
 #endif
 
 #include "common/util.h"
-#include "engines/engine.h"
+#include "engines/engine.h"		// FIXME: Why is this here????
 #include "backends/fs/abstract-fs.h"
+#include "backends/fs/stdiostream.h"
 
 #define ENTER() /* debug(6, "Enter") */
 #define LEAVE() /* debug(6, "Leave") */
@@ -107,6 +108,9 @@
 	virtual bool getChildren(AbstractFSList &list, ListMode mode, bool hidden) const;
 	virtual AbstractFilesystemNode *getParent() const;
 
+	virtual Common::SeekableReadStream *openForReading();
+	virtual Common::WriteStream *openForWriting();
+
 	/**
 	 * Creates a list with all the volumes present in the root node.
 	 */
@@ -566,4 +570,12 @@
 	return myList;
 }
 
+Common::SeekableReadStream *AmigaOSFilesystemNode::openForReading() {
+	return StdioStream::makeFromPath(getPath().c_str(), false);
+}
+
+Common::WriteStream *AmigaOSFilesystemNode::openForWriting() {
+	return StdioStream::makeFromPath(getPath().c_str(), true);
+}
+
 #endif //defined(__amigaos4__)

Modified: scummvm/trunk/backends/fs/ds/ds-fs.cpp
===================================================================
--- scummvm/trunk/backends/fs/ds/ds-fs.cpp	2008-09-03 11:49:02 UTC (rev 34303)
+++ scummvm/trunk/backends/fs/ds/ds-fs.cpp	2008-09-03 12:56:46 UTC (rev 34304)
@@ -24,6 +24,7 @@
 #include "common/util.h"
 //#include <NDS/ARM9/console.h> //basic print funcionality
 #include "backends/fs/ds/ds-fs.h"
+#include "backends/fs/stdiostream.h"
 #include "dsmain.h"
 #include "fat/gba_nds_fat.h"
 
@@ -204,6 +205,14 @@
 	return p;
 }
 
+Common::SeekableReadStream *DSFileSystemNode::openForReading() {
+	return StdioStream::makeFromPath(getPath().c_str(), false);
+}
+
+Common::WriteStream *DSFileSystemNode::openForWriting() {
+	return StdioStream::makeFromPath(getPath().c_str(), true);
+}
+
 //////////////////////////////////////////////////////////////////////////
 // GBAMPFileSystemNode - File system using GBA Movie Player and CF card //
 //////////////////////////////////////////////////////////////////////////
@@ -367,6 +376,14 @@
 	return p;
 }
 
+Common::SeekableReadStream *GBAMPFileSystemNode::openForReading() {
+	return StdioStream::makeFromPath(getPath().c_str(), false);
+}
+
+Common::WriteStream *GBAMPFileSystemNode::openForWriting() {
+	return StdioStream::makeFromPath(getPath().c_str(), true);
+}
+
 // Stdio replacements
 #define MAX_FILE_HANDLES 32
 

Modified: scummvm/trunk/backends/fs/ds/ds-fs.h
===================================================================
--- scummvm/trunk/backends/fs/ds/ds-fs.h	2008-09-03 11:49:02 UTC (rev 34303)
+++ scummvm/trunk/backends/fs/ds/ds-fs.h	2008-09-03 12:56:46 UTC (rev 34304)
@@ -90,6 +90,9 @@
 	virtual bool getChildren(AbstractFSList &list, ListMode mode, bool hidden) const;
 	virtual AbstractFilesystemNode *getParent() const;
 
+	virtual Common::SeekableReadStream *openForReading();
+	virtual Common::WriteStream *openForWriting();
+
 	/**
 	 * Returns the zip file this node points to.
 	 * TODO: check this documentation.
@@ -151,6 +154,9 @@
 	virtual AbstractFilesystemNode *getChild(const Common::String& name) const;
 	virtual bool getChildren(AbstractFSList &list, ListMode mode, bool hidden) const;
 	virtual AbstractFilesystemNode *getParent() const;
+
+	virtual Common::SeekableReadStream *openForReading();
+	virtual Common::WriteStream *openForWriting();
 };
 
 struct fileHandle {

Modified: scummvm/trunk/backends/fs/palmos/palmos-fs.cpp
===================================================================
--- scummvm/trunk/backends/fs/palmos/palmos-fs.cpp	2008-09-03 11:49:02 UTC (rev 34303)
+++ scummvm/trunk/backends/fs/palmos/palmos-fs.cpp	2008-09-03 12:56:46 UTC (rev 34304)
@@ -28,6 +28,7 @@
 #include "globals.h"
 
 #include "backends/fs/abstract-fs.h"
+#include "backends/fs/stdiostream.h"
 
 /**
  * Implementation of the ScummVM file system API based on PalmOS VFS API.
@@ -67,6 +68,9 @@
 	virtual bool getChildren(AbstractFSList &list, ListMode mode, bool hidden) const;
 	virtual AbstractFilesystemNode *getParent() const;
 
+	virtual Common::SeekableReadStream *openForReading();
+	virtual Common::WriteStream *openForWriting();
+
 private:
 	/**
 	 * Adds a single WindowsFilesystemNode to a given list.
@@ -204,4 +208,12 @@
 	return p;
 }
 
+Common::SeekableReadStream *PalmOSFilesystemNode::openForReading() {
+	return StdioStream::makeFromPath(getPath().c_str(), false);
+}
+
+Common::WriteStream *PalmOSFilesystemNode::openForWriting() {
+	return StdioStream::makeFromPath(getPath().c_str(), true);
+}
+
 #endif // PALMOS_MODE

Modified: scummvm/trunk/backends/fs/posix/posix-fs.cpp
===================================================================
--- scummvm/trunk/backends/fs/posix/posix-fs.cpp	2008-09-03 11:49:02 UTC (rev 34303)
+++ scummvm/trunk/backends/fs/posix/posix-fs.cpp	2008-09-03 12:56:46 UTC (rev 34304)
@@ -25,6 +25,7 @@
 #if defined(UNIX)
 
 #include "backends/fs/posix/posix-fs.h"
+#include "backends/fs/stdiostream.h"
 #include "common/algorithm.h"
 
 #include <sys/param.h>
@@ -231,4 +232,12 @@
 		return new POSIXFilesystemNode(Common::String(start, end), true);
 }
 
+Common::SeekableReadStream *POSIXFilesystemNode::openForReading() {
+	return StdioStream::makeFromPath(getPath().c_str(), false);
+}
+
+Common::WriteStream *POSIXFilesystemNode::openForWriting() {
+	return StdioStream::makeFromPath(getPath().c_str(), true);
+}
+
 #endif //#if defined(UNIX)

Modified: scummvm/trunk/backends/fs/posix/posix-fs.h
===================================================================
--- scummvm/trunk/backends/fs/posix/posix-fs.h	2008-09-03 11:49:02 UTC (rev 34303)
+++ scummvm/trunk/backends/fs/posix/posix-fs.h	2008-09-03 12:56:46 UTC (rev 34304)
@@ -70,6 +70,9 @@
 	virtual bool getChildren(AbstractFSList &list, ListMode mode, bool hidden) const;
 	virtual AbstractFilesystemNode *getParent() const;
 
+	virtual Common::SeekableReadStream *openForReading();
+	virtual Common::WriteStream *openForWriting();
+
 private:
 	/**
 	 * Tests and sets the _isValid and _isDirectory flags, using the stat() function.

Modified: scummvm/trunk/backends/fs/ps2/ps2-fs.cpp
===================================================================
--- scummvm/trunk/backends/fs/ps2/ps2-fs.cpp	2008-09-03 11:49:02 UTC (rev 34303)
+++ scummvm/trunk/backends/fs/ps2/ps2-fs.cpp	2008-09-03 12:56:46 UTC (rev 34304)
@@ -23,6 +23,7 @@
  */
 
 #include "backends/fs/abstract-fs.h"
+#include "backends/fs/stdiostream.h"
 #include <kernel.h>
 #include <stdio.h>
 #include <stdlib.h>
@@ -98,6 +99,9 @@
 	virtual AbstractFilesystemNode *getChild(const Common::String &n) const;
 	virtual bool getChildren(AbstractFSList &list, ListMode mode, bool hidden) const;
 	virtual AbstractFilesystemNode *getParent() const;
+
+	virtual Common::SeekableReadStream *openForReading();
+	virtual Common::WriteStream *openForWriting();
 };
 
 Ps2FilesystemNode::Ps2FilesystemNode() {
@@ -337,3 +341,10 @@
 		return "Harddisk";	
 }
 
+Common::SeekableReadStream *Ps2FilesystemNode::openForReading() {
+	return StdioStream::makeFromPath(getPath().c_str(), false);
+}
+
+Common::WriteStream *Ps2FilesystemNode::openForWriting() {
+	return StdioStream::makeFromPath(getPath().c_str(), true);
+}

Modified: scummvm/trunk/backends/fs/psp/psp-fs.cpp
===================================================================
--- scummvm/trunk/backends/fs/psp/psp-fs.cpp	2008-09-03 11:49:02 UTC (rev 34303)
+++ scummvm/trunk/backends/fs/psp/psp-fs.cpp	2008-09-03 12:56:46 UTC (rev 34304)
@@ -26,6 +26,7 @@
 
 #include "engines/engine.h"
 #include "backends/fs/abstract-fs.h"
+#include "backends/fs/stdiostream.h"
 
 #include <sys/stat.h>
 #include <unistd.h>
@@ -69,6 +70,9 @@
 	virtual AbstractFilesystemNode *getChild(const Common::String &n) const;
 	virtual bool getChildren(AbstractFSList &list, ListMode mode, bool hidden) const;
 	virtual AbstractFilesystemNode *getParent() const;
+
+	virtual Common::SeekableReadStream *openForReading();
+	virtual Common::WriteStream *openForWriting();
 };
 
 PSPFilesystemNode::PSPFilesystemNode() {
@@ -157,4 +161,12 @@
 	return new PSPFilesystemNode(Common::String(start, end - start), false);
 }
 
+Common::SeekableReadStream *PSPFilesystemNode::openForReading() {
+	return StdioStream::makeFromPath(getPath().c_str(), false);
+}
+
+Common::WriteStream *PSPFilesystemNode::openForWriting() {
+	return StdioStream::makeFromPath(getPath().c_str(), true);
+}
+
 #endif //#ifdef __PSP__

Modified: scummvm/trunk/backends/fs/stdiostream.cpp
===================================================================
--- scummvm/trunk/backends/fs/stdiostream.cpp	2008-09-03 11:49:02 UTC (rev 34303)
+++ scummvm/trunk/backends/fs/stdiostream.cpp	2008-09-03 12:56:46 UTC (rev 34304)
@@ -191,3 +191,10 @@
 	// check errno and set an error flag.
 	fflush((FILE *)_handle);
 }
+
+StdioStream *StdioStream::makeFromPath(const Common::String &path, bool writeMode) {
+	FILE *handle = fopen(path.c_str(), writeMode ? "wb" : "rb");
+	if (handle)
+		return new StdioStream(handle);
+	return 0;
+}

Modified: scummvm/trunk/backends/fs/stdiostream.h
===================================================================
--- scummvm/trunk/backends/fs/stdiostream.h	2008-09-03 11:49:02 UTC (rev 34303)
+++ scummvm/trunk/backends/fs/stdiostream.h	2008-09-03 12:56:46 UTC (rev 34304)
@@ -29,6 +29,7 @@
 #include "common/scummsys.h"
 #include "common/noncopyable.h"
 #include "common/stream.h"
+#include "common/str.h"
 
 class StdioStream : public Common::SeekableReadStream, public Common::WriteStream, public Common::NonCopyable {
 protected:
@@ -36,6 +37,12 @@
 	void *_handle;
 
 public:
+	/**
+	 * Given a path, invokes fopen on that path and wrap the result in a
+	 * StdioStream instance.
+	 */
+	static StdioStream *makeFromPath(const Common::String &path, bool writeMode);
+
 	StdioStream(void *handle);
 	virtual ~StdioStream();
 

Modified: scummvm/trunk/backends/fs/symbian/symbian-fs.cpp
===================================================================
--- scummvm/trunk/backends/fs/symbian/symbian-fs.cpp	2008-09-03 11:49:02 UTC (rev 34303)
+++ scummvm/trunk/backends/fs/symbian/symbian-fs.cpp	2008-09-03 12:56:46 UTC (rev 34304)
@@ -24,6 +24,7 @@
 
 #if defined (__SYMBIAN32__)
 #include "backends/fs/abstract-fs.h"
+#include "backends/fs/stdiostream.h"
 #include "backends/platform/symbian/src/SymbianOS.h"
 
 #include <dirent.h>
@@ -76,6 +77,9 @@
 	virtual AbstractFilesystemNode *getChild(const Common::String &n) const;
 	virtual bool getChildren(AbstractFSList &list, ListMode mode, bool hidden) const;
 	virtual AbstractFilesystemNode *getParent() const;
+
+	virtual Common::SeekableReadStream *openForReading();
+	virtual Common::WriteStream *openForWriting();
 };
 
 /**
@@ -248,4 +252,12 @@
 	return p;
 }
 
+Common::SeekableReadStream *SymbianFilesystemNode::openForReading() {
+	return StdioStream::makeFromPath(getPath().c_str(), false);
+}
+
+Common::WriteStream *SymbianFilesystemNode::openForWriting() {
+	return StdioStream::makeFromPath(getPath().c_str(), true);
+}
+
 #endif //#if defined (__SYMBIAN32__)

Modified: scummvm/trunk/backends/fs/wii/wii-fs.cpp
===================================================================
--- scummvm/trunk/backends/fs/wii/wii-fs.cpp	2008-09-03 11:49:02 UTC (rev 34303)
+++ scummvm/trunk/backends/fs/wii/wii-fs.cpp	2008-09-03 12:56:46 UTC (rev 34304)
@@ -23,6 +23,7 @@
 #if defined(__WII__)
 
 #include "backends/fs/abstract-fs.h"
+#include "backends/fs/stdiostream.h"
 
 #include <sys/dir.h>
 
@@ -67,6 +68,9 @@
 	virtual bool getChildren(AbstractFSList &list, ListMode mode, bool hidden) const;
 	virtual AbstractFilesystemNode *getParent() const;
 
+	virtual Common::SeekableReadStream *openForReading();
+	virtual Common::WriteStream *openForWriting();
+
 private:
 	virtual void setFlags();
 };
@@ -168,5 +172,13 @@
 	return new WiiFilesystemNode(Common::String(start, end - start), true);
 }
 
+Common::SeekableReadStream *WiiFilesystemNode::openForReading() {
+	return StdioStream::makeFromPath(getPath().c_str(), false);
+}
+
+Common::WriteStream *WiiFilesystemNode::openForWriting() {
+	return StdioStream::makeFromPath(getPath().c_str(), true);
+}
+
 #endif //#if defined(__WII__)
 

Modified: scummvm/trunk/backends/fs/windows/windows-fs.cpp
===================================================================
--- scummvm/trunk/backends/fs/windows/windows-fs.cpp	2008-09-03 11:49:02 UTC (rev 34303)
+++ scummvm/trunk/backends/fs/windows/windows-fs.cpp	2008-09-03 12:56:46 UTC (rev 34304)
@@ -31,6 +31,7 @@
 #undef GetCurrentDirectory
 #endif
 #include "backends/fs/abstract-fs.h"
+#include "backends/fs/stdiostream.h"
 #include <io.h>
 #include <stdio.h>
 #include <stdlib.h>
@@ -98,6 +99,9 @@
 	virtual bool getChildren(AbstractFSList &list, ListMode mode, bool hidden) const;
 	virtual AbstractFilesystemNode *getParent() const;
 
+	virtual Common::SeekableReadStream *openForReading();
+	virtual Common::WriteStream *openForWriting();
+
 private:
 	/**
 	 * Adds a single WindowsFilesystemNode to a given list.
@@ -303,4 +307,12 @@
 	return p;
 }
 
+Common::SeekableReadStream *WindowsFilesystemNode::openForReading() {
+	return StdioStream::makeFromPath(getPath().c_str(), false);
+}
+
+Common::WriteStream *WindowsFilesystemNode::openForWriting() {
+	return StdioStream::makeFromPath(getPath().c_str(), true);
+}
+
 #endif //#ifdef WIN32

Modified: scummvm/trunk/backends/platform/dc/dc-fs.cpp
===================================================================
--- scummvm/trunk/backends/platform/dc/dc-fs.cpp	2008-09-03 11:49:02 UTC (rev 34303)
+++ scummvm/trunk/backends/platform/dc/dc-fs.cpp	2008-09-03 12:56:46 UTC (rev 34304)
@@ -24,6 +24,7 @@
 
 #include "dc.h"
 #include "backends/fs/abstract-fs.h"
+#include "backends/fs/stdiostream.h"
 
 #include <ronin/cdfs.h>
 #include <stdio.h>
@@ -52,6 +53,9 @@
 	virtual bool getChildren(AbstractFSList &list, ListMode mode, bool hidden) const { return false; }
 	virtual AbstractFilesystemNode *getParent() const;
 
+	virtual Common::SeekableReadStream *openForReading();
+	virtual Common::WriteStream *openForWriting();
+
 	static AbstractFilesystemNode *makeFileNodePath(const Common::String &path);
 };
 
@@ -143,6 +147,15 @@
 	return new RoninCDDirectoryNode(Common::String(start, end - start));
 }
 
+
+Common::SeekableReadStream *RoninCDFileNode::openForReading() {
+	return StdioStream::makeFromPath(getPath().c_str(), false);
+}
+
+Common::WriteStream *RoninCDFileNode::openForWriting() {
+	return StdioStream::makeFromPath(getPath().c_str(), true);
+}
+
 AbstractFilesystemNode *OSystem_Dreamcast::makeRootFileNode() const {
 	return new RoninCDDirectoryNode("/");
 }


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