[Scummvm-cvs-logs] SF.net SVN: scummvm:[48012] scummvm/trunk/common/unarj.cpp
peres001 at users.sourceforge.net
peres001 at users.sourceforge.net
Tue Feb 9 02:07:40 CET 2010
Revision: 48012
http://scummvm.svn.sourceforge.net/scummvm/?rev=48012&view=rev
Author: peres001
Date: 2010-02-09 01:07:39 +0000 (Tue, 09 Feb 2010)
Log Message:
-----------
Merged _headers and _filemap.
Modified Paths:
--------------
scummvm/trunk/common/unarj.cpp
Modified: scummvm/trunk/common/unarj.cpp
===================================================================
--- scummvm/trunk/common/unarj.cpp 2010-02-08 23:12:42 UTC (rev 48011)
+++ scummvm/trunk/common/unarj.cpp 2010-02-09 01:07:39 UTC (rev 48012)
@@ -714,13 +714,11 @@
#pragma mark ArjArchive implementation
-typedef HashMap<String, int, IgnoreCase_Hash, IgnoreCase_EqualTo> ArjFilesMap;
+typedef HashMap<String, ArjHeader*, IgnoreCase_Hash, IgnoreCase_EqualTo> ArjHeadersMap;
class ArjArchive : public Common::Archive {
- Common::Array<ArjHeader *> _headers;
- ArjFilesMap _fileMap;
-
+ ArjHeadersMap _headers;
Common::String _arjFilename;
public:
@@ -755,32 +753,31 @@
ArjHeader *header;
while ((header = readHeader(arjFile)) != NULL) {
- _headers.push_back(header);
-
+ _headers[header->filename] = header;
arjFile.seek(header->compSize, SEEK_CUR);
-
- _fileMap[header->filename] = _headers.size() - 1;
}
debug(0, "ArjArchive::ArjArchive(%s): Located %d files", filename.c_str(), _headers.size());
}
ArjArchive::~ArjArchive() {
- for (uint i = 0; i < _headers.size(); i++)
- delete _headers[i];
+ ArjHeadersMap::iterator it = _headers.begin();
+ for ( ; it != _headers.end(); ++it) {
+ delete it->_value;
+ }
}
bool ArjArchive::hasFile(const String &name) {
- return _fileMap.contains(name);
+ return _headers.contains(name);
}
int ArjArchive::listMembers(ArchiveMemberList &list) {
int matches = 0;
- Common::Array<ArjHeader *>::iterator it = _headers.begin();
+ ArjHeadersMap::iterator it = _headers.begin();
for ( ; it != _headers.end(); ++it) {
- list.push_back(ArchiveMemberList::value_type(new GenericArchiveMember((*it)->filename, this)));
+ list.push_back(ArchiveMemberList::value_type(new GenericArchiveMember(it->_value->filename, this)));
matches++;
}
@@ -795,11 +792,11 @@
}
SeekableReadStream *ArjArchive::createReadStreamForMember(const String &name) const {
- if (!_fileMap.contains(name)) {
+ if (!_headers.contains(name)) {
return 0;
}
- ArjHeader *hdr = _headers[_fileMap[name]];
+ ArjHeader *hdr = _headers[name];
Common::File archiveFile;
archiveFile.open(_arjFilename);
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