aboutsummaryrefslogtreecommitdiff
path: root/engines/director/lingo/lingo.h
diff options
context:
space:
mode:
Diffstat (limited to 'engines/director/lingo/lingo.h')
-rw-r--r--engines/director/lingo/lingo.h116
1 files changed, 9 insertions, 107 deletions
diff --git a/engines/director/lingo/lingo.h b/engines/director/lingo/lingo.h
index 644089ddcf..264ceb30d4 100644
--- a/engines/director/lingo/lingo.h
+++ b/engines/director/lingo/lingo.h
@@ -42,6 +42,7 @@ struct TheEntityField;
struct LingoV4Bytecode;
struct LingoV4TheEntity;
class DirectorEngine;
+class LC;
class Frame;
@@ -178,6 +179,9 @@ struct CFrame { /* proc/func call stack frame */
};
class Lingo {
+
+friend class LC;
+
public:
Lingo(DirectorEngine *vm);
~Lingo();
@@ -269,113 +273,6 @@ public:
void pushVoid();
- static void c_xpop();
- static void c_printtop();
-
- static void c_add();
- static void c_sub();
- static void c_mul();
- static void c_div();
- static void c_mod();
- static void c_negate();
-
- static void c_and();
- static void c_or();
- static void c_not();
-
- static void c_ampersand();
- static void c_after();
- static void c_before();
- static void c_concat();
- static void c_contains();
- static void c_starts();
-
- static void c_intersects();
- static void c_within();
- static void c_field();
- static void c_of();
- static void c_charOf();
- static void c_charToOf();
- static void c_itemOf();
- static void c_itemToOf();
- static void c_lineOf();
- static void c_lineToOf();
- static void c_wordOf();
- static void c_wordToOf();
-
- static void c_intpush();
- static void c_voidpush();
- static void c_floatpush();
- static void c_stringpush();
- static void c_symbolpush();
- static void c_namepush();
- static void c_varpush();
- static void c_argcpush();
- static void c_argcnoretpush();
- static void c_arraypush();
- static void c_assign();
- bool verify(Symbol *s);
- static void c_eval();
- static void c_setImmediate();
-
- static void c_swap();
-
- static void c_theentitypush();
- static void c_theentityassign();
- static void c_objectfieldpush();
- static void c_objectfieldassign();
-
- static void c_repeatwhilecode();
- static void c_repeatwithcode();
- static void c_ifcode();
- static void c_whencode();
- static void c_tellcode();
- static void c_tell();
- static void c_telldone();
- static void c_exitRepeat();
- static void c_eq();
- static void c_neq();
- static void c_gt();
- static void c_lt();
- static void c_ge();
- static void c_le();
- static void c_jump();
- static void c_jumpifz();
- static void c_call();
-
- void call(Common::String name, int nargs);
-
- static void c_procret();
-
- static void c_mci();
- static void c_mciwait();
- static void c_goto();
- static void c_gotoloop();
- static void c_gotonext();
- static void c_gotoprevious();
- static void c_global();
- static void c_instance();
- static void c_factory();
- static void c_property();
-
- static void c_play();
- static void c_playdone();
-
- static void c_open();
- static void c_hilite();
-
- // stubs for unknown instructions
- static void c_unk();
- static void c_unk1();
- static void c_unk2();
-
- // bytecode-related instructions
- static void cb_localcall();
- static void cb_call();
- static void cb_v4theentitypush();
- static void cb_v4theentitynamepush();
- static void cb_v4theentityassign();
-
void printSTUBWithArglist(const char *funcname, int nargs, const char *prefix = "STUB:");
void convertVOIDtoString(int arg, int nargs);
void dropStack(int nargs);
@@ -631,9 +528,11 @@ private:
void parseMenu(const char *code);
Common::String genMenuHandler(int *commandId, Common::String &command);
+public:
void push(Datum d);
Datum pop(void);
+private:
Common::HashMap<uint32, const char *> _eventHandlerTypes;
Common::HashMap<Common::String, uint32, Common::IgnoreCase_Hash, Common::IgnoreCase_EqualTo> _eventHandlerTypeIds;
Common::HashMap<Common::String, Audio::AudioStream *> _audioAliases;
@@ -645,14 +544,17 @@ private:
FuncHash _functions;
+protected:
Common::HashMap<int, LingoV4Bytecode *> _lingoV4;
Common::HashMap<int, LingoV4TheEntity *> _lingoV4TheEntity;
+private:
uint _pc;
StackData _stack;
DirectorEngine *_vm;
+ LC *_lc;
int _floatPrecision;