[Scummvm-cvs-logs] SF.net SVN: scummvm:[49966] scummvm/trunk/engines/sci

fingolfin at users.sourceforge.net fingolfin at users.sourceforge.net
Fri Jun 18 01:13:30 CEST 2010


Revision: 49966
          http://scummvm.svn.sourceforge.net/scummvm/?rev=49966&view=rev
Author:   fingolfin
Date:     2010-06-17 23:13:30 +0000 (Thu, 17 Jun 2010)

Log Message:
-----------
SCI: Remove selector_name function, some cleanup

Modified Paths:
--------------
    scummvm/trunk/engines/sci/console.cpp
    scummvm/trunk/engines/sci/engine/kernel.cpp
    scummvm/trunk/engines/sci/engine/kernel.h
    scummvm/trunk/engines/sci/engine/scriptdebug.cpp
    scummvm/trunk/engines/sci/sci.cpp

Modified: scummvm/trunk/engines/sci/console.cpp
===================================================================
--- scummvm/trunk/engines/sci/console.cpp	2010-06-17 23:12:59 UTC (rev 49965)
+++ scummvm/trunk/engines/sci/console.cpp	2010-06-17 23:13:30 UTC (rev 49966)
@@ -419,13 +419,6 @@
 	return res;
 }
 
-const char *selector_name(EngineState *s, int selector) {
-	if (selector >= 0 && selector < (int)g_sci->getKernel()->getSelectorNamesSize())
-		return g_sci->getKernel()->getSelectorName(selector).c_str();
-	else
-		return "--INVALID--";
-}
-
 bool Console::cmdGetVersion(int argc, const char **argv) {
 	const char *viewTypeDesc[] = { "Unknown", "EGA", "VGA", "VGA SCI1.1", "Amiga" };
 
@@ -2217,7 +2210,7 @@
 
 					if (reg_end.segment != 0 && size < reg_end.offset - reg.offset) {
 						DebugPrintf("Block end out of bounds (size %d). Resetting.\n", size);
-					reg_end = NULL_REG;
+						reg_end = NULL_REG;
 					}
 
 					if (reg_end.segment != 0 && (size >= reg_end.offset - reg.offset))
@@ -2324,11 +2317,10 @@
 
 		switch (call.type) {
 
-		case EXEC_STACK_TYPE_CALL: {// Normal function
+		case EXEC_STACK_TYPE_CALL: // Normal function
 			DebugPrintf(" %x:[%x]  %s::%s(", i, call.origin, objname, (call.selector == -1) ? "<call[be]?>" :
-			          selector_name(_engine->_gamestate, call.selector));
-		}
-		break;
+			          _engine->getKernel()->getSelectorName(call.selector).c_str());
+			break;
 
 		case EXEC_STACK_TYPE_KERNEL: // Kernel function
 			DebugPrintf(" %x:[%x]  k%s(", i, call.origin, _engine->getKernel()->getKernelName(call.selector).c_str());
@@ -2554,11 +2546,11 @@
 		return true;
 	}
 
-	const char *selector_name = argv[2];
-	int selectorId = _engine->getKernel()->findSelector(selector_name);
+	const char *selectorName = argv[2];
+	int selectorId = _engine->getKernel()->findSelector(selectorName);
 
 	if (selectorId < 0) {
-		DebugPrintf("Unknown selector: \"%s\"\n", selector_name);
+		DebugPrintf("Unknown selector: \"%s\"\n", selectorName);
 		return true;
 	}
 
@@ -2571,7 +2563,7 @@
 	SelectorType selector_type = lookupSelector(_engine->_gamestate->_segMan, object, selectorId, NULL, NULL);
 
 	if (selector_type == kSelectorNone) {
-		DebugPrintf("Object does not support selector: \"%s\"\n", selector_name);
+		DebugPrintf("Object does not support selector: \"%s\"\n", selectorName);
 		return true;
 	}
 
@@ -3273,7 +3265,7 @@
 		DebugPrintf("    ");
 		if (i < var_container->getVarCount()) {
 			uint16 varSelector = var_container->getVarSelector(i);
-			DebugPrintf("[%03x] %s = ", varSelector, selector_name(s, varSelector));
+			DebugPrintf("[%03x] %s = ", varSelector, _engine->getKernel()->getSelectorName(varSelector).c_str());
 		} else
 			DebugPrintf("p#%x = ", i);
 
