Introduce factory function makeArjArchive, hide ArjArchive class implementation
svn-id: r48009
This commit is contained in:
parent
4e86741d9a
commit
b3da11ba8a
3 changed files with 30 additions and 22 deletions
|
@ -712,6 +712,26 @@ void ArjDecoder::decode_f(int32 origsize) {
|
|||
|
||||
#pragma mark ArjArchive implementation
|
||||
|
||||
typedef HashMap<String, int, IgnoreCase_Hash, IgnoreCase_EqualTo> ArjFilesMap;
|
||||
|
||||
class ArjArchive : public Common::Archive {
|
||||
|
||||
Common::Array<ArjHeader *> _headers;
|
||||
ArjFilesMap _fileMap;
|
||||
|
||||
Common::String _arjFilename;
|
||||
|
||||
public:
|
||||
ArjArchive(const String &name);
|
||||
virtual ~ArjArchive();
|
||||
|
||||
// Common::Archive implementation
|
||||
virtual bool hasFile(const String &name);
|
||||
virtual int listMembers(ArchiveMemberList &list);
|
||||
virtual ArchiveMemberPtr getMember(const String &name);
|
||||
virtual SeekableReadStream *createReadStreamForMember(const String &name) const;
|
||||
};
|
||||
|
||||
ArjArchive::ArjArchive(const String &filename) : _arjFilename(filename) {
|
||||
Common::File arjFile;
|
||||
|
||||
|
@ -813,4 +833,8 @@ SeekableReadStream *ArjArchive::createReadStreamForMember(const String &name) co
|
|||
return new Common::MemoryReadStream(uncompressedData, hdr->origSize, DisposeAfterUse::YES);
|
||||
}
|
||||
|
||||
Archive *makeArjArchive(const String &name) {
|
||||
return new ArjArchive(name);
|
||||
}
|
||||
|
||||
} // End of namespace Common
|
||||
|
|
|
@ -32,27 +32,11 @@
|
|||
|
||||
namespace Common {
|
||||
|
||||
struct ArjHeader;
|
||||
|
||||
typedef HashMap<String, int, IgnoreCase_Hash, IgnoreCase_EqualTo> ArjFilesMap;
|
||||
|
||||
class ArjArchive : public Common::Archive {
|
||||
|
||||
Common::Array<ArjHeader *> _headers;
|
||||
ArjFilesMap _fileMap;
|
||||
|
||||
Common::String _arjFilename;
|
||||
|
||||
public:
|
||||
ArjArchive(const String &name);
|
||||
virtual ~ArjArchive();
|
||||
|
||||
// Common::Archive implementation
|
||||
virtual bool hasFile(const String &name);
|
||||
virtual int listMembers(ArchiveMemberList &list);
|
||||
virtual ArchiveMemberPtr getMember(const String &name);
|
||||
virtual SeekableReadStream *createReadStreamForMember(const String &name) const;
|
||||
};
|
||||
/**
|
||||
* This factory method creates an Archive instance corresponding to the content
|
||||
* of the ARJ compressed file with the given name.
|
||||
*/
|
||||
Archive *makeArjArchive(const String &name);
|
||||
|
||||
} // End of namespace Common
|
||||
|
||||
|
|
|
@ -35,7 +35,7 @@ ArchiveMan::~ArchiveMan() {
|
|||
}
|
||||
|
||||
void ArchiveMan::registerArchive(const Common::String &filename) {
|
||||
add(filename, new Common::ArjArchive(filename));
|
||||
add(filename, Common::makeArjArchive(filename));
|
||||
}
|
||||
|
||||
Common::SeekableReadStream *ArchiveMan::open(const Common::String &filename) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue