diff options
author | Eugene Sandulenko | 2016-06-18 16:45:52 +0200 |
---|---|---|
committer | Eugene Sandulenko | 2016-08-03 23:40:36 +0200 |
commit | 7760ea8d86e92e448fd0a23fd7f7500d3454516f (patch) | |
tree | 51bb7d8beaf66f442ae46e147f1234eeb835a5b7 /engines/director/lingo | |
parent | 6d2a7aa7590775950aa76f363cb83d4844b4fe04 (diff) | |
download | scummvm-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.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; }; |