[Scummvm-cvs-logs] CVS: scummvm/saga module.mk,1.15,1.16 script.cpp,1.19,1.20 script.h,1.11,1.12 sdebug.cpp,1.15,1.16 sfuncs.cpp,1.14,1.15 sthread.cpp,1.20,1.21 sthread.h,1.7,1.8 sstack.cpp,1.8,NONE sstack.h,1.3,NONE

Eugene Sandulenko sev at users.sourceforge.net
Thu Aug 12 14:40:02 CEST 2004


Update of /cvsroot/scummvm/scummvm/saga
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv10645

Modified Files:
	module.mk script.cpp script.h sdebug.cpp sfuncs.cpp 
	sthread.cpp sthread.h 
Removed Files:
	sstack.cpp sstack.h 
Log Message:
Drop SSTACK_ in favor of common/stack.h implementation.


Index: module.mk
===================================================================
RCS file: /cvsroot/scummvm/scummvm/saga/module.mk,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -d -r1.15 -r1.16
--- module.mk	2 Aug 2004 12:41:40 -0000	1.15
+++ module.mk	12 Aug 2004 21:39:11 -0000	1.16
@@ -30,7 +30,6 @@
 	saga/sfuncs.o \
 	saga/sndres.o \
 	saga/sprite.o \
-	saga/sstack.o \
 	saga/sthread.o \
 	saga/text.o \
 	saga/transitions.o \

Index: script.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/saga/script.cpp,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -d -r1.19 -r1.20
--- script.cpp	11 Aug 2004 00:27:43 -0000	1.19
+++ script.cpp	12 Aug 2004 21:39:11 -0000	1.20
@@ -33,7 +33,6 @@
 
 #include "saga/script_mod.h"
 #include "saga/script.h"
