diff --git a/engines/director/lingo/lingo.h b/engines/director/lingo/lingo.h index b209afb6d608..34bb6b0ad15a 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 ScriptData; typedef Common::HashMap ScriptHash; +typedef Common::Array StackData; class Lingo { public: @@ -115,6 +132,8 @@ class Lingo { ScriptHash _scripts[kMaxScriptType + 1]; ScriptData *_currentScript; + StackData _stack; + DirectorEngine *_vm; };