aboutsummaryrefslogtreecommitdiff
path: root/engines/director/lingo
diff options
context:
space:
mode:
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;
};