aboutsummaryrefslogtreecommitdiff
path: root/engines/gob/save
diff options
context:
space:
mode:
Diffstat (limited to 'engines/gob/save')
-rw-r--r--engines/gob/save/saveconverter.cpp15
-rw-r--r--engines/gob/save/saveconverter.h6
-rw-r--r--engines/gob/save/savefile.cpp29
-rw-r--r--engines/gob/save/savefile.h15
-rw-r--r--engines/gob/save/saveload.cpp4
-rw-r--r--engines/gob/save/saveload.h4
-rw-r--r--engines/gob/save/saveload_v2.cpp6
-rw-r--r--engines/gob/save/saveload_v3.cpp8
-rw-r--r--engines/gob/save/saveload_v4.cpp4
-rw-r--r--engines/gob/save/saveload_v6.cpp4
10 files changed, 43 insertions, 52 deletions
diff --git a/engines/gob/save/saveconverter.cpp b/engines/gob/save/saveconverter.cpp
index 4b24311e93..06fb2a53e9 100644
--- a/engines/gob/save/saveconverter.cpp
+++ b/engines/gob/save/saveconverter.cpp
@@ -34,16 +34,14 @@
namespace Gob {
-SaveConverter::SaveConverter(GobEngine *vm, const char *fileName) : _vm(vm) {
- _fileName = strdupcpy(fileName);
+SaveConverter::SaveConverter(GobEngine *vm, const Common::String &fileName)
+: _vm(vm), _fileName(fileName) {
_data = 0;
_stream = 0;
}
SaveConverter::~SaveConverter() {
- delete[] _fileName;
-
delete _stream;
delete[] _data;
}
@@ -56,16 +54,13 @@ void SaveConverter::clear() {
_stream = 0;
}
-void SaveConverter::setFileName(const char *fileName) {
+void SaveConverter::setFileName(const Common::String &fileName) {
clear();
-
- delete[] _fileName;
-
- _fileName = strdupcpy(fileName);
+ _fileName = fileName;
}
Common::InSaveFile *SaveConverter::openSave() const {
- if (!_fileName)
+ if (_fileName.empty())
return 0;
Common::SaveFileManager *saveMan = g_system->getSavefileManager();
diff --git a/engines/gob/save/saveconverter.h b/engines/gob/save/saveconverter.h
index f40a2d4b40..96708c5543 100644
--- a/engines/gob/save/saveconverter.h
+++ b/engines/gob/save/saveconverter.h
@@ -40,13 +40,13 @@ class SaveWriter;
/** A wrapping stream class for old saves. */
class SaveConverter : public Common::SeekableReadStream {
public:
- SaveConverter(GobEngine *vm, const char *fileName = 0);
+ SaveConverter(GobEngine *vm, const Common::String &fileName);
virtual ~SaveConverter();
/** Clear the converter. */
virtual void clear();
/** Set the filename on which to operate. */
- virtual void setFileName(const char *fileName);
+ virtual void setFileName(const Common::String &fileName);
/** Is it actually an old save? */
virtual int isOldSave(Common::InSaveFile **save = 0) const = 0;
@@ -74,7 +74,7 @@ public:
protected:
GobEngine *_vm;
- char *_fileName;
+ Common::String _fileName;
byte *_data;
Common::MemoryReadStream *_stream;
diff --git a/engines/gob/save/savefile.cpp b/engines/gob/save/savefile.cpp
index 0f7ebfd0bf..a7b87ad39e 100644
--- a/engines/gob/save/savefile.cpp
+++ b/engines/gob/save/savefile.cpp
@@ -783,10 +783,9 @@ bool SaveContainer::isSave(Common::SeekableReadStream &stream) {
}
-SaveReader::SaveReader(uint32 partCount, uint32 slot, const char *fileName) :
- SaveContainer(partCount, slot) {
+SaveReader::SaveReader(uint32 partCount, uint32 slot, const Common::String &fileName) :
+ SaveContainer(partCount, slot), _fileName(fileName) {
- _fileName = strdupcpy(fileName);
_stream = 0;
_loaded = false;
@@ -795,14 +794,12 @@ SaveReader::SaveReader(uint32 partCount, uint32 slot, const char *fileName) :
SaveReader::SaveReader(uint32 partCount, uint32 slot, Common::SeekableReadStream &stream) :
SaveContainer(partCount, slot) {
- _fileName = 0;
_stream = &stream;
_loaded = false;
}
SaveReader::~SaveReader() {
- delete[] _fileName;
}
// Open the save and read it
@@ -811,7 +808,7 @@ bool SaveReader::load() {
Common::InSaveFile *in = 0;
Common::SeekableReadStream *stream;
- if (_fileName) {
+ if (!_fileName.empty()) {
in = openSave();
if (!in)
@@ -852,8 +849,8 @@ bool SaveReader::readPart(uint32 partN, SavePart *part) const {
return true;
}
-Common::InSaveFile *SaveReader::openSave(const char *fileName) {
- if (!fileName)
+Common::InSaveFile *SaveReader::openSave(const Common::String &fileName) {
+ if (fileName.empty())
return 0;
Common::SaveFileManager *saveMan = g_system->getSavefileManager();
@@ -899,7 +896,7 @@ bool SaveReader::getInfo(Common::SeekableReadStream &stream, SavePartInfo &info)
return result;
}
-bool SaveReader::getInfo(const char *fileName, SavePartInfo &info) {
+bool SaveReader::getInfo(const Common::String &fileName, SavePartInfo &info) {
Common::InSaveFile *in = openSave(fileName);
if (!in)
@@ -912,14 +909,15 @@ bool SaveReader::getInfo(const char *fileName, SavePartInfo &info) {
return result;
}
-SaveWriter::SaveWriter(uint32 partCount, uint32 slot, const char *fileName) :
+SaveWriter::SaveWriter(uint32 partCount, uint32 slot) :
SaveContainer(partCount, slot) {
+}
- _fileName = strdupcpy(fileName);
+SaveWriter::SaveWriter(uint32 partCount, uint32 slot, const Common::String &fileName) :
+ SaveContainer(partCount, slot), _fileName(fileName) {
}
SaveWriter::~SaveWriter() {
- delete[] _fileName;
}
bool SaveWriter::writePart(uint32 partN, const SavePart *part) {
@@ -958,14 +956,15 @@ bool SaveWriter::save() {
}
bool SaveWriter::canSave() const {
- if (!_fileName)
+ // FIXME: The logic here is the opposite from what I (Fingolfin) would expect ?!?
+ if (!_fileName.empty())
return false;
return true;
}
-Common::OutSaveFile *SaveWriter::openSave(const char *fileName) {
- if (!fileName)
+Common::OutSaveFile *SaveWriter::openSave(const Common::String &fileName) {
+ if (fileName.empty())
return 0;
Common::SaveFileManager *saveMan = g_system->getSavefileManager();
diff --git a/engines/gob/save/savefile.h b/engines/gob/save/savefile.h
index a263d97b0e..6c211c1d5c 100644
--- a/engines/gob/save/savefile.h
+++ b/engines/gob/save/savefile.h
@@ -296,7 +296,7 @@ protected:
/** Reads a save. */
class SaveReader : public SaveContainer {
public:
- SaveReader(uint32 partCount, uint32 slot, const char *fileName);
+ SaveReader(uint32 partCount, uint32 slot, const Common::String &fileName);
SaveReader(uint32 partCount, uint32 slot, Common::SeekableReadStream &stream);
~SaveReader();
@@ -308,22 +308,23 @@ public:
/** Find and read the save's info part. */
static bool getInfo(Common::SeekableReadStream &stream, SavePartInfo &info);
/** Find and read the save's info part. */
- static bool getInfo(const char *fileName, SavePartInfo &info);
+ static bool getInfo(const Common::String &fileName, SavePartInfo &info);
protected:
- char *_fileName;
+ Common::String _fileName;
Common::SeekableReadStream *_stream;
bool _loaded;
- static Common::InSaveFile *openSave(const char *fileName);
+ static Common::InSaveFile *openSave(const Common::String &fileName);
Common::InSaveFile *openSave();
};
/** Writes a save. */
class SaveWriter: public SaveContainer {
public:
- SaveWriter(uint32 partCount, uint32 slot, const char *fileName = 0);
+ SaveWriter(uint32 partCount, uint32 slot);
+ SaveWriter(uint32 partCount, uint32 slot, const Common::String &fileName);
~SaveWriter();
bool writePart(uint32 partN, const SavePart *part);
@@ -333,12 +334,12 @@ public:
protected:
bool save();
- char *_fileName;
+ Common::String _fileName;
/** Is everything ready for saving? */
bool canSave() const;
- static Common::OutSaveFile *openSave(const char *fileName);
+ static Common::OutSaveFile *openSave(const Common::String &fileName);
Common::OutSaveFile *openSave();
};
diff --git a/engines/gob/save/saveload.cpp b/engines/gob/save/saveload.cpp
index e990447ba4..a91a3e9801 100644
--- a/engines/gob/save/saveload.cpp
+++ b/engines/gob/save/saveload.cpp
@@ -35,12 +35,10 @@
namespace Gob {
-SaveLoad::SaveLoad(GobEngine *vm, const char *targetName) : _vm(vm) {
- _targetName = strdupcpy(targetName);
+SaveLoad::SaveLoad(GobEngine *vm) : _vm(vm) {
}
SaveLoad::~SaveLoad() {
- delete[] _targetName;
}
const char *SaveLoad::stripPath(const char *fileName) {
diff --git a/engines/gob/save/saveload.h b/engines/gob/save/saveload.h
index 1e97d09a61..a74b64b883 100644
--- a/engines/gob/save/saveload.h
+++ b/engines/gob/save/saveload.h
@@ -48,7 +48,7 @@ public:
*
* @param targetName The game's target name. Used as a base for the save names.
*/
- SaveLoad(GobEngine *vm, const char *targetName);
+ SaveLoad(GobEngine *vm);
virtual ~SaveLoad();
/** "foo\bar\quux.bla" => "quux.bla". */
@@ -67,8 +67,6 @@ public:
protected:
GobEngine *_vm;
- char *_targetName;
-
virtual SaveHandler *getHandler(const char *fileName) const;
virtual const char *getDescription(const char *fileName) const;
};
diff --git a/engines/gob/save/saveload_v2.cpp b/engines/gob/save/saveload_v2.cpp
index 5746057626..0bbefe28db 100644
--- a/engines/gob/save/saveload_v2.cpp
+++ b/engines/gob/save/saveload_v2.cpp
@@ -260,10 +260,10 @@ void SaveLoad_v2::GameHandler::buildIndex(byte *buffer) const {
SaveLoad_v2::SaveLoad_v2(GobEngine *vm, const char *targetName) :
- SaveLoad(vm, targetName) {
+ SaveLoad(vm) {
- _gameHandler = new GameHandler(vm, _targetName);
- _notesHandler = new NotesHandler(600, vm, _targetName);
+ _gameHandler = new GameHandler(vm, targetName);
+ _notesHandler = new NotesHandler(600, vm, targetName);
_tempSpriteHandler = new TempSpriteHandler(vm);
_saveFiles[0].handler = _gameHandler;
diff --git a/engines/gob/save/saveload_v3.cpp b/engines/gob/save/saveload_v3.cpp
index e2af420e08..665e925b00 100644
--- a/engines/gob/save/saveload_v3.cpp
+++ b/engines/gob/save/saveload_v3.cpp
@@ -491,21 +491,21 @@ bool SaveLoad_v3::ScreenshotHandler::save(int16 dataVar, int32 size, int32 offse
SaveLoad_v3::SaveLoad_v3(GobEngine *vm, const char *targetName, ScreenshotType sShotType) :
- SaveLoad(vm, targetName) {
+ SaveLoad(vm) {
_sShotType = sShotType;
// The Amiga version doesn't use screenshots
if (_vm->getPlatform() == Common::kPlatformAmiga) {
- _gameHandler = new GameHandler(vm, _targetName, false);
+ _gameHandler = new GameHandler(vm, targetName, false);
_screenshotHandler = 0;
} else {
- _gameHandler = new GameHandler(vm, _targetName, true);
+ _gameHandler = new GameHandler(vm, targetName, true);
_screenshotHandler = new ScreenshotHandler(vm, _gameHandler, sShotType);
}
_tempSpriteHandler = new TempSpriteHandler(vm);
- _notesHandler = new NotesHandler(2560, vm, _targetName);
+ _notesHandler = new NotesHandler(2560, vm, targetName);
_saveFiles[0].handler = _gameHandler;
_saveFiles[1].handler = _screenshotHandler;
diff --git a/engines/gob/save/saveload_v4.cpp b/engines/gob/save/saveload_v4.cpp
index c661cdc881..07b2300732 100644
--- a/engines/gob/save/saveload_v4.cpp
+++ b/engines/gob/save/saveload_v4.cpp
@@ -485,9 +485,9 @@ bool SaveLoad_v4::ScreenPropsHandler::save(int16 dataVar, int32 size, int32 offs
SaveLoad_v4::SaveLoad_v4(GobEngine *vm, const char *targetName) :
- SaveLoad(vm, targetName) {
+ SaveLoad(vm) {
- _gameHandler = new GameHandler(vm, _targetName);
+ _gameHandler = new GameHandler(vm, targetName);
_curProps = new CurScreenPropsHandler(vm);
for (int i = 0; i < 10; i++)
_props[i] = new ScreenPropsHandler(vm, i, _curProps, _gameHandler);
diff --git a/engines/gob/save/saveload_v6.cpp b/engines/gob/save/saveload_v6.cpp
index 5f772c75f7..455137aa6a 100644
--- a/engines/gob/save/saveload_v6.cpp
+++ b/engines/gob/save/saveload_v6.cpp
@@ -281,9 +281,9 @@ void SaveLoad_v6::GameHandler::refreshProps() {
SaveLoad_v6::SaveLoad_v6(GobEngine *vm, const char *targetName) :
- SaveLoad(vm, targetName) {
+ SaveLoad(vm) {
- _gameHandler = new GameHandler(vm, _targetName);
+ _gameHandler = new GameHandler(vm, targetName);
_saveFiles[0].handler = _gameHandler;
}