Changed Archive::openFile to return a SeekableReadStream* instead of a FilePtr

svn-id: r34312
This commit is contained in:
Max Horn 2008-09-03 17:07:13 +00:00
parent 18fb6348dd
commit e1918341af
2 changed files with 15 additions and 11 deletions

View file

@ -70,19 +70,19 @@ bool FSDirectory::hasFile(const String &name) {
return node.exists(); return node.exists();
} }
FilePtr FSDirectory::openFile(const String &name) { SeekableReadStream *FSDirectory::openFile(const String &name) {
if (name.empty() || !_node.isDirectory()) { if (name.empty() || !_node.isDirectory()) {
return FilePtr(); return 0;
} }
FilesystemNode node = lookupCache(_fileCache, name); FilesystemNode node = lookupCache(_fileCache, name);
if (!node.exists()) { if (!node.exists()) {
warning("FSDirectory::openFile: Trying to open a FilesystemNode which does not exist"); warning("FSDirectory::openFile: Trying to open a FilesystemNode which does not exist");
return FilePtr(); return 0;
} else if (node.isDirectory()) { } else if (node.isDirectory()) {
warning("FSDirectory::openFile: Trying to open a FilesystemNode which is a directory"); warning("FSDirectory::openFile: Trying to open a FilesystemNode which is a directory");
return FilePtr(); return 0;
} }
SeekableReadStream *stream = node.openForReading(); SeekableReadStream *stream = node.openForReading();
@ -90,7 +90,7 @@ FilePtr FSDirectory::openFile(const String &name) {
warning("FSDirectory::openFile: Can't create stream for file '%s'", name.c_str()); warning("FSDirectory::openFile: Can't create stream for file '%s'", name.c_str());
} }
return FilePtr(stream); return stream;
} }
SharedPtr<FSDirectory> FSDirectory::getSubDirectory(const String &name) { SharedPtr<FSDirectory> FSDirectory::getSubDirectory(const String &name) {
@ -269,9 +269,9 @@ int SearchSet::matchPattern(StringList &list, const String &pattern) {
return matches; return matches;
} }
FilePtr SearchSet::openFile(const String &name) { SeekableReadStream *SearchSet::openFile(const String &name) {
if (name.empty()) { if (name.empty()) {
return FilePtr(); return 0;
} }
ArchiveList::iterator it = _list.begin(); ArchiveList::iterator it = _list.begin();
@ -281,7 +281,7 @@ FilePtr SearchSet::openFile(const String &name) {
} }
} }
return FilePtr(); return 0;
} }

View file

@ -35,6 +35,10 @@
namespace Common { namespace Common {
/**
* FilePtr is a convenient way to keep track of a SeekableReadStream without
* having to worry about releasing its memory.
*/
typedef SharedPtr<SeekableReadStream> FilePtr; typedef SharedPtr<SeekableReadStream> FilePtr;
/** /**
@ -75,7 +79,7 @@ public:
* Create a stream bound to a file in the archive. * Create a stream bound to a file in the archive.
* @return The newly created input stream. * @return The newly created input stream.
*/ */
virtual FilePtr openFile(const String &name) = 0; virtual SeekableReadStream *openFile(const String &name) = 0;
}; };
@ -136,7 +140,7 @@ public:
virtual bool hasFile(const String &name); virtual bool hasFile(const String &name);
virtual int matchPattern(StringList &list, const String &pattern); virtual int matchPattern(StringList &list, const String &pattern);
virtual FilePtr openFile(const String &name); virtual SeekableReadStream *openFile(const String &name);
}; };
@ -193,7 +197,7 @@ public:
* Implements openFile from Archive base class. The current policy is * Implements openFile from Archive base class. The current policy is
* opening the first file encountered that matches the name. * opening the first file encountered that matches the name.
*/ */
virtual FilePtr openFile(const String &name); virtual SeekableReadStream *openFile(const String &name);
}; };
} // namespace Common } // namespace Common