aboutsummaryrefslogtreecommitdiff
path: root/engines/director/lingo/lingo.h
diff options
context:
space:
mode:
authorEugene Sandulenko2016-06-29 14:39:57 +0200
committerEugene Sandulenko2016-08-03 23:40:36 +0200
commit0f65b9abb3d671f1ffd9cd1089fca055ce24d4db (patch)
treecf24577190ab1b888866d43681216a23db914627 /engines/director/lingo/lingo.h
parentbba7efff11ee5f42731495a43128dbaa909e22b1 (diff)
downloadscummvm-rg350-0f65b9abb3d671f1ffd9cd1089fca055ce24d4db.tar.gz
scummvm-rg350-0f65b9abb3d671f1ffd9cd1089fca055ce24d4db.tar.bz2
scummvm-rg350-0f65b9abb3d671f1ffd9cd1089fca055ce24d4db.zip
DIRECTOR: Lingo: Stub for context creation
Diffstat (limited to 'engines/director/lingo/lingo.h')
-rw-r--r--engines/director/lingo/lingo.h9
1 files changed, 9 insertions, 0 deletions
diff --git a/engines/director/lingo/lingo.h b/engines/director/lingo/lingo.h
index becd41002a..bec14f2b59 100644
--- a/engines/director/lingo/lingo.h
+++ b/engines/director/lingo/lingo.h
@@ -113,6 +113,11 @@ typedef Common::HashMap<int32, ScriptData *> ScriptHash;
typedef Common::Array<Datum> StackData;
typedef Common::HashMap<Common::String, Symbol *, Common::IgnoreCase_Hash, Common::IgnoreCase_EqualTo> SymbolHash;
+struct Context { /* execution context */
+ Symbol *handler;
+ SymbolHash *localvars;
+};
+
class Lingo {
public:
Lingo(DirectorEngine *vm);
@@ -135,6 +140,8 @@ public:
public:
void execute(int pc);
+ void pushContext();
+ void popContext();
Symbol *lookupVar(const char *name, bool create = true, bool putInLocalList = true);
void define(Common::String &s, int start, int nargs);
void codeArg(Common::String *s);
@@ -205,6 +212,8 @@ private:
Common::HashMap<Common::String, bool, Common::IgnoreCase_Hash, Common::IgnoreCase_EqualTo> _localvars;
SymbolHash _handlers;
+ Common::Array<Context *> _contexts;
+
int _pc;
StackData _stack;