diff options
author | Max Horn | 2004-06-28 22:34:22 +0000 |
---|---|---|
committer | Max Horn | 2004-06-28 22:34:22 +0000 |
commit | a5df4fba77214a93442a0a9e9607cd0a523f24a8 (patch) | |
tree | 292a43b385dfef15874f6a79988a46a7961fd6ac /scumm/smush | |
parent | 875d0a580e2294c4f44fa1ecff06a5894b011f85 (diff) | |
download | scummvm-rg350-a5df4fba77214a93442a0a9e9607cd0a523f24a8.tar.gz scummvm-rg350-a5df4fba77214a93442a0a9e9607cd0a523f24a8.tar.bz2 scummvm-rg350-a5df4fba77214a93442a0a9e9607cd0a523f24a8.zip |
Added simple ref-counting to the File class
svn-id: r14106
Diffstat (limited to 'scumm/smush')
-rw-r--r-- | scumm/smush/chunk.cpp | 32 | ||||
-rw-r--r-- | scumm/smush/chunk.h | 6 |
2 files changed, 7 insertions, 31 deletions
diff --git a/scumm/smush/chunk.cpp b/scumm/smush/chunk.cpp index 04a57557f2..8df68c1b15 100644 --- a/scumm/smush/chunk.cpp +++ b/scumm/smush/chunk.cpp @@ -28,33 +28,6 @@ namespace Scumm { -class FilePtr : public File { - Common::String _filename; - int32 _refcount; -public: - FilePtr(const char *fname) : - _filename(fname), - _refcount(1) { - debug(9, "FilePtr created for %s", fname); - open(fname); - if (isOpen() == false) - error("FilePtr unable to read file %s", fname); - } - - ~FilePtr() { - debug(9, "FilePtr destroyed for %s", _filename.c_str()); - } - - void incRef() { - _refcount++; - } - - void decRef() { - if (--_refcount == 0) - delete this; - } -}; - const char *Chunk::ChunkString(Chunk::type t) { static char data[5]; data[0] = (char)((t >> 24) & 0xFF); @@ -116,7 +89,10 @@ FileChunk::FileChunk() : } FileChunk::FileChunk(const char *fname) { - _data = new FilePtr(fname); + _data = new File(); + if (!_data->open(fname)) + error("FileChunk: Unable to open file %s", fname); + _type = _data->readUint32BE(); _size = _data->readUint32BE(); _offset = sizeof(Chunk::type) + sizeof(uint32); diff --git a/scumm/smush/chunk.h b/scumm/smush/chunk.h index b37eb806c2..3419d536a3 100644 --- a/scumm/smush/chunk.h +++ b/scumm/smush/chunk.h @@ -24,6 +24,8 @@ #include "common/scummsys.h" +class File; + namespace Scumm { class Chunk { @@ -46,8 +48,6 @@ public: virtual uint32 getDword()= 0; }; -class FilePtr; - // Common functionality for concrete chunks (FileChunk, MemoryChunk) class BaseChunk : public Chunk { protected: @@ -67,7 +67,7 @@ public: class FileChunk : public BaseChunk { private: - FilePtr *_data; + File *_data; uint32 _offset; protected: |