diff options
author | Johannes Schickel | 2010-10-13 03:57:44 +0000 |
---|---|---|
committer | Johannes Schickel | 2010-10-13 03:57:44 +0000 |
commit | 75e8452b6e6a2bf4fb2f588aa00b428a60d873b5 (patch) | |
tree | f29541d55309487a94bd1d38e8b53bb3dde9aec6 /engines/kyra/resource_intern.h | |
parent | 48ee83b88957dab86bc763e9ef21a70179fa8679 (diff) | |
parent | e9f50882ea5b6beeefa994040be9d3bab6a1f107 (diff) | |
download | scummvm-rg350-75e8452b6e6a2bf4fb2f588aa00b428a60d873b5.tar.gz scummvm-rg350-75e8452b6e6a2bf4fb2f588aa00b428a60d873b5.tar.bz2 scummvm-rg350-75e8452b6e6a2bf4fb2f588aa00b428a60d873b5.zip |
OPENGL: Merged from trunk, from rev 52105 to 53396.
This includes an rather hacky attempt to merge all the recent gp2x backend
changes into the branch. I suppose the gp2x backend and probably all new
backends, i.e. gph, dingux etc., might not compile anymore.
Since I have no way of testing those it would be nice if porters could look
into getting those up to speed in this branch.
svn-id: r53399
Diffstat (limited to 'engines/kyra/resource_intern.h')
-rw-r--r-- | engines/kyra/resource_intern.h | 44 |
1 files changed, 30 insertions, 14 deletions
diff --git a/engines/kyra/resource_intern.h b/engines/kyra/resource_intern.h index bceccc34b7..16f3a1fe91 100644 --- a/engines/kyra/resource_intern.h +++ b/engines/kyra/resource_intern.h @@ -38,33 +38,49 @@ class Resource; class PlainArchive : public Common::Archive { public: - struct InputEntry { - Common::String name; + struct Entry { + Entry() : offset(0), size(0) {} + Entry(uint32 o, uint32 s) : offset(o), size(s) {} uint32 offset; uint32 size; }; - typedef Common::List<InputEntry> FileInputList; + PlainArchive(Common::ArchiveMemberPtr file); - PlainArchive(Common::SharedPtr<Common::ArchiveMember> file, const FileInputList &files); + void addFileEntry(const Common::String &name, const Entry entry); + Entry getFileEntry(const Common::String &name) const; + // Common::Archive API implementation bool hasFile(const Common::String &name); int listMembers(Common::ArchiveMemberList &list); Common::ArchiveMemberPtr getMember(const Common::String &name); Common::SeekableReadStream *createReadStreamForMember(const Common::String &name) const; private: - struct Entry { - uint32 offset; - uint32 size; - }; - typedef Common::HashMap<Common::String, Entry, Common::IgnoreCase_Hash, Common::IgnoreCase_EqualTo> FileMap; - Common::SharedPtr<Common::ArchiveMember> _file; + Common::ArchiveMemberPtr _file; FileMap _files; }; +class TlkArchive : public Common::Archive { +public: + TlkArchive(Common::ArchiveMemberPtr file, uint16 entryCount, const uint32 *fileEntries); + ~TlkArchive(); + + bool hasFile(const Common::String &name); + int listMembers(Common::ArchiveMemberList &list); + Common::ArchiveMemberPtr getMember(const Common::String &name); + Common::SeekableReadStream *createReadStreamForMember(const Common::String &name) const; +private: + Common::ArchiveMemberPtr _file; + + const uint32 *findFile(const Common::String &name) const; + + const uint16 _entryCount; + const uint32 * const _fileEntries; +}; + class CachedArchive : public Common::Archive { public: struct InputEntry { @@ -99,28 +115,28 @@ public: virtual ~ResArchiveLoader() {} virtual bool checkFilename(Common::String filename) const = 0; virtual bool isLoadable(const Common::String &filename, Common::SeekableReadStream &stream) const = 0; - virtual Common::Archive *load(Common::SharedPtr<Common::ArchiveMember> file, Common::SeekableReadStream &stream) const = 0; + virtual Common::Archive *load(Common::ArchiveMemberPtr file, Common::SeekableReadStream &stream) const = 0; }; class ResLoaderPak : public ResArchiveLoader { public: bool checkFilename(Common::String filename) const; bool isLoadable(const Common::String &filename, Common::SeekableReadStream &stream) const; - Common::Archive *load(Common::SharedPtr<Common::ArchiveMember> file, Common::SeekableReadStream &stream) const; + Common::Archive *load(Common::ArchiveMemberPtr file, Common::SeekableReadStream &stream) const; }; class ResLoaderInsMalcolm : public ResArchiveLoader { public: bool checkFilename(Common::String filename) const; bool isLoadable(const Common::String &filename, Common::SeekableReadStream &stream) const; - Common::Archive *load(Common::SharedPtr<Common::ArchiveMember> file, Common::SeekableReadStream &stream) const; + Common::Archive *load(Common::ArchiveMemberPtr file, Common::SeekableReadStream &stream) const; }; class ResLoaderTlk : public ResArchiveLoader { public: bool checkFilename(Common::String filename) const; bool isLoadable(const Common::String &filename, Common::SeekableReadStream &stream) const; - Common::Archive *load(Common::SharedPtr<Common::ArchiveMember> file, Common::SeekableReadStream &stream) const; + Common::Archive *load(Common::ArchiveMemberPtr file, Common::SeekableReadStream &stream) const; }; class InstallerLoader { |