diff options
Diffstat (limited to 'engines/director/lingo')
-rw-r--r-- | engines/director/lingo/lingo.h | 19 |
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; }; |