diff options
Diffstat (limited to 'engines/adl/disk.h')
| -rw-r--r-- | engines/adl/disk.h | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/engines/adl/disk.h b/engines/adl/disk.h index 0bf57c7661..b6a5c60262 100644 --- a/engines/adl/disk.h +++ b/engines/adl/disk.h @@ -43,6 +43,33 @@ public: typedef Common::SharedPtr<DataBlock> DataBlockPtr; +class Files { +public: + virtual ~Files() { } + + virtual const DataBlockPtr getDataBlock(const Common::String &filename, uint offset) const = 0; + virtual Common::SeekableReadStream *createReadStream(const Common::String &filename, uint offset) const = 0; +}; + +class FilesDataBlock : public DataBlock { +public: + FilesDataBlock(const Files *files, const Common::String &filename, uint offset) : _files(files), _filename(filename), _offset(offset) { } + + bool isValid() const { return true; } + Common::SeekableReadStream *createReadStream() const; + +private: + const Common::String _filename; + uint _offset; + const Files *_files; +}; + +class PlainFiles : public Files { +public: + const DataBlockPtr getDataBlock(const Common::String &filename, uint offset = 0) const; + Common::SeekableReadStream *createReadStream(const Common::String &filename, uint offset = 0) const; +}; + class DiskImage { public: DiskImage(); |
