[Scummvm-git-logs] scummvm master -> cf1011863f06ad01c3a2b21a6b188d2032d73ae6

sev- sev at scummvm.org
Sun Feb 9 18:51:38 UTC 2020


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
cf1011863f DIRECTOR: Switch Datum array subtype to array of Datum


Commit: cf1011863f06ad01c3a2b21a6b188d2032d73ae6
    https://github.com/scummvm/scummvm/commit/cf1011863f06ad01c3a2b21a6b188d2032d73ae6
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2020-02-09T19:51:04+01:00

Commit Message:
DIRECTOR: Switch Datum array subtype to array of Datum

Changed paths:
    engines/director/lingo/lingo-builtins.cpp
    engines/director/lingo/lingo-code.cpp
    engines/director/lingo/lingo-codegen.cpp
    engines/director/lingo/lingo-gr.cpp
    engines/director/lingo/lingo-gr.h
    engines/director/lingo/lingo-gr.y
    engines/director/lingo/lingo.h
    engines/director/types.h


diff --git a/engines/director/lingo/lingo-builtins.cpp b/engines/director/lingo/lingo-builtins.cpp
index 7635bf9..9dd64a1 100644
--- a/engines/director/lingo/lingo-builtins.cpp
+++ b/engines/director/lingo/lingo-builtins.cpp
@@ -1514,10 +1514,10 @@ void LB::b_point(int nargs) {
 	x.toFloat();
 	y.toFloat();
 
-	d.u.farr = new FloatArray;
+	d.u.farr = new DatumArray;
 
-	d.u.farr->push_back(x.u.f);
-	d.u.farr->push_back(y.u.f);
+	d.u.farr->push_back(x);
+	d.u.farr->push_back(y);
 	d.type = POINT;
 
 	g_lingo->push(d);
diff --git a/engines/director/lingo/lingo-code.cpp b/engines/director/lingo/lingo-code.cpp
index 29170c9..3eb1a5d 100644
--- a/engines/director/lingo/lingo-code.cpp
+++ b/engines/director/lingo/lingo-code.cpp
@@ -218,7 +218,7 @@ void LC::c_printtop(void) {
 		warning("%s", d.u.s->c_str());
 		break;
 	case POINT:
-		warning("point(%d, %d)", (int)((*d.u.farr)[0]), (int)((*d.u.farr)[1]));
+		warning("point(%s, %s", (*d.u.farr)[0].toString()->c_str(), (*d.u.farr)[1].toString()->c_str());
 		break;
 	case SYMBOL:
 		warning("%s", d.type2str(true));
diff --git a/engines/director/lingo/lingo-codegen.cpp b/engines/director/lingo/lingo-codegen.cpp
index e497a24..537b61a 100644
--- a/engines/director/lingo/lingo-codegen.cpp
+++ b/engines/director/lingo/lingo-codegen.cpp
@@ -519,7 +519,7 @@ void Lingo::varAssign(Datum &var, Datum &value) {
 			sym->u.s = new Common::String(*value.u.s);
 			delete value.u.s;
 		} else if (value.type == POINT) {
-			sym->u.farr = new FloatArray(*value.u.farr);
+			sym->u.farr = new DatumArray(*value.u.farr);
 			delete value.u.farr;
 		} else if (value.type == SYMBOL) {
 			sym->u.i = value.u.i;
diff --git a/engines/director/lingo/lingo-gr.cpp b/engines/director/lingo/lingo-gr.cpp
index 43c0ee8..4adff3a 100644
--- a/engines/director/lingo/lingo-gr.cpp
+++ b/engines/director/lingo/lingo-gr.cpp
@@ -245,7 +245,7 @@ union YYSTYPE
 	int e[2];	// Entity + field
 	int code;
 	int narg;	/* number of arguments */
-	Common::Array<double> *arr;
+	Director::DatumArray *arr;
 
 	struct {
 		Common::String *os;
diff --git a/engines/director/lingo/lingo-gr.h b/engines/director/lingo/lingo-gr.h
index 57b2b1e..2ce6093 100644
--- a/engines/director/lingo/lingo-gr.h
+++ b/engines/director/lingo/lingo-gr.h
@@ -149,7 +149,7 @@ union YYSTYPE
 	int e[2];	// Entity + field
 	int code;
 	int narg;	/* number of arguments */
-	Common::Array<double> *arr;
+	Director::DatumArray *arr;
 
 	struct {
 		Common::String *os;
diff --git a/engines/director/lingo/lingo-gr.y b/engines/director/lingo/lingo-gr.y
index e57ec14..18d21aa 100644
--- a/engines/director/lingo/lingo-gr.y
+++ b/engines/director/lingo/lingo-gr.y
@@ -90,7 +90,7 @@ void checkEnd(Common::String *token, const char *expect, bool required) {
 	int e[2];	// Entity + field
 	int code;
 	int narg;	/* number of arguments */
-	Common::Array<double> *arr;
+	Director::DatumArray *arr;
 
 	struct {
 		Common::String *os;
diff --git a/engines/director/lingo/lingo.h b/engines/director/lingo/lingo.h
index 4e37db9..9471aab 100644
--- a/engines/director/lingo/lingo.h
+++ b/engines/director/lingo/lingo.h
@@ -57,7 +57,6 @@ typedef void (*inst)(void);
 #define ENTITY_INDEX(t,id) ((t) * 100000 + (id))
 
 typedef Common::Array<inst> ScriptData;
-typedef Common::Array<double> FloatArray;
 
 struct FuncDesc {
 	Common::String name;
@@ -78,7 +77,7 @@ struct Symbol {	/* symbol table entry */
 		void (*func)();		/* OPCODE */
 		void (*bltin)(int);	/* BUILTIN */
 		Common::String	*s;	/* STRING */
-		FloatArray *farr;	/* ARRAY, POINT, RECT */
+		DatumArray *farr;	/* ARRAY, POINT, RECT */
 	} u;
 	int nargs;		/* number of arguments */
 	int maxArgs;	/* maximal number of arguments, for builtins */
@@ -101,7 +100,7 @@ struct Datum {	/* interpreter stack type */
 		double f;			/* FLOAT */
 		Common::String *s;	/* STRING */
 		Symbol	*sym;
-		FloatArray *farr;	/* ARRAY, POINT, RECT */
+		DatumArray *farr;	/* ARRAY, POINT, RECT */
 	} u;
 
 	Datum() { u.sym = NULL; type = VOID; }
diff --git a/engines/director/types.h b/engines/director/types.h
index 4a9bcc8..1945500 100644
--- a/engines/director/types.h
+++ b/engines/director/types.h
@@ -231,6 +231,8 @@ enum TransitionType {
 	kTransDissolveBits
 };
 
+struct Datum;
+typedef Common::Array<Datum> DatumArray;
 
 const char *scriptType2str(ScriptType scr);
 




More information about the Scummvm-git-logs mailing list