[Scummvm-cvs-logs] SF.net SVN: scummvm:[39888] scummvm/trunk/engines/gob

fingolfin at users.sourceforge.net fingolfin at users.sourceforge.net
Tue Apr 7 15:20:29 CEST 2009


Revision: 39888
          http://scummvm.svn.sourceforge.net/scummvm/?rev=39888&view=rev
Author:   fingolfin
Date:     2009-04-07 13:20:29 +0000 (Tue, 07 Apr 2009)

Log Message:
-----------
GOB: Some more code cleanup. My respect for the developers of the original GOB engine is at an all-time low :)

Modified Paths:
--------------
    scummvm/trunk/engines/gob/parse.cpp
    scummvm/trunk/engines/gob/parse.h
    scummvm/trunk/engines/gob/parse_v1.cpp
    scummvm/trunk/engines/gob/parse_v2.cpp

Modified: scummvm/trunk/engines/gob/parse.cpp
===================================================================
--- scummvm/trunk/engines/gob/parse.cpp	2009-04-07 12:58:30 UTC (rev 39887)
+++ scummvm/trunk/engines/gob/parse.cpp	2009-04-07 13:20:29 UTC (rev 39888)
@@ -456,4 +456,21 @@
 	return;
 }
 
+int Parse::cmpHelper(byte *operPtr, int32 *valPtr) {
+	byte var_C = operPtr[-3];
+	int cmpTemp;
+	if (var_C == 20) {
+		cmpTemp = (int)valPtr[-3] - (int)valPtr[-1];
+	} else if (var_C == 22) {
+		if ((char *)decodePtr(valPtr[-3]) != _vm->_global->_inter_resStr) {
+			strcpy(_vm->_global->_inter_resStr, (char *)decodePtr(valPtr[-3]));
+			valPtr[-3] = encodePtr((byte *) _vm->_global->_inter_resStr, kResStr);
+		}
+		cmpTemp = strcmp(_vm->_global->_inter_resStr, (char *)decodePtr(valPtr[-1]));
+	}
+
+	return cmpTemp;
+}
+
+
 } // End of namespace Gob

Modified: scummvm/trunk/engines/gob/parse.h
===================================================================
--- scummvm/trunk/engines/gob/parse.h	2009-04-07 12:58:30 UTC (rev 39887)
+++ scummvm/trunk/engines/gob/parse.h	2009-04-07 13:20:29 UTC (rev 39888)
@@ -63,6 +63,8 @@
 	byte *decodePtr(int32 n);
 
 	void printExpr_internal(char stopToken);