@@ -3292,7 +3284,7 @@
 	DebugPrintf("  -- methods:\n");
 	for (i = 0; i < obj->getMethodCount(); i++) {
 		reg_t fptr = obj->getFunction(i);
-		DebugPrintf("    [%03x] %s = %04x:%04x\n", obj->getFuncSelector(i), selector_name(s, obj->getFuncSelector(i)), PRINT_REG(fptr));
+		DebugPrintf("    [%03x] %s = %04x:%04x\n", obj->getFuncSelector(i), _engine->getKernel()->getSelectorName(obj->getFuncSelector(i)).c_str(), PRINT_REG(fptr));
 	}
 	if (s->_segMan->_heap[pos.segment]->getType() == SEG_TYPE_SCRIPT)
 		DebugPrintf("\nOwner script: %d\n", s->_segMan->getScript(pos.segment)->_nr);

Modified: scummvm/trunk/engines/sci/engine/kernel.cpp
===================================================================
--- scummvm/trunk/engines/sci/engine/kernel.cpp	2010-06-17 23:12:59 UTC (rev 49965)
+++ scummvm/trunk/engines/sci/engine/kernel.cpp	2010-06-17 23:13:30 UTC (rev 49966)
@@ -410,7 +410,8 @@
 	{NULL, NULL, NULL} // Terminator
 };
 
-Kernel::Kernel(ResourceManager *resMan, SegManager *segMan) : _resMan(resMan), _segMan(segMan) {
+Kernel::Kernel(ResourceManager *resMan, SegManager *segMan)
+	: _resMan(resMan), _segMan(segMan), _invalid("<invalid>") {
 	loadSelectorNames();
 	mapSelectors();      // Map a few special selectors for later use
 }
@@ -428,6 +429,8 @@
 }
 
 const Common::String &Kernel::getSelectorName(uint selector) const {
+	if (selector >= _selectorNames.size())
+		return _invalid;
 	return _selectorNames[selector];
 }
 
@@ -439,9 +442,8 @@
 	// FIXME: The following check is a temporary workaround for
 	// an issue leading to crashes when using the debugger's backtrace
 	// command.
-	static const Common::String invalid = "(invalid)";
 	if (number >= _kernelNames.size())
-		return invalid;
+		return _invalid;
 	return _kernelNames[number];
 }
 

Modified: scummvm/trunk/engines/sci/engine/kernel.h
===================================================================
--- scummvm/trunk/engines/sci/engine/kernel.h	2010-06-17 23:12:59 UTC (rev 49965)
+++ scummvm/trunk/engines/sci/engine/kernel.h	2010-06-17 23:13:30 UTC (rev 49966)
@@ -246,6 +246,8 @@
 	// Kernel-related lists
 	Common::StringArray _selectorNames;
 	Common::StringArray _kernelNames;
+	
+	const Common::String _invalid;
 };
 
 #ifdef USE_OLD_MUSIC_FUNCTIONS

Modified: scummvm/trunk/engines/sci/engine/scriptdebug.cpp
===================================================================
--- scummvm/trunk/engines/sci/engine/scriptdebug.cpp	2010-06-17 23:12:59 UTC (rev 49965)
+++ scummvm/trunk/engines/sci/engine/scriptdebug.cpp	2010-06-17 23:13:30 UTC (rev 49966)
@@ -63,10 +63,8 @@
 	   "-sli",      "-sti",     "-spi"
 };
 
-extern const char *selector_name(EngineState *s, int selector);
+DebugState g_debugState;	// FIXME: Avoid non-const global vars
 
-DebugState g_debugState;
-
 // Disassembles one command from the heap, returns address of next command or 0 if a ret was encountered.
 reg_t disassemble(EngineState *s, reg_t pos, int print_bw_tag, int print_bytecode) {
 	SegmentObj *mobj = s->_segMan->getSegment(pos.segment, SEG_TYPE_SCRIPT);
@@ -197,7 +195,7 @@
 			if (!obj)
 				warning("Attempted to reference on non-object at %04x:%04x", PRINT_REG(s->xs->objp));
 			else
-				printf("	(%s)", selector_name(s, obj->propertyOffsetToId(s->_segMan, scr[pos.offset + 1])));
+				printf("	(%s)", g_sci->getKernel()->getSelectorName(obj->propertyOffsetToId(s->_segMan, scr[pos.offset + 1])).c_str());
 		}
 	}
 
