[Scummvm-cvs-logs] CVS: scummvm/gob parse.cpp,1.19,1.20 parse.h,1.6,1.7
Eugene Sandulenko
sev at users.sourceforge.net
Sat Jan 28 18:22:00 CET 2006
- Previous message: [Scummvm-cvs-logs] CVS: scummvm/scumm wiz_he.h,2.38,2.39 wiz_he.cpp,2.110,2.111
- Next message: [Scummvm-cvs-logs] CVS: scummvm/gob cdrom.cpp,1.8,1.9 dataio.cpp,1.14,1.15 draw.cpp,1.21,1.22 draw.h,1.10,1.11 game.cpp,1.35,1.36 game.h,1.9,1.10 global.cpp,1.12,1.13 global.h,1.11,1.12 gob.h,1.18,1.19 goblin.cpp,1.33,1.34 goblin.h,1.11,1.12 init.cpp,1.17,1.18 map.cpp,1.23,1.24 map.h,1.14,1.15 mult.cpp,1.18,1.19 mult.h,1.9,1.10 pack.cpp,1.8,1.9 palanim.cpp,1.15,1.16 scenery.cpp,1.25,1.26 scenery.h,1.10,1.11 sound.cpp,1.16,1.17 sound.h,1.12,1.13 util.cpp,1.21,1.22 util.h,1.8,1.9 video.cpp,1.19,1.20 video.h,1.12,1.13
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Update of /cvsroot/scummvm/scummvm/gob
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv32368
Modified Files:
parse.cpp parse.h
Log Message:
Patch #1417634: " gobliiins parser stoptoken cleanup"
Index: parse.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/gob/parse.cpp,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -d -r1.19 -r1.20
--- parse.cpp 18 Jan 2006 17:39:34 -0000 1.19
+++ parse.cpp 29 Jan 2006 02:20:45 -0000 1.20
@@ -70,7 +70,7 @@
return ptr + (n & 0x0FFFFFFF);
}
-int16 Parse::parseExpr(char arg_0, byte *arg_2) {
+int16 Parse::parseExpr(char stopToken, byte *arg_2) {
int32 values[20];
byte operStack[20];
int32 prevPrevVal;
@@ -129,7 +129,7 @@
*valPtr = encodePtr(_vm->_global->_inter_variables + temp, kInterVar);
if (*_vm->_global->_inter_execPtr == 13) {
_vm->_global->_inter_execPtr++;
- temp += parseValExpr();
+ temp += parseValExpr(12);
*operPtr = 20;
*valPtr = (uint8)*(_vm->_global->_inter_variables + temp);
}
@@ -145,7 +145,7 @@
offset = 0;
dim = 0;
for (dim = 0; dim < dimCount; dim++) {
- temp2 = parseValExpr();
+ temp2 = parseValExpr(12);
offset = offset * arrDescPtr[dim] + temp2;
}
@@ -156,7 +156,7 @@
*valPtr = encodePtr(_vm->_global->_inter_variables + temp * 4 + offset * _vm->_global->_inter_animDataSize * 4, kInterVar);
if (*_vm->_global->_inter_execPtr == 13) {
_vm->_global->_inter_execPtr++;
- temp2 = parseValExpr();
+ temp2 = parseValExpr(12);
*operPtr = 20;
*valPtr = (uint8)*(_vm->_global->_inter_variables + temp * 4 + offset * 4 * _vm->_global->_inter_animDataSize + temp2);
}
@@ -262,10 +262,10 @@
continue;
} // op>= 19 && op <= 29
- if (operation == arg_0 || operation == 30 || operation == 31 || operation == 10) {
+ if (operation == stopToken || operation == 30 || operation == 31 || operation == 10) {
while (stkPos >= 2) {
var_1A = 0;
- if (operPtr[-2] == 9 && (operation == 10 || operation == arg_0)) {
+ if (operPtr[-2] == 9 && (operation == 10 || operation == stopToken)) {
operPtr[-2] = operPtr[-1];
if (operPtr[-2] == 20 || operPtr[-2] == 22)
valPtr[-2] = valPtr[-1];
@@ -324,7 +324,7 @@
} // switch
} // stkPos > 2
- if (operation != arg_0)
+ if (operation != stopToken)
break;
} // if (operPtr[-2] == 9 && ...)
@@ -549,7 +549,7 @@
operPtr -= 2;
valPtr -= 2;
} else {
- skipExpr(arg_0);
+ skipExpr(stopToken);
}
operation = _vm->_global->_inter_execPtr[-1];
if (stkPos > 0 && operPtr[-1] == 11) {
@@ -570,7 +570,7 @@
valPtr--;
}
- if (operation != arg_0)
+ if (operation != stopToken)
continue;
if (arg_2 != 0)
@@ -602,7 +602,7 @@
break;
}
return 0;
- } // operation == arg_0 || operation == 30 || operation == 31 || operation == 10
+ } // operation == stopToken || operation == 30 || operation == 31 || operation == 10
if (operation < 1 || operation > 11) {
if (operation < 32 || operation > 37)
@@ -640,7 +640,7 @@
}
}
-void Parse::skipExpr(char arg_0) {
+void Parse::skipExpr(char stopToken) {
int16 dimCount;
char operation;
int16 num;
@@ -707,15 +707,15 @@
if (operation == 10)
num--;
- if (operation != arg_0)
+ if (operation != stopToken)
continue;
- if (arg_0 != 10 || num < 0)
+ if (stopToken != 10 || num < 0)
return;
}
}
-int16 Parse::parseValExpr() {
+int16 Parse::parseValExpr(unsigned stopToken) {
int16 values[20];
byte operStack[20];
int16 *valPtr;
@@ -735,7 +735,7 @@
oldflag = flag;
if (flag == 0) {
flag = 1;
- printExpr(99);
+ printExpr(stopToken);
}
stkPos = -1;
@@ -767,7 +767,7 @@
case 25:
temp = _vm->_inter->load16() * 4;
_vm->_global->_inter_execPtr++;
- temp += parseValExpr();
+ temp += parseValExpr(12);
*valPtr = (uint8)*(_vm->_global->_inter_variables + temp);
break;
@@ -779,14 +779,14 @@
_vm->_global->_inter_execPtr += dimCount;
offset = 0;
for (dim = 0; dim < dimCount; dim++) {
- temp2 = parseValExpr();
+ temp2 = parseValExpr(12);
offset = arrDesc[dim] * offset + temp2;
}
if (operation == 26) {
*valPtr = (uint16)VAR(temp + offset);
} else {
_vm->_global->_inter_execPtr++;
- temp2 = parseValExpr();
+ temp2 = parseValExpr(12);
*valPtr = (uint8)*(_vm->_global->_inter_variables + temp * 4 + offset * 4 * _vm->_global->_inter_animDataSize + temp2);
}
break;
@@ -930,6 +930,9 @@
}
if (operation != 10) {
+ if (operation != stopToken) {
+ debug(5, "stoptoken error: %d != %d", operation, stopToken);
+ }
flag = oldflag;
return values[0];
}
@@ -959,7 +962,7 @@
debug(5, "oper = %d", (int16)*_vm->_global->_inter_execPtr);
if (operation == 25 && *_vm->_global->_inter_execPtr == 13) {
_vm->_global->_inter_execPtr++;
- val = parseValExpr();
+ val = parseValExpr(12);
temp += val;
debug(5, "parse subscript = %d", val);
}
@@ -973,7 +976,7 @@
_vm->_global->_inter_execPtr += dimCount;
offset = 0;
for (dim = 0; dim < dimCount; dim++) {
- temp2 = parseValExpr();
+ temp2 = parseValExpr(12);
offset = arrDesc[dim] * offset + temp2;
}
offset *= 4;
@@ -982,7 +985,7 @@
if (*_vm->_global->_inter_execPtr == 13) {
_vm->_global->_inter_execPtr++;
- temp += parseValExpr();
+ temp += parseValExpr(12);
}
return offset * _vm->_global->_inter_animDataSize + temp;
@@ -991,7 +994,7 @@
}
}
-void Parse::printExpr(char arg_0) {
+void Parse::printExpr(char stopToken) {
int16 dimCount;
char operation;
int16 num;
@@ -1001,8 +1004,9 @@
char saved = 0;
static char *savedPos = 0;
- // printExpr() is not safe function. It suffers from unability to process
- // stopTokens. So enable it only temporary when you need debugging.
+ // printExpr() is not a necessary function, and might
+ // cause stability problems if it fails to parse an expression
+ // Enable it only temporarily when you need debugging.
return;
if (savedPos == 0) {
@@ -1031,9 +1035,11 @@
break;
case 23:
- debug(5, "var_%d", _vm->_inter->load16());
+ {
+ int16 varnum = _vm->_inter->load16();
+ debug(5, "var_%d (val=%d)", varnum, READ_LE_UINT32(_vm->_global->_inter_variables + varnum * 4) );
break;
-
+ }
case 25:
debug(5, "(&var_%d)", _vm->_inter->load16());
if (*_vm->_global->_inter_execPtr == 13) {
@@ -1086,10 +1092,6 @@
printExpr(10);
break;
- case 12:
- debug(5, "}");
- break;
-
default:
debug(5, "<%d>", (int16)operation);
break;
@@ -1179,6 +1181,9 @@
case 12:
debug(5, "}");
+ if (stopToken != 12) {
+ debug(5, "Closing paren without opening?");
+ }
break;
default:
@@ -1200,8 +1205,8 @@
if (operation == 10)
num--;
- if (operation == arg_0) {
- if (arg_0 != 10 || num < 0) {
+ if (operation == stopToken) {
+ if (stopToken != 10 || num < 0) {
if (saved != 0) {
_vm->_global->_inter_execPtr = savedPos;
@@ -1231,7 +1236,7 @@
if (operation == 25 && *_vm->_global->_inter_execPtr == 13) {
_vm->_global->_inter_execPtr++;
debug(5, "+");
- printExpr(99);
+ printExpr(12);
}
break;
@@ -1252,7 +1257,7 @@
if (operation == 28 && *_vm->_global->_inter_execPtr == 13) {
_vm->_global->_inter_execPtr++;
debug(5, "+");
- printExpr(99);
+ printExpr(12);
}
break;
Index: parse.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/gob/parse.h,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -d -r1.6 -r1.7
--- parse.h 18 Jan 2006 17:39:34 -0000 1.6
+++ parse.h 29 Jan 2006 02:20:45 -0000 1.7
@@ -28,7 +28,7 @@
public:
int16 parseExpr(char stopToken, byte *resultPtr);
void skipExpr(char stopToken);
- int16 parseValExpr(void);
+ int16 parseValExpr(unsigned stopToken=99);
int16 parseVarIndex(void);
void printExpr(char stopToken);
void printVarIndex(void);
- Previous message: [Scummvm-cvs-logs] CVS: scummvm/scumm wiz_he.h,2.38,2.39 wiz_he.cpp,2.110,2.111
- Next message: [Scummvm-cvs-logs] CVS: scummvm/gob cdrom.cpp,1.8,1.9 dataio.cpp,1.14,1.15 draw.cpp,1.21,1.22 draw.h,1.10,1.11 game.cpp,1.35,1.36 game.h,1.9,1.10 global.cpp,1.12,1.13 global.h,1.11,1.12 gob.h,1.18,1.19 goblin.cpp,1.33,1.34 goblin.h,1.11,1.12 init.cpp,1.17,1.18 map.cpp,1.23,1.24 map.h,1.14,1.15 mult.cpp,1.18,1.19 mult.h,1.9,1.10 pack.cpp,1.8,1.9 palanim.cpp,1.15,1.16 scenery.cpp,1.25,1.26 scenery.h,1.10,1.11 sound.cpp,1.16,1.17 sound.h,1.12,1.13 util.cpp,1.21,1.22 util.h,1.8,1.9 video.cpp,1.19,1.20 video.h,1.12,1.13
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the Scummvm-git-logs
mailing list