diff options
author | Eugene Sandulenko | 2019-12-21 23:58:53 +0100 |
---|---|---|
committer | Eugene Sandulenko | 2019-12-22 00:10:25 +0100 |
commit | 5574279ccde6bbb54663cd85d3f36b7d4ef0fb68 (patch) | |
tree | 98ec405a1a2ee1bafbd57046348f5d0f6422da7a /engines/director/lingo | |
parent | bd92f2d00aa8630d896b2a02e0adb23ce22dfe3e (diff) | |
download | scummvm-rg350-5574279ccde6bbb54663cd85d3f36b7d4ef0fb68.tar.gz scummvm-rg350-5574279ccde6bbb54663cd85d3f36b7d4ef0fb68.tar.bz2 scummvm-rg350-5574279ccde6bbb54663cd85d3f36b7d4ef0fb68.zip |
DIRECTOR: LINGO: Register only builtins per Director version
Diffstat (limited to 'engines/director/lingo')
-rw-r--r-- | engines/director/lingo/lingo-builtins.cpp | 439 |
1 files changed, 171 insertions, 268 deletions
diff --git a/engines/director/lingo/lingo-builtins.cpp b/engines/director/lingo/lingo-builtins.cpp index ddac565783..dc2f88fe24 100644 --- a/engines/director/lingo/lingo-builtins.cpp +++ b/engines/director/lingo/lingo-builtins.cpp @@ -38,187 +38,188 @@ static struct BuiltinProto { int minArgs; // -1 -- arglist int maxArgs; bool parens; + int version; + int type; } builtins[] = { // Math - { "abs", Lingo::b_abs, 1, 1, true }, // D2 function - { "atan", Lingo::b_atan, 1, 1, true }, // D4 f - { "cos", Lingo::b_cos, 1, 1, true }, // D4 f - { "exp", Lingo::b_exp, 1, 1, true }, // D4 f - { "float", Lingo::b_float, 1, 1, true }, // D4 f - { "integer", Lingo::b_integer, 1, 1, true }, // D3 f - { "log", Lingo::b_log, 1, 1, true }, // D4 f - { "pi", Lingo::b_pi, 0, 0, true }, // D4 f - { "power", Lingo::b_power, 2, 2, true }, // D4 f - { "random", Lingo::b_random, 1, 1, true }, // D2 f - { "sin", Lingo::b_sin, 1, 1, true }, // D4 f - { "sqrt", Lingo::b_sqrt, 1, 1, true }, // D2 f - { "tan", Lingo::b_tan, 1, 1, true }, // D4 f + { "abs", Lingo::b_abs, 1, 1, true, 2, FBLTIN }, // D2 function + { "atan", Lingo::b_atan, 1, 1, true, 4, FBLTIN }, // D4 f + { "cos", Lingo::b_cos, 1, 1, true, 4, FBLTIN }, // D4 f + { "exp", Lingo::b_exp, 1, 1, true, 4, FBLTIN }, // D4 f + { "float", Lingo::b_float, 1, 1, true, 4, FBLTIN }, // D4 f + { "integer", Lingo::b_integer, 1, 1, true, 3, FBLTIN }, // D3 f + { "log", Lingo::b_log, 1, 1, true, 4, FBLTIN }, // D4 f + { "pi", Lingo::b_pi, 0, 0, true, 4, FBLTIN }, // D4 f + { "power", Lingo::b_power, 2, 2, true, 4, FBLTIN }, // D4 f + { "random", Lingo::b_random, 1, 1, true, 2, FBLTIN }, // D2 f + { "sin", Lingo::b_sin, 1, 1, true, 4, FBLTIN }, // D4 f + { "sqrt", Lingo::b_sqrt, 1, 1, true, 2, FBLTIN }, // D2 f + { "tan", Lingo::b_tan, 1, 1, true, 4, FBLTIN }, // D4 f // String - { "chars", Lingo::b_chars, 3, 3, true }, // D2 f - { "charToNum", Lingo::b_charToNum, 1, 1, true }, // D2 f - { "delete", Lingo::b_delete, 1, 1, true }, // D3 c - { "hilite", Lingo::b_hilite, 1, 1, true }, // D3 c - { "length", Lingo::b_length, 1, 1, true }, // D2 f - { "numToChar", Lingo::b_numToChar, 1, 1, true }, // D2 f - { "offset", Lingo::b_offset, 2, 3, true }, // D2 f - { "string", Lingo::b_string, 1, 1, true }, // D2 f - { "value", Lingo::b_value, 1, 1, true }, // D2 f + { "chars", Lingo::b_chars, 3, 3, true, 2, FBLTIN }, // D2 f + { "charToNum", Lingo::b_charToNum, 1, 1, true, 2, FBLTIN }, // D2 f + { "delete", Lingo::b_delete, 1, 1, true, 3, BLTIN }, // D3 c + { "hilite", Lingo::b_hilite, 1, 1, true, 3, BLTIN }, // D3 c + { "length", Lingo::b_length, 1, 1, true, 2, FBLTIN }, // D2 f + { "numToChar", Lingo::b_numToChar, 1, 1, true, 2, FBLTIN }, // D2 f + { "offset", Lingo::b_offset, 2, 3, true, 2, FBLTIN }, // D2 f + { "string", Lingo::b_string, 1, 1, true, 2, FBLTIN }, // D2 f + { "value", Lingo::b_value, 1, 1, true, 2, FBLTIN }, // D2 f // Lists - { "add", Lingo::b_add, 2, 2, false }, // D4 command - { "addAt", Lingo::b_addAt, 3, 3, false }, // D4 c - { "addProp", Lingo::b_addProp, 3, 3, false }, // D4 c - { "append", Lingo::b_append, 2, 2, false }, // D4 c - { "count", Lingo::b_count, 1, 1, true }, // D4 f - { "deleteAt", Lingo::b_deleteAt, 2, 2, false }, // D4 c - { "deleteProp", Lingo::b_deleteProp, 2, 2, false }, // D4 c - { "findPos", Lingo::b_findPos, 2, 2, true }, // D4 f - { "findPosNear", Lingo::b_findPosNear, 2, 2, true }, // D4 f - { "getaProp", Lingo::b_getaProp, 2, 2, true }, // D4 f - { "getAt", Lingo::b_getAt, 2, 2, true }, // D4 f - { "getLast", Lingo::b_getLast, 1, 1, true }, // D4 f - { "getOne", Lingo::b_getOne, 2, 2, true }, // D4 f - { "getPos", Lingo::b_getPos, 2, 2, true }, // D4 f - { "getProp", Lingo::b_getProp, 2, 2, true }, // D4 f - { "getPropAt", Lingo::b_getPropAt, 2, 2, true }, // D4 f - { "list", Lingo::b_list, -1, 0, true }, // D4 f - { "listP", Lingo::b_listP, 1, 1, true }, // D4 f - { "max", Lingo::b_max, 1, 1, true }, // D4 f - { "min", Lingo::b_min, 1, 1, true }, // D4 f - { "setaProp", Lingo::b_setaProp, 3, 3, false }, // D4 c - { "setAt", Lingo::b_setAt, 3, 3, false }, // D4 c - { "setProp", Lingo::b_setProp, 3, 3, false }, // D4 c - { "sort", Lingo::b_sort, 1, 1, false }, // D4 c + { "add", Lingo::b_add, 2, 2, false, 4, BLTIN }, // D4 command + { "addAt", Lingo::b_addAt, 3, 3, false, 4, BLTIN }, // D4 c + { "addProp", Lingo::b_addProp, 3, 3, false, 4, BLTIN }, // D4 c + { "append", Lingo::b_append, 2, 2, false, 4, BLTIN }, // D4 c + { "count", Lingo::b_count, 1, 1, true, 4, FBLTIN }, // D4 f + { "deleteAt", Lingo::b_deleteAt, 2, 2, false, 4, BLTIN }, // D4 c + { "deleteProp", Lingo::b_deleteProp, 2, 2, false, 4, BLTIN }, // D4 c + { "findPos", Lingo::b_findPos, 2, 2, true, 4, FBLTIN }, // D4 f + { "findPosNear", Lingo::b_findPosNear, 2, 2, true, 4, FBLTIN }, // D4 f + { "getaProp", Lingo::b_getaProp, 2, 2, true, 4, FBLTIN }, // D4 f + { "getAt", Lingo::b_getAt, 2, 2, true, 4, FBLTIN }, // D4 f + { "getLast", Lingo::b_getLast, 1, 1, true, 4, FBLTIN }, // D4 f + { "getOne", Lingo::b_getOne, 2, 2, true, 4, FBLTIN }, // D4 f + { "getPos", Lingo::b_getPos, 2, 2, true, 4, FBLTIN }, // D4 f + { "getProp", Lingo::b_getProp, 2, 2, true, 4, FBLTIN }, // D4 f + { "getPropAt", Lingo::b_getPropAt, 2, 2, true, 4, FBLTIN }, // D4 f + { "list", Lingo::b_list, -1, 0, true, 4, FBLTIN }, // D4 f + { "listP", Lingo::b_listP, 1, 1, true, 4, FBLTIN }, // D4 f + { "max", Lingo::b_max, 1, 1, true, 4, FBLTIN }, // D4 f + { "min", Lingo::b_min, 1, 1, true, 4, FBLTIN }, // D4 f + { "setaProp", Lingo::b_setaProp, 3, 3, false, 4, BLTIN }, // D4 c + { "setAt", Lingo::b_setAt, 3, 3, false, 4, BLTIN }, // D4 c + { "setProp", Lingo::b_setProp, 3, 3, false, 4, BLTIN }, // D4 c + { "sort", Lingo::b_sort, 1, 1, false, 4, BLTIN }, // D4 c // Files - { "closeDA", Lingo::b_closeDA, 0, 0, false }, // D2 c - { "closeResFile", Lingo::b_closeResFile, 0, 1, false }, // D2 c - { "closeXlib", Lingo::b_closeXlib, 0, 1, false }, // D2 c - { "getNthFileNameInFolder",Lingo::b_getNthFileNameInFolder,2,2,true },//D4 f - // open // D2 c - { "openDA", Lingo::b_openDA, 1, 1, false }, // D2 c - { "openResFile", Lingo::b_openResFile, 1, 1, false }, // D2 c - { "openXlib", Lingo::b_openXlib, 1, 1, false }, // D2 c - { "saveMovie", Lingo::b_saveMovie, 1, 1, false }, // D4 c - { "setCallBack", Lingo::b_setCallBack, 2, 2, false }, // D3 c - { "showResFile", Lingo::b_showResFile, 0, 1, false }, // D2 c - { "showXlib", Lingo::b_showXlib, 0, 1, false }, // D2 c - { "xFactoryList", Lingo::b_xFactoryList, 1, 1, true }, // D3 f + { "closeDA", Lingo::b_closeDA, 0, 0, false, 2, BLTIN }, // D2 c + { "closeResFile", Lingo::b_closeResFile, 0, 1, false, 2, BLTIN }, // D2 c + { "closeXlib", Lingo::b_closeXlib, 0, 1, false, 2, BLTIN }, // D2 c + { "getNthFileNameInFolder",Lingo::b_getNthFileNameInFolder,2,2,true,4,FBLTIN },// D4 f + // open // D2 c + { "openDA", Lingo::b_openDA, 1, 1, false, 2, BLTIN }, // D2 c + { "openResFile", Lingo::b_openResFile, 1, 1, false, 2, BLTIN }, // D2 c + { "openXlib", Lingo::b_openXlib, 1, 1, false, 2, BLTIN }, // D2 c + { "saveMovie", Lingo::b_saveMovie, 1, 1, false, 4, BLTIN }, // D4 c + { "setCallBack", Lingo::b_setCallBack, 2, 2, false, 3, BLTIN }, // D3 c + { "showResFile", Lingo::b_showResFile, 0, 1, false, 2, BLTIN }, // D2 c + { "showXlib", Lingo::b_showXlib, 0, 1, false, 2, BLTIN }, // D2 c + { "xFactoryList", Lingo::b_xFactoryList, 1, 1, true, 3, FBLTIN }, // D3 f // Control - { "abort", Lingo::b_abort, 0, 0, false }, // D4 c - { "continue", Lingo::b_continue, 0, 0, false }, // D2 c - { "dontPassEvent", Lingo::b_dontPassEvent, 0, 0, false }, // D2 c - { "delay", Lingo::b_delay, 1, 1, false }, // D2 c - { "do", Lingo::b_do, 1, 1, false }, // D2 c - { "go", Lingo::b_go, 1, 2, false }, - { "halt", Lingo::b_halt, 0, 0, false }, // D4 c - { "nothing", Lingo::b_nothing, 0, 0, false }, // D2 c - { "pass", Lingo::b_pass, 0, 0, false }, // D4 c - { "pause", Lingo::b_pause, 0, 0, false }, // D2 c - // play // D2 c - { "playAccel", Lingo::b_playAccel, -1,0, false }, // D2 - // play done // D2 - { "preLoad", Lingo::b_preLoad, -1,0, false }, // D3 c - { "preLoadCast", Lingo::b_preLoadCast, -1,0, false }, // D3 c - { "quit", Lingo::b_quit, 0, 0, false }, // D2 c - { "restart", Lingo::b_restart, 0, 0, false }, // D2 c - { "return", Lingo::b_return, 1, 1, false }, // D2 function - { "shutDown", Lingo::b_shutDown, 0, 0, false }, // D2 c - { "startTimer", Lingo::b_startTimer, 0, 0, false }, // D2 c - // when keyDown // D2 - // when mouseDown // D2 - // when mouseUp // D2 - // when timeOut // D2 + { "abort", Lingo::b_abort, 0, 0, false, 4, BLTIN }, // D4 c + { "continue", Lingo::b_continue, 0, 0, false, 2, BLTIN }, // D2 c + { "dontPassEvent", Lingo::b_dontPassEvent, 0, 0, false, 2, BLTIN }, // D2 c + { "delay", Lingo::b_delay, 1, 1, false, 2, BLTIN }, // D2 c + { "do", Lingo::b_do, 1, 1, false, 2, BLTIN }, // D2 c + { "halt", Lingo::b_halt, 0, 0, false, 4, BLTIN }, // D4 c + { "nothing", Lingo::b_nothing, 0, 0, false, 2, BLTIN }, // D2 c + { "pass", Lingo::b_pass, 0, 0, false, 4, BLTIN }, // D4 c + { "pause", Lingo::b_pause, 0, 0, false, 2, BLTIN }, // D2 c + // play // D2 c + { "playAccel", Lingo::b_playAccel, -1,0, false, 2, BLTIN }, // D2 + // play done // D2 + { "preLoad", Lingo::b_preLoad, -1,0, false, 3, BLTIN }, // D3 c + { "preLoadCast", Lingo::b_preLoadCast, -1,0, false, 3, BLTIN }, // D3 c + { "quit", Lingo::b_quit, 0, 0, false, 2, BLTIN }, // D2 c + { "restart", Lingo::b_restart, 0, 0, false, 2, BLTIN }, // D2 c + { "return", Lingo::b_return, 1, 1, false, 2, BLTIN }, // D2 function + { "shutDown", Lingo::b_shutDown, 0, 0, false, 2, BLTIN }, // D2 c + { "startTimer", Lingo::b_startTimer, 0, 0, false, 2, BLTIN }, // D2 c + // when keyDown // D2 + // when mouseDown // D2 + // when mouseUp // D2 + // when timeOut // D2 // Types - { "floatP", Lingo::b_floatP, 1, 1, true }, // D3 - { "ilk", Lingo::b_ilk, 1, 2, false }, // D4 f - { "integerp", Lingo::b_integerp, 1, 1, true }, // D2 f - { "objectp", Lingo::b_objectp, 1, 1, true }, // D2 f - { "pictureP", Lingo::b_pictureP, 1, 1, true }, // D4 f - { "stringp", Lingo::b_stringp, 1, 1, true }, // D2 f - { "symbolp", Lingo::b_symbolp, 1, 1, true }, // D2 f - { "voidP", Lingo::b_voidP, 1, 1, true }, // D4 f + { "floatP", Lingo::b_floatP, 1, 1, true, 3, FBLTIN }, // D3 + { "ilk", Lingo::b_ilk, 1, 2, false, 4, FBLTIN }, // D4 f + { "integerp", Lingo::b_integerp, 1, 1, true, 2, FBLTIN }, // D2 f + { "objectp", Lingo::b_objectp, 1, 1, true, 2, FBLTIN }, // D2 f + { "pictureP", Lingo::b_pictureP, 1, 1, true, 4, FBLTIN }, // D4 f + { "stringp", Lingo::b_stringp, 1, 1, true, 2, FBLTIN }, // D2 f + { "symbolp", Lingo::b_symbolp, 1, 1, true, 2, FBLTIN }, // D2 f + { "voidP", Lingo::b_voidP, 1, 1, true, 4, FBLTIN }, // D4 f // Misc - { "alert", Lingo::b_alert, 1, 1, false }, // D2 c - { "birth", Lingo::b_birth, -1,0, false }, // D4 f - { "clearGlobals", Lingo::b_clearGlobals, 0, 0, false }, // D4 c - { "cursor", Lingo::b_cursor, 1, 1, false }, // D2 c - { "framesToHMS", Lingo::b_framesToHMS, 4, 4, false }, // D3 f - { "HMStoFrames", Lingo::b_HMStoFrames, 4, 4, false }, // D3 f - { "param", Lingo::b_param, 1, 1, true }, // D4 f - { "printFrom", Lingo::b_printFrom, -1,0, false }, // D2 c - // put // D2 - // set // D2 - { "showGlobals", Lingo::b_showGlobals, 0, 0, false }, // D2 c - { "showLocals", Lingo::b_showLocals, 0, 0, false }, // D2 c + { "alert", Lingo::b_alert, 1, 1, false, 2, BLTIN }, // D2 c + { "birth", Lingo::b_birth, -1,0, false, 4, FBLTIN }, // D4 f + { "clearGlobals", Lingo::b_clearGlobals, 0, 0, false, 4, BLTIN }, // D4 c + { "cursor", Lingo::b_cursor, 1, 1, false, 2, BLTIN }, // D2 c + { "framesToHMS", Lingo::b_framesToHMS, 4, 4, false, 3, FBLTIN }, // D3 f + { "HMStoFrames", Lingo::b_HMStoFrames, 4, 4, false, 3, FBLTIN }, // D3 f + { "param", Lingo::b_param, 1, 1, true, 4, FBLTIN }, // D4 f + { "printFrom", Lingo::b_printFrom, -1,0, false, 2, BLTIN }, // D2 c + // put // D2 + // set // D2 + { "showGlobals", Lingo::b_showGlobals, 0, 0, false, 2, BLTIN }, // D2 c + { "showLocals", Lingo::b_showLocals, 0, 0, false, 2, BLTIN }, // D2 c // Score - { "constrainH", Lingo::b_constrainH, 2, 2, true }, // D2 f - { "constrainV", Lingo::b_constrainV, 2, 2, true }, // D2 f - { "copyToClipBoard",Lingo::b_copyToClipBoard,1,1, false }, // D4 c - { "duplicate", Lingo::b_duplicate, 1, 2, false }, // D4 c - { "editableText", Lingo::b_editableText, 0, 0, false }, // D2 - { "erase", Lingo::b_erase, 1, 1, false }, // D4 c - { "findEmpty", Lingo::b_findEmpty, 1, 1, true }, // D4 f - // go // D2 - { "importFileInto", Lingo::b_importFileInto,2, 2, false }, // D4 c - { "installMenu", Lingo::b_installMenu, 1, 1, false }, // D2 c - { "label", Lingo::b_label, 1, 1, true }, // D2 f - { "marker", Lingo::b_marker, 1, 1, true }, // D2 f - { "move", Lingo::b_move, 1, 2, false }, // D4 c - { "moveableSprite", Lingo::b_moveableSprite,0, 0, false }, // D2 - { "pasteClipBoardInto",Lingo::b_pasteClipBoardInto,1, 1, false }, // D4 c - { "puppetPalette", Lingo::b_puppetPalette, -1,0, false }, // D2 c - { "puppetSound", Lingo::b_puppetSound, -1,0, false }, // D2 c - { "puppetSprite", Lingo::b_puppetSprite, -1,0, false }, // D2 c - { "puppetTempo", Lingo::b_puppetTempo, 1, 1, false }, // D2 c - { "puppetTransition",Lingo::b_puppetTransition,-1,0, false },// D2 c - { "ramNeeded", Lingo::b_ramNeeded, 2, 2, true }, // D4 f - { "rollOver", Lingo::b_rollOver, 1, 1, true }, // D2 f - { "spriteBox", Lingo::b_spriteBox, -1,0, false }, // D2 c - { "unLoad", Lingo::b_unLoad, 0, 2, false }, // D4 c - { "unLoadCast", Lingo::b_unLoadCast, 0, 2, false }, // D4 c - { "updateStage", Lingo::b_updateStage, 0, 0, false }, // D2 c - { "zoomBox", Lingo::b_zoomBox, -1,0, false }, // D2 c + { "constrainH", Lingo::b_constrainH, 2, 2, true, 2, FBLTIN }, // D2 f + { "constrainV", Lingo::b_constrainV, 2, 2, true, 2, FBLTIN }, // D2 f + { "copyToClipBoard",Lingo::b_copyToClipBoard,1,1, false, 4, BLTIN }, // D4 c + { "duplicate", Lingo::b_duplicate, 1, 2, false, 4, BLTIN }, // D4 c + { "editableText", Lingo::b_editableText, 0, 0, false, 2, BLTIN }, // D2 + { "erase", Lingo::b_erase, 1, 1, false, 4, BLTIN }, // D4 c + { "findEmpty", Lingo::b_findEmpty, 1, 1, true, 4, FBLTIN }, // D4 f + // go // D2 + { "importFileInto", Lingo::b_importFileInto,2, 2, false, 4, BLTIN }, // D4 c + { "installMenu", Lingo::b_installMenu, 1, 1, false, 2, BLTIN }, // D2 c + { "label", Lingo::b_label, 1, 1, true, 2, FBLTIN }, // D2 f + { "marker", Lingo::b_marker, 1, 1, true, 2, FBLTIN }, // D2 f + { "move", Lingo::b_move, 1, 2, false, 4, BLTIN }, // D4 c + { "moveableSprite", Lingo::b_moveableSprite,0, 0, false, 2, BLTIN }, // D2 + { "pasteClipBoardInto",Lingo::b_pasteClipBoardInto,1,1,false,4,BLTIN }, // D4 c + { "puppetPalette", Lingo::b_puppetPalette, -1,0, false, 2, BLTIN }, // D2 c + { "puppetSound", Lingo::b_puppetSound, -1,0, false, 2, BLTIN }, // D2 c + { "puppetSprite", Lingo::b_puppetSprite, -1,0, false, 2, BLTIN }, // D2 c + { "puppetTempo", Lingo::b_puppetTempo, 1, 1, false, 2, BLTIN }, // D2 c + { "puppetTransition",Lingo::b_puppetTransition,-1,0,false,2, BLTIN }, // D2 c + { "ramNeeded", Lingo::b_ramNeeded, 2, 2, true, 4, FBLTIN }, // D4 f + { "rollOver", Lingo::b_rollOver, 1, 1, true, 2, FBLTIN }, // D2 f + { "spriteBox", Lingo::b_spriteBox, -1,0, false, 2, BLTIN }, // D2 c + { "unLoad", Lingo::b_unLoad, 0, 2, false, 4, BLTIN }, // D4 c + { "unLoadCast", Lingo::b_unLoadCast, 0, 2, false, 4, BLTIN }, // D4 c + { "updateStage", Lingo::b_updateStage, 0, 0, false, 2, BLTIN }, // D2 c + { "zoomBox", Lingo::b_zoomBox, -1,0, false, 2, BLTIN }, // D2 c // Point - { "point", Lingo::b_point, 2, 2, true }, // D4 f - { "inside", Lingo::b_inside, 2, 2, true }, // D4 f - { "intersect", Lingo::b_intersect, 2, 2, false }, // D4 f - { "map", Lingo::b_map, 3, 3, true }, // D4 f - { "rect", Lingo::b_rect, 4, 4, true }, // D4 f - { "union", Lingo::b_union, 2, 2, true }, // D4 f + { "point", Lingo::b_point, 2, 2, true, 4, FBLTIN }, // D4 f + { "inside", Lingo::b_inside, 2, 2, true, 4, FBLTIN }, // D4 f + { "intersect", Lingo::b_intersect, 2, 2, false, 4, FBLTIN }, // D4 f + { "map", Lingo::b_map, 3, 3, true, 4, FBLTIN }, // D4 f + { "rect", Lingo::b_rect, 4, 4, true, 4, FBLTIN }, // D4 f + { "union", Lingo::b_union, 2, 2, true, 4, FBLTIN }, // D4 f // Sound - { "beep", Lingo::b_beep, 0, 1, false }, // D2 - { "mci", Lingo::b_mci, 1, 1, false }, // D4 c - { "mciwait", Lingo::b_mciwait, 1, 1, false }, - { "sound-close", Lingo::b_soundClose, 1, 1, false }, // D4 c - { "sound-fadeIn", Lingo::b_soundFadeIn, 1, 2, false }, // D3 c - { "sound-fadeOut", Lingo::b_soundFadeOut, 1, 2, false }, // D3 c - { "sound-playFile", Lingo::b_soundPlayFile, 2, 2, false }, // D3 c - { "sound-stop", Lingo::b_soundStop, 1, 1, false }, // D3 c - { "soundBusy", Lingo::b_soundBusy, 1, 1, true }, // D3 f + { "beep", Lingo::b_beep, 0, 1, false, 2, BLTIN }, // D2 + { "mci", Lingo::b_mci, 1, 1, false, 4, BLTIN }, // D4 c + { "mciwait", Lingo::b_mciwait, 1, 1, false, 4, BLTIN }, // D4 c + { "sound-close", Lingo::b_soundClose, 1, 1, false, 4, BLTIN }, // D4 c + { "sound-fadeIn", Lingo::b_soundFadeIn, 1, 2, false, 3, BLTIN }, // D3 c + { "sound-fadeOut", Lingo::b_soundFadeOut, 1, 2, false, 3, BLTIN }, // D3 c + { "sound-playFile", Lingo::b_soundPlayFile, 2, 2, false, 3, BLTIN }, // D3 c + { "sound-stop", Lingo::b_soundStop, 1, 1, false, 3, BLTIN }, // D3 c + { "soundBusy", Lingo::b_soundBusy, 1, 1, true, 3, FBLTIN }, // D3 f // Window - { "close", Lingo::b_close, 1, 1, false }, // D4 c - { "forget", Lingo::b_forget, 1, 1, false }, // D4 c - { "inflate", Lingo::b_inflate, 3, 3, true }, // D4 f - { "moveToBack", Lingo::b_moveToBack, 1, 1, false }, // D4 c - { "moveToFront", Lingo::b_moveToFront, 1, 1, false }, // D4 c + { "close", Lingo::b_close, 1, 1, false, 4, BLTIN }, // D4 c + { "forget", Lingo::b_forget, 1, 1, false, 4, BLTIN }, // D4 c + { "inflate", Lingo::b_inflate, 3, 3, true, 4, FBLTIN }, // D4 f + { "moveToBack", Lingo::b_moveToBack, 1, 1, false, 4, BLTIN }, // D4 c + { "moveToFront", Lingo::b_moveToFront, 1, 1, false, 4, BLTIN }, // D4 c // Constants - { "ancestor", Lingo::b_ancestor, 0, 0, false }, // D4 - { "backspace", Lingo::b_backspace, 0, 0, false }, // D2 - { "empty", Lingo::b_empty, 0, 0, false }, // D2 - { "enter", Lingo::b_enter, 0, 0, false }, // D2 - { "false", Lingo::b_false, 0, 0, false }, // D2 - { "quote", Lingo::b_quote, 0, 0, false }, // D2 -// { "return", Lingo::b_returnconst, 0, 0, false }, // D2 // FIXME - { "tab", Lingo::b_tab, 0, 0, false }, // D2 - { "true", Lingo::b_true, 0, 0, false }, // D2 - { "version", Lingo::b_version, 0, 0, false }, // D3 + { "ancestor", Lingo::b_ancestor, 0, 0, false, 4, BLTIN }, // D4 + { "backspace", Lingo::b_backspace, 0, 0, false, 2, FBLTIN }, // D2 + { "empty", Lingo::b_empty, 0, 0, false, 2, FBLTIN }, // D2 + { "enter", Lingo::b_enter, 0, 0, false, 2, FBLTIN }, // D2 + { "false", Lingo::b_false, 0, 0, false, 2, FBLTIN }, // D2 + { "quote", Lingo::b_quote, 0, 0, false, 2, FBLTIN }, // D2 +// { "return", Lingo::b_returnconst, 0, 0, false, 2, FBLTIN }, // D2 // FIXME + { "tab", Lingo::b_tab, 0, 0, false, 2, FBLTIN }, // D2 + { "true", Lingo::b_true, 0, 0, false, 2, FBLTIN }, // D2 + { "version", Lingo::b_version, 0, 0, false, 3, FBLTIN }, // D3 // References - { "cast", Lingo::b_cast, 1, 1, false }, // D4 f - { "field", Lingo::b_field, 1, 1, false }, // D3 f - { "me", Lingo::b_me, -1,0, false }, // D3 - { "script", Lingo::b_script, 1, 1, false }, // D4 f - { "window", Lingo::b_window, 1, 1, false }, // D4 f + { "cast", Lingo::b_cast, 1, 1, false, 4, RBLTIN }, // D4 f + { "field", Lingo::b_field, 1, 1, false, 3, RBLTIN }, // D3 f + { "me", Lingo::b_me, -1,0, false, 3, BLTIN }, // D3 + { "script", Lingo::b_script, 1, 1, false, 4, RBLTIN }, // D4 f + { "window", Lingo::b_window, 1, 1, false, 4, RBLTIN }, // D4 f - { 0, 0, 0, 0, false } + { 0, 0, 0, 0, false, 0, 0 } }; static const char *twoWordBuiltins[] = { @@ -228,93 +229,6 @@ static const char *twoWordBuiltins[] = { 0 }; -static const char *builtinFunctions[] = { - "abs", - "atan", - "backspace", - "birth", - "cast", - "chars", - "charToNum", - "constrainH", - "constrainV", - "cos", - "count", - "empty", - "enter", - "exp", - "false", - "field", - "findEmpty", - "findPos", - "findPosNear", - "float", - "framesToHMS", - "getaProp", - "getAt", - "getLast", - "getNthFileNameInFolder", - "getOne", - "getPos", - "getProp", - "getPropAt", - "HMStoFrames", - "ilk", - "inflate", - "inside", - "integer", - "integerp", - "intersect", - "label", - "length", - "list", - "listP", - "log", - "map", - "marker", - "max", - "min", - "numToChar", - "objectp", - "offset", - "param", - "pi", - "pictureP", - "point", - "power", - "ramNeeded", - "random", - "rect", - "rollOver", - "quote", - "return", - "script", - "sin", - "sqrt", - "soundBusy", - "string", - "stringp", - "symbolp", - "tab", - "tan", - "true", - "value", - "version", - "voidP", - "window", - "xFactoryList", - 0 -}; - -static const char *builtinReferences[] = { - "cast", - "field", - "script", - "window", - 0 -}; - - static const char *predefinedMethods[] = { "mAtFrame", // D3 "mDescribe", // D3 @@ -332,10 +246,13 @@ static const char *predefinedMethods[] = { void Lingo::initBuiltIns() { for (BuiltinProto *blt = builtins; blt->name; blt++) { + if (blt->version > _vm->getVersion()) + continue; + Symbol *sym = new Symbol; sym->name = blt->name; - sym->type = BLTIN; + sym->type = blt->type; sym->nargs = blt->minArgs; sym->maxArgs = blt->maxArgs; sym->parens = blt->parens; @@ -346,20 +263,6 @@ void Lingo::initBuiltIns() { _functions[(void *)sym->u.s] = new FuncDesc(blt->name, ""); } - for (const char **b = builtinFunctions; *b; b++) { - if (!_builtins.contains(*b)) - error("Incorrectly setup builtinFunctions[]: %s", *b); - - _builtins[*b]->type = FBLTIN; - } - - for (const char **b = builtinReferences; *b; b++) { - if (!_builtins.contains(*b)) - error("Incorrectly setup builtinReferences[]: %s", *b); - - _builtins[*b]->type = RBLTIN; - } - for (const char **b = twoWordBuiltins; *b; b++) _twoWordBuiltins[*b] = true; |