@@ -244,7 +242,7 @@
 				if (!name)
 					name = "<invalid>";
 
-				printf("  %s::%s[", name, (selector > kernel->getSelectorNamesSize()) ? "<invalid>" : selector_name(s, selector));
+				printf("  %s::%s[", name, g_sci->getKernel()->getSelectorName(selector).c_str());
 
 				switch (lookupSelector(s->_segMan, called_obj_addr, selector, 0, &fun_ref)) {
 				case kSelectorMethod:
@@ -314,17 +312,15 @@
 				if (paramb1 != g_debugState.seekSpecial)
 					return;
 
-			case kDebugSeekCallk: {
+			case kDebugSeekCallk:
 				if (op != op_callk)
 					return;
 				break;
-			}
 
-			case kDebugSeekLevelRet: {
+			case kDebugSeekLevelRet:
 				if ((op != op_ret) || (g_debugState.seekLevel < (int)s->_executionStack.size()-1))
 					return;
 				break;
-			}
 
 			case kDebugSeekGlobal:
 				if (op < op_sag)
@@ -361,7 +357,7 @@
 
 	g_debugState.debugging = false;
 
-	Console *con = ((Sci::SciEngine*)g_engine)->getSciDebugger();
+	Console *con = ((Sci::SciEngine *)g_engine)->getSciDebugger();
 	con->attach();
 }
 
@@ -491,19 +487,17 @@
 			dumpScriptObject((char *)script->data, seeker, objsize);
 			break;
 
-		case SCI_OBJ_CODE: {
+		case SCI_OBJ_CODE:
 			printf("Code\n");
 			Common::hexdump(script->data + seeker, objsize - 4, 16, seeker);
-		};
-		break;
+			break;
 
-		case 3: {
+		case 3:
 			printf("<unknown>\n");
 			Common::hexdump(script->data + seeker, objsize - 4, 16, seeker);
-		};
-		break;
+			break;
 
-		case SCI_OBJ_SAID: {
+		case SCI_OBJ_SAID:
 			printf("Said\n");
 			Common::hexdump(script->data + seeker, objsize - 4, 16, seeker);
 
@@ -551,46 +545,40 @@
 				}
 			}
 			printf("\n");
-		}
-		break;
+			break;
 
-		case SCI_OBJ_STRINGS: {
+		case SCI_OBJ_STRINGS:
 			printf("Strings\n");
 			while (script->data [seeker]) {
 				printf("%04x: %s\n", seeker, script->data + seeker);
 				seeker += strlen((char *)script->data + seeker) + 1;
 			}
 			seeker++; // the ending zero byte
-		};
-		break;
+			break;
 
 		case SCI_OBJ_CLASS:
 			dumpScriptClass((char *)script->data, seeker, objsize);
 			break;
 
-		case SCI_OBJ_EXPORTS: {
+		case SCI_OBJ_EXPORTS:
 			printf("Exports\n");
 			Common::hexdump((unsigned char *)script->data + seeker, objsize - 4, 16, seeker);
-		};
-		break;
+			break;
 
-		case SCI_OBJ_POINTERS: {
+		case SCI_OBJ_POINTERS:
 			printf("Pointers\n");
 			Common::hexdump(script->data + seeker, objsize - 4, 16, seeker);
-		};
-		break;
+			break;
 
-		case 9: {
+		case 9:
 			printf("<unknown>\n");
 			Common::hexdump(script->data + seeker, objsize - 4, 16, seeker);
-		};
-		break;
+			break;
 
-		case SCI_OBJ_LOCALVARS: {
+		case SCI_OBJ_LOCALVARS:
 			printf("Local vars\n");
 			Common::hexdump(script->data + seeker, objsize - 4, 16, seeker);
-		};
-		break;
+			break;
 
 		default:
 			printf("Unsupported!\n");

Modified: scummvm/trunk/engines/sci/sci.cpp
===================================================================
--- scummvm/trunk/engines/sci/sci.cpp	2010-06-17 23:12:59 UTC (rev 49965)
+++ scummvm/trunk/engines/sci/sci.cpp	2010-06-17 23:13:30 UTC (rev 49966)
@@ -276,7 +276,7 @@
 #ifdef ENABLE_SCI32
 	}
 #endif
-		
+
 	_kernel->loadKernelNames(_features);	// Must be called after game_init()
 
 	script_adjust_opcode_formats();


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