Changed Archive::openFile to return a SeekableReadStream* instead of a FilePtr
svn-id: r34312
This commit is contained in:
parent
18fb6348dd
commit
e1918341af
2 changed files with 15 additions and 11 deletions
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue