diff options
author | Vladimir Menshakov | 2010-03-20 16:08:28 +0000 |
---|---|---|
committer | Vladimir Menshakov | 2010-03-20 16:08:28 +0000 |
commit | a61e36dcd2be51b3e1221d30b0dd29b95b8bdeed (patch) | |
tree | 62bf562ed23c1646567f004c6a276fb94b426cb6 /engines | |
parent | 6fb96d7e908a524c5f1abf3d3ad1f1e2c4033872 (diff) | |
download | scummvm-rg350-a61e36dcd2be51b3e1221d30b0dd29b95b8bdeed.tar.gz scummvm-rg350-a61e36dcd2be51b3e1221d30b0dd29b95b8bdeed.tar.bz2 scummvm-rg350-a61e36dcd2be51b3e1221d30b0dd29b95b8bdeed.zip |
documented pack classes, restored old substream creation for FilePack
svn-id: r48324
Diffstat (limited to 'engines')
-rw-r--r-- | engines/teenagent/pack.cpp | 13 | ||||
-rw-r--r-- | engines/teenagent/pack.h | 5 |
2 files changed, 6 insertions, 12 deletions
diff --git a/engines/teenagent/pack.cpp b/engines/teenagent/pack.cpp index c342ea7134..fa57256b3b 100644 --- a/engines/teenagent/pack.cpp +++ b/engines/teenagent/pack.cpp @@ -49,12 +49,7 @@ bool FilePack::open(const Common::String &filename) { offsets = new uint32[_fileCount + 1]; for (uint32 i = 0; i <= _fileCount; ++i) { offsets[i] = file.readUint32LE(); - //debug(0, "%d: %06x", i, offsets[i]); } - /* for (uint32 i = 0; i < count; ++i) { - debug(0, "%d: len = %d", i, offsets[i + 1] - offsets[i]); - } - */ return true; } @@ -79,13 +74,7 @@ Common::SeekableReadStream *FilePack::getStream(uint32 id) const { if (id < 1 || id > _fileCount) return NULL; //debug(0, "stream: %04x-%04x", offsets[id - 1], offsets[id]); - file.seek(offsets[id - 1]); - uint32 size = offsets[id] - offsets[id - 1]; - byte *ptr = (byte *)malloc(size); - if (ptr == NULL) - return NULL; - uint32 r = file.read(ptr, size); - return new Common::MemoryReadStream(ptr, r, DisposeAfterUse::YES); + return new Common::SeekableSubReadStream(&file, offsets[id - 1], offsets[id]); } diff --git a/engines/teenagent/pack.h b/engines/teenagent/pack.h index 53fdf80d33..753941673c 100644 --- a/engines/teenagent/pack.h +++ b/engines/teenagent/pack.h @@ -46,6 +46,7 @@ public: virtual Common::SeekableReadStream *getStream(uint32 id) const = 0; }; +///FilePack keeps opened file and returns substream for each request. class FilePack : public Pack { mutable Common::File file; uint32 *offsets; @@ -62,6 +63,9 @@ public: virtual Common::SeekableReadStream *getStream(uint32 id) const; }; +/** Pack file which reopens file each request. Do not keep file descriptor open. + ** Useful for minimizing file descriptors opened at the same time. Critical for PSP backend. + **/ class TransientFilePack : public Pack { uint32 *offsets; Common::String _filename; @@ -78,6 +82,7 @@ public: virtual Common::SeekableReadStream *getStream(uint32 id) const; }; +///MemoryPack loads whole pack in memory, currently unused. class MemoryPack : public Pack { struct Chunk { byte *data; |