aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSven Hesse2009-06-22 10:11:25 +0000
committerSven Hesse2009-06-22 10:11:25 +0000
commitf6717373b5130deb0dcd9d307867bb9aeada3f89 (patch)
tree400af7ef4dadca53c8dc0bdf1ff92659847ee8de
parent640f322194e81d1959c737f12cd6f946236dca49 (diff)
downloadscummvm-rg350-f6717373b5130deb0dcd9d307867bb9aeada3f89.tar.gz
scummvm-rg350-f6717373b5130deb0dcd9d307867bb9aeada3f89.tar.bz2
scummvm-rg350-f6717373b5130deb0dcd9d307867bb9aeada3f89.zip
Encapsulated access to Parse::_resultInt
svn-id: r41750
-rw-r--r--engines/gob/inter.cpp4
-rw-r--r--engines/gob/inter_v1.cpp4
-rw-r--r--engines/gob/inter_v2.cpp20
-rw-r--r--engines/gob/inter_v6.cpp12
-rw-r--r--engines/gob/parse.cpp4
-rw-r--r--engines/gob/parse.h9
6 files changed, 31 insertions, 22 deletions
diff --git a/engines/gob/inter.cpp b/engines/gob/inter.cpp
index 8988d0b825..61bf99e727 100644
--- a/engines/gob/inter.cpp
+++ b/engines/gob/inter.cpp
@@ -173,7 +173,7 @@ char Inter::evalExpr(int16 *pRes) {
switch (type) {
case TYPE_IMM_INT16:
- *pRes = _vm->_parse->_resultInt;
+ *pRes = _vm->_parse->getResultInt();
break;
case TYPE_IMM_STR:
@@ -196,7 +196,7 @@ bool Inter::evalBoolResult() {
_vm->_parse->parseExpr(99, &type);
if ( (type == GOB_TRUE) ||
- ((type == TYPE_IMM_INT16) && _vm->_parse->_resultInt))
+ ((type == TYPE_IMM_INT16) && _vm->_parse->getResultInt()))
return true;
else
return false;
diff --git a/engines/gob/inter_v1.cpp b/engines/gob/inter_v1.cpp
index 70a7e12849..d1727ad4e1 100644
--- a/engines/gob/inter_v1.cpp
+++ b/engines/gob/inter_v1.cpp
@@ -258,7 +258,7 @@ void Inter_v1::checkSwitchTable(byte **ppExec) {
if (_terminate)
return;
- if (_vm->_parse->_resultInt == value) {
+ if (_vm->_parse->getResultInt() == value) {
found = true;
notFound = false;
}
@@ -852,7 +852,7 @@ bool Inter_v1::o1_assign(OpFuncParams &params) {
switch (destType) {
case TYPE_VAR_INT32:
case TYPE_ARRAY_INT32:
- WRITE_VAR_OFFSET(dest, _vm->_parse->_resultInt);
+ WRITE_VAR_OFFSET(dest, _vm->_parse->getResultInt());
break;
case TYPE_VAR_STR:
diff --git a/engines/gob/inter_v2.cpp b/engines/gob/inter_v2.cpp
index e7f3bd198d..9cb4c12d53 100644
--- a/engines/gob/inter_v2.cpp
+++ b/engines/gob/inter_v2.cpp
@@ -213,7 +213,7 @@ void Inter_v2::checkSwitchTable(byte **ppExec) {
default:
if (!found) {
evalExpr(0);
- if (value == _vm->_parse->_resultInt)
+ if (value == _vm->_parse->getResultInt())
found = true;
} else
_vm->_parse->skipExpr(99);
@@ -620,10 +620,12 @@ void Inter_v2::o2_pushVars() {
_varStack[_varStackPos] = _vm->_global->_inter_animDataSize * 4;
} else {
+ int32 n = _vm->_parse->getResultInt();
+
if (evalExpr(&varOff) != 20)
- _vm->_parse->_resultInt = 0;
+ n = 0;
- memcpy(_varStack + _varStackPos, &_vm->_parse->_resultInt, 4);
+ memcpy(_varStack + _varStackPos, &n, 4);
_varStackPos += 4;
_varStack[_varStackPos] = 4;
}
@@ -1059,21 +1061,21 @@ bool Inter_v2::o2_assign(OpFuncParams &params) {
switch (destType) {
case TYPE_VAR_INT8:
case TYPE_ARRAY_INT8:
- WRITE_VARO_UINT8(dest + i, _vm->_parse->_resultInt);
+ WRITE_VARO_UINT8(dest + i, _vm->_parse->getResultInt());
break;
case TYPE_VAR_INT16:
case TYPE_ARRAY_INT16:
- WRITE_VARO_UINT16(dest + i * 2, _vm->_parse->_resultInt);
+ WRITE_VARO_UINT16(dest + i * 2, _vm->_parse->getResultInt());
break;
case TYPE_VAR_INT32:
case TYPE_ARRAY_INT32:
- WRITE_VAR_OFFSET(dest + i * 4, _vm->_parse->_resultInt);
+ WRITE_VAR_OFFSET(dest + i * 4, _vm->_parse->getResultInt());
break;
case TYPE_VAR_INT32_AS_INT16:
- WRITE_VARO_UINT16(dest + i * 4, _vm->_parse->_resultInt);
+ WRITE_VARO_UINT16(dest + i * 4, _vm->_parse->getResultInt());
break;
case TYPE_VAR_STR:
@@ -1352,7 +1354,7 @@ bool Inter_v2::o2_readData(OpFuncParams &params) {
dataVar = _vm->_parse->parseVarIndex();
size = _vm->_parse->parseValExpr();
evalExpr(0);
- offset = _vm->_parse->_resultInt;
+ offset = _vm->_parse->getResultInt();
retSize = 0;
debugC(2, kDebugFileIO, "Read from file \"%s\" (%d, %d bytes at %d)",
@@ -1423,7 +1425,7 @@ bool Inter_v2::o2_writeData(OpFuncParams &params) {
dataVar = _vm->_parse->parseVarIndex();
size = _vm->_parse->parseValExpr();
evalExpr(0);
- offset = _vm->_parse->_resultInt;
+ offset = _vm->_parse->getResultInt();
debugC(2, kDebugFileIO, "Write to file \"%s\" (%d, %d bytes at %d)",
_vm->_parse->_resultStr, dataVar, size, offset);
diff --git a/engines/gob/inter_v6.cpp b/engines/gob/inter_v6.cpp
index 760760625b..ef160ce339 100644
--- a/engines/gob/inter_v6.cpp
+++ b/engines/gob/inter_v6.cpp
@@ -305,21 +305,21 @@ bool Inter_v6::o6_assign(OpFuncParams &params) {
switch (destType) {
case TYPE_VAR_INT8:
case TYPE_ARRAY_INT8:
- WRITE_VARO_UINT8(dest + i, _vm->_parse->_resultInt);
+ WRITE_VARO_UINT8(dest + i, _vm->_parse->getResultInt());
break;
case TYPE_VAR_INT16:
case TYPE_ARRAY_INT16:
- WRITE_VARO_UINT16(dest + i * 2, _vm->_parse->_resultInt);
+ WRITE_VARO_UINT16(dest + i * 2, _vm->_parse->getResultInt());
break;
case TYPE_VAR_INT32:
case TYPE_ARRAY_INT32:
- WRITE_VAR_OFFSET(dest + i * 4, _vm->_parse->_resultInt);
+ WRITE_VAR_OFFSET(dest + i * 4, _vm->_parse->getResultInt());
break;
case TYPE_VAR_INT32_AS_INT16:
- WRITE_VARO_UINT16(dest + i * 4, _vm->_parse->_resultInt);
+ WRITE_VARO_UINT16(dest + i * 4, _vm->_parse->getResultInt());
break;
case TYPE_VAR_STR:
@@ -394,8 +394,8 @@ bool Inter_v6::o6_fillRect(OpFuncParams &params) {
evalExpr(0);
- _vm->_draw->_backColor = _vm->_parse->_resultInt & 0xFFFF;
- uint16 extraVar = _vm->_parse->_resultInt >> 16;
+ _vm->_draw->_backColor = _vm->_parse->getResultInt() & 0xFFFF;
+ uint16 extraVar = _vm->_parse->getResultInt() >> 16;
if (extraVar != 0)
warning("Urban Stub: o6_fillRect(), extraVar = %d", extraVar);
diff --git a/engines/gob/parse.cpp b/engines/gob/parse.cpp
index 1f2f06de14..9982fb3eb9 100644
--- a/engines/gob/parse.cpp
+++ b/engines/gob/parse.cpp
@@ -1140,4 +1140,8 @@ int16 Parse::parseExpr(byte stopToken, byte *type) {
}
}
+int32 Parse::getResultInt() {
+ return _resultInt;
+}
+
} // End of namespace Gob
diff --git a/engines/gob/parse.h b/engines/gob/parse.h
index 2048acca49..4a13a3154b 100644
--- a/engines/gob/parse.h
+++ b/engines/gob/parse.h
@@ -111,6 +111,9 @@ enum {
class Parse {
public:
+ Parse(GobEngine *vm);
+ virtual ~Parse() {}
+
void skipExpr(char stopToken);
void printExpr(char stopToken);
void printVarIndex(void);
@@ -119,11 +122,9 @@ public:
int16 parseValExpr(byte stopToken = 99);
int16 parseExpr(byte stopToken, byte *type);
- Parse(GobEngine *vm);
- virtual ~Parse() {}
+ int32 getResultInt();
char _resultStr[200];
- int32 _resultInt;
private:
class Stack {
@@ -154,6 +155,8 @@ private:
GobEngine *_vm;
+ int32 _resultInt;
+
int32 encodePtr(byte *ptr, int type);
byte *decodePtr(int32 n);