GOB: Some more cleanup

svn-id: r39890
This commit is contained in:
Max Horn 2009-04-07 13:29:13 +00:00
parent 3f22e4b401
commit 1d1307de01
4 changed files with 45 additions and 43 deletions

View File

@ -118,7 +118,7 @@ void Parse::skipExpr(char stopToken) {
_vm->_global->_inter_execPtr += 2;
if (*_vm->_global->_inter_execPtr == 13) {
_vm->_global->_inter_execPtr++;
skipExpr(12);
skipExpr(OP_END_MARKER);
}
break;
@ -134,17 +134,17 @@ void Parse::skipExpr(char stopToken) {
_vm->_global->_inter_execPtr += 3 + dimCount;
// skip indices
for (dim = 0; dim < dimCount; dim++)
skipExpr(12);
skipExpr(OP_END_MARKER);
if ((operation == OP_ARRAY_STR) && (*_vm->_global->_inter_execPtr == 13)) {
_vm->_global->_inter_execPtr++;
skipExpr(12);
skipExpr(OP_END_MARKER);
}
break;
case OP_FUNC:
_vm->_global->_inter_execPtr++;
skipExpr(10);
skipExpr(OP_END_EXPR);
}
continue;
} // if ((operation >= OP_ARRAY_UINT8) && (operation <= OP_FUNC))
@ -166,7 +166,7 @@ void Parse::skipExpr(char stopToken) {
if (operation != stopToken)
continue;
if ((stopToken != 10) || (num < 0))
if ((stopToken != OP_END_EXPR) || (num < 0))
return;
}
}
@ -235,7 +235,7 @@ void Parse::printExpr_internal(char stopToken) {
if (*_vm->_global->_inter_execPtr == 13) {
_vm->_global->_inter_execPtr++;
debugN(5, "{");
printExpr_internal(12); // this also prints the closing }
printExpr_internal(OP_END_MARKER); // this also prints the closing }
}
break;
@ -252,7 +252,7 @@ void Parse::printExpr_internal(char stopToken) {
arrDesc = _vm->_global->_inter_execPtr;
_vm->_global->_inter_execPtr += dimCount;
for (dim = 0; dim < dimCount; dim++) {
printExpr_internal(12);
printExpr_internal(OP_END_MARKER);
debugN(5, " of %d", (int16) arrDesc[dim]);
if (dim != dimCount - 1)
debugN(5, ",");
@ -264,7 +264,7 @@ void Parse::printExpr_internal(char stopToken) {
if ((operation == OP_ARRAY_STR) && (*_vm->_global->_inter_execPtr == 13)) {
_vm->_global->_inter_execPtr++;
debugN(5, "{");
printExpr_internal(12); // this also prints the closing }
printExpr_internal(OP_END_MARKER); // this also prints the closing }
}
break;
@ -280,7 +280,7 @@ void Parse::printExpr_internal(char stopToken) {
debugN(5, "sqrt(");
else
debugN(5, "id(");
printExpr_internal(10);
printExpr_internal(OP_END_EXPR);
break;
}
continue;
@ -368,9 +368,9 @@ void Parse::printExpr_internal(char stopToken) {
debugN(5, "\n");
break;
case 12:
case OP_END_MARKER:
debugN(5, "}");
if (stopToken != 12) {
if (stopToken != OP_END_MARKER) {
debugN(5, "Closing paren without opening?");
}
break;
@ -396,7 +396,7 @@ void Parse::printExpr_internal(char stopToken) {
num--;
if (operation == stopToken) {
if ((stopToken != 10) || (num < 0)) {
if ((stopToken != OP_END_EXPR) || (num < 0)) {
return;
}
}
@ -422,7 +422,7 @@ void Parse::printVarIndex() {
if ((operation == OP_LOAD_VAR_STR) && (*_vm->_global->_inter_execPtr == 13)) {
_vm->_global->_inter_execPtr++;
debugN(5, "+");
printExpr(12);
printExpr(OP_END_MARKER);
}
break;
@ -433,7 +433,7 @@ void Parse::printVarIndex() {
arrDesc = _vm->_global->_inter_execPtr;
_vm->_global->_inter_execPtr += dimCount;
for (dim = 0; dim < dimCount; dim++) {
printExpr(12);
printExpr(OP_END_MARKER);
debugN(5, " of %d", (int16) arrDesc[dim]);
if (dim != dimCount - 1)
debugN(5, ",");
@ -443,7 +443,7 @@ void Parse::printVarIndex() {
if ((operation == OP_ARRAY_STR) && (*_vm->_global->_inter_execPtr == 13)) {
_vm->_global->_inter_execPtr++;
debugN(5, "+");
printExpr(12);
printExpr(OP_END_MARKER);
}
break;

View File

@ -41,6 +41,8 @@ enum {
OP_END_EXPR = 10,
OP_NOT = 11,
OP_END_MARKER = 12, // Marks end of an array or string
OP_ARRAY_UINT8 = 16,

View File

@ -56,7 +56,7 @@ int16 Parse_v1::parseVarIndex(uint16 *arg_0, uint16 *arg_4) {
if ((operation == OP_LOAD_VAR_STR) && (*_vm->_global->_inter_execPtr == 13)) {
_vm->_global->_inter_execPtr++;
val = parseValExpr(12);
val = parseValExpr(OP_END_MARKER);
temp += val;
debugC(5, kDebugParser, "parse subscript = %d", val);
}
@ -70,7 +70,7 @@ int16 Parse_v1::parseVarIndex(uint16 *arg_0, uint16 *arg_4) {
_vm->_global->_inter_execPtr += dimCount;
offset = 0;
for (dim = 0; dim < dimCount; dim++) {
temp2 = parseValExpr(12);
temp2 = parseValExpr(OP_END_MARKER);
offset = arrDesc[dim] * offset + temp2;
}
offset *= 4;
@ -79,7 +79,7 @@ int16 Parse_v1::parseVarIndex(uint16 *arg_0, uint16 *arg_4) {
if (*_vm->_global->_inter_execPtr == 13) {
_vm->_global->_inter_execPtr++;
temp += parseValExpr(12);
temp += parseValExpr(OP_END_MARKER);
}
return offset * _vm->_global->_inter_animDataSize + temp;
@ -140,7 +140,7 @@ int16 Parse_v1::parseValExpr(byte stopToken) {
case OP_LOAD_VAR_STR:
temp = _vm->_inter->load16() * 4;
_vm->_global->_inter_execPtr++;
temp += parseValExpr(12);
temp += parseValExpr(OP_END_MARKER);
*valPtr = READ_VARO_UINT8(temp);
break;
@ -152,14 +152,14 @@ int16 Parse_v1::parseValExpr(byte stopToken) {
_vm->_global->_inter_execPtr += dimCount;
offset = 0;
for (dim = 0; dim < dimCount; dim++) {
temp2 = parseValExpr(12);
temp2 = parseValExpr(OP_END_MARKER);
offset = arrDesc[dim] * offset + temp2;
}
if (operation == OP_ARRAY_UINT32) {
*valPtr = (uint16) VAR(temp + offset);
} else {
_vm->_global->_inter_execPtr++;
temp2 = parseValExpr(12);
temp2 = parseValExpr(OP_END_MARKER);
*valPtr = READ_VARO_UINT8(temp * 4 + offset * 4 *
_vm->_global->_inter_animDataSize + temp2);
}
@ -167,7 +167,7 @@ int16 Parse_v1::parseValExpr(byte stopToken) {
case OP_FUNC:
operation = *_vm->_global->_inter_execPtr++;
parseExpr(10, 0);
parseExpr(OP_END_EXPR, 0);
if (operation == FUNC_SQR) {
_vm->_global->_inter_resVal =
@ -379,7 +379,7 @@ int16 Parse_v1::parseExpr(byte stopToken, byte *arg_2) {
kInterVar);
if (*_vm->_global->_inter_execPtr == 13) {
_vm->_global->_inter_execPtr++;
temp += parseValExpr(12);
temp += parseValExpr(OP_END_MARKER);
*operPtr = OP_LOAD_IMM_INT16;
*valPtr = READ_VARO_UINT8(temp);
}
@ -395,7 +395,7 @@ int16 Parse_v1::parseExpr(byte stopToken, byte *arg_2) {
offset = 0;
dim = 0;
for (dim = 0; dim < dimCount; dim++) {
temp2 = parseValExpr(12);
temp2 = parseValExpr(OP_END_MARKER);
offset = offset * arrDescPtr[dim] + temp2;
}
@ -408,7 +408,7 @@ int16 Parse_v1::parseExpr(byte stopToken, byte *arg_2) {
kInterVar);
if (*_vm->_global->_inter_execPtr == 13) {
_vm->_global->_inter_execPtr++;
temp2 = parseValExpr(12);
temp2 = parseValExpr(OP_END_MARKER);
*operPtr = OP_LOAD_IMM_INT16;
*valPtr = READ_VARO_UINT8(temp * 4 +
offset * 4 * _vm->_global->_inter_animDataSize + temp2);
@ -417,7 +417,7 @@ int16 Parse_v1::parseExpr(byte stopToken, byte *arg_2) {
case OP_FUNC:
operation = *_vm->_global->_inter_execPtr++;
parseExpr(10, 0);
parseExpr(OP_END_EXPR, 0);
switch (operation) {
case FUNC_SQR:
@ -473,7 +473,7 @@ int16 Parse_v1::parseExpr(byte stopToken, byte *arg_2) {
continue;
switch (operPtr[-1]) {
case 2:
case OP_ADD:
if (operPtr[-2] == OP_LOAD_IMM_STR) {
if ((char *) decodePtr(valPtr[-2]) != _vm->_global->_inter_resStr) {
strcpy(_vm->_global->_inter_resStr, (char *) decodePtr(valPtr[-2]));
@ -734,7 +734,7 @@ int16 Parse_v1::parseExpr(byte stopToken, byte *arg_2) {
if (((operation == OP_OR) && (operPtr[-1] == GOB_TRUE)) ||
((operation == OP_AND) && (operPtr[-1] == GOB_FALSE))) {
if ((stkPos > 1) && (operPtr[-2] == OP_BEGIN_EXPR)) {
skipExpr(10);
skipExpr(OP_END_EXPR);
operPtr[-2] = operPtr[-1];
stkPos -= 2;
operPtr -= 2;

View File

@ -85,7 +85,7 @@ int16 Parse_v2::parseVarIndex(uint16 *arg_0, uint16 *arg_4) {
uint16 var_6 = 0;
for (int i = 0; i < var_A; i++) {
temp2 = parseValExpr(12);
temp2 = parseValExpr(OP_END_MARKER);
int16 ax = sub_12063(temp2, var_12[i], varPos, 0, 0);
@ -122,7 +122,7 @@ int16 Parse_v2::parseVarIndex(uint16 *arg_0, uint16 *arg_4) {
_vm->_global->_inter_execPtr += dimCount;
offset = 0;
for (dim = 0; dim < dimCount; dim++) {
temp2 = parseValExpr(12);
temp2 = parseValExpr(OP_END_MARKER);
offset = arrDesc[dim] * offset + temp2;
}
if (operation == OP_ARRAY_UINT8)
@ -135,7 +135,7 @@ int16 Parse_v2::parseVarIndex(uint16 *arg_0, uint16 *arg_4) {
offset *= 4;
if (*_vm->_global->_inter_execPtr == 13) {
_vm->_global->_inter_execPtr++;
temp += parseValExpr(12);
temp += parseValExpr(OP_END_MARKER);
}
return varPos + offset * _vm->_global->_inter_animDataSize + temp;
@ -153,7 +153,7 @@ int16 Parse_v2::parseVarIndex(uint16 *arg_0, uint16 *arg_4) {
(int16) *_vm->_global->_inter_execPtr);
if ((operation == OP_LOAD_VAR_STR) && (*_vm->_global->_inter_execPtr == 13)) {
_vm->_global->_inter_execPtr++;
val = parseValExpr(12);
val = parseValExpr(OP_END_MARKER);
temp += val;
debugC(5, kDebugParser, "parse subscript = %d", val);
}
@ -216,7 +216,7 @@ int16 Parse_v2::parseValExpr(byte stopToken) {
uint16 var_6 = 0;
for (int i = 0; i < var_A; i++) {
temp2 = parseValExpr(12);
temp2 = parseValExpr(OP_END_MARKER);
int16 ax = sub_12063(temp2, var_12[i], varPos, 0, 0);
@ -250,7 +250,7 @@ int16 Parse_v2::parseValExpr(byte stopToken) {
_vm->_global->_inter_execPtr += dimCount;
offset = 0;
for (dim = 0; dim < dimCount; dim++) {
temp2 = parseValExpr(12);
temp2 = parseValExpr(OP_END_MARKER);
offset = arrDesc[dim] * offset + temp2;
}
if (operation == OP_ARRAY_UINT8)
@ -261,7 +261,7 @@ int16 Parse_v2::parseValExpr(byte stopToken) {
*valPtr = READ_VARO_UINT16(varPos + temp * 2 + offset * 2);
else if (operation == OP_ARRAY_STR) {
_vm->_global->_inter_execPtr++;
temp2 = parseValExpr(12);
temp2 = parseValExpr(OP_END_MARKER);
*valPtr = READ_VARO_UINT8(varPos + temp * 4 +
offset * 4 * _vm->_global->_inter_animDataSize + temp2);
}
@ -299,13 +299,13 @@ int16 Parse_v2::parseValExpr(byte stopToken) {
case OP_LOAD_VAR_STR:
temp = _vm->_inter->load16() * 4;
_vm->_global->_inter_execPtr++;
temp += parseValExpr(12);
temp += parseValExpr(OP_END_MARKER);
*valPtr = READ_VARO_UINT8(varPos + temp);
break;
case OP_FUNC:
operation = *_vm->_global->_inter_execPtr++;
parseExpr(10, 0);
parseExpr(OP_END_EXPR, 0);
if (operation == FUNC_SQR) {
_vm->_global->_inter_resVal =
@ -508,7 +508,7 @@ int16 Parse_v2::parseExpr(byte stopToken, byte *arg_2) {
uint16 var_6 = 0;
for (int i = 0; i < var_A; i++) {
temp2 = parseValExpr(12);
temp2 = parseValExpr(OP_END_MARKER);
int16 ax = sub_12063(temp2, var_12[i], varPos, 0, 0);
@ -543,7 +543,7 @@ int16 Parse_v2::parseExpr(byte stopToken, byte *arg_2) {
_vm->_global->_inter_execPtr += dimCount;
offset = 0;
for (dim = 0; dim < dimCount; dim++) {
temp2 = parseValExpr(12);
temp2 = parseValExpr(OP_END_MARKER);
offset = offset * arrDescPtr[dim] + temp2;
}
if (operation == OP_ARRAY_UINT8)
@ -558,7 +558,7 @@ int16 Parse_v2::parseExpr(byte stopToken, byte *arg_2) {
kInterVar);
if (*_vm->_global->_inter_execPtr == 13) {
_vm->_global->_inter_execPtr++;
temp2 = parseValExpr(12);
temp2 = parseValExpr(OP_END_MARKER);
*operPtr = OP_LOAD_IMM_INT16;
*valPtr = READ_VARO_UINT8(varPos + temp * 4 +
offset * 4 * _vm->_global->_inter_animDataSize + temp2);
@ -615,7 +615,7 @@ int16 Parse_v2::parseExpr(byte stopToken, byte *arg_2) {
*valPtr = encodePtr(_vm->_inter->_variables->getAddressOff8(varPos + temp, 0), kInterVar);
if (*_vm->_global->_inter_execPtr == 13) {
_vm->_global->_inter_execPtr++;
temp += parseValExpr(12);
temp += parseValExpr(OP_END_MARKER);
*operPtr = OP_LOAD_IMM_INT16;
*valPtr = READ_VARO_UINT8(varPos + temp);
}
@ -623,7 +623,7 @@ int16 Parse_v2::parseExpr(byte stopToken, byte *arg_2) {
case OP_FUNC:
operation = *_vm->_global->_inter_execPtr++;
parseExpr(10, 0);
parseExpr(OP_END_EXPR, 0);
switch (operation) {
case FUNC_SQRT1:
@ -951,7 +951,7 @@ int16 Parse_v2::parseExpr(byte stopToken, byte *arg_2) {
if (((operation == OP_OR) && (operPtr[-1] == GOB_TRUE)) ||
((operation == OP_AND) && (operPtr[-1] == GOB_FALSE))) {
if ((stkPos > 1) && (operPtr[-2] == OP_BEGIN_EXPR)) {
skipExpr(10);
skipExpr(OP_END_EXPR);
operPtr[-2] = operPtr[-1];
stkPos -= 2;
operPtr -= 2;