-#include "saga/sstack.h"
 #include "saga/sthread.h"
 
 namespace Saga {

Index: script.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/saga/script.h,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -d -r1.11 -r1.12
--- script.h	11 Aug 2004 00:27:43 -0000	1.11
+++ script.h	12 Aug 2004 21:39:11 -0000	1.12
@@ -26,7 +26,6 @@
 #ifndef SAGA_SCRIPT_H
 #define SAGA_SCRIPT_H
 
-#include "saga/sstack.h"
 #include "saga/sdata.h"
 #include "saga/text.h"
 #include "saga/yslib.h"

Index: sdebug.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/saga/sdebug.cpp,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -d -r1.15 -r1.16
--- sdebug.cpp	10 Aug 2004 18:31:33 -0000	1.15
+++ sdebug.cpp	12 Aug 2004 21:39:11 -0000	1.16
@@ -29,6 +29,7 @@
 #include "saga/scene.h"
 #include "saga/font.h"
 
+#include "saga/script_mod.h"
 #include "saga/script.h"
 #include "saga/sthread.h"
 

Index: sfuncs.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/saga/sfuncs.cpp,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -d -r1.14 -r1.15
--- sfuncs.cpp	10 Aug 2004 18:31:33 -0000	1.14
+++ sfuncs.cpp	12 Aug 2004 21:39:11 -0000	1.15
@@ -33,6 +33,7 @@
 
 #include "saga/script.h"
 #include "saga/sfuncs.h"
+#include "common/stack.h"
 
 namespace Saga {
 
@@ -124,7 +125,7 @@
 	SDataWord_T time_param;
 	int time;
 
-	SSTACK_Pop(thread->stack, &time_param);
+	time_param = thread->stack->pop();
 	time = _vm->_sdata->readWordU(time_param);
 	thread->sleep_time = time * 10;
 	return R_SUCCESS;
@@ -136,8 +137,8 @@
 int SF_3(R_SCRIPTFUNC_PARAMS) {
 	// INCOMPLETE
 	SDataWord_T param1;
-	SSTACK_Pop(thread->stack, &param1);
-	SSTACK_Push(thread->stack, 0);	// push for now to allow intro faire 
+	param1 = thread->stack->pop();
+	thread->stack->push(0);	// push for now to allow intro faire 
 									// setup to run completely
 
 	return R_SUCCESS;
@@ -149,7 +150,7 @@
 int SF_setCommandText(R_SCRIPTFUNC_PARAMS) {
 	SDataWord_T s_idx_parm;
 
-	SSTACK_Pop(thread->stack, &s_idx_parm);
+	s_idx_parm = thread->stack->pop();
 	// INCOMPLETE
 
 	return R_SUCCESS;
@@ -168,9 +169,9 @@
 	int actor_idx;
 	R_POINT pt;
 
-	SSTACK_Pop(thread->stack, &actor_parm);
-	SSTACK_Pop(thread->stack, &x_parm);
-	SSTACK_Pop(thread->stack, &y_parm);
+	actor_parm = thread->stack->pop();
+	x_parm = thread->stack->pop();
+	y_parm = thread->stack->pop();
 
 	actor_id = _vm->_sdata->readWordS(actor_parm);
 	actor_idx = _vm->_actor->getActorIndex(actor_id);
@@ -203,8 +204,8 @@
 	int actor_idx;
 	int orientation;
 
-	SSTACK_Pop(thread->stack, &actor_parm);
-	SSTACK_Pop(thread->stack, &orient_parm);
+	actor_parm = thread->stack->pop();
+	orient_parm = thread->stack->pop();
 
 	actor_id = _vm->_sdata->readWordS(actor_parm);
 	orientation = _vm->_sdata->readWordS(orient_parm);
@@ -226,7 +227,7 @@
 int SF_freezeInterface(R_SCRIPTFUNC_PARAMS) {
 	SDataWord_T b_param;
 
-	SSTACK_Pop(thread->stack, &b_param);
+	b_param = thread->stack->pop();
 
 	if (b_param) {
 		_vm->_interface->deactivate();
@@ -265,9 +266,9 @@
 	int frame_count;
 	int anim_id;
 
-	SSTACK_Pop(thread->stack, &anim_id_parm);
-	SSTACK_Pop(thread->stack, &frame_parm);
-	SSTACK_Pop(thread->stack, &unk_parm);
+	anim_id_parm = thread->stack->pop();
+	frame_parm = thread->stack->pop();
+	unk_parm = thread->stack->pop();
 
 	frame_count = _vm->_sdata->readWordS(frame_parm);
 	anim_id = _vm->_sdata->readWordS(anim_id_parm);
@@ -293,9 +294,9 @@
 	int actor_idx;
 	R_POINT pt;
 
-	SSTACK_Pop(thread->stack, &actor_parm);
-	SSTACK_Pop(thread->stack, &x_parm);
-	SSTACK_Pop(thread->stack, &y_parm);
+	actor_parm = thread->stack->pop();
+	x_parm = thread->stack->pop();
+	y_parm = thread->stack->pop();
 
 	actor_id = _vm->_sdata->readWordS(actor_parm);
 	actor_idx = _vm->_actor->getActorIndex(actor_id);
@@ -332,9 +333,9 @@
 	int result;
 	R_POINT pt;
 
-	SSTACK_Pop(thread->stack, &actor_parm);
-	SSTACK_Pop(thread->stack, &x_parm);
-	SSTACK_Pop(thread->stack, &y_parm);
+	actor_parm = thread->stack->pop();
+	x_parm = thread->stack->pop();
+	y_parm = thread->stack->pop();
 
 	actor_id = _vm->_sdata->readWordS(actor_parm);
 	pt.x = _vm->_sdata->readWordS(x_parm);
@@ -374,10 +375,10 @@
 	int actor_idx;
 	R_POINT pt;
 
-	SSTACK_Pop(thread->stack, &actor_parm);
-	SSTACK_Pop(thread->stack, &x_parm);
-	SSTACK_Pop(thread->stack, &y_parm);
-	SSTACK_Pop(thread->stack, &unk_parm);
+	actor_parm = thread->stack->pop();
+	x_parm = thread->stack->pop();
+	y_parm = thread->stack->pop();
+	unk_parm = thread->stack->pop();
 
 	actor_idx = _vm->_actor->getActorIndex(_vm->_sdata->readWordS(actor_parm));
 	if (actor_idx < 0) {
@@ -414,10 +415,10 @@
 	int action;
 	//uint16 flags;
 
-	SSTACK_Pop(thread->stack, &actor_parm);
-	SSTACK_Pop(thread->stack, &unk1_parm);
-	SSTACK_Pop(thread->stack, &action_parm);
-	SSTACK_Pop(thread->stack, &unk2_parm);
+	actor_parm = thread->stack->pop();
+	unk1_parm = thread->stack->pop();
+	action_parm = thread->stack->pop();
+	unk2_parm = thread->stack->pop();
 	actor_id = _vm->_sdata->readWordS(actor_parm);
 	action = _vm->_sdata->readWordS(action_parm);
 	actor_idx = _vm->_actor->getActorIndex(actor_id);
@@ -447,9 +448,9 @@
 	int action;
 	//uint16 flags;
 
-	SSTACK_Pop(thread->stack, &actor_parm);
-	SSTACK_Pop(thread->stack, &action_parm);
-	SSTACK_Pop(thread->stack, &unk1_parm);
+	actor_parm = thread->stack->pop();
+	action_parm = thread->stack->pop();
+	unk1_parm = thread->stack->pop();
 
 	actor_id = _vm->_sdata->readWordS(actor_parm);
 	action = _vm->_sdata->readWordS(action_parm);
@@ -479,10 +480,10 @@
 	uint16 anim_id1;
 	uint16 anim_id2;
 
-	SSTACK_Pop(thread->stack, &anim1_parm);
-	SSTACK_Pop(thread->stack, &anim2_parm);
-	SSTACK_Pop(thread->stack, &tframes_parm);
-	SSTACK_Pop(thread->stack, &unk_parm);
+	anim1_parm = thread->stack->pop();
+	anim2_parm = thread->stack->pop();
+	tframes_parm = thread->stack->pop();
+	unk_parm = thread->stack->pop();
 	tframes = _vm->_sdata->readWordS(tframes_parm);
 	anim_id1 = _vm->_sdata->readWordU(anim1_parm);
 	anim_id2 = _vm->_sdata->readWordU(anim2_parm);
@@ -522,12 +523,12 @@
 	int result;
 	R_POINT pt;
 
-	SSTACK_Pop(thread->stack, &actor_parm);
-	SSTACK_Pop(thread->stack, &x_parm);
-	SSTACK_Pop(thread->stack, &y_parm);
-	SSTACK_Pop(thread->stack, &unknown_parm);
-	SSTACK_Pop(thread->stack, &action_parm);
-	SSTACK_Pop(thread->stack, &unknown_parm);
+	actor_parm = thread->stack->pop();
+	x_parm = thread->stack->pop();
+	y_parm = thread->stack->pop();
+	unknown_parm = thread->stack->pop();
+	action_parm = thread->stack->pop();
+	unknown_parm = thread->stack->pop();
 
 	actor_id = _vm->_sdata->readWordS(actor_parm);
 	pt.x = _vm->_sdata->readWordS(x_parm);
@@ -557,7 +558,7 @@
 // game cinematic. Pushes a zero or positive value if the game 
 // has not been interrupted.
 int SF_checkUserInterrupt(R_SCRIPTFUNC_PARAMS) {
-	SSTACK_Push(thread->stack, 0);
+	thread->stack->push(0);
 
 	// INCOMPLETE
 

Index: sthread.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/saga/sthread.cpp,v
retrieving revision 1.20
retrieving revision 1.21
diff -u -d -r1.20 -r1.21
--- sthread.cpp	12 Aug 2004 01:11:11 -0000	1.20
+++ sthread.cpp	12 Aug 2004 21:39:11 -0000	1.21
@@ -29,22 +29,21 @@
 #include "saga/actor.h"
 #include "saga/console.h"
 
-#include "saga/script.h"
 #include "saga/script_mod.h"
+#include "saga/script.h"
 
 #include "saga/sdata.h"
-#include "saga/sstack.h"
 #include "saga/sthread.h"
 #include "saga/sfuncs.h"
 
+#include "common/stack.h"
+
 namespace Saga {
 
 R_SCRIPT_THREAD *STHREAD_Create() {
 	YS_DL_NODE *new_node;
 	R_SCRIPT_THREAD *new_thread;
 
-	int result;
-
 	if (!_vm->_script->isInitialized()) {
 		return NULL;
 	}
@@ -54,11 +53,7 @@
 		return NULL;
 	}
 
-	result = SSTACK_Create(&(new_thread->stack), R_DEF_THREAD_STACKSIZE, STACK_GROW);
-
-	if (result != STACK_SUCCESS) {
-		return NULL;
-	}
+	new_thread->stack = new Common::Stack<SDataWord_T>();
 
 	new_node = ys_dll_add_head(_vm->_script->threadList(), new_thread, sizeof *new_thread);
 
@@ -72,7 +67,7 @@
 		return R_FAILURE;
 	}
 
-	SSTACK_Destroy(thread->stack);
+	delete thread->stack;
 
 	return R_SUCCESS;
 }
@@ -191,7 +186,6 @@
 	int debug_print = 0;
 	int n_buf;
 	int bitstate;
-	int result;
 	int in_char;
 	int i;
 	int unhandled = 0;
@@ -233,35 +227,35 @@
 		switch (in_char) {
 			// Align (ALGN)
 		case 0x01:
+			debug(0, "Stub: ALGN");
 			break;
 
 // STACK INSTRUCTIONS
-
-			// Push nothing (PSHN)
+			// Dup top element (DUP)
 		case 0x02:
-			SSTACK_PushNull(thread->stack);
+			thread->stack->push(thread->stack->top());
 			break;
 			// Pop nothing (POPN)
 		case 0x03:
-			SSTACK_Pop(thread->stack, NULL);
+			thread->stack->pop();
 			break;
 			// Push false (PSHF)
 		case 0x04:
-			SSTACK_Push(thread->stack, 0);
+			thread->stack->push(0);
 			break;
 			// Push true (PSHT)
-		case 0x05:
-			SSTACK_Push(thread->stack, 1);
+		case 0x06:
+			thread->stack->push(1);
 			break;
 			// Push word (PUSH)
-		case 0x06:
+		case 0x07:
 			param1 = (SDataWord_T)readS.readUint16LE();
-			SSTACK_Push(thread->stack, param1);
+			thread->stack->push(param1);
 			break;
 			// Push word (PSHD) (dialogue string index)
 		case 0x08:
 			param1 = (SDataWord_T)readS.readUint16LE();
-			SSTACK_Push(thread->stack, param1);
+			thread->stack->push(param1);
 			break;
 
 // DATA INSTRUCTIONS  
@@ -271,21 +265,21 @@
 			n_buf = readS.readByte();
 			param1 = (SDataWord_T)readS.readUint16LE();
 			_vm->_sdata->getBit(n_buf, param1, &bitstate);
-			SSTACK_Push(thread->stack, bitstate);
+			thread->stack->push(bitstate);
 			break;
 			// Get word (GETW)
 		case 0x0C:
 			n_buf = readS.readByte();
 			param1 = readS.readUint16LE();
 			_vm->_sdata->getWord(n_buf, param1, &data);
-			SSTACK_Push(thread->stack, data);
+			thread->stack->push(data);
 			break;
 			// Modify flag (MODF)
 		case 0x0F:
 			n_buf = readS.readByte();
 			param1 = (SDataWord_T)readS.readUint16LE();
 			bitstate = _vm->_sdata->readWordU(param1);
-			SSTACK_Top(thread->stack, &data);
+			data = thread->stack->top();
 			if (bitstate) {
 				_vm->_sdata->setBit(n_buf, data, 1);
 			} else {
@@ -296,14 +290,14 @@
 		case 0x10:
 			n_buf = readS.readByte();
 			param1 = (SDataWord_T)readS.readUint16LE();
-			SSTACK_Top(thread->stack, &data);
+			data = thread->stack->top();
 			_vm->_sdata->putWord(n_buf, param1, data);
 			break;
 			// Modify flag and pop (MDFP)
 		case 0x13:
 			n_buf = readS.readByte();
 			param1 = (SDataWord_T)readS.readUint16LE();
-			SSTACK_Pop(thread->stack, &param1);
+			param1 = thread->stack->pop();
 			bitstate = _vm->_sdata->readWordU(param1);
 			if (bitstate) {
 				_vm->_sdata->setBit(n_buf, param1, 1);
@@ -315,7 +309,7 @@
 		case 0x14:
 			n_buf = readS.readByte();
 			param1 = (SDataWord_T)readS.readUint16LE();
-			SSTACK_Top(thread->stack, &data);
+			data = thread->stack->top();
 			_vm->_sdata->putWord(n_buf, param1, data);
 			break;
 
@@ -331,8 +325,8 @@
 				temp2 = readS.readByte();
 				param1 = (SDataWord_T)readS.readUint16LE();
 				data = readS.pos();
-				//SSTACK_Push(thread->stack, (SDataWord_T)temp);
-				SSTACK_Push(thread->stack, data);
+				//thread->stack->push((SDataWord_T)temp);
+				thread->stack->push(data);
 				thread->i_offset = (unsigned long)param1;
 			}
 			break;
@@ -359,7 +353,7 @@
 							thread->i_offset, func_num);
 					_vm->_console->print(S_WARN_PREFIX "Removing %d operand(s) from stack.\n", n_args);
 					for (i = 0; i < n_args; i++) {
-						SSTACK_Pop(thread->stack, NULL);
+						thread->stack->pop();
 					}
 				} else {
 					FIXME_SHADOWED_result = sfunc(thread);
@@ -371,6 +365,9 @@
 			break;
 			// (ENTR) Enter the dragon
 		case 0x1A:
+			//data = readS.pos();
+			//thread->stack->push(data);
+			
 			param1 = readS.readUint16LE();
 			break;
 			// (?) Unknown
@@ -379,11 +376,11 @@
 			break;
 			// (EXIT) End subscript
 		case 0x1C:
-			result = SSTACK_Pop(thread->stack, &data);
-			if (result != STACK_SUCCESS) {
+			if (thread->stack->size() == 0) {
 				_vm->_console->print("Script execution complete.");
 				thread->executing = 0;
 			} else {
+				data = thread->stack->pop();
 				thread->i_offset = data;
 			}
 			break;
@@ -398,7 +395,7 @@
 			// (JNZP): Jump if nonzero + POP
 		case 0x1E:
 			param1 = readS.readUint16LE();
-			SSTACK_Pop(thread->stack, &data);
+			data = thread->stack->pop();
 			if (data) {
 				thread->i_offset = (unsigned long)param1;
 			}
@@ -406,7 +403,7 @@
 			// (JZP): Jump if zero + POP
 		case 0x1F:
 			param1 = readS.readUint16LE();
-			SSTACK_Pop(thread->stack, &data);
+			data = thread->stack->pop();
 			if (!data) {
 				thread->i_offset = (unsigned long)param1;
 			}
@@ -414,7 +411,7 @@
 			// (JNZ): Jump if nonzero
 		case 0x20:
 			param1 = readS.readUint16LE();
-			SSTACK_Top(thread->stack, &data);
+			data = thread->stack->top();
 			if (data) {
 				thread->i_offset = (unsigned long)param1;
 			}
@@ -422,7 +419,7 @@
 			// (JZ): Jump if zero
 		case 0x21:
 			param1 = readS.readUint16LE();
-			SSTACK_Top(thread->stack, &data);
+			data = thread->stack->top();
 			if (!data) {
 				thread->i_offset = (unsigned long)param1;
 			}
@@ -444,7 +441,7 @@
 				unsigned int default_jmp;
 				int case_found = 0;
 
-				SSTACK_Pop(thread->stack, &data);
+				data = thread->stack->pop();
 				n_switch = readS.readUint16LE();
 				for (i = 0; i < n_switch; i++) {
 					switch_num = readS.readUint16LE();
@@ -495,22 +492,22 @@
 
 			// (NEG) Negate stack by 2's complement
 		case 0x25:
-			SSTACK_Pop(thread->stack, &data);
+			data = thread->stack->pop();
 			data = ~data;
 			data++;
-			SSTACK_Push(thread->stack, data);
+			thread->stack->push(data);
 			break;
 			// (TSTZ) Test for zero
 		case 0x26:
-			SSTACK_Pop(thread->stack, &data);
+			data = thread->stack->pop();
 			data = data ? 0 : 1;
-			SSTACK_Push(thread->stack, data);
+			thread->stack->push(data);
 			break;
 			// (NOT) Binary not
 		case 0x27:
-			SSTACK_Pop(thread->stack, &data);
+			data = thread->stack->pop();
 			data = ~data;
-			SSTACK_Push(thread->stack, data);
+			thread->stack->push(data);
 			break;
 			// (?)
 		case 0x28:
@@ -545,110 +542,110 @@
 
 			// (ADD): Addition
 		case 0x2C:
-			SSTACK_Pop(thread->stack, &param2);
-			SSTACK_Pop(thread->stack, &param1);
+			param2 = thread->stack->pop();
+			param1 = thread->stack->pop();
 			iparam2 = (long)param2;
 			iparam1 = (long)param1;
 			iresult = iparam1 + iparam2;
-			SSTACK_Push(thread->stack, (SDataWord_T) iresult);
+			thread->stack->push((SDataWord_T) iresult);
 			break;
 			// (SUB): Subtraction
 		case 0x2D:
-			SSTACK_Pop(thread->stack, &param2);
-			SSTACK_Pop(thread->stack, &param1);
+			param2 = thread->stack->pop();
+			param1 = thread->stack->pop();
 			iparam2 = (long)param2;
 			iparam1 = (long)param1;
 			iresult = iparam1 - iparam2;
-			SSTACK_Push(thread->stack, (SDataWord_T) iresult);
+			thread->stack->push((SDataWord_T) iresult);
 			break;
 			// (MULT): Integer multiplication
 		case 0x2E:
-			SSTACK_Pop(thread->stack, &param2);
-			SSTACK_Pop(thread->stack, &param1);
+			param2 = thread->stack->pop();
+			param1 = thread->stack->pop();
 			iparam2 = (long)param2;
 			iparam1 = (long)param1;
 			iresult = iparam1 * iparam2;
-			SSTACK_Push(thread->stack, (SDataWord_T) iresult);
+			thread->stack->push((SDataWord_T) iresult);
 			break;
 			// (DIV): Integer division
 		case 0x2F:
-			SSTACK_Pop(thread->stack, &param2);
-			SSTACK_Pop(thread->stack, &param1);
+			param2 = thread->stack->pop();
+			param1 = thread->stack->pop();
 			iparam2 = (long)param2;
 			iparam1 = (long)param1;
 			iresult = iparam1 / iparam2;
-			SSTACK_Push(thread->stack, (SDataWord_T) iresult);
+			thread->stack->push((SDataWord_T) iresult);
 			break;
 			// (MOD) Modulus
 		case 0x30:
-			SSTACK_Pop(thread->stack, &param2);
-			SSTACK_Pop(thread->stack, &param1);
+			param2 = thread->stack->pop();
+			param1 = thread->stack->pop();
 			iparam2 = (long)param2;
 			iparam1 = (long)param1;
 			iresult = iparam1 % iparam2;
-			SSTACK_Push(thread->stack, (SDataWord_T) iresult);
+			thread->stack->push((SDataWord_T) iresult);
 			break;
 			// (EQU) Test equality
 		case 0x33:
-			SSTACK_Pop(thread->stack, &param2);
-			SSTACK_Pop(thread->stack, &param1);
+			param2 = thread->stack->pop();
+			param1 = thread->stack->pop();
 			iparam2 = (long)param2;
 			iparam1 = (long)param1;
 			data = (iparam1 == iparam2) ? 1 : 0;
-			SSTACK_Push(thread->stack, data);
+			thread->stack->push(data);
 			break;
 			// (NEQU) Test inequality
 		case 0x34:
-			SSTACK_Pop(thread->stack, &param2);
-			SSTACK_Pop(thread->stack, &param1);
+			param2 = thread->stack->pop();
+			param1 = thread->stack->pop();
 			iparam2 = (long)param2;
 			iparam1 = (long)param1;
 			data = (iparam1 != iparam2) ? 1 : 0;
-			SSTACK_Push(thread->stack, data);
+			thread->stack->push(data);
 			break;
 			// (GRT) Test Greater-than
 		case 0x35:
-			SSTACK_Pop(thread->stack, &param2);
-			SSTACK_Pop(thread->stack, &param1);
+			param2 = thread->stack->pop();
+			param1 = thread->stack->pop();
 			iparam2 = (long)param2;
 			iparam1 = (long)param1;
 			data = (iparam1 > iparam2) ? 1 : 0;
-			SSTACK_Push(thread->stack, data);
+			thread->stack->push(data);
 			break;
 			// (LST) Test Less-than
 		case 0x36:
-			SSTACK_Pop(thread->stack, &param2);
-			SSTACK_Pop(thread->stack, &param1);
+			param2 = thread->stack->pop();
+			param1 = thread->stack->pop();
 			iparam2 = (long)param2;
 			iparam1 = (long)param1;
 			data = (iparam1 < iparam2) ? 1 : 0;
-			SSTACK_Push(thread->stack, data);
+			thread->stack->push(data);
 			break;
 			// (GRTE) Test Greater-than or Equal to
 		case 0x37:
-			SSTACK_Pop(thread->stack, &param2);
-			SSTACK_Pop(thread->stack, &param1);
+			param2 = thread->stack->pop();
+			param1 = thread->stack->pop();
 			iparam2 = (long)param2;
 			iparam1 = (long)param1;
 			data = (iparam1 >= iparam2) ? 1 : 0;
-			SSTACK_Push(thread->stack, data);
+			thread->stack->push(data);
 			break;
 			// (LSTE) Test Less-than or Equal to
 		case 0x38:
-			SSTACK_Pop(thread->stack, &param2);
-			SSTACK_Pop(thread->stack, &param1);
+			param2 = thread->stack->pop();
+			param1 = thread->stack->pop();
 			iparam2 = (long)param2;
 			iparam1 = (long)param1;
 			data = (iparam1 <= iparam2) ? 1 : 0;
-			SSTACK_Push(thread->stack, data);
+			thread->stack->push(data);
 			break;
 
 // BITWISE INSTRUCTIONS   
 
 			// (SHR): Arithmetic binary shift right
 		case 0x3F:
-			SSTACK_Pop(thread->stack, &param2);
-			SSTACK_Pop(thread->stack, &param1);
+			param2 = thread->stack->pop();
+			param1 = thread->stack->pop();
 			iparam2 = (long)param2;
 			// Preserve most significant bit
 			data = (0x01 << ((sizeof param1 * CHAR_BIT) - 1)) & param1;
@@ -656,59 +653,59 @@
 				param1 >>= 1;
 				param1 |= data;
 			}
-			SSTACK_Push(thread->stack, param1);
+			thread->stack->push(param1);
 			break;
 			// (SHL) Binary shift left
 		case 0x40:
-			SSTACK_Pop(thread->stack, &param2);
-			SSTACK_Pop(thread->stack, &param1);
+			param2 = thread->stack->pop();
+			param1 = thread->stack->pop();
 			param1 <<= param2;
-			SSTACK_Push(thread->stack, param1);
+			thread->stack->push(param1);
 			break;
 			// (AND) Binary AND
 		case 0x41:
-			SSTACK_Pop(thread->stack, &param2);
-			SSTACK_Pop(thread->stack, &param1);
+			param2 = thread->stack->pop();
+			param1 = thread->stack->pop();
 			param1 &= param2;
-			SSTACK_Push(thread->stack, param1);
+			thread->stack->push(param1);
 			break;
 			// (OR) Binary OR
 		case 0x42:
-			SSTACK_Pop(thread->stack, &param2);
-			SSTACK_Pop(thread->stack, &param1);
+			param2 = thread->stack->pop();
+			param1 = thread->stack->pop();
 			param1 |= param2;
-			SSTACK_Push(thread->stack, param1);
+			thread->stack->push(param1);
 			break;
 			// (XOR) Binary XOR
 		case 0x43:
-			SSTACK_Pop(thread->stack, &param2);
-			SSTACK_Pop(thread->stack, &param1);
+			param2 = thread->stack->pop();
+			param1 = thread->stack->pop();
 			param1 ^= param2;
-			SSTACK_Push(thread->stack, param1);
+			thread->stack->push(param1);
 			break;
 
 // BOOLEAN LOGIC INSTRUCTIONS     
 
 			// (LAND): Logical AND
 		case 0x44:
-			SSTACK_Pop(thread->stack, &param2);
-			SSTACK_Pop(thread->stack, &param1);
+			param2 = thread->stack->pop();
+			param1 = thread->stack->pop();
 			data = (param1 && param2) ? 1 : 0;
-			SSTACK_Push(thread->stack, data);
+			thread->stack->push(data);
 			break;
 			// (LOR): Logical OR
 		case 0x45:
-			SSTACK_Pop(thread->stack, &param2);
-			SSTACK_Pop(thread->stack, &param1);
+			param2 = thread->stack->pop();
+			param1 = thread->stack->pop();
 			data = (param1 || param2) ? 1 : 0;
-			SSTACK_Push(thread->stack, data);
+			thread->stack->push(data);
 			break;
 			// (LXOR): Logical XOR
 		case 0x46:
-			SSTACK_Pop(thread->stack, &param2);
-			SSTACK_Pop(thread->stack, &param1);
+			param2 = thread->stack->pop();
+			param1 = thread->stack->pop();
 			data = ((param1) ? !(param2) : !!(param2));
-			SSTACK_Push(thread->stack, data);
+			thread->stack->push(data);
 			break;
 
 // GAME INSTRUCTIONS  
@@ -732,7 +729,7 @@
 				}
 
 				for (i = 0; i < n_voices; i++) {
-					SSTACK_Pop(thread->stack, &data);
+					data = thread->stack->pop();
 					if (a_index < 0)
 						continue;
 					if (!_vm->_script->isVoiceLUTPresent()) {

Index: sthread.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/saga/sthread.h,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -d -r1.7 -r1.8
--- sthread.h	12 Aug 2004 01:11:11 -0000	1.7
+++ sthread.h	12 Aug 2004 21:39:11 -0000	1.8
@@ -26,7 +26,7 @@
 #ifndef SAGA_STHREAD_H__
 #define SAGA_STHREAD_H__
 
-#include "saga/sstack.h"
+#include "common/stack.h"
 
 namespace Saga {
 
@@ -45,7 +45,7 @@
 	unsigned long i_offset; // Instruction offset
 
 	R_SEMAPHORE sem;
-	SSTACK stack;
+	Common::Stack<SDataWord_T> *stack;
 };
 
 R_SCRIPT_THREAD *STHREAD_Create();

--- sstack.cpp DELETED ---

--- sstack.h DELETED ---





More information about the Scummvm-git-logs mailing list