[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