aboutsummaryrefslogtreecommitdiff
path: root/engines/adl/disk.h
diff options
context:
space:
mode:
Diffstat (limited to 'engines/adl/disk.h')
-rw-r--r--engines/adl/disk.h27
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();