diff options
author | Sven Hesse | 2009-06-22 10:11:25 +0000 |
---|---|---|
committer | Sven Hesse | 2009-06-22 10:11:25 +0000 |
commit | f6717373b5130deb0dcd9d307867bb9aeada3f89 (patch) | |
tree | 400af7ef4dadca53c8dc0bdf1ff92659847ee8de | |
parent | 640f322194e81d1959c737f12cd6f946236dca49 (diff) | |
download | scummvm-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.cpp | 4 | ||||
-rw-r--r-- | engines/gob/inter_v1.cpp | 4 | ||||
-rw-r--r-- | engines/gob/inter_v2.cpp | 20 | ||||
-rw-r--r-- | engines/gob/inter_v6.cpp | 12 | ||||
-rw-r--r-- | engines/gob/parse.cpp | 4 | ||||
-rw-r--r-- | engines/gob/parse.h | 9 |
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 ¶ms) { 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 ¶ms) { 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 ¶ms) { 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 ¶ms) { 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 ¶ms) { 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 ¶ms) { 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); |