aboutsummaryrefslogtreecommitdiff
path: root/engines/sludge/variable.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/sludge/variable.cpp')
-rw-r--r--engines/sludge/variable.cpp98
1 files changed, 42 insertions, 56 deletions
diff --git a/engines/sludge/variable.cpp b/engines/sludge/variable.cpp
index eee9d07e1a..7d4ab0cdc0 100644
--- a/engines/sludge/variable.cpp
+++ b/engines/sludge/variable.cpp
@@ -26,7 +26,6 @@
#include "sludge/variable.h"
#include "sludge/moreio.h"
#include "sludge/newfatal.h"
-#include "sludge/stringy.h"
#include "sludge/objtypes.h"
#include "sludge/people.h"
#include "sludge/fileset.h"
@@ -43,7 +42,7 @@ extern char *outputDir;
void unlinkVar(variable &thisVar) {
switch (thisVar.varType) {
case SVT_STRING:
- delete[] thisVar.varData.theString;
+ delete []thisVar.varData.theString;
thisVar.varData.theString = NULL;
break;
@@ -143,10 +142,9 @@ int stackSize(const stackHandler *me) {
return r;
}
-bool getSavedGamesStack(stackHandler *sH, char *ext) {
- char *pattern = joinStrings("*", ext);
- if (!pattern)
- return false;
+bool getSavedGamesStack(stackHandler *sH, const Common::String &ext) {
+ Common::String pattern = "*";
+ pattern += ext;
variable newName;
newName.varType = SVT_NULL;
@@ -173,8 +171,6 @@ bool getSavedGamesStack(stackHandler *sH, char *ext) {
closedir(dir);
#endif
- delete[] pattern;
- pattern = NULL;
return true;
}
@@ -238,14 +234,12 @@ void addVariablesInSecond(variable &var1, variable &var2) {
if (var1.varType == SVT_INT && var2.varType == SVT_INT) {
var2.varData.intValue += var1.varData.intValue;
} else {
- char *string1 = getTextFromAnyVar(var1);
- char *string2 = getTextFromAnyVar(var2);
+ Common::String string1 = getTextFromAnyVar(var1);
+ Common::String string2 = getTextFromAnyVar(var2);
unlinkVar(var2);
- var2.varData.theString = joinStrings(string1, string2);
+ var2.varData.theString = createCString(string1 + string2);
var2.varType = SVT_STRING;
- delete[] string1;
- delete[] string2;
}
}
@@ -285,65 +279,59 @@ void compareVariablesInSecond(const variable &var1, variable &var2) {
setVariable(var2, SVT_INT, compareVars(var1, var2));
}
-void makeTextVar(variable &thisVar, const char *txt) {
+char *createCString(const Common::String &s) {
+ uint n = s.size() + 1;
+ char *res = new char[n];
+ if (!checkNew(res)) {
+ fatal("createCString : Unable to copy String");
+ return NULL;
+ }
+ memcpy(res, s.c_str(), n);
+ return res;
+}
+
+void makeTextVar(variable &thisVar, const Common::String &txt) {
unlinkVar(thisVar);
thisVar.varType = SVT_STRING;
- thisVar.varData.theString = copyString(txt);
+ thisVar.varData.theString = createCString(txt);
}
bool loadStringToVar(variable &thisVar, int value) {
-
makeTextVar(thisVar, getNumberedString(value));
return (bool)(thisVar.varData.theString != NULL);
}
-char *getTextFromAnyVar(const variable &from) {
+Common::String getTextFromAnyVar(const variable &from) {
switch (from.varType) {
case SVT_STRING:
- return copyString(from.varData.theString);
+ return from.varData.theString;
case SVT_FASTARRAY: {
- char *builder = copyString("FAST:");
- char *builder2;
- char *grabText;
+ Common::String builder = "FAST:";
+ Common::String builder2 = "";
+ Common::String grabText = "";
for (int i = 0; i < from.varData.fastArray->size; i++) {
- builder2 = joinStrings(builder, " ");
- if (!builder2)
- return NULL;
- delete builder;
+ builder2 = builder + " ";
grabText = getTextFromAnyVar(from.varData.fastArray->fastVariables[i]);
- builder = joinStrings(builder2, grabText);
- if (!builder)
- return NULL;
- delete grabText;
- grabText = NULL;
- delete builder2;
- builder2 = NULL;
+ builder.clear();
+ builder = builder2 + grabText;
}
return builder;
}
case SVT_STACK: {
- char *builder = copyString("ARRAY:");
- char *builder2;
- char *grabText;
+ Common::String builder = "ARRAY:";
+ Common::String builder2 = "";
+ Common::String grabText = "";
variableStack *stacky = from.varData.theStack->first;
while (stacky) {
- builder2 = joinStrings(builder, " ");
- if (!builder2)
- return NULL;
- delete[] builder;
+ builder2 = builder + " ";
grabText = getTextFromAnyVar(stacky->thisVar);
- builder = joinStrings(builder2, grabText);
- if (!builder)
- return NULL;
- delete[] grabText;
- grabText = NULL;
- delete[] builder2;
- builder2 = NULL;
+ builder.clear();
+ builder = builder2 + grabText;
stacky = stacky->next;
}
return builder;
@@ -351,17 +339,14 @@ char *getTextFromAnyVar(const variable &from) {
case SVT_INT: {
char *buff = new char[10];
- if (!checkNew(buff))
- return NULL;
sprintf(buff, "%i", from.varData.intValue);
- return buff;
+ Common::String res = buff;
+ delete []buff;
+ return res;
}
case SVT_FILE: {
-// char * buff = new char[15];
-// if (! checkNew (buff)) return NULL;
-// sprintf (buff, "FILE %i", from.varData.intValue);
- return joinStrings("", resourceNameFromNum(from.varData.intValue));
+ return resourceNameFromNum(from.varData.intValue);
}
/* case SVT_ANIM:
@@ -375,14 +360,15 @@ char *getTextFromAnyVar(const variable &from) {
case SVT_OBJTYPE: {
objectType *thisType = findObjectType(from.varData.intValue);
if (thisType)
- return copyString(thisType->screenName);
+ return thisType->screenName;
+ break;
}
default:
break;
}
- return copyString(typeName[from.varType]);
+ return typeName[from.varType];
}
bool getBoolean(const variable &from) {
@@ -425,7 +411,7 @@ bool copyMain(const variable &from, variable &to) {
return true;
case SVT_STRING:
- to.varData.theString = copyString(from.varData.theString);
+ to.varData.theString = createCString(from.varData.theString);
return to.varData.theString ? true : false;
case SVT_STACK: