aboutsummaryrefslogtreecommitdiff
path: root/scumm
diff options
context:
space:
mode:
authorMax Horn2004-06-28 22:34:22 +0000
committerMax Horn2004-06-28 22:34:22 +0000
commita5df4fba77214a93442a0a9e9607cd0a523f24a8 (patch)
tree292a43b385dfef15874f6a79988a46a7961fd6ac /scumm
parent875d0a580e2294c4f44fa1ecff06a5894b011f85 (diff)
downloadscummvm-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')
-rw-r--r--scumm/smush/chunk.cpp32
-rw-r--r--scumm/smush/chunk.h6
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: