aboutsummaryrefslogtreecommitdiff
path: root/engines/director/lingo
diff options
context:
space:
mode:
authorEugene Sandulenko2016-06-18 16:45:52 +0200
committerEugene Sandulenko2016-08-03 23:40:36 +0200
commit7760ea8d86e92e448fd0a23fd7f7500d3454516f (patch)
tree51bb7d8beaf66f442ae46e147f1234eeb835a5b7 /engines/director/lingo
parent6d2a7aa7590775950aa76f363cb83d4844b4fe04 (diff)
downloadscummvm-rg350-7760ea8d86e92e448fd0a23fd7f7500d3454516f.tar.gz
scummvm-rg350-7760ea8d86e92e448fd0a23fd7f7500d3454516f.tar.bz2
scummvm-rg350-7760ea8d86e92e448fd0a23fd7f7500d3454516f.zip
DIRECTOR: Lingo: Beginning of the stack definition
Diffstat (limited to 'engines/director/lingo')
-rw-r--r--engines/director/lingo/lingo.h19
1 files changed, 19 insertions, 0 deletions
diff --git a/engines/director/lingo/lingo.h b/engines/director/lingo/lingo.h
index b209afb6d6..34bb6b0ad1 100644
--- a/engines/director/lingo/lingo.h
+++ b/engines/director/lingo/lingo.h
@@ -73,8 +73,25 @@ enum LEvent {
typedef void (*inst)(void);
#define STOP (inst)0
+typedef struct Symbol { /* symbol table entry */
+ char *name;
+ long type;
+ union {
+ int val; /* VAR */
+ float fval; /* FLOAT */
+ inst *defn; /* FUNCTION, PROCEDURE */
+ char *str; /* STRING */
+ } u;
+} Symbol;
+
+typedef union Datum { /* interpreter stack type */
+ double val;
+ Symbol *sym;
+} Datum;
+
typedef Common::Array<inst> ScriptData;
typedef Common::HashMap<int32, ScriptData *> ScriptHash;
+typedef Common::Array<Datum> StackData;
class Lingo {
public:
@@ -115,6 +132,8 @@ private:
ScriptHash _scripts[kMaxScriptType + 1];
ScriptData *_currentScript;
+ StackData _stack;
+
DirectorEngine *_vm;
};