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