+
+	int cmpHelper(byte *operPtr, int32 *valPtr);
 };
 
 class Parse_v1 : public Parse {

Modified: scummvm/trunk/engines/gob/parse_v1.cpp
===================================================================
--- scummvm/trunk/engines/gob/parse_v1.cpp	2009-04-07 12:58:30 UTC (rev 39887)
+++ scummvm/trunk/engines/gob/parse_v1.cpp	2009-04-07 13:20:29 UTC (rev 39888)
@@ -328,7 +328,6 @@
 	int32 *valPtr;
 	byte *operPtr;
 	byte *arrDescPtr;
-	byte var_C;
 	byte operation;
 	int16 dimCount;
 	int16 temp;
@@ -595,7 +594,7 @@
 					brackStart++;
 
 				switch (operPtr[-2]) {
-				case 2:
+				case OP_ADD:
 					if (operStack[brackStart] == 20) {
 						values[brackStart] += valPtr[-1];
 					} else if (operStack[brackStart] == 22) {
@@ -670,114 +669,42 @@
 					break;
 
 				case 32:
-					var_C = operPtr[-3];
-					operPtr[-3] = 23;
-					if (var_C == 20) {
-						if (valPtr[-3] < valPtr[-1])
-							operPtr[-3] = 24;
-					} else if (var_C == 22) {
-						if ((char *) decodePtr(valPtr[-3]) != _vm->_global->_inter_resStr) {
-							strcpy(_vm->_global->_inter_resStr, (char *) decodePtr(valPtr[-3]));
-							valPtr[-3] = encodePtr((byte *) _vm->_global->_inter_resStr, kResStr);
-						}
-						if (strcmp(_vm->_global->_inter_resStr, (char *) decodePtr(valPtr[-1])) < 0)
-							operPtr[-3] = 24;
-					}
+					operPtr[-3] = (cmpHelper(operPtr, valPtr) < 0) ? 24 : 23;
 					stkPos -= 2;
 					operPtr -= 2;
 					valPtr -= 2;
 					break;
 
 				case 33:
-					var_C = operPtr[-3];
-					operPtr[-3] = 23;
-					if (var_C == 20) {
-						if (valPtr[-3] <= valPtr[-1])
-							operPtr[-3] = 24;
-					} else if (var_C == 22) {
-						if ((char *) decodePtr(valPtr[-3]) != _vm->_global->_inter_resStr) {
-							strcpy(_vm->_global->_inter_resStr, (char *) decodePtr(valPtr[-3]));
-							valPtr[-3] = encodePtr((byte *) _vm->_global->_inter_resStr, kResStr);
-						}
-						if (strcmp(_vm->_global->_inter_resStr, (char *) decodePtr(valPtr[-1])) <= 0)
-							operPtr[-3] = 24;
-					}
+					operPtr[-3] = (cmpHelper(operPtr, valPtr) <= 0) ? 24 : 23;
 					stkPos -= 2;
 					operPtr -= 2;
 					valPtr -= 2;
 					break;
 
 				case 34:
-					var_C = operPtr[-3];
-					operPtr[-3] = 23;
-					if (var_C == 20) {
-						if (valPtr[-3] > valPtr[-1])
-							operPtr[-3] = 24;
-					} else if (var_C == 22) {
-						if ((char *) decodePtr(valPtr[-3]) != _vm->_global->_inter_resStr) {
-							strcpy(_vm->_global->_inter_resStr, (char *) decodePtr(valPtr[-3]));
-							valPtr[-3] = encodePtr((byte *) _vm->_global->_inter_resStr, kResStr);
-						}
-						if (strcmp(_vm->_global->_inter_resStr, (char *) decodePtr(valPtr[-1])) > 0)
-							operPtr[-3] = 24;
-					}
+					operPtr[-3] = (cmpHelper(operPtr, valPtr) > 0) ? 24 : 23;
 					stkPos -= 2;
 					operPtr -= 2;
 					valPtr -= 2;
 					break;
 
 				case 35:
-					var_C = operPtr[-3];
-					operPtr[-3] = 23;
-					if (var_C == 20) {
-						if (valPtr[-3] >= valPtr[-1])
-							operPtr[-3] = 24;
-					} else if (var_C == 22) {
-						if ((char *) decodePtr(valPtr[-3]) != _vm->_global->_inter_resStr) {
-							strcpy(_vm->_global->_inter_resStr, (char *) decodePtr(valPtr[-3]));
-							valPtr[-3] = encodePtr((byte *) _vm->_global->_inter_resStr, kResStr);
-						}
-						if (strcmp(_vm->_global->_inter_resStr, (char *) decodePtr(valPtr[-1])) >= 0)
-							operPtr[-3] = 24;
-					}
+					operPtr[-3] = (cmpHelper(operPtr, valPtr) >= 0) ? 24 : 23;
 					stkPos -= 2;
 					operPtr -= 2;
 					valPtr -= 2;
 					break;
 
 				case 36:
-					var_C = operPtr[-3];
-					operPtr[-3] = 23;
-					if (var_C == 20) {
-						if (valPtr[-3] == valPtr[-1])
-							operPtr[-3] = 24;
-					} else if (var_C == 22) {
-						if ((char *) decodePtr(valPtr[-3]) != _vm->_global->_inter_resStr) {
-							strcpy(_vm->_global->_inter_resStr, (char *) decodePtr(valPtr[-3]));
-							valPtr[-3] = encodePtr((byte *) _vm->_global->_inter_resStr, kResStr);
-						}
-						if (strcmp(_vm->_global->_inter_resStr, (char *) decodePtr(valPtr[-1])) == 0)
-							operPtr[-3] = 24;
-					}
+					operPtr[-3] = (cmpHelper(operPtr, valPtr) == 0) ? 24 : 23;
 					stkPos -= 2;
 					operPtr -= 2;
 					valPtr -= 2;
 					break;
 
 				case 37:
-					var_C = operPtr[-3];
-					operPtr[-3] = 23;
-					if (var_C == 20) {
-						if (valPtr[-3] != valPtr[-1])
-							operPtr[-3] = 24;
-					} else if (var_C == 22) {
-						if ((char *) decodePtr(valPtr[-3]) != _vm->_global->_inter_resStr) {
-							strcpy(_vm->_global->_inter_resStr, (char *) decodePtr(valPtr[-3]));
-							valPtr[-3] = encodePtr((byte *) _vm->_global->_inter_resStr, kResStr);
-						}
-						if (strcmp(_vm->_global->_inter_resStr, (char *) decodePtr(valPtr[-1])) != 0)
-							operPtr[-3] = 24;
-					}
+					operPtr[-3] = (cmpHelper(operPtr, valPtr) != 0) ? 24 : 23;
 					stkPos -= 2;
 					operPtr -= 2;
 					valPtr -= 2;
@@ -869,7 +796,7 @@
 				continue;
 
 			if (stkPos > 2) {
-				if (operPtr[-2] == 2) {
+				if (operPtr[-2] == OP_ADD) {
 					if (operPtr[-3] == 20) {
 						valPtr[-3] += valPtr[-1];
 					} else if (operPtr[-3] == 22) {
@@ -883,12 +810,12 @@
 					operPtr -= 2;
 					valPtr -= 2;
 
-				} else if (operPtr[-2] == 3) {
+				} else if (operPtr[-2] == OP_SUB) {
 					valPtr[-3] -= valPtr[-1];
 					stkPos -= 2;
 					operPtr -= 2;
 					valPtr -= 2;
-				} else if (operPtr[-2] == 4) {
+				} else if (operPtr[-2] == OP_BITOR) {
 					valPtr[-3] |= valPtr[-1];
 					stkPos -= 2;
 					operPtr -= 2;

Modified: scummvm/trunk/engines/gob/parse_v2.cpp
===================================================================
--- scummvm/trunk/engines/gob/parse_v2.cpp	2009-04-07 12:58:30 UTC (rev 39887)
+++ scummvm/trunk/engines/gob/parse_v2.cpp	2009-04-07 13:20:29 UTC (rev 39888)
@@ -467,7 +467,6 @@
 	int32 *valPtr;
 	byte *operPtr;
 	byte *arrDescPtr;
-	byte var_C;
 	byte operation;
 	int16 dimCount;
 	int16 temp;
@@ -798,8 +797,10 @@
 				if ((operStack[brackStart] >= 30) || (operStack[brackStart] == 9))
 					brackStart++;
 
+				int cmpTemp;
+
 				switch (operPtr[-2]) {
-				case 2:
+				case OP_ADD:
 					if (operStack[brackStart] == 20) {
 						values[brackStart] += valPtr[-1];
 					} else if (operStack[brackStart] == 22) {
@@ -874,115 +875,53 @@
 					break;
 
 				case 32:
-					var_C = operPtr[-3];
-					operPtr[-3] = 23;
-					if (var_C == 20) {
-						if (valPtr[-3] < valPtr[-1])
-							operPtr[-3] = 24;
-					} else if (var_C == 22) {
-						if ((char *) decodePtr(valPtr[-3]) != _vm->_global->_inter_resStr) {
-							strcpy(_vm->_global->_inter_resStr, (char *) decodePtr(valPtr[-3]));
-							valPtr[-3] = encodePtr((byte *) _vm->_global->_inter_resStr, kResStr);
-						}
-						if (strcmp(_vm->_global->_inter_resStr, (char *) decodePtr(valPtr[-1])) < 0)
-							operPtr[-3] = 24;
-					}
+					operPtr[-3] = (cmpHelper(operPtr, valPtr) < 0) ? 24 : 23;
 					stkPos -= 2;
 					operPtr -= 2;
 					valPtr -= 2;
 					break;
 
 				case 33:
-					var_C = operPtr[-3];
-					operPtr[-3] = 23;
-					if (var_C == 20) {
-						if (valPtr[-3] <= valPtr[-1])
-							operPtr[-3] = 24;
-					} else if (var_C == 22) {
-						if ((char *) decodePtr(valPtr[-3]) != _vm->_global->_inter_resStr) {
-							strcpy(_vm->_global->_inter_resStr, (char *) decodePtr(valPtr[-3]));
-							valPtr[-3] = encodePtr((byte *) _vm->_global->_inter_resStr, kResStr);
-						}
-						if (strcmp(_vm->_global->_inter_resStr, (char *) decodePtr(valPtr[-1])) <= 0)
-							operPtr[-3] = 24;
-					}
+					operPtr[-3] = (cmpHelper(operPtr, valPtr) <= 0) ? 24 : 23;
 					stkPos -= 2;
 					operPtr -= 2;
 					valPtr -= 2;
 					break;
 
 				case 34:
-					var_C = operPtr[-3];
-					operPtr[-3] = 23;
-					if (var_C == 20) {
-						if (valPtr[-3] > valPtr[-1])
-							operPtr[-3] = 24;
-					} else if (var_C == 22) {
-						if ((char *) decodePtr(valPtr[-3]) != _vm->_global->_inter_resStr) {
-							strcpy(_vm->_global->_inter_resStr, (char *) decodePtr(valPtr[-3]));
-							valPtr[-3] = encodePtr((byte *) _vm->_global->_inter_resStr, kResStr);
-						}
-						if (strcmp(_vm->_global->_inter_resStr, (char *) decodePtr(valPtr[-1])) > 0)
-							operPtr[-3] = 24;
-					}
+					operPtr[-3] = (cmpHelper(operPtr, valPtr) > 0) ? 24 : 23;
 					stkPos -= 2;
 					operPtr -= 2;
 					valPtr -= 2;
 					break;
 
 				case 35:
-					var_C = operPtr[-3];
-					operPtr[-3] = 23;
-					if (var_C == 20) {
-						if (valPtr[-3] >= valPtr[-1])
-							operPtr[-3] = 24;
-					} else if (var_C == 22) {
-						if ((char *) decodePtr(valPtr[-3]) != _vm->_global->_inter_resStr) {
-							strcpy(_vm->_global->_inter_resStr, (char *) decodePtr(valPtr[-3]));
-							valPtr[-3] = encodePtr((byte *) _vm->_global->_inter_resStr, kResStr);
-						}
-						if (strcmp(_vm->_global->_inter_resStr, (char *) decodePtr(valPtr[-1])) >= 0)
-							operPtr[-3] = 24;
-					}
+					operPtr[-3] = (cmpHelper(operPtr, valPtr) >= 0) ? 24 : 23;
 					stkPos -= 2;
 					operPtr -= 2;
 					valPtr -= 2;
 					break;
 
 				case 36:
-					var_C = operPtr[-3];
-					operPtr[-3] = 23;
-					if (var_C == 20) {
-						if (valPtr[-3] == valPtr[-1])
-							operPtr[-3] = 24;
-					} else if (var_C == 22) {
-						if ((char *) decodePtr(valPtr[-3]) != _vm->_global->_inter_resStr) {
-							strcpy(_vm->_global->_inter_resStr, (char *) decodePtr(valPtr[-3]));
-							valPtr[-3] = encodePtr((byte *) _vm->_global->_inter_resStr, kResStr);
-						}
-						if (strcmp(_vm->_global->_inter_resStr, (char *) decodePtr(valPtr[-1])) == 0)
-							operPtr[-3] = 24;
-					}
+					operPtr[-3] = (cmpHelper(operPtr, valPtr) == 0) ? 24 : 23;
 					stkPos -= 2;
 					operPtr -= 2;
 					valPtr -= 2;
 					break;
 
 				case 37:
-					var_C = operPtr[-3];
-					operPtr[-3] = 23;
-					if (var_C == 20) {
-						if (valPtr[-3] != valPtr[-1])
-							operPtr[-3] = 24;
-					} else if (var_C == 22) {
+					if (operPtr[-3] == 20) {
+						cmpTemp = valPtr[-3] - valPtr[-1];
+					} else if (operPtr[-3] == 22) {
 						if ((char *) decodePtr(valPtr[-3]) != _vm->_global->_inter_resStr) {
 							strcpy(_vm->_global->_inter_resStr, (char *) decodePtr(valPtr[-3]));
 							valPtr[-3] = encodePtr((byte *) _vm->_global->_inter_resStr, kResStr);
 						}
-						if (scumm_stricmp(_vm->_global->_inter_resStr,
-									(char *) decodePtr(valPtr[-1])) != 0)
-							operPtr[-3] = 24;
+						// FIXME: Why scumm_stricmp here and strcmp everywhere else?
+						cmpTemp = scumm_stricmp(_vm->_global->_inter_resStr, (char *) decodePtr(valPtr[-1]));
 					}
+					operPtr[-3] = (cmpTemp != 0) ? 24 : 23;
+					//operPtr[-3] = (cmpHelper(operPtr, valPtr) != 0) ? 24 : 23;
 					stkPos -= 2;
 					operPtr -= 2;
 					valPtr -= 2;
@@ -1074,7 +1013,7 @@
 				continue;
 
 			if (stkPos > 2) {
-				if (operPtr[-2] == 2) {
+				if (operPtr[-2] == OP_ADD) {
 					if (operPtr[-3] == 20) {
 						valPtr[-3] += valPtr[-1];
 					} else if (operPtr[-3] == 22) {
@@ -1088,12 +1027,12 @@
 					operPtr -= 2;
 					valPtr -= 2;
 
-				} else if (operPtr[-2] == 3) {
+				} else if (operPtr[-2] == OP_SUB) {
 					valPtr[-3] -= valPtr[-1];
 					stkPos -= 2;
 					operPtr -= 2;
 					valPtr -= 2;
-				} else if (operPtr[-2] == 4) {
+				} else if (operPtr[-2] == OP_BITOR) {
 					valPtr[-3] |= valPtr[-1];
 					stkPos -= 2;
 					operPtr -= 2;


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list