|
Tags: Replaced Manual revert |
Line 96: |
Line 96: |
|
| |
|
| {{PageNavigation}} | | {{PageNavigation}} |
|
| |
| {{CodeStart}}
| |
| {{Text|'All variables will be of type LONG unless explicitly defined|#31C4C4}}
| |
| {{Text|DEFLNG|#F0F0F0}} A-Z
| |
|
| |
| {{Text|'All arrays will be dynamically allocated so they can be REDIM-ed|#31C4C4}}
| |
| {{Text|'|#31C4C4}}{{Text|$DYNAMIC|#55FF55}}
| |
|
| |
| {{Text|'We need console access to support command-line compilation via the -x command line compile option|#31C4C4}}
| |
| {{Text|$CONSOLE|#55FF55}}
| |
|
| |
| {{Text|'Initially the "SCREEN" will be hidden, if the -x option is used it will never be created|#31C4C4}}
| |
| {{Text|$SCREENHIDE|#55FF55}}
| |
|
| |
| {{Text|$EXEICON:|#55FF55}}{{Text|'./qb64pe.ico'|#31C4C4}}
| |
|
| |
| {{Text|$VERSIONINFO:|#55FF55}}CompanyName=QB64 Phoenix Edition
| |
| {{Text|$VERSIONINFO:|#55FF55}}FileDescription=QB64 IDE and Compiler
| |
| {{Text|$VERSIONINFO:|#55FF55}}InternalName=qb64pe.bas
| |
| {{Text|$VERSIONINFO:|#55FF55}}LegalCopyright=MIT
| |
| {{Text|$VERSIONINFO:|#55FF55}}LegalTrademarks=
| |
| {{Text|$VERSIONINFO:|#55FF55}}OriginalFilename=qb64pe.exe
| |
| {{Text|$VERSIONINFO:|#55FF55}}ProductName=QB64-PE
| |
| {{Text|$VERSIONINFO:|#55FF55}}Comments=QB64 is a modern extended BASIC programming language that retains QB4.5/QBasic compatibility and compiles native binaries for Windows, Linux and macOS.
| |
|
| |
| {{Text|'|#31C4C4}}{{Text|$INCLUDE:|#55FF55}}{{Text|'global\version.bas'|#31C4C4}}
| |
| {{Text|'|#31C4C4}}{{Text|$INCLUDE:|#55FF55}}{{Text|'global\settings.bas'|#31C4C4}}
| |
| {{Text|'|#31C4C4}}{{Text|$INCLUDE:|#55FF55}}{{Text|'global\constants.bas'|#31C4C4}}
| |
| {{Text|'|#31C4C4}}{{Text|$INCLUDE:|#55FF55}}{{Text|'subs_functions\extensions\opengl\opengl_global.bas'|#31C4C4}}
| |
| {{Text|'|#31C4C4}}{{Text|$INCLUDE:|#55FF55}}{{Text|'utilities\ini-manager\ini.bi'|#31C4C4}}
| |
| {{Text|'|#31C4C4}}{{Text|$INCLUDE:|#55FF55}}{{Text|'utilities\s-buffer\simplebuffer.bi'|#31C4C4}}
| |
|
| |
| {{Text|DEFLNG|#F0F0F0}} A-Z
| |
|
| |
| {{Text|'-------- Optional IDE Component (1/2) --------|#31C4C4}}
| |
| {{Text|'|#31C4C4}}{{Text|$INCLUDE:|#55FF55}}{{Text|'ide\ide_global.bas'|#31C4C4}}
| |
|
| |
| {{Text|REDIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} OName({{Text|1000|#F580B1}}) {{Text|AS|#F0F0F0}} {{Text|STRING|#F0F0F0}} {{Text|'Operation Name|#31C4C4}}
| |
| {{Text|REDIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} PL({{Text|1000|#F580B1}}) {{Text|AS|#F0F0F0}} {{Text|INTEGER|#F0F0F0}} {{Text|'Priority Level|#31C4C4}}
| |
| {{Text|REDIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} PP_TypeMod({{Text|0|#F580B1}}) {{Text|AS|#F0F0F0}} {{Text|STRING|#F0F0F0}}, PP_ConvertedMod({{Text|0|#F580B1}}) {{Text|AS|#F0F0F0}} {{Text|STRING|#F0F0F0}} {{Text|'Prepass Name Conversion variables.|#31C4C4}}
| |
| Set_OrderOfOperations
| |
|
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} NoExeSaved {{Text|AS|#F0F0F0}} {{Text|INTEGER|#F0F0F0}}
| |
|
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} vWatchOn, vWatchRecompileAttempts, vWatchDesiredState, vWatchErrorCall$
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} vWatchNewVariable$, vWatchVariableExclusions$
| |
| vWatchErrorCall$ = {{Text|"if (stop_program) {*__LONG_VWATCH_LINENUMBER=0; SUB_VWATCH((ptrszint*)vwatch_global_vars,(ptrszint*)vwatch_local_vars);};if(new_error){bkp_new_error=new_error;new_error=0;*__LONG_VWATCH_LINENUMBER=-1; SUB_VWATCH((ptrszint*)vwatch_global_vars,(ptrszint*)vwatch_local_vars);new_error=bkp_new_error;};"|#FFB100}}
| |
| vWatchVariableExclusions$ = {{Text|"@__LONG_VWATCH_LINENUMBER@__LONG_VWATCH_SUBLEVEL@__LONG_VWATCH_GOTO@"|#FFB100}} + _
| |
| {{Text|"@__STRING_VWATCH_SUBNAME@__STRING_VWATCH_CALLSTACK@__ARRAY_BYTE_VWATCH_BREAKPOINTS"|#FFB100}} + _
| |
| {{Text|"@__ARRAY_BYTE_VWATCH_SKIPLINES@__STRING_VWATCH_INTERNALSUBNAME@__ARRAY_STRING_VWATCH_STACK@"|#FFB100}}
| |
|
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} nativeDataTypes$
| |
| nativeDataTypes$ = {{Text|"@_OFFSET@OFFSET@_UNSIGNED _OFFSET@UNSIGNED OFFSET@_BIT@BIT@_UNSIGNED _BIT@UNSIGNED BIT@_BYTE@_UNSIGNED _BYTE@BYTE@UNSIGNED BYTE@INTEGER@_UNSIGNED INTEGER@UNSIGNED INTEGER@LONG@_UNSIGNED LONG@UNSIGNED LONG@_INTEGER64@INTEGER64@_UNSIGNED _INTEGER64@UNSIGNED INTEGER64@SINGLE@DOUBLE@_FLOAT@FLOAT@STRING@"|#FFB100}}
| |
|
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} qb64prefix_set_recompileAttempts, qb64prefix_set_desiredState
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} opex_recompileAttempts, opex_desiredState
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} opexarray_recompileAttempts, opexarray_desiredState
| |
|
| |
| {{Text|REDIM|#F0F0F0}} EveryCaseSet({{Text|100|#F580B1}}), SelectCaseCounter {{Text|AS|#F0F0F0}} {{Text|_UNSIGNED|#F0F0F0}} {{Text|LONG|#F0F0F0}}
| |
| {{Text|REDIM|#F0F0F0}} SelectCaseHasCaseBlock({{Text|100|#F580B1}})
| |
| {{Text|DIM|#F0F0F0}} ExecLevel({{Text|255|#F580B1}}), ExecCounter {{Text|AS|#F0F0F0}} {{Text|INTEGER|#F0F0F0}}
| |
| {{Text|REDIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} UserDefine({{Text|1|#F580B1}}, {{Text|100|#F580B1}}) {{Text|AS|#F0F0F0}} {{Text|STRING|#F0F0F0}} {{Text|'0 element is the name, 1 element is the string value|#31C4C4}}
| |
| {{Text|REDIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} InValidLine({{Text|10000|#F580B1}}) {{Text|AS|#F0F0F0}} {{Text|_BYTE|#F0F0F0}}
| |
| {{Text|DIM|#F0F0F0}} DefineElse({{Text|255|#F580B1}}) {{Text|AS|#F0F0F0}} {{Text|_BYTE|#F0F0F0}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} UserDefineCount {{Text|AS|#F0F0F0}} {{Text|INTEGER|#F0F0F0}}, UserDefineList$
| |
| UserDefineList$ = {{Text|"@DEFINED@UNDEFINED@WINDOWS@WIN@LINUX@MAC@MACOSX@32BIT@64BIT@VERSION@"|#FFB100}}
| |
| UserDefine({{Text|0|#F580B1}}, {{Text|0|#F580B1}}) = {{Text|"WINDOWS"|#FFB100}}: UserDefine({{Text|0|#F580B1}}, {{Text|1|#F580B1}}) = {{Text|"WIN"|#FFB100}}
| |
| UserDefine({{Text|0|#F580B1}}, {{Text|2|#F580B1}}) = {{Text|"LINUX"|#FFB100}}
| |
| UserDefine({{Text|0|#F580B1}}, {{Text|3|#F580B1}}) = {{Text|"MAC"|#FFB100}}: UserDefine({{Text|0|#F580B1}}, {{Text|4|#F580B1}}) = {{Text|"MACOSX"|#FFB100}}
| |
| UserDefine({{Text|0|#F580B1}}, {{Text|5|#F580B1}}) = {{Text|"32BIT"|#FFB100}}: UserDefine({{Text|0|#F580B1}}, {{Text|6|#F580B1}}) = {{Text|"64BIT"|#FFB100}}
| |
| UserDefine({{Text|0|#F580B1}}, {{Text|7|#F580B1}}) = {{Text|"VERSION"|#FFB100}}
| |
| {{Text|IF|#F0F0F0}} {{Text|INSTR|#F0F0F0}}({{Text|_OS$|#F0F0F0}}, {{Text|"WIN"|#FFB100}}) {{Text|THEN|#F0F0F0}} UserDefine({{Text|1|#F580B1}}, {{Text|0|#F580B1}}) = {{Text|"-1"|#FFB100}}: UserDefine({{Text|1|#F580B1}}, {{Text|1|#F580B1}}) = {{Text|"-1"|#FFB100}} {{Text|ELSE|#F0F0F0}} UserDefine({{Text|1|#F580B1}}, {{Text|0|#F580B1}}) = {{Text|"0"|#FFB100}}: UserDefine({{Text|1|#F580B1}}, {{Text|1|#F580B1}}) = {{Text|"0"|#FFB100}}
| |
| {{Text|IF|#F0F0F0}} {{Text|INSTR|#F0F0F0}}({{Text|_OS$|#F0F0F0}}, {{Text|"LINUX"|#FFB100}}) {{Text|THEN|#F0F0F0}} UserDefine({{Text|1|#F580B1}}, {{Text|2|#F580B1}}) = {{Text|"-1"|#FFB100}} {{Text|ELSE|#F0F0F0}} UserDefine({{Text|1|#F580B1}}, {{Text|2|#F580B1}}) = {{Text|"0"|#FFB100}}
| |
| {{Text|IF|#F0F0F0}} {{Text|INSTR|#F0F0F0}}({{Text|_OS$|#F0F0F0}}, {{Text|"MAC"|#FFB100}}) {{Text|THEN|#F0F0F0}} UserDefine({{Text|1|#F580B1}}, {{Text|3|#F580B1}}) = {{Text|"-1"|#FFB100}}: UserDefine({{Text|1|#F580B1}}, {{Text|4|#F580B1}}) = {{Text|"-1"|#FFB100}} {{Text|ELSE|#F0F0F0}} UserDefine({{Text|1|#F580B1}}, {{Text|3|#F580B1}}) = {{Text|"0"|#FFB100}}: UserDefine({{Text|1|#F580B1}}, {{Text|4|#F580B1}}) = {{Text|"0"|#FFB100}}
| |
| {{Text|IF|#F0F0F0}} {{Text|INSTR|#F0F0F0}}({{Text|_OS$|#F0F0F0}}, {{Text|"32BIT"|#FFB100}}) {{Text|THEN|#F0F0F0}} UserDefine({{Text|1|#F580B1}}, {{Text|5|#F580B1}}) = {{Text|"-1"|#FFB100}}: UserDefine({{Text|1|#F580B1}}, {{Text|6|#F580B1}}) = {{Text|"0"|#FFB100}} {{Text|ELSE|#F0F0F0}} UserDefine({{Text|1|#F580B1}}, {{Text|5|#F580B1}}) = {{Text|"0"|#FFB100}}: UserDefine({{Text|1|#F580B1}}, {{Text|6|#F580B1}}) = {{Text|"-1"|#FFB100}}
| |
| UserDefine({{Text|1|#F580B1}}, {{Text|7|#F580B1}}) = Version$
| |
|
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} QB64_uptime!
| |
|
| |
| QB64_uptime! = {{Text|TIMER|#F0F0F0}}
| |
|
| |
| NoInternalFolder:
| |
| {{Text|IF|#F0F0F0}} {{Text|_DIREXISTS|#F0F0F0}}({{Text|"internal"|#FFB100}}) = {{Text|0|#F580B1}} {{Text|THEN|#F0F0F0}}
| |
| {{Text|_SCREENSHOW|#F0F0F0}}
| |
| {{Text|PRINT|#F0F0F0}} {{Text|"QB64-PE cannot locate the 'internal' folder"|#FFB100}}
| |
| {{Text|PRINT|#F0F0F0}}
| |
| {{Text|PRINT|#F0F0F0}} {{Text|"Check that QB64-PE has been extracted properly."|#FFB100}}
| |
| {{Text|PRINT|#F0F0F0}} {{Text|"For MacOSX, launch 'qb64pe_start.command' or enter './qb64pe' in Terminal."|#FFB100}}
| |
| {{Text|PRINT|#F0F0F0}} {{Text|"For Linux, in the console enter './qb64pe'."|#FFB100}}
| |
| {{Text|DO|#F0F0F0}}
| |
| {{Text|_LIMIT|#F0F0F0}} {{Text|1|#F580B1}}
| |
| {{Text|LOOP|#F0F0F0}} {{Text|UNTIL|#F0F0F0}} {{Text|INKEY$|#F0F0F0}} <> {{Text|""|#FFB100}}
| |
| {{Text|SYSTEM|#F0F0F0}} {{Text|1|#F580B1}}
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}}
| |
|
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} Include_GDB_Debugging_Info {{Text|'set using "options.bin"|#31C4C4}}
| |
|
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} DEPENDENCY_LAST
| |
| {{Text|CONST|#F0F0F0}} DEPENDENCY_LOADFONT = {{Text|1|#F580B1}}: DEPENDENCY_LAST = DEPENDENCY_LAST + {{Text|1|#F580B1}}
| |
| {{Text|CONST|#F0F0F0}} DEPENDENCY_AUDIO_CONVERSION = {{Text|2|#F580B1}}: DEPENDENCY_LAST = DEPENDENCY_LAST + {{Text|1|#F580B1}}
| |
| {{Text|CONST|#F0F0F0}} DEPENDENCY_AUDIO_DECODE = {{Text|3|#F580B1}}: DEPENDENCY_LAST = DEPENDENCY_LAST + {{Text|1|#F580B1}}
| |
| {{Text|CONST|#F0F0F0}} DEPENDENCY_AUDIO_OUT = {{Text|4|#F580B1}}: DEPENDENCY_LAST = DEPENDENCY_LAST + {{Text|1|#F580B1}}
| |
| {{Text|CONST|#F0F0F0}} DEPENDENCY_GL = {{Text|5|#F580B1}}: DEPENDENCY_LAST = DEPENDENCY_LAST + {{Text|1|#F580B1}}
| |
| {{Text|CONST|#F0F0F0}} DEPENDENCY_IMAGE_CODEC = {{Text|6|#F580B1}}: DEPENDENCY_LAST = DEPENDENCY_LAST + {{Text|1|#F580B1}}
| |
| {{Text|CONST|#F0F0F0}} DEPENDENCY_CONSOLE_ONLY = {{Text|7|#F580B1}}: DEPENDENCY_LAST = DEPENDENCY_LAST + {{Text|1|#F580B1}} {{Text|'=2 if via -g switch, =1 if via metacommand $CONSOLE:ONLY|#31C4C4}}
| |
| {{Text|CONST|#F0F0F0}} DEPENDENCY_SOCKETS = {{Text|8|#F580B1}}: DEPENDENCY_LAST = DEPENDENCY_LAST + {{Text|1|#F580B1}}
| |
| {{Text|CONST|#F0F0F0}} DEPENDENCY_PRINTER = {{Text|9|#F580B1}}: DEPENDENCY_LAST = DEPENDENCY_LAST + {{Text|1|#F580B1}}
| |
| {{Text|CONST|#F0F0F0}} DEPENDENCY_ICON = {{Text|10|#F580B1}}: DEPENDENCY_LAST = DEPENDENCY_LAST + {{Text|1|#F580B1}}
| |
| {{Text|CONST|#F0F0F0}} DEPENDENCY_SCREENIMAGE = {{Text|11|#F580B1}}: DEPENDENCY_LAST = DEPENDENCY_LAST + {{Text|1|#F580B1}}
| |
| {{Text|CONST|#F0F0F0}} DEPENDENCY_DEVICEINPUT = {{Text|12|#F580B1}}: DEPENDENCY_LAST = DEPENDENCY_LAST + {{Text|1|#F580B1}} {{Text|'removes support for gamepad input if not present|#31C4C4}}
| |
| {{Text|CONST|#F0F0F0}} DEPENDENCY_ZLIB = {{Text|13|#F580B1}}: DEPENDENCY_LAST = DEPENDENCY_LAST + {{Text|1|#F580B1}} {{Text|'ZLIB library linkage, if desired, for compression/decompression.|#31C4C4}}
| |
|
| |
|
| |
|
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} DEPENDENCY({{Text|1|#F580B1}} {{Text|TO|#F0F0F0}} DEPENDENCY_LAST)
| |
|
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} UseGL {{Text|'declared SUB _GL (no params)|#31C4C4}}
| |
|
| |
|
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} OS_BITS {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}}, WindowTitle {{Text|AS|#F0F0F0}} {{Text|STRING|#F0F0F0}}
| |
| OS_BITS = {{Text|64|#F580B1}}: {{Text|IF|#F0F0F0}} {{Text|INSTR|#F0F0F0}}({{Text|_OS$|#F0F0F0}}, {{Text|"[32BIT]"|#FFB100}}) {{Text|THEN|#F0F0F0}} OS_BITS = {{Text|32|#F580B1}}
| |
|
| |
| {{Text|IF|#F0F0F0}} OS_BITS = {{Text|32|#F580B1}} {{Text|THEN|#F0F0F0}} WindowTitle = {{Text|"QB64 Phoenix Edition (x32)"|#FFB100}} {{Text|ELSE|#F0F0F0}} WindowTitle = {{Text|"QB64 Phoenix Edition (x64)"|#FFB100}}
| |
| {{Text|_TITLE|#F0F0F0}} WindowTitle
| |
|
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} ConsoleMode, No_C_Compile_Mode, NoIDEMode
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} ShowWarnings {{Text|AS|#F0F0F0}} {{Text|_BYTE|#F0F0F0}}, QuietMode {{Text|AS|#F0F0F0}} {{Text|_BYTE|#F0F0F0}}, CMDLineFile {{Text|AS|#F0F0F0}} {{Text|STRING|#F0F0F0}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} MonochromeLoggingMode {{Text|AS|#F0F0F0}} {{Text|_BYTE|#F0F0F0}}
| |
|
| |
| {{Text|TYPE|#F0F0F0}} usedVarList
| |
| {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}} id, linenumber, includeLevel, includedLine, scope, localIndex
| |
| {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}} arrayElementSize
| |
| {{Text|AS|#F0F0F0}} {{Text|_BYTE|#F0F0F0}} used, watch, isarray, displayFormat {{Text|'displayFormat: 0=DEC;1=HEX;2=BIN;3=OCT|#31C4C4}}
| |
| {{Text|AS|#F0F0F0}} {{Text|STRING|#F0F0F0}} name, cname, varType, includedFile, subfunc
| |
| {{Text|AS|#F0F0F0}} {{Text|STRING|#F0F0F0}} watchRange, indexes, elements, elementTypes {{Text|'for Arrays and UDTs|#31C4C4}}
| |
| {{Text|AS|#F0F0F0}} {{Text|STRING|#F0F0F0}} elementOffset, storage
| |
| {{Text|END|#F0F0F0}} {{Text|TYPE|#F0F0F0}}
| |
|
| |
| {{Text|REDIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} backupUsedVariableList({{Text|1000|#F580B1}}) {{Text|AS|#F0F0F0}} usedVarList
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} typeDefinitions$, backupTypeDefinitions$
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} totalVariablesCreated {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}}, totalMainVariablesCreated {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} bypassNextVariable {{Text|AS|#F0F0F0}} {{Text|_BYTE|#F0F0F0}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} totalWarnings {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}}, warningListItems {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}}, lastWarningHeader {{Text|AS|#F0F0F0}} {{Text|STRING|#F0F0F0}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} duplicateConstWarning {{Text|AS|#F0F0F0}} {{Text|_BYTE|#F0F0F0}}, warningsissued {{Text|AS|#F0F0F0}} {{Text|_BYTE|#F0F0F0}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} emptySCWarning {{Text|AS|#F0F0F0}} {{Text|_BYTE|#F0F0F0}}, maxLineNumber {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} ExeIconSet {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}}, qb64prefix$, qb64prefix_set
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} VersionInfoSet {{Text|AS|#F0F0F0}} {{Text|_BYTE|#F0F0F0}}
| |
|
| |
| {{Text|'Variables to handle $VERSIONINFO metacommand:|#31C4C4}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} viFileVersionNum$, viProductVersionNum$, viCompanyName$
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} viFileDescription$, viFileVersion$, viInternalName$
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} viLegalCopyright$, viLegalTrademarks$, viOriginalFilename$
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} viProductName$, viProductVersion$, viComments$, viWeb$
| |
|
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} NoChecks
| |
|
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}}{{Text|_Console|#F0F0F0}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}}{{Text|_ScreenHide|#F0F0F0}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} Asserts
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} OptMax {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}}
| |
| OptMax = {{Text|256|#F580B1}}
| |
| {{Text|REDIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} Opt({{Text|1|#F580B1}} {{Text|TO|#F0F0F0}} OptMax, {{Text|1|#F580B1}} {{Text|TO|#F0F0F0}} {{Text|10|#F580B1}}) {{Text|AS|#F0F0F0}} {{Text|STRING|#F0F0F0}} * {{Text|256|#F580B1}}
| |
| {{Text|' (1,1)="READ"|#31C4C4}}
| |
| {{Text|' (1,2)="WRITE"|#31C4C4}}
| |
| {{Text|' (1,3)="READ WRITE"|#31C4C4}}
| |
| {{Text|REDIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} OptWords({{Text|1|#F580B1}} {{Text|TO|#F0F0F0}} OptMax, {{Text|1|#F580B1}} {{Text|TO|#F0F0F0}} {{Text|10|#F580B1}}) {{Text|AS|#F0F0F0}} {{Text|INTEGER|#F0F0F0}} {{Text|'The number of words of each opt () element|#31C4C4}}
| |
| {{Text|' (1,1)=1 '"READ"|#31C4C4}}
| |
| {{Text|' (1,2)=1 '"WRITE"|#31C4C4}}
| |
| {{Text|' (1,3)=2 '"READ WRITE"|#31C4C4}}
| |
| {{Text|REDIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} T({{Text|1|#F580B1}} {{Text|TO|#F0F0F0}} OptMax) {{Text|AS|#F0F0F0}} {{Text|INTEGER|#F0F0F0}} {{Text|'The type of the entry|#31C4C4}}
| |
| {{Text|' t is 0 for ? opts|#31C4C4}}
| |
| {{Text|' ---------- 0 means ? , 1+ means a symbol or {}block ----------|#31C4C4}}
| |
| {{Text|' t is 1 for symbol opts|#31C4C4}}
| |
| {{Text|' t is the number of rhs opt () index enteries for {READ¦WRITE¦READ WRITE} like opts|#31C4C4}}
| |
| {{Text|REDIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} Lev({{Text|1|#F580B1}} {{Text|TO|#F0F0F0}} OptMax) {{Text|AS|#F0F0F0}} {{Text|INTEGER|#F0F0F0}} {{Text|'The indwelling level of each opt () element (the lowest is 0)|#31C4C4}}
| |
| {{Text|REDIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} EntryLev({{Text|1|#F580B1}} {{Text|TO|#F0F0F0}} OptMax) {{Text|AS|#F0F0F0}} {{Text|INTEGER|#F0F0F0}} {{Text|'The level required from which this opt () can be validly be entered/checked-for|#31C4C4}}
| |
| {{Text|REDIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} DitchLev({{Text|1|#F580B1}} {{Text|TO|#F0F0F0}} OptMax) {{Text|AS|#F0F0F0}} {{Text|INTEGER|#F0F0F0}} {{Text|'The lowest level recorded between the previous Opt and this Opt|#31C4C4}}
| |
| {{Text|REDIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} DontPass({{Text|1|#F580B1}} {{Text|TO|#F0F0F0}} OptMax) {{Text|AS|#F0F0F0}} {{Text|INTEGER|#F0F0F0}} {{Text|'Set to 1 or 0, with 1 meaning don't pass|#31C4C4}}
| |
| {{Text|'Determines whether the opt () entry needs to actually be passed to the C++ sub/function|#31C4C4}}
| |
| {{Text|REDIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} TempList({{Text|1|#F580B1}} {{Text|TO|#F0F0F0}} OptMax) {{Text|AS|#F0F0F0}} {{Text|INTEGER|#F0F0F0}}
| |
| {{Text|REDIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} PassRule({{Text|1|#F580B1}} {{Text|TO|#F0F0F0}} OptMax) {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}}
| |
| {{Text|'0 means no pass rule|#31C4C4}}
| |
| {{Text|'negative values refer to an opt () element|#31C4C4}}
| |
| {{Text|'positive values refer to a flag value|#31C4C4}}
| |
| {{Text|REDIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} LevelEntered(OptMax) {{Text|'up to 64 levels supported|#31C4C4}}
| |
| {{Text|REDIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} separgs(OptMax + {{Text|1|#F580B1}}) {{Text|AS|#F0F0F0}} {{Text|STRING|#F0F0F0}}
| |
| {{Text|REDIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} separgslayout(OptMax + {{Text|1|#F580B1}}) {{Text|AS|#F0F0F0}} {{Text|STRING|#F0F0F0}}
| |
| {{Text|REDIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} separgs2(OptMax + {{Text|1|#F580B1}}) {{Text|AS|#F0F0F0}} {{Text|STRING|#F0F0F0}}
| |
| {{Text|REDIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} separgslayout2(OptMax + {{Text|1|#F580B1}}) {{Text|AS|#F0F0F0}} {{Text|STRING|#F0F0F0}}
| |
|
| |
|
| |
|
| |
|
| |
|
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} E
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} ResolveStaticFunctions
| |
| {{Text|REDIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} ResolveStaticFunction_File({{Text|1|#F580B1}} {{Text|TO|#F0F0F0}} {{Text|100|#F580B1}}) {{Text|AS|#F0F0F0}} {{Text|STRING|#F0F0F0}}
| |
| {{Text|REDIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} ResolveStaticFunction_Name({{Text|1|#F580B1}} {{Text|TO|#F0F0F0}} {{Text|100|#F580B1}}) {{Text|AS|#F0F0F0}} {{Text|STRING|#F0F0F0}}
| |
| {{Text|REDIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} ResolveStaticFunction_Method({{Text|1|#F580B1}} {{Text|TO|#F0F0F0}} {{Text|100|#F580B1}}) {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}}
| |
|
| |
|
| |
|
| |
|
| |
|
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} Error_Happened {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} Error_Message {{Text|AS|#F0F0F0}} {{Text|STRING|#F0F0F0}}
| |
|
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} os {{Text|AS|#F0F0F0}} {{Text|STRING|#F0F0F0}}
| |
| os$ = {{Text|"WIN"|#FFB100}}
| |
| {{Text|IF|#F0F0F0}} {{Text|INSTR|#F0F0F0}}({{Text|_OS$|#F0F0F0}}, {{Text|"[LINUX]"|#FFB100}}) {{Text|THEN|#F0F0F0}} os$ = {{Text|"LNX"|#FFB100}}
| |
|
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} MacOSX {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}}
| |
| {{Text|IF|#F0F0F0}} {{Text|INSTR|#F0F0F0}}({{Text|_OS$|#F0F0F0}}, {{Text|"[MACOSX]"|#FFB100}}) {{Text|THEN|#F0F0F0}} MacOSX = {{Text|1|#F580B1}}
| |
|
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} inline_DATA
| |
| {{Text|IF|#F0F0F0}} MacOSX {{Text|THEN|#F0F0F0}} inline_DATA = {{Text|1|#F580B1}}
| |
|
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} BATCHFILE_EXTENSION {{Text|AS|#F0F0F0}} {{Text|STRING|#F0F0F0}}
| |
| BATCHFILE_EXTENSION = {{Text|".bat"|#FFB100}}
| |
| {{Text|IF|#F0F0F0}} os$ = {{Text|"LNX"|#FFB100}} {{Text|THEN|#F0F0F0}} BATCHFILE_EXTENSION = {{Text|".sh"|#FFB100}}
| |
| {{Text|IF|#F0F0F0}} MacOSX {{Text|THEN|#F0F0F0}} BATCHFILE_EXTENSION = {{Text|".command"|#FFB100}}
| |
|
| |
|
| |
| {{Text|DIM|#F0F0F0}} inlinedatastr({{Text|255|#F580B1}}) {{Text|AS|#F0F0F0}} {{Text|STRING|#F0F0F0}}
| |
| {{Text|FOR|#F0F0F0}} i = {{Text|0|#F580B1}} {{Text|TO|#F0F0F0}} {{Text|255|#F580B1}}
| |
| inlinedatastr(i) = str2$(i) + {{Text|","|#FFB100}}
| |
| {{Text|NEXT|#F0F0F0}}
| |
|
| |
|
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} extension {{Text|AS|#F0F0F0}} {{Text|STRING|#F0F0F0}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} path.exe$, path.source$, lastBinaryGenerated$
| |
| extension$ = {{Text|".exe"|#FFB100}}
| |
| {{Text|IF|#F0F0F0}} os$ = {{Text|"LNX"|#FFB100}} {{Text|THEN|#F0F0F0}} extension$ = {{Text|""|#FFB100}} {{Text|'no extension under Linux|#31C4C4}}
| |
|
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} pathsep {{Text|AS|#F0F0F0}} {{Text|STRING|#F0F0F0}} * {{Text|1|#F580B1}}
| |
| pathsep$ = {{Text|"\"|#FFB100}}
| |
| {{Text|IF|#F0F0F0}} os$ = {{Text|"LNX"|#FFB100}} {{Text|THEN|#F0F0F0}} pathsep$ = {{Text|"/"|#FFB100}}
| |
| {{Text|'note: QB64 handles OS specific path separators automatically except under SHELL calls|#31C4C4}}
| |
|
| |
| {{Text|ON|#F0F0F0}} {{Text|ERROR|#F0F0F0}} {{Text|GOTO|#F0F0F0}} qberror_test
| |
|
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} tmpdir {{Text|AS|#F0F0F0}} {{Text|STRING|#F0F0F0}}, tmpdir2 {{Text|AS|#F0F0F0}} {{Text|STRING|#F0F0F0}}
| |
| {{Text|IF|#F0F0F0}} os$ = {{Text|"WIN"|#FFB100}} {{Text|THEN|#F0F0F0}} tmpdir$ = {{Text|".\internal\temp\"|#FFB100}}: tmpdir2$ = {{Text|"..\\temp\\"|#FFB100}}
| |
| {{Text|IF|#F0F0F0}} os$ = {{Text|"LNX"|#FFB100}} {{Text|THEN|#F0F0F0}} tmpdir$ = {{Text|"./internal/temp/"|#FFB100}}: tmpdir2$ = {{Text|"../temp/"|#FFB100}}
| |
|
| |
| {{Text|IF|#F0F0F0}} {{Text|NOT|#F0F0F0}} {{Text|_DIREXISTS|#F0F0F0}}(tmpdir$) {{Text|THEN|#F0F0F0}} {{Text|MKDIR|#F0F0F0}} tmpdir$
| |
|
| |
| {{Text|DECLARE|#F0F0F0}} {{Text|LIBRARY|#F0F0F0}}
| |
| {{Text|FUNCTION|#F0F0F0}} getpid& ()
| |
| {{Text|END|#F0F0F0}} {{Text|DECLARE|#F0F0F0}}
| |
|
| |
| thisinstancepid = getpid&
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} tempfolderindex
| |
|
| |
| {{Text|IF|#F0F0F0}} {{Text|INSTR|#F0F0F0}}({{Text|_OS$|#F0F0F0}}, {{Text|"LINUX"|#FFB100}}) {{Text|THEN|#F0F0F0}}
| |
| fh = {{Text|FREEFILE|#F0F0F0}}
| |
| {{Text|OPEN|#F0F0F0}} {{Text|".\internal\temp\tempfoldersearch.bin"|#FFB100}} {{Text|FOR|#F0F0F0}} {{Text|RANDOM|#F0F0F0}} {{Text|AS|#F0F0F0}} #fh {{Text|LEN|#F0F0F0}} = {{Text|LEN|#F0F0F0}}(tempfolderindex)
| |
| tempfolderrecords = {{Text|LOF|#F0F0F0}}(fh) / {{Text|LEN|#F0F0F0}}(tempfolderindex)
| |
| i = {{Text|1|#F580B1}}
| |
| {{Text|IF|#F0F0F0}} tempfolderrecords = {{Text|0|#F580B1}} {{Text|THEN|#F0F0F0}}
| |
| {{Text|'first run ever?|#31C4C4}}
| |
| {{Text|PUT|#F0F0F0}} #fh, {{Text|1|#F580B1}}, thisinstancepid
| |
| {{Text|ELSE|#F0F0F0}}
| |
| {{Text|FOR|#F0F0F0}} i = {{Text|1|#F580B1}} {{Text|TO|#F0F0F0}} tempfolderrecords
| |
| {{Text|'check if any of the temp folders is being used = pid still active|#31C4C4}}
| |
| {{Text|GET|#F0F0F0}} #fh, i, tempfoldersearch
| |
|
| |
| {{Text|SHELL|#F0F0F0}} {{Text|_HIDE|#F0F0F0}} {{Text|"ps -p "|#FFB100}} + {{Text|STR$|#F0F0F0}}(tempfoldersearch) + {{Text|" > /dev/null 2>&1; echo $? > internal/temp/checkpid.bin"|#FFB100}}
| |
| fh2 = {{Text|FREEFILE|#F0F0F0}}
| |
| {{Text|OPEN|#F0F0F0}} {{Text|"internal/temp/checkpid.bin"|#FFB100}} {{Text|FOR|#F0F0F0}} {{Text|BINARY|#F0F0F0}} {{Text|AS|#F0F0F0}} #fh2
| |
| {{Text|LINE|#F0F0F0}} {{Text|INPUT|#F0F0F0}} #fh2, checkpid$
| |
| {{Text|CLOSE|#F0F0F0}} #fh2
| |
| {{Text|IF|#F0F0F0}} {{Text|VAL|#F0F0F0}}(checkpid$) = {{Text|1|#F580B1}} {{Text|THEN|#F0F0F0}}
| |
| {{Text|'This temp folder was locked by an instance that's no longer active, so|#31C4C4}}
| |
| {{Text|'this will be our temp folder|#31C4C4}}
| |
| {{Text|PUT|#F0F0F0}} #fh, i, thisinstancepid
| |
| {{Text|EXIT|#F0F0F0}} {{Text|FOR|#F0F0F0}}
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}}
| |
| {{Text|NEXT|#F0F0F0}}
| |
| {{Text|IF|#F0F0F0}} i > tempfolderrecords {{Text|THEN|#F0F0F0}}
| |
| {{Text|'All indexes were busy. Let's initiate a new one:|#31C4C4}}
| |
| {{Text|PUT|#F0F0F0}} #fh, i, thisinstancepid
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}}
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}}
| |
| {{Text|CLOSE|#F0F0F0}} #fh
| |
| {{Text|IF|#F0F0F0}} i > {{Text|1|#F580B1}} {{Text|THEN|#F0F0F0}}
| |
| tmpdir$ = {{Text|"./internal/temp"|#FFB100}} + str2$(i) + {{Text|"/"|#FFB100}}: tmpdir2$ = {{Text|"../temp"|#FFB100}} + str2$(i) + {{Text|"/"|#FFB100}}
| |
| {{Text|IF|#F0F0F0}} {{Text|_DIREXISTS|#F0F0F0}}(tmpdir$) = {{Text|0|#F580B1}} {{Text|THEN|#F0F0F0}}
| |
| {{Text|MKDIR|#F0F0F0}} tmpdir$
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}}
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}}
| |
| {{Text|OPEN|#F0F0F0}} tmpdir$ + {{Text|"temp.bin"|#FFB100}} {{Text|FOR|#F0F0F0}} {{Text|OUTPUT|#F0F0F0}} {{Text|LOCK|#F0F0F0}} {{Text|WRITE|#F0F0F0}} {{Text|AS|#F0F0F0}} #26
| |
| {{Text|ELSE|#F0F0F0}}
| |
| {{Text|ON|#F0F0F0}} {{Text|ERROR|#F0F0F0}} {{Text|GOTO|#F0F0F0}} qberror_test
| |
| E = {{Text|0|#F580B1}}
| |
| i = {{Text|1|#F580B1}}
| |
| {{Text|OPEN|#F0F0F0}} tmpdir$ + {{Text|"temp.bin"|#FFB100}} {{Text|FOR|#F0F0F0}} {{Text|OUTPUT|#F0F0F0}} {{Text|LOCK|#F0F0F0}} {{Text|WRITE|#F0F0F0}} {{Text|AS|#F0F0F0}} #26
| |
| {{Text|DO|#F0F0F0}} {{Text|WHILE|#F0F0F0}} E
| |
| i = i + {{Text|1|#F580B1}}
| |
| {{Text|IF|#F0F0F0}} i = {{Text|1000|#F580B1}} {{Text|THEN|#F0F0F0}} {{Text|PRINT|#F0F0F0}} {{Text|"Unable to locate the 'internal' folder"|#FFB100}}: {{Text|END|#F0F0F0}} {{Text|1|#F580B1}}
| |
| {{Text|MKDIR|#F0F0F0}} {{Text|".\internal\temp"|#FFB100}} + str2$(i)
| |
| {{Text|IF|#F0F0F0}} os$ = {{Text|"WIN"|#FFB100}} {{Text|THEN|#F0F0F0}} tmpdir$ = {{Text|".\internal\temp"|#FFB100}} + str2$(i) + {{Text|"\"|#FFB100}}: tmpdir2$ = {{Text|"..\\temp"|#FFB100}} + str2$(i) + {{Text|"\\"|#FFB100}}
| |
| {{Text|IF|#F0F0F0}} os$ = {{Text|"LNX"|#FFB100}} {{Text|THEN|#F0F0F0}} tmpdir$ = {{Text|"./internal/temp"|#FFB100}} + str2$(i) + {{Text|"/"|#FFB100}}: tmpdir2$ = {{Text|"../temp"|#FFB100}} + str2$(i) + {{Text|"/"|#FFB100}}
| |
| E = {{Text|0|#F580B1}}
| |
| {{Text|OPEN|#F0F0F0}} tmpdir$ + {{Text|"temp.bin"|#FFB100}} {{Text|FOR|#F0F0F0}} {{Text|OUTPUT|#F0F0F0}} {{Text|LOCK|#F0F0F0}} {{Text|WRITE|#F0F0F0}} {{Text|AS|#F0F0F0}} #26
| |
| {{Text|LOOP|#F0F0F0}}
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}}
| |
|
| |
|
| |
| {{Text|'temp folder established|#31C4C4}}
| |
| tempfolderindex = i
| |
| {{Text|IF|#F0F0F0}} i > {{Text|1|#F580B1}} {{Text|THEN|#F0F0F0}}
| |
| {{Text|'create modified version of qbx.cpp|#31C4C4}}
| |
| {{Text|OPEN|#F0F0F0}} {{Text|".\internal\c\qbx"|#FFB100}} + str2$(i) + {{Text|".cpp"|#FFB100}} {{Text|FOR|#F0F0F0}} {{Text|OUTPUT|#F0F0F0}} {{Text|AS|#F0F0F0}} #2
| |
| {{Text|OPEN|#F0F0F0}} {{Text|".\internal\c\qbx.cpp"|#FFB100}} {{Text|FOR|#F0F0F0}} {{Text|BINARY|#F0F0F0}} {{Text|AS|#F0F0F0}} #1
| |
| {{Text|DO|#F0F0F0}} {{Text|UNTIL|#F0F0F0}} {{Text|EOF|#F0F0F0}}({{Text|1|#F580B1}})
| |
| {{Text|LINE|#F0F0F0}} {{Text|INPUT|#F0F0F0}} #1, a$
| |
| x = {{Text|INSTR|#F0F0F0}}(a$, {{Text|"..\\temp\\"|#FFB100}}): {{Text|IF|#F0F0F0}} x {{Text|THEN|#F0F0F0}} a$ = {{Text|LEFT$|#F0F0F0}}(a$, x - {{Text|1|#F580B1}}) + {{Text|"..\\temp"|#FFB100}} + str2$(i) + {{Text|"\\"|#FFB100}} + {{Text|RIGHT$|#F0F0F0}}(a$, {{Text|LEN|#F0F0F0}}(a$) - (x + {{Text|9|#F580B1}}))
| |
| x = {{Text|INSTR|#F0F0F0}}(a$, {{Text|"../temp/"|#FFB100}}): {{Text|IF|#F0F0F0}} x {{Text|THEN|#F0F0F0}} a$ = {{Text|LEFT$|#F0F0F0}}(a$, x - {{Text|1|#F580B1}}) + {{Text|"../temp"|#FFB100}} + str2$(i) + {{Text|"/"|#FFB100}} + {{Text|RIGHT$|#F0F0F0}}(a$, {{Text|LEN|#F0F0F0}}(a$) - (x + {{Text|7|#F580B1}}))
| |
| {{Text|PRINT|#F0F0F0}} #2, a$
| |
| {{Text|LOOP|#F0F0F0}}
| |
| {{Text|CLOSE|#F0F0F0}} #1, #2
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}}
| |
|
| |
| {{Text|IF|#F0F0F0}} Debug {{Text|THEN|#F0F0F0}} {{Text|OPEN|#F0F0F0}} tmpdir$ + {{Text|"debug.txt"|#FFB100}} {{Text|FOR|#F0F0F0}} {{Text|OUTPUT|#F0F0F0}} {{Text|AS|#F0F0F0}} #9
| |
|
| |
| {{Text|ON|#F0F0F0}} {{Text|ERROR|#F0F0F0}} {{Text|GOTO|#F0F0F0}} qberror
| |
|
| |
|
| |
|
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} tempfolderindexstr {{Text|AS|#F0F0F0}} {{Text|STRING|#F0F0F0}} {{Text|'appended to "Untitled"|#31C4C4}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} tempfolderindexstr2 {{Text|AS|#F0F0F0}} {{Text|STRING|#F0F0F0}}
| |
| {{Text|IF|#F0F0F0}} tempfolderindex <> {{Text|1|#F580B1}} {{Text|THEN|#F0F0F0}} tempfolderindexstr$ = {{Text|"("|#FFB100}} + str2$(tempfolderindex) + {{Text|")"|#FFB100}}: tempfolderindexstr2$ = str2$(tempfolderindex)
| |
|
| |
|
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} idedebuginfo
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} seperateargs_error
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} seperateargs_error_message {{Text|AS|#F0F0F0}} {{Text|STRING|#F0F0F0}}
| |
|
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} compfailed
| |
|
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} reginternalsubfunc
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} reginternalvariable
| |
|
| |
|
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} symboltype_size
| |
| symboltype_size = {{Text|0|#F580B1}}
| |
|
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} use_global_byte_elements
| |
| use_global_byte_elements = {{Text|0|#F580B1}}
| |
|
| |
| {{Text|'compiler-side IDE data & definitions|#31C4C4}}
| |
| {{Text|'SHARED variables "passed" to/from the compiler & IDE|#31C4C4}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} idecommand {{Text|AS|#F0F0F0}} {{Text|STRING|#F0F0F0}} {{Text|'a 1 byte message-type code, followed by optional string data|#31C4C4}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} idereturn {{Text|AS|#F0F0F0}} {{Text|STRING|#F0F0F0}} {{Text|'used to pass formatted-lines and return information back to the IDE|#31C4C4}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} ideerror {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} idecompiled {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} idemode {{Text|'1 if using the IDE to compile|#31C4C4}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} ideerrorline {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}} {{Text|'set by qb64-error(...) to the line number it would have reported, this number|#31C4C4}}
| |
| {{Text|'is later passed to the ide in message #8|#31C4C4}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} idemessage {{Text|AS|#F0F0F0}} {{Text|STRING|#F0F0F0}} {{Text|'set by qb64-error(...) to the error message to be reported, this|#31C4C4}}
| |
| {{Text|'is later passed to the ide in message #8|#31C4C4}}
| |
|
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} optionexplicit {{Text|AS|#F0F0F0}} {{Text|_BYTE|#F0F0F0}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} optionexplicitarray {{Text|AS|#F0F0F0}} {{Text|_BYTE|#F0F0F0}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} optionexplicit_cmd {{Text|AS|#F0F0F0}} {{Text|_BYTE|#F0F0F0}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} ideStartAtLine {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}}, errorLineInInclude {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} warningInInclude {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}}, warningInIncludeLine {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} outputfile_cmd$
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} compilelog$
| |
|
| |
| {{Text|'|#31C4C4}}{{Text|$INCLUDE:|#55FF55}}{{Text|'global\IDEsettings.bas'|#31C4C4}}
| |
|
| |
| {{Text|DIM|#F0F0F0}} OutputIsRelativeToStartDir {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}}
| |
|
| |
| CMDLineFile = ParseCMDLineArgs$
| |
| {{Text|IF|#F0F0F0}} CMDLineFile <> {{Text|""|#FFB100}} {{Text|AND|#F0F0F0}} {{Text|_FILEEXISTS|#F0F0F0}}({{Text|_STARTDIR$|#F0F0F0}} + {{Text|"/"|#FFB100}} + CMDLineFile) {{Text|THEN|#F0F0F0}}
| |
| CMDLineFile = {{Text|_STARTDIR$|#F0F0F0}} + {{Text|"/"|#FFB100}} + CMDLineFile
| |
| OutputIsRelativeToStartDir = {{Text|-1|#F580B1}}
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}}
| |
|
| |
| {{Text|IF|#F0F0F0}} ConsoleMode {{Text|THEN|#F0F0F0}}
| |
| {{Text|_DEST|#F0F0F0}} {{Text|_CONSOLE|#F0F0F0}}
| |
| {{Text|ELSE|#F0F0F0}}
| |
| {{Text|_CONSOLE|#F0F0F0}} {{Text|OFF|#F0F0F0}}
| |
| {{Text|_SCREENSHOW|#F0F0F0}}
| |
| {{Text|_ICON|#F0F0F0}}
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}}
| |
|
| |
| {{Text|'the function ?=ide(?) should always be passed 0, it returns a message code number, any further information|#31C4C4}}
| |
| {{Text|'is passed back in idereturn|#31C4C4}}
| |
|
| |
| {{Text|'message code numbers:|#31C4C4}}
| |
| {{Text|'0 no ide present (auto defined array ide() return 0)|#31C4C4}}
| |
|
| |
| {{Text|'1 launch ide & with passed filename (compiler->ide)|#31C4C4}}
| |
|
| |
| {{Text|'2 begin new compilation with returned line of code (compiler<-ide)|#31C4C4}}
| |
| {{Text|' [2][line of code]|#31C4C4}}
| |
|
| |
| {{Text|'3 request next line (compiler->ide)|#31C4C4}}
| |
| {{Text|' [3]|#31C4C4}}
| |
|
| |
| {{Text|'4 next line of code returned (compiler<-ide)|#31C4C4}}
| |
| {{Text|' [4][line of code]|#31C4C4}}
| |
|
| |
| {{Text|'5 no more lines of code exist (compiler<-ide)|#31C4C4}}
| |
| {{Text|' [5]|#31C4C4}}
| |
|
| |
| {{Text|'6 code is OK/ready (compiler->ide)|#31C4C4}}
| |
| {{Text|' [6]|#31C4C4}}
| |
|
| |
| {{Text|'7 repass the code from the beginning (compiler->ide)|#31C4C4}}
| |
| {{Text|' [7]|#31C4C4}}
| |
|
| |
| {{Text|'8 an error has occurred with 'this' message on 'this' line(compiler->ide)|#31C4C4}}
| |
| {{Text|' [8][error message][line as LONG]|#31C4C4}}
| |
|
| |
| {{Text|'9 C++ compile (if necessary) and run with 'this' name (compiler<-ide)|#31C4C4}}
| |
| {{Text|' [9][name(no path, no .bas)]|#31C4C4}}
| |
|
| |
| {{Text|'10 The line requires more time to process|#31C4C4}}
| |
| {{Text|' Pass-back 'line of code' using method [4] when ready|#31C4C4}}
| |
| {{Text|' [10][line of code]|#31C4C4}}
| |
|
| |
| {{Text|'11 ".EXE file created" message|#31C4C4}}
| |
|
| |
| {{Text|'12 The name of the exe I'll create is '...' (compiler->ide)|#31C4C4}}
| |
| {{Text|' [12][exe name without .exe]|#31C4C4}}
| |
|
| |
| {{Text|'255 A qb error happened in the IDE (compiler->ide)|#31C4C4}}
| |
| {{Text|' note: detected by the fact that ideerror was not set to 0|#31C4C4}}
| |
| {{Text|' [255]|#31C4C4}}
| |
|
| |
| {{Text|'hash table data|#31C4C4}}
| |
| {{Text|TYPE|#F0F0F0}} HashListItem
| |
| Flags {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}}
| |
| Reference {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}}
| |
| NextItem {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}}
| |
| PrevItem {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}}
| |
| LastItem {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}} {{Text|'note: this value is only valid on the first item in the list|#31C4C4}}
| |
| {{Text|'note: name is stored in a seperate array of strings|#31C4C4}}
| |
| {{Text|END|#F0F0F0}} {{Text|TYPE|#F0F0F0}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} HashFind_NextListItem {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} HashFind_Reverse {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} HashFind_SearchFlags {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} HashFind_Name {{Text|AS|#F0F0F0}} {{Text|STRING|#F0F0F0}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} HashRemove_LastFound {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} HashListSize {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} HashListNext {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} HashListFreeSize {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} HashListFreeLast {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}}
| |
| {{Text|'hash lookup tables|#31C4C4}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} hash1char({{Text|255|#F580B1}}) {{Text|AS|#F0F0F0}} {{Text|INTEGER|#F0F0F0}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} hash2char({{Text|65535|#F580B1}}) {{Text|AS|#F0F0F0}} {{Text|INTEGER|#F0F0F0}}
| |
| {{Text|FOR|#F0F0F0}} x = {{Text|1|#F580B1}} {{Text|TO|#F0F0F0}} {{Text|26|#F580B1}}
| |
| hash1char({{Text|64|#F580B1}} + x) = x
| |
| hash1char({{Text|96|#F580B1}} + x) = x
| |
| {{Text|NEXT|#F0F0F0}}
| |
| hash1char({{Text|95|#F580B1}}) = {{Text|27|#F580B1}} {{Text|'_|#31C4C4}}
| |
| hash1char({{Text|48|#F580B1}}) = {{Text|28|#F580B1}} {{Text|'0|#31C4C4}}
| |
| hash1char({{Text|49|#F580B1}}) = {{Text|29|#F580B1}} {{Text|'1|#31C4C4}}
| |
| hash1char({{Text|50|#F580B1}}) = {{Text|30|#F580B1}} {{Text|'2|#31C4C4}}
| |
| hash1char({{Text|51|#F580B1}}) = {{Text|31|#F580B1}} {{Text|'3|#31C4C4}}
| |
| hash1char({{Text|52|#F580B1}}) = {{Text|23|#F580B1}} {{Text|'4 'note: x, y, z and beginning alphabet letters avoided because of common usage (eg. a2, y3)|#31C4C4}}
| |
| hash1char({{Text|53|#F580B1}}) = {{Text|22|#F580B1}} {{Text|'5|#31C4C4}}
| |
| hash1char({{Text|54|#F580B1}}) = {{Text|20|#F580B1}} {{Text|'6|#31C4C4}}
| |
| hash1char({{Text|55|#F580B1}}) = {{Text|19|#F580B1}} {{Text|'7|#31C4C4}}
| |
| hash1char({{Text|56|#F580B1}}) = {{Text|18|#F580B1}} {{Text|'8|#31C4C4}}
| |
| hash1char({{Text|57|#F580B1}}) = {{Text|17|#F580B1}} {{Text|'9|#31C4C4}}
| |
| {{Text|FOR|#F0F0F0}} c1 = {{Text|0|#F580B1}} {{Text|TO|#F0F0F0}} {{Text|255|#F580B1}}
| |
| {{Text|FOR|#F0F0F0}} c2 = {{Text|0|#F580B1}} {{Text|TO|#F0F0F0}} {{Text|255|#F580B1}}
| |
| hash2char(c1 + c2 * {{Text|256|#F580B1}}) = hash1char(c1) + hash1char(c2) * {{Text|32|#F580B1}}
| |
| {{Text|NEXT|#F0F0F0}}
| |
| {{Text|NEXT|#F0F0F0}}
| |
| {{Text|'init|#31C4C4}}
| |
| HashListSize = {{Text|65536|#F580B1}}
| |
| HashListNext = {{Text|1|#F580B1}}
| |
| HashListFreeSize = {{Text|1024|#F580B1}}
| |
| HashListFreeLast = {{Text|0|#F580B1}}
| |
| {{Text|REDIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} HashList({{Text|1|#F580B1}} {{Text|TO|#F0F0F0}} HashListSize) {{Text|AS|#F0F0F0}} HashListItem
| |
| {{Text|REDIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} HashListName({{Text|1|#F580B1}} {{Text|TO|#F0F0F0}} HashListSize) {{Text|AS|#F0F0F0}} {{Text|STRING|#F0F0F0}} * {{Text|256|#F580B1}}
| |
| {{Text|REDIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} HashListFree({{Text|1|#F580B1}} {{Text|TO|#F0F0F0}} HashListFreeSize) {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}}
| |
| {{Text|REDIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} HashTable({{Text|16777215|#F580B1}}) {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}} {{Text|'64MB lookup table with indexes to the hashlist|#31C4C4}}
| |
|
| |
| {{Text|CONST|#F0F0F0}} HASHFLAG_LABEL = {{Text|2|#F580B1}}
| |
| {{Text|CONST|#F0F0F0}} HASHFLAG_TYPE = {{Text|4|#F580B1}}
| |
| {{Text|CONST|#F0F0F0}} HASHFLAG_RESERVED = {{Text|8|#F580B1}}
| |
| {{Text|CONST|#F0F0F0}} HASHFLAG_OPERATOR = {{Text|16|#F580B1}}
| |
| {{Text|CONST|#F0F0F0}} HASHFLAG_CUSTOMSYNTAX = {{Text|32|#F580B1}}
| |
| {{Text|CONST|#F0F0F0}} HASHFLAG_SUB = {{Text|64|#F580B1}}
| |
| {{Text|CONST|#F0F0F0}} HASHFLAG_FUNCTION = {{Text|128|#F580B1}}
| |
| {{Text|CONST|#F0F0F0}} HASHFLAG_UDT = {{Text|256|#F580B1}}
| |
| {{Text|CONST|#F0F0F0}} HASHFLAG_UDTELEMENT = {{Text|512|#F580B1}}
| |
| {{Text|CONST|#F0F0F0}} HASHFLAG_CONSTANT = {{Text|1024|#F580B1}}
| |
| {{Text|CONST|#F0F0F0}} HASHFLAG_VARIABLE = {{Text|2048|#F580B1}}
| |
| {{Text|CONST|#F0F0F0}} HASHFLAG_ARRAY = {{Text|4096|#F580B1}}
| |
| {{Text|CONST|#F0F0F0}} HASHFLAG_XELEMENTNAME = {{Text|8192|#F580B1}}
| |
| {{Text|CONST|#F0F0F0}} HASHFLAG_XTYPENAME = {{Text|16384|#F580B1}}
| |
|
| |
| {{Text|TYPE|#F0F0F0}} Label_Type
| |
| State {{Text|AS|#F0F0F0}} {{Text|_UNSIGNED|#F0F0F0}} {{Text|_BYTE|#F0F0F0}} {{Text|'0=label referenced, 1=label created|#31C4C4}}
| |
| cn {{Text|AS|#F0F0F0}} {{Text|STRING|#F0F0F0}} * {{Text|256|#F580B1}}
| |
| Scope {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}}
| |
| Data_Offset {{Text|AS|#F0F0F0}} _INTEGER64 {{Text|'offset within data|#31C4C4}}
| |
| Data_Referenced {{Text|AS|#F0F0F0}} {{Text|_UNSIGNED|#F0F0F0}} {{Text|_BYTE|#F0F0F0}} {{Text|'set to 1 if data is referenced (data_offset will be used to create the data offset variable)|#31C4C4}}
| |
| Error_Line {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}} {{Text|'the line number to reference on errors|#31C4C4}}
| |
| Scope_Restriction {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}} {{Text|'cannot exist inside this scope (post checked)|#31C4C4}}
| |
| SourceLineNumber {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}}
| |
| {{Text|END|#F0F0F0}} {{Text|TYPE|#F0F0F0}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} nLabels, Labels_Ubound
| |
| Labels_Ubound = {{Text|100|#F580B1}}
| |
| {{Text|REDIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} Labels({{Text|1|#F580B1}} {{Text|TO|#F0F0F0}} Labels_Ubound) {{Text|AS|#F0F0F0}} Label_Type
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} Empty_Label {{Text|AS|#F0F0F0}} Label_Type
| |
|
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} PossibleSubNameLabels {{Text|AS|#F0F0F0}} {{Text|STRING|#F0F0F0}} {{Text|'format: name+sp+name+sp+name <-ucase$'d|#31C4C4}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} SubNameLabels {{Text|AS|#F0F0F0}} {{Text|STRING|#F0F0F0}} {{Text|'format: name+sp+name+sp+name <-ucase$'d|#31C4C4}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} CreatingLabel {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}}
| |
|
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} AllowLocalName {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}}
| |
|
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} DataOffset
| |
|
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} prepass
| |
|
| |
|
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} autoarray
| |
|
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} ontimerid, onkeyid, onstrigid
| |
|
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} revertmaymusthave({{Text|1|#F580B1}} {{Text|TO|#F0F0F0}} {{Text|10000|#F580B1}})
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} revertmaymusthaven
| |
|
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} linecontinuation
| |
|
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} dim2typepassback {{Text|AS|#F0F0F0}} {{Text|STRING|#F0F0F0}} {{Text|'passes back correct case sensitive version of type|#31C4C4}}
| |
|
| |
|
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} inclevel
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} incname({{Text|100|#F580B1}}) {{Text|AS|#F0F0F0}} {{Text|STRING|#F0F0F0}} {{Text|'must be full path as given|#31C4C4}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} inclinenumber({{Text|100|#F580B1}}) {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} incerror {{Text|AS|#F0F0F0}} {{Text|STRING|#F0F0F0}}
| |
|
| |
|
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} fix046 {{Text|AS|#F0F0F0}} {{Text|STRING|#F0F0F0}}
| |
| fix046$ = {{Text|"__"|#FFB100}} + {{Text|"ASCII"|#FFB100}} + {{Text|"_"|#FFB100}} + {{Text|"CHR"|#FFB100}} + {{Text|"_"|#FFB100}} + {{Text|"046"|#FFB100}} + {{Text|"__"|#FFB100}} {{Text|'broken up to avoid detection for layout reversion|#31C4C4}}
| |
|
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} layout {{Text|AS|#F0F0F0}} {{Text|STRING|#F0F0F0}} {{Text|'passed to IDE|#31C4C4}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} layoutok {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}} {{Text|'tracks status of entire line|#31C4C4}}
| |
|
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} layoutcomment {{Text|AS|#F0F0F0}} {{Text|STRING|#F0F0F0}}
| |
|
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} tlayout {{Text|AS|#F0F0F0}} {{Text|STRING|#F0F0F0}} {{Text|'temporary layout string set by supporting functions|#31C4C4}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} layoutdone {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}} {{Text|'tracks status of single command|#31C4C4}}
| |
|
| |
|
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} fooindwel
| |
|
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} alphanumeric({{Text|255|#F580B1}})
| |
| {{Text|FOR|#F0F0F0}} i = {{Text|48|#F580B1}} {{Text|TO|#F0F0F0}} {{Text|57|#F580B1}}
| |
| alphanumeric(i) = {{Text|-1|#F580B1}}
| |
| {{Text|NEXT|#F0F0F0}}
| |
| {{Text|FOR|#F0F0F0}} i = {{Text|65|#F580B1}} {{Text|TO|#F0F0F0}} {{Text|90|#F580B1}}
| |
| alphanumeric(i) = {{Text|-1|#F580B1}}
| |
| {{Text|NEXT|#F0F0F0}}
| |
| {{Text|FOR|#F0F0F0}} i = {{Text|97|#F580B1}} {{Text|TO|#F0F0F0}} {{Text|122|#F580B1}}
| |
| alphanumeric(i) = {{Text|-1|#F580B1}}
| |
| {{Text|NEXT|#F0F0F0}}
| |
| {{Text|'_ is treated as an alphabet letter|#31C4C4}}
| |
| alphanumeric({{Text|95|#F580B1}}) = {{Text|-1|#F580B1}}
| |
|
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} isalpha({{Text|255|#F580B1}})
| |
| {{Text|FOR|#F0F0F0}} i = {{Text|65|#F580B1}} {{Text|TO|#F0F0F0}} {{Text|90|#F580B1}}
| |
| isalpha(i) = {{Text|-1|#F580B1}}
| |
| {{Text|NEXT|#F0F0F0}}
| |
| {{Text|FOR|#F0F0F0}} i = {{Text|97|#F580B1}} {{Text|TO|#F0F0F0}} {{Text|122|#F580B1}}
| |
| isalpha(i) = {{Text|-1|#F580B1}}
| |
| {{Text|NEXT|#F0F0F0}}
| |
| {{Text|'_ is treated as an alphabet letter|#31C4C4}}
| |
| isalpha({{Text|95|#F580B1}}) = {{Text|-1|#F580B1}}
| |
|
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} isnumeric({{Text|255|#F580B1}})
| |
| {{Text|FOR|#F0F0F0}} i = {{Text|48|#F580B1}} {{Text|TO|#F0F0F0}} {{Text|57|#F580B1}}
| |
| isnumeric(i) = {{Text|-1|#F580B1}}
| |
| {{Text|NEXT|#F0F0F0}}
| |
|
| |
|
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} lfsinglechar({{Text|255|#F580B1}})
| |
| lfsinglechar({{Text|40|#F580B1}}) = {{Text|1|#F580B1}} {{Text|'(|#31C4C4}}
| |
| lfsinglechar({{Text|41|#F580B1}}) = {{Text|1|#F580B1}} {{Text|')|#31C4C4}}
| |
| lfsinglechar({{Text|42|#F580B1}}) = {{Text|1|#F580B1}} {{Text|'*|#31C4C4}}
| |
| lfsinglechar({{Text|43|#F580B1}}) = {{Text|1|#F580B1}} {{Text|'+|#31C4C4}}
| |
| lfsinglechar({{Text|45|#F580B1}}) = {{Text|1|#F580B1}} {{Text|'-|#31C4C4}}
| |
| lfsinglechar({{Text|47|#F580B1}}) = {{Text|1|#F580B1}} {{Text|'/|#31C4C4}}
| |
| lfsinglechar({{Text|60|#F580B1}}) = {{Text|1|#F580B1}} {{Text|'<|#31C4C4}}
| |
| lfsinglechar({{Text|61|#F580B1}}) = {{Text|1|#F580B1}} {{Text|'=|#31C4C4}}
| |
| lfsinglechar({{Text|62|#F580B1}}) = {{Text|1|#F580B1}} {{Text|'>|#31C4C4}}
| |
| lfsinglechar({{Text|92|#F580B1}}) = {{Text|1|#F580B1}} {{Text|'\|#31C4C4}}
| |
| lfsinglechar({{Text|94|#F580B1}}) = {{Text|1|#F580B1}} {{Text|'^|#31C4C4}}
| |
|
| |
| lfsinglechar({{Text|44|#F580B1}}) = {{Text|1|#F580B1}} {{Text|',|#31C4C4}}
| |
| lfsinglechar({{Text|46|#F580B1}}) = {{Text|1|#F580B1}} {{Text|'.|#31C4C4}}
| |
| lfsinglechar({{Text|58|#F580B1}}) = {{Text|1|#F580B1}} {{Text|':|#31C4C4}}
| |
| lfsinglechar({{Text|59|#F580B1}}) = {{Text|1|#F580B1}} {{Text|';|#31C4C4}}
| |
|
| |
| lfsinglechar({{Text|35|#F580B1}}) = {{Text|1|#F580B1}} {{Text|'# (file no only)|#31C4C4}}
| |
| lfsinglechar({{Text|36|#F580B1}}) = {{Text|1|#F580B1}} {{Text|'$ (metacommand only)|#31C4C4}}
| |
| lfsinglechar({{Text|63|#F580B1}}) = {{Text|1|#F580B1}} {{Text|'? (print macro)|#31C4C4}}
| |
| lfsinglechar({{Text|95|#F580B1}}) = {{Text|1|#F580B1}} {{Text|'_|#31C4C4}}
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} nextrunlineindex {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}}
| |
|
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} lineinput3buffer {{Text|AS|#F0F0F0}} {{Text|STRING|#F0F0F0}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} lineinput3index {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}}
| |
|
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} dimstatic {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}}
| |
|
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} staticarraylist {{Text|AS|#F0F0F0}} {{Text|STRING|#F0F0F0}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} staticarraylistn {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} commonarraylist {{Text|AS|#F0F0F0}} {{Text|STRING|#F0F0F0}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} commonarraylistn {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}}
| |
|
| |
| {{Text|'CONST support|#31C4C4}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} constmax {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}}
| |
| constmax = {{Text|100|#F580B1}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} constlast {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}}
| |
| constlast = {{Text|-1|#F580B1}}
| |
| {{Text|REDIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} constname(constmax) {{Text|AS|#F0F0F0}} {{Text|STRING|#F0F0F0}}
| |
| {{Text|REDIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} constcname(constmax) {{Text|AS|#F0F0F0}} {{Text|STRING|#F0F0F0}}
| |
| {{Text|REDIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} constnamesymbol(constmax) {{Text|AS|#F0F0F0}} {{Text|STRING|#F0F0F0}} {{Text|'optional name symbol|#31C4C4}}
| |
| {{Text|' `1 and `no-number must be handled correctly|#31C4C4}}
| |
| {{Text|'DIM SHARED constlastshared AS LONG 'so any defined inside a sub/function after this index can be "forgotten" when sub/function exits|#31C4C4}}
| |
| {{Text|'constlastshared = -1|#31C4C4}}
| |
| {{Text|REDIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} consttype(constmax) {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}} {{Text|'variable type number|#31C4C4}}
| |
| {{Text|'consttype determines storage|#31C4C4}}
| |
| {{Text|REDIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} constinteger(constmax) {{Text|AS|#F0F0F0}} _INTEGER64
| |
| {{Text|REDIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} constuinteger(constmax) {{Text|AS|#F0F0F0}} {{Text|_UNSIGNED|#F0F0F0}} _INTEGER64
| |
| {{Text|REDIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} constfloat(constmax) {{Text|AS|#F0F0F0}} {{Text|_FLOAT|#F0F0F0}}
| |
| {{Text|REDIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} conststring(constmax) {{Text|AS|#F0F0F0}} {{Text|STRING|#F0F0F0}}
| |
| {{Text|REDIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} constsubfunc(constmax) {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}}
| |
| {{Text|REDIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} constdefined(constmax) {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}}
| |
|
| |
| {{Text|'UDT|#31C4C4}}
| |
| {{Text|'names|#31C4C4}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} lasttype {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} lasttypeelement {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}}
| |
|
| |
| {{Text|TYPE|#F0F0F0}} idstruct
| |
|
| |
| n {{Text|AS|#F0F0F0}} {{Text|STRING|#F0F0F0}} * {{Text|256|#F580B1}} {{Text|'name|#31C4C4}}
| |
| cn {{Text|AS|#F0F0F0}} {{Text|STRING|#F0F0F0}} * {{Text|256|#F580B1}} {{Text|'case sensitive version of n|#31C4C4}}
| |
|
| |
| arraytype {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}} {{Text|'similar to t|#31C4C4}}
| |
| arrayelements {{Text|AS|#F0F0F0}} {{Text|INTEGER|#F0F0F0}}
| |
| staticarray {{Text|AS|#F0F0F0}} {{Text|INTEGER|#F0F0F0}} {{Text|'set for arrays declared in the main module with static elements|#31C4C4}}
| |
|
| |
| mayhave {{Text|AS|#F0F0F0}} {{Text|STRING|#F0F0F0}} * {{Text|8|#F580B1}} {{Text|'mayhave and musthave are exclusive of each other|#31C4C4}}
| |
| musthave {{Text|AS|#F0F0F0}} {{Text|STRING|#F0F0F0}} * {{Text|8|#F580B1}}
| |
| t {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}} {{Text|'type|#31C4C4}}
| |
|
| |
| tsize {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}}
| |
|
| |
|
| |
| subfunc {{Text|AS|#F0F0F0}} {{Text|INTEGER|#F0F0F0}} {{Text|'if function=1, sub=2 (max 100 arguments)|#31C4C4}}
| |
| Dependency {{Text|AS|#F0F0F0}} {{Text|INTEGER|#F0F0F0}}
| |
| internal_subfunc {{Text|AS|#F0F0F0}} {{Text|INTEGER|#F0F0F0}}
| |
|
| |
| callname {{Text|AS|#F0F0F0}} {{Text|STRING|#F0F0F0}} * {{Text|256|#F580B1}}
| |
| ccall {{Text|AS|#F0F0F0}} {{Text|INTEGER|#F0F0F0}}
| |
| overloaded {{Text|AS|#F0F0F0}} {{Text|_BYTE|#F0F0F0}}
| |
| args {{Text|AS|#F0F0F0}} {{Text|INTEGER|#F0F0F0}}
| |
| minargs {{Text|AS|#F0F0F0}} {{Text|INTEGER|#F0F0F0}}
| |
| arg {{Text|AS|#F0F0F0}} {{Text|STRING|#F0F0F0}} * {{Text|400|#F580B1}} {{Text|'similar to t|#31C4C4}}
| |
| argsize {{Text|AS|#F0F0F0}} {{Text|STRING|#F0F0F0}} * {{Text|400|#F580B1}} {{Text|'similar to tsize (used for fixed length strings)|#31C4C4}}
| |
| specialformat {{Text|AS|#F0F0F0}} {{Text|STRING|#F0F0F0}} * {{Text|256|#F580B1}}
| |
| secondargmustbe {{Text|AS|#F0F0F0}} {{Text|STRING|#F0F0F0}} * {{Text|256|#F580B1}}
| |
| secondargcantbe {{Text|AS|#F0F0F0}} {{Text|STRING|#F0F0F0}} * {{Text|256|#F580B1}}
| |
| ret {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}} {{Text|'the value it returns if it is a function (again like t)|#31C4C4}}
| |
|
| |
| insubfunc {{Text|AS|#F0F0F0}} {{Text|STRING|#F0F0F0}} * {{Text|256|#F580B1}}
| |
| insubfuncn {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}}
| |
|
| |
| share {{Text|AS|#F0F0F0}} {{Text|INTEGER|#F0F0F0}}
| |
| nele {{Text|AS|#F0F0F0}} {{Text|STRING|#F0F0F0}} * {{Text|100|#F580B1}}
| |
| nelereq {{Text|AS|#F0F0F0}} {{Text|STRING|#F0F0F0}} * {{Text|100|#F580B1}}
| |
| linkid {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}}
| |
| linkarg {{Text|AS|#F0F0F0}} {{Text|INTEGER|#F0F0F0}}
| |
| staticscope {{Text|AS|#F0F0F0}} {{Text|INTEGER|#F0F0F0}}
| |
| {{Text|'For variables which are arguments passed to a sub/function|#31C4C4}}
| |
| sfid {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}} {{Text|'id number of variable's parent sub/function|#31C4C4}}
| |
| sfarg {{Text|AS|#F0F0F0}} {{Text|INTEGER|#F0F0F0}} {{Text|'argument/parameter # within call (1=first)|#31C4C4}}
| |
|
| |
| hr_syntax {{Text|AS|#F0F0F0}} {{Text|STRING|#F0F0F0}}
| |
| {{Text|END|#F0F0F0}} {{Text|TYPE|#F0F0F0}}
| |
|
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} id {{Text|AS|#F0F0F0}} idstruct
| |
|
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} idn {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} ids_max {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}}
| |
| ids_max = {{Text|1024|#F580B1}}
| |
| {{Text|REDIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} ids({{Text|1|#F580B1}} {{Text|TO|#F0F0F0}} ids_max) {{Text|AS|#F0F0F0}} idstruct
| |
| {{Text|REDIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} cmemlist({{Text|1|#F580B1}} {{Text|TO|#F0F0F0}} ids_max + {{Text|1|#F580B1}}) {{Text|AS|#F0F0F0}} {{Text|INTEGER|#F0F0F0}} {{Text|'variables that must be in cmem|#31C4C4}}
| |
| {{Text|REDIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} sfcmemargs({{Text|1|#F580B1}} {{Text|TO|#F0F0F0}} ids_max + {{Text|1|#F580B1}}) {{Text|AS|#F0F0F0}} {{Text|STRING|#F0F0F0}} * {{Text|100|#F580B1}} {{Text|'s/f arg that must be in cmem|#31C4C4}}
| |
| {{Text|REDIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} arrayelementslist({{Text|1|#F580B1}} {{Text|TO|#F0F0F0}} ids_max + {{Text|1|#F580B1}}) {{Text|AS|#F0F0F0}} {{Text|INTEGER|#F0F0F0}} {{Text|'arrayelementslist (like cmemlist) helps to resolve the number of elements in arrays with an unknown number of elements. Note: arrays with an unknown number of elements have .arrayelements=-1|#31C4C4}}
| |
|
| |
|
| |
| {{Text|'create blank id template for idclear to copy (stops strings being set to chr$(0))|#31C4C4}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} cleariddata {{Text|AS|#F0F0F0}} idstruct
| |
| cleariddata.cn = {{Text|""|#FFB100}}
| |
| cleariddata.n = {{Text|""|#FFB100}}
| |
| cleariddata.mayhave = {{Text|""|#FFB100}}
| |
| cleariddata.musthave = {{Text|""|#FFB100}}
| |
| cleariddata.callname = {{Text|""|#FFB100}}
| |
| cleariddata.arg = {{Text|""|#FFB100}}
| |
| cleariddata.argsize = {{Text|""|#FFB100}}
| |
| cleariddata.specialformat = {{Text|""|#FFB100}}
| |
| cleariddata.secondargmustbe = {{Text|""|#FFB100}}
| |
| cleariddata.secondargcantbe = {{Text|""|#FFB100}}
| |
| cleariddata.insubfunc = {{Text|""|#FFB100}}
| |
| cleariddata.nele = {{Text|""|#FFB100}}
| |
| cleariddata.nelereq = {{Text|""|#FFB100}}
| |
|
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} ISSTRING {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} ISFLOAT {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} ISUNSIGNED {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} ISPOINTER {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} ISFIXEDLENGTH {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} ISINCONVENTIONALMEMORY {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} ISOFFSETINBITS {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} ISARRAY {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} ISREFERENCE {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} ISUDT {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} ISOFFSET {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}}
| |
|
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} STRINGTYPE {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} BITTYPE {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} UBITTYPE {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} BYTETYPE {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} UBYTETYPE {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} INTEGERTYPE {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} UINTEGERTYPE {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} LONGTYPE {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} ULONGTYPE {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} INTEGER64TYPE {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} UINTEGER64TYPE {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} SINGLETYPE {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} DOUBLETYPE {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} FLOATTYPE {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} OFFSETTYPE {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} UOFFSETTYPE {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} UDTTYPE {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}}
| |
|
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} gosubid {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} redimoption {{Text|AS|#F0F0F0}} {{Text|INTEGER|#F0F0F0}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} dimoption {{Text|AS|#F0F0F0}} {{Text|INTEGER|#F0F0F0}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} arraydesc {{Text|AS|#F0F0F0}} {{Text|INTEGER|#F0F0F0}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} qberrorhappened {{Text|AS|#F0F0F0}} {{Text|INTEGER|#F0F0F0}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} qberrorcode {{Text|AS|#F0F0F0}} {{Text|INTEGER|#F0F0F0}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} qberrorline {{Text|AS|#F0F0F0}} {{Text|INTEGER|#F0F0F0}}
| |
| {{Text|'COMMON SHARED defineaz() AS STRING|#31C4C4}}
| |
| {{Text|'COMMON SHARED defineextaz() AS STRING|#31C4C4}}
| |
|
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} sourcefile {{Text|AS|#F0F0F0}} {{Text|STRING|#F0F0F0}} {{Text|'the full path and filename|#31C4C4}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} file {{Text|AS|#F0F0F0}} {{Text|STRING|#F0F0F0}} {{Text|'name of the file (without .bas or path)|#31C4C4}}
| |
|
| |
| {{Text|'COMMON SHARED separgs() AS STRING|#31C4C4}}
| |
|
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} constequation {{Text|AS|#F0F0F0}} {{Text|INTEGER|#F0F0F0}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} DynamicMode {{Text|AS|#F0F0F0}} {{Text|INTEGER|#F0F0F0}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} findidsecondarg {{Text|AS|#F0F0F0}} {{Text|STRING|#F0F0F0}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} findanotherid {{Text|AS|#F0F0F0}} {{Text|INTEGER|#F0F0F0}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} findidinternal {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} currentid {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}} {{Text|'is the index of the last ID accessed|#31C4C4}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} linenumber {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}}, reallinenumber {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}}, totallinenumber {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}}, definingtypeerror {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} wholeline {{Text|AS|#F0F0F0}} {{Text|STRING|#F0F0F0}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} firstLineNumberLabelvWatch {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}}, lastLineNumberLabelvWatch {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} vWatchUsedLabels {{Text|AS|#F0F0F0}} {{Text|STRING|#F0F0F0}}, vWatchUsedSkipLabels {{Text|AS|#F0F0F0}} {{Text|STRING|#F0F0F0}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} linefragment {{Text|AS|#F0F0F0}} {{Text|STRING|#F0F0F0}}
| |
| {{Text|'COMMON SHARED bitmask() AS _INTEGER64|#31C4C4}}
| |
| {{Text|'COMMON SHARED bitmaskinv() AS _INTEGER64|#31C4C4}}
| |
|
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} arrayprocessinghappened {{Text|AS|#F0F0F0}} {{Text|INTEGER|#F0F0F0}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} stringprocessinghappened {{Text|AS|#F0F0F0}} {{Text|INTEGER|#F0F0F0}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} cleanupstringprocessingcall {{Text|AS|#F0F0F0}} {{Text|STRING|#F0F0F0}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} inputfunctioncalled {{Text|AS|#F0F0F0}} {{Text|_BYTE|#F0F0F0}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} recompile {{Text|AS|#F0F0F0}} {{Text|INTEGER|#F0F0F0}} {{Text|'forces recompilation|#31C4C4}}
| |
| {{Text|'COMMON SHARED cmemlist() AS INTEGER|#31C4C4}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} optionbase {{Text|AS|#F0F0F0}} {{Text|INTEGER|#F0F0F0}}
| |
|
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} addmetastatic {{Text|AS|#F0F0F0}} {{Text|INTEGER|#F0F0F0}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} addmetadynamic {{Text|AS|#F0F0F0}} {{Text|INTEGER|#F0F0F0}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} addmetainclude {{Text|AS|#F0F0F0}} {{Text|STRING|#F0F0F0}}
| |
|
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} closedmain {{Text|AS|#F0F0F0}} {{Text|INTEGER|#F0F0F0}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} module {{Text|AS|#F0F0F0}} {{Text|STRING|#F0F0F0}}
| |
|
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} subfunc {{Text|AS|#F0F0F0}} {{Text|STRING|#F0F0F0}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} subfuncn {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} closedsubfunc {{Text|AS|#F0F0F0}} {{Text|_BYTE|#F0F0F0}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} subfuncid {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}}
| |
|
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} defdatahandle {{Text|AS|#F0F0F0}} {{Text|INTEGER|#F0F0F0}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} dimsfarray {{Text|AS|#F0F0F0}} {{Text|INTEGER|#F0F0F0}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} dimshared {{Text|AS|#F0F0F0}} {{Text|INTEGER|#F0F0F0}}
| |
|
| |
| {{Text|'Allows passing of known elements to recompilation|#31C4C4}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} sflistn {{Text|AS|#F0F0F0}} {{Text|INTEGER|#F0F0F0}}
| |
| {{Text|'COMMON SHARED sfidlist() AS LONG|#31C4C4}}
| |
| {{Text|'COMMON SHARED sfarglist() AS INTEGER|#31C4C4}}
| |
| {{Text|'COMMON SHARED sfelelist() AS INTEGER|#31C4C4}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} glinkid {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} glinkarg {{Text|AS|#F0F0F0}} {{Text|INTEGER|#F0F0F0}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} typname2typsize {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} uniquenumbern {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}}
| |
|
| |
| {{Text|'CLEAR , , 16384|#31C4C4}}
| |
|
| |
|
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} bitmask({{Text|1|#F580B1}} {{Text|TO|#F0F0F0}} {{Text|64|#F580B1}}) {{Text|AS|#F0F0F0}} _INTEGER64
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} bitmaskinv({{Text|1|#F580B1}} {{Text|TO|#F0F0F0}} {{Text|64|#F580B1}}) {{Text|AS|#F0F0F0}} _INTEGER64
| |
|
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} defineextaz({{Text|1|#F580B1}} {{Text|TO|#F0F0F0}} {{Text|27|#F580B1}}) {{Text|AS|#F0F0F0}} {{Text|STRING|#F0F0F0}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} defineaz({{Text|1|#F580B1}} {{Text|TO|#F0F0F0}} {{Text|27|#F580B1}}) {{Text|AS|#F0F0F0}} {{Text|STRING|#F0F0F0}} {{Text|'27 is an underscore|#31C4C4}}
| |
|
| |
| ISSTRING = {{Text|1073741824|#F580B1}}
| |
| ISFLOAT = {{Text|536870912|#F580B1}}
| |
| ISUNSIGNED = {{Text|268435456|#F580B1}}
| |
| ISPOINTER = {{Text|134217728|#F580B1}}
| |
| ISFIXEDLENGTH = {{Text|67108864|#F580B1}} {{Text|'only set for strings with pointer flag|#31C4C4}}
| |
| ISINCONVENTIONALMEMORY = {{Text|33554432|#F580B1}}
| |
| ISOFFSETINBITS = {{Text|16777216|#F580B1}}
| |
| ISARRAY = {{Text|8388608|#F580B1}}
| |
| ISREFERENCE = {{Text|4194304|#F580B1}}
| |
| ISUDT = {{Text|2097152|#F580B1}}
| |
| ISOFFSET = {{Text|1048576|#F580B1}}
| |
|
| |
| STRINGTYPE = ISSTRING + ISPOINTER
| |
| BITTYPE = {{Text|1&|#F580B1}} + ISPOINTER + ISOFFSETINBITS
| |
| UBITTYPE = {{Text|1&|#F580B1}} + ISPOINTER + ISUNSIGNED + ISOFFSETINBITS {{Text|'QB64 will also support BIT*n, eg. DIM bitarray[10] AS _UNSIGNED _BIT*10|#31C4C4}}
| |
| BYTETYPE = {{Text|8&|#F580B1}} + ISPOINTER
| |
| UBYTETYPE = {{Text|8&|#F580B1}} + ISPOINTER + ISUNSIGNED
| |
| INTEGERTYPE = {{Text|16&|#F580B1}} + ISPOINTER
| |
| UINTEGERTYPE = {{Text|16&|#F580B1}} + ISPOINTER + ISUNSIGNED
| |
| LONGTYPE = {{Text|32&|#F580B1}} + ISPOINTER
| |
| ULONGTYPE = {{Text|32&|#F580B1}} + ISPOINTER + ISUNSIGNED
| |
| INTEGER64TYPE = {{Text|64&|#F580B1}} + ISPOINTER
| |
| UINTEGER64TYPE = {{Text|64&|#F580B1}} + ISPOINTER + ISUNSIGNED
| |
| SINGLETYPE = {{Text|32&|#F580B1}} + ISFLOAT + ISPOINTER
| |
| DOUBLETYPE = {{Text|64&|#F580B1}} + ISFLOAT + ISPOINTER
| |
| FLOATTYPE = {{Text|256&|#F580B1}} + ISFLOAT + ISPOINTER {{Text|'8-32 bytes|#31C4C4}}
| |
| OFFSETTYPE = {{Text|64&|#F580B1}} + ISOFFSET + ISPOINTER: {{Text|IF|#F0F0F0}} OS_BITS = {{Text|32|#F580B1}} {{Text|THEN|#F0F0F0}} OFFSETTYPE = {{Text|32&|#F580B1}} + ISOFFSET + ISPOINTER
| |
| UOFFSETTYPE = {{Text|64&|#F580B1}} + ISOFFSET + ISUNSIGNED + ISPOINTER: {{Text|IF|#F0F0F0}} OS_BITS = {{Text|32|#F580B1}} {{Text|THEN|#F0F0F0}} UOFFSETTYPE = {{Text|32&|#F580B1}} + ISOFFSET + ISUNSIGNED + ISPOINTER
| |
| UDTTYPE = ISUDT + ISPOINTER
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} statementn {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} everycasenewcase {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}}
| |
|
| |
|
| |
|
| |
|
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} controllevel {{Text|AS|#F0F0F0}} {{Text|INTEGER|#F0F0F0}} {{Text|'0=not in a control block|#31C4C4}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} controltype({{Text|1000|#F580B1}}) {{Text|AS|#F0F0F0}} {{Text|INTEGER|#F0F0F0}}
| |
| {{Text|'1=IF (awaiting END IF)|#31C4C4}}
| |
| {{Text|'2=FOR (awaiting NEXT)|#31C4C4}}
| |
| {{Text|'3=DO (awaiting LOOP [UNTIL¦WHILE param])|#31C4C4}}
| |
| {{Text|'4=DO WHILE/UNTIL (awaiting LOOP)|#31C4C4}}
| |
| {{Text|'5=WHILE (awaiting WEND)|#31C4C4}}
| |
| {{Text|'6=$IF (precompiler)|#31C4C4}}
| |
| {{Text|'10=SELECT CASE qbs (awaiting END SELECT/CASE)|#31C4C4}}
| |
| {{Text|'11=SELECT CASE int64 (awaiting END SELECT/CASE)|#31C4C4}}
| |
| {{Text|'12=SELECT CASE uint64 (awaiting END SELECT/CASE)|#31C4C4}}
| |
| {{Text|'13=SELECT CASE LONG double (awaiting END SELECT/CASE/CASE ELSE)|#31C4C4}}
| |
| {{Text|'14=SELECT CASE float ...|#31C4C4}}
| |
| {{Text|'15=SELECT CASE double|#31C4C4}}
| |
| {{Text|'16=SELECT CASE int32|#31C4C4}}
| |
| {{Text|'17=SELECT CASE uint32|#31C4C4}}
| |
| {{Text|'18=CASE (awaiting END SELECT/CASE/CASE ELSE)|#31C4C4}}
| |
| {{Text|'19=CASE ELSE (awaiting END SELECT)|#31C4C4}}
| |
| {{Text|'32=SUB/FUNCTION (awaiting END SUB/FUNCTION)|#31C4C4}}
| |
| {{Text|DIM|#F0F0F0}} controlid({{Text|1000|#F580B1}}) {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}}
| |
| {{Text|DIM|#F0F0F0}} controlvalue({{Text|1000|#F580B1}}) {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}}
| |
| {{Text|DIM|#F0F0F0}} controlstate({{Text|1000|#F580B1}}) {{Text|AS|#F0F0F0}} {{Text|INTEGER|#F0F0F0}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} controlref({{Text|1000|#F580B1}}) {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}} {{Text|'the line number the control was created on|#31C4C4}}
| |
|
| |
| {{Text|'|#31C4C4}}
| |
| {{Text|' Collection of flags indicating which unstable features should be used during compilation|#31C4C4}}
| |
| {{Text|'|#31C4C4}}
| |
| {{Text|REDIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} unstableFlags({{Text|1|#F580B1}} {{Text|TO|#F0F0F0}} {{Text|2|#F580B1}}) {{Text|AS|#F0F0F0}} {{Text|_BYTE|#F0F0F0}}
| |
| {{Text|DIM|#F0F0F0}} UNSTABLE_MIDI {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}}
| |
| {{Text|DIM|#F0F0F0}} UNSTABLE_HTTP {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}}
| |
|
| |
| UNSTABLE_MIDI = {{Text|1|#F580B1}}
| |
| UNSTABLE_HTTP = {{Text|2|#F580B1}}
| |
|
| |
|
| |
|
| |
|
| |
| {{Text|ON|#F0F0F0}} {{Text|ERROR|#F0F0F0}} {{Text|GOTO|#F0F0F0}} qberror
| |
|
| |
| i2&& = {{Text|1|#F580B1}}
| |
| {{Text|FOR|#F0F0F0}} i&& = {{Text|1|#F580B1}} {{Text|TO|#F0F0F0}} {{Text|64|#F580B1}}
| |
| bitmask(i&&) = i2&&
| |
| bitmaskinv(i&&) = {{Text|NOT|#F0F0F0}} i2&&
| |
| i2&& = i2&& + {{Text|2|#F580B1}} ^ i&&
| |
| {{Text|NEXT|#F0F0F0}}
| |
|
| |
| {{Text|DIM|#F0F0F0}} id2 {{Text|AS|#F0F0F0}} idstruct
| |
|
| |
| cleanupstringprocessingcall$ = {{Text|"qbs_cleanup(qbs_tmp_base,"|#FFB100}}
| |
|
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} sfidlist({{Text|1000|#F580B1}}) {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} sfarglist({{Text|1000|#F580B1}}) {{Text|AS|#F0F0F0}} {{Text|INTEGER|#F0F0F0}}
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} sfelelist({{Text|1000|#F580B1}}) {{Text|AS|#F0F0F0}} {{Text|INTEGER|#F0F0F0}}
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
| {{Text|'----------------ripgl.bas--------------------------------------------------------------------------------|#31C4C4}}
| |
| gl_scan_header
| |
| {{Text|'----------------ripgl.bas--------------------------------------------------------------------------------|#31C4C4}}
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
| {{Text|'-----------------------QB64 COMPILER ONCE ONLY SETUP CODE ENDS HERE---------------------------------------|#31C4C4}}
| |
|
| |
| {{Text|IF|#F0F0F0}} NoIDEMode {{Text|THEN|#F0F0F0}} IDE_AutoPosition = {{Text|0|#F580B1}}: {{Text|GOTO|#F0F0F0}} noide
| |
| {{Text|DIM|#F0F0F0}} FileDropEnabled {{Text|AS|#F0F0F0}} {{Text|_BYTE|#F0F0F0}}
| |
| {{Text|IF|#F0F0F0}} FileDropEnabled = {{Text|0|#F580B1}} {{Text|THEN|#F0F0F0}} FileDropEnabled = {{Text|-1|#F580B1}}: {{Text|_ACCEPTFILEDROP|#F0F0F0}}
| |
|
| |
| {{Text|IF|#F0F0F0}} IDE_AutoPosition {{Text|AND|#F0F0F0}} {{Text|NOT|#F0F0F0}} IDE_BypassAutoPosition {{Text|THEN|#F0F0F0}} {{Text|_SCREENMOVE|#F0F0F0}} IDE_LeftPosition, IDE_TopPosition
| |
| idemode = {{Text|1|#F580B1}}
| |
| sendc$ = {{Text|""|#FFB100}} {{Text|'no initial message|#31C4C4}}
| |
| {{Text|IF|#F0F0F0}} CMDLineFile <> {{Text|""|#FFB100}} {{Text|THEN|#F0F0F0}} sendc$ = {{Text|CHR$|#F0F0F0}}({{Text|1|#F580B1}}) + CMDLineFile
| |
| sendcommand:
| |
| idecommand$ = sendc$
| |
| C = ide({{Text|0|#F580B1}})
| |
| ideerror = {{Text|0|#F580B1}}
| |
| {{Text|IF|#F0F0F0}} C = {{Text|0|#F580B1}} {{Text|THEN|#F0F0F0}} idemode = {{Text|0|#F580B1}}: {{Text|GOTO|#F0F0F0}} noide
| |
| c$ = idereturn$
| |
|
| |
| {{Text|IF|#F0F0F0}} C = {{Text|2|#F580B1}} {{Text|THEN|#F0F0F0}} {{Text|'begin|#31C4C4}}
| |
| ideerrorline = {{Text|0|#F580B1}} {{Text|'addresses invalid prepass error line numbers being reported|#31C4C4}}
| |
| idepass = {{Text|1|#F580B1}}
| |
| {{Text|GOTO|#F0F0F0}} fullrecompile
| |
| ideret1:
| |
| wholeline$ = c$
| |
| {{Text|GOTO|#F0F0F0}} ideprepass
| |
| ideret2:
| |
| {{Text|IF|#F0F0F0}} lastLineReturn {{Text|THEN|#F0F0F0}} {{Text|GOTO|#F0F0F0}} lastLineReturn
| |
| sendc$ = {{Text|CHR$|#F0F0F0}}({{Text|3|#F580B1}}) {{Text|'request next line|#31C4C4}}
| |
| {{Text|GOTO|#F0F0F0}} sendcommand
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}}
| |
|
| |
| {{Text|IF|#F0F0F0}} C = {{Text|4|#F580B1}} {{Text|THEN|#F0F0F0}} {{Text|'next line|#31C4C4}}
| |
| {{Text|IF|#F0F0F0}} idepass = {{Text|1|#F580B1}} {{Text|THEN|#F0F0F0}}
| |
| wholeline$ = c$
| |
| {{Text|GOTO|#F0F0F0}} ideprepass
| |
| {{Text|'(returns to ideret2: above)|#31C4C4}}
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}}
| |
| {{Text|'assume idepass>1|#31C4C4}}
| |
| a3$ = c$
| |
| continuelinefrom = {{Text|0|#F580B1}}
| |
| {{Text|GOTO|#F0F0F0}} ide4
| |
| ideret4:
| |
| {{Text|IF|#F0F0F0}} lastLineReturn {{Text|THEN|#F0F0F0}} {{Text|GOTO|#F0F0F0}} lastLineReturn
| |
| sendc$ = {{Text|CHR$|#F0F0F0}}({{Text|3|#F580B1}}) {{Text|'request next line|#31C4C4}}
| |
| {{Text|GOTO|#F0F0F0}} sendcommand
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}}
| |
|
| |
| {{Text|IF|#F0F0F0}} C = {{Text|5|#F580B1}} {{Text|THEN|#F0F0F0}} {{Text|'end of program reached|#31C4C4}}
| |
|
| |
| lastLine = {{Text|1|#F580B1}}
| |
| lastLineReturn = {{Text|1|#F580B1}}
| |
| {{Text|IF|#F0F0F0}} idepass = {{Text|1|#F580B1}} {{Text|THEN|#F0F0F0}}
| |
| wholeline$ = {{Text|""|#FFB100}}
| |
| {{Text|GOTO|#F0F0F0}} ideprepass
| |
| {{Text|'(returns to ideret2: above, then to lastLinePrepassReturn below)|#31C4C4}}
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}}
| |
| {{Text|'idepass>1|#31C4C4}}
| |
| a3$ = {{Text|""|#FFB100}}
| |
| continuelinefrom = {{Text|0|#F580B1}}
| |
| {{Text|GOTO|#F0F0F0}} ide4 {{Text|'returns to ideret4, then to lastLinePrepassReturn below|#31C4C4}}
| |
| lastLineReturn:
| |
| lastLineReturn = {{Text|0|#F580B1}}
| |
| lastLine = {{Text|0|#F580B1}}
| |
|
| |
| {{Text|IF|#F0F0F0}} idepass = {{Text|1|#F580B1}} {{Text|THEN|#F0F0F0}}
| |
| {{Text|'prepass complete|#31C4C4}}
| |
| idepass = {{Text|2|#F580B1}}
| |
| {{Text|GOTO|#F0F0F0}} ide3
| |
| ideret3:
| |
| sendc$ = {{Text|CHR$|#F0F0F0}}({{Text|7|#F580B1}}) {{Text|'repass request|#31C4C4}}
| |
| firstLine = {{Text|1|#F580B1}}
| |
| {{Text|GOTO|#F0F0F0}} sendcommand
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}}
| |
| {{Text|'assume idepass=2|#31C4C4}}
| |
| {{Text|'finalize program|#31C4C4}}
| |
| {{Text|GOTO|#F0F0F0}} ide5
| |
| ideret5: {{Text|'note: won't return here if a recompile was required!|#31C4C4}}
| |
| sendc$ = {{Text|CHR$|#F0F0F0}}({{Text|6|#F580B1}}) {{Text|'ready|#31C4C4}}
| |
| idecompiled = {{Text|0|#F580B1}}
| |
| {{Text|GOTO|#F0F0F0}} sendcommand
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}}
| |
|
| |
| {{Text|IF|#F0F0F0}} C = {{Text|9|#F580B1}} {{Text|THEN|#F0F0F0}} {{Text|'run|#31C4C4}}
| |
|
| |
| {{Text|IF|#F0F0F0}} idecompiled = {{Text|0|#F580B1}} {{Text|THEN|#F0F0F0}} {{Text|'exe needs to be compiled|#31C4C4}}
| |
| file$ = c$
| |
|
| |
| {{Text|'locate accessible file and truncate|#31C4C4}}
| |
| f$ = file$
| |
|
| |
| path.exe$ = {{Text|""|#FFB100}}
| |
| {{Text|IF|#F0F0F0}} SaveExeWithSource {{Text|THEN|#F0F0F0}}
| |
| {{Text|IF|#F0F0F0}} {{Text|LEN|#F0F0F0}}(ideprogname) {{Text|THEN|#F0F0F0}} path.exe$ = idepath$ + pathsep$
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}}
| |
|
| |
| i = {{Text|1|#F580B1}}
| |
| nextexeindex:
| |
| {{Text|IF|#F0F0F0}} {{Text|_FILEEXISTS|#F0F0F0}}(path.exe$ + file$ + extension$) {{Text|THEN|#F0F0F0}}
| |
| E = {{Text|0|#F580B1}}
| |
| {{Text|ON|#F0F0F0}} {{Text|ERROR|#F0F0F0}} {{Text|GOTO|#F0F0F0}} qberror_test
| |
| {{Text|KILL|#F0F0F0}} path.exe$ + file$ + extension$
| |
| {{Text|ON|#F0F0F0}} {{Text|ERROR|#F0F0F0}} {{Text|GOTO|#F0F0F0}} qberror
| |
| {{Text|IF|#F0F0F0}} E = {{Text|1|#F580B1}} {{Text|THEN|#F0F0F0}}
| |
| i = i + {{Text|1|#F580B1}}
| |
| file$ = f$ + {{Text|"("|#FFB100}} + str2$(i) + {{Text|")"|#FFB100}}
| |
| {{Text|GOTO|#F0F0F0}} nextexeindex
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}}
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}}
| |
|
| |
| {{Text|'inform IDE of name change if necessary (IDE will respond with message 9 and corrected name)|#31C4C4}}
| |
| {{Text|IF|#F0F0F0}} i <> {{Text|1|#F580B1}} {{Text|THEN|#F0F0F0}}
| |
| sendc$ = {{Text|CHR$|#F0F0F0}}({{Text|12|#F580B1}}) + file$
| |
| {{Text|GOTO|#F0F0F0}} sendcommand
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}}
| |
|
| |
| ideerrorline = {{Text|0|#F580B1}} {{Text|'addresses C++ comp. error's line number|#31C4C4}}
| |
| {{Text|GOTO|#F0F0F0}} ide6
| |
| ideret6:
| |
| idecompiled = {{Text|1|#F580B1}}
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}}
| |
|
| |
| {{Text|IF|#F0F0F0}} iderunmode = {{Text|2|#F580B1}} {{Text|THEN|#F0F0F0}}
| |
| sendc$ = {{Text|CHR$|#F0F0F0}}({{Text|11|#F580B1}}) {{Text|'.EXE file created|#31C4C4}}
| |
| {{Text|GOTO|#F0F0F0}} sendcommand
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}}
| |
|
| |
| {{Text|'execute program|#31C4C4}}
| |
|
| |
|
| |
|
| |
|
| |
| {{Text|IF|#F0F0F0}} iderunmode = {{Text|1|#F580B1}} {{Text|THEN|#F0F0F0}}
| |
| {{Text|IF|#F0F0F0}} NoExeSaved {{Text|THEN|#F0F0F0}}
| |
| {{Text|'This is the section which deals with if the user selected to run the program without|#31C4C4}}
| |
| {{Text|'saving an EXE file to the disk.|#31C4C4}}
| |
| {{Text|'We start off by first running the EXE, and then we delete it from the drive.|#31C4C4}}
| |
| {{Text|'making it a temporary file when all is said and done.|#31C4C4}}
| |
| {{Text|IF|#F0F0F0}} os$ = {{Text|"WIN"|#FFB100}} {{Text|THEN|#F0F0F0}}
| |
| {{Text|SHELL|#F0F0F0}} QuotedFilename$({{Text|CHR$|#F0F0F0}}({{Text|34|#F580B1}}) + lastBinaryGenerated$ + {{Text|CHR$|#F0F0F0}}({{Text|34|#F580B1}})) + ModifyCOMMAND$ {{Text|'run the newly created program|#31C4C4}}
| |
| {{Text|SHELL|#F0F0F0}} {{Text|_HIDE|#F0F0F0}} {{Text|_DONTWAIT|#F0F0F0}} {{Text|"del "|#FFB100}} + QuotedFilename$({{Text|CHR$|#F0F0F0}}({{Text|34|#F580B1}}) + lastBinaryGenerated$ + {{Text|CHR$|#F0F0F0}}({{Text|34|#F580B1}})) {{Text|'kill it|#31C4C4}}
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}}
| |
| {{Text|IF|#F0F0F0}} path.exe$ = {{Text|""|#FFB100}} {{Text|THEN|#F0F0F0}} path.exe$ = {{Text|"./"|#FFB100}}
| |
| {{Text|IF|#F0F0F0}} os$ = {{Text|"LNX"|#FFB100}} {{Text|THEN|#F0F0F0}}
| |
| {{Text|IF|#F0F0F0}} {{Text|LEFT$|#F0F0F0}}(lastBinaryGenerated$, {{Text|LEN|#F0F0F0}}(path.exe$)) = path.exe$ {{Text|THEN|#F0F0F0}}
| |
| {{Text|SHELL|#F0F0F0}} QuotedFilename$(lastBinaryGenerated$) + ModifyCOMMAND$
| |
| {{Text|KILL|#F0F0F0}} lastBinaryGenerated$
| |
| {{Text|ELSE|#F0F0F0}}
| |
| {{Text|SHELL|#F0F0F0}} QuotedFilename$(path.exe$ + lastBinaryGenerated$) + ModifyCOMMAND$
| |
| {{Text|KILL|#F0F0F0}} path.exe$ + lastBinaryGenerated$
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}}
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}}
| |
| {{Text|IF|#F0F0F0}} path.exe$ = {{Text|"./"|#FFB100}} {{Text|THEN|#F0F0F0}} path.exe$ = {{Text|""|#FFB100}}
| |
| NoExeSaved = {{Text|0|#F580B1}} {{Text|'reset the flag for a temp EXE|#31C4C4}}
| |
| sendc$ = {{Text|CHR$|#F0F0F0}}({{Text|6|#F580B1}}) {{Text|'ready|#31C4C4}}
| |
| {{Text|GOTO|#F0F0F0}} sendcommand
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}}
| |
|
| |
|
| |
|
| |
| {{Text|IF|#F0F0F0}} os$ = {{Text|"WIN"|#FFB100}} {{Text|THEN|#F0F0F0}} {{Text|SHELL|#F0F0F0}} {{Text|_DONTWAIT|#F0F0F0}} QuotedFilename$({{Text|CHR$|#F0F0F0}}({{Text|34|#F580B1}}) + lastBinaryGenerated$ + {{Text|CHR$|#F0F0F0}}({{Text|34|#F580B1}})) + ModifyCOMMAND$
| |
| {{Text|IF|#F0F0F0}} path.exe$ = {{Text|""|#FFB100}} {{Text|THEN|#F0F0F0}} path.exe$ = {{Text|"./"|#FFB100}}
| |
| {{Text|IF|#F0F0F0}} os$ = {{Text|"LNX"|#FFB100}} {{Text|THEN|#F0F0F0}}
| |
| {{Text|IF|#F0F0F0}} {{Text|LEFT$|#F0F0F0}}(lastBinaryGenerated$, {{Text|LEN|#F0F0F0}}(path.exe$)) = path.exe$ {{Text|THEN|#F0F0F0}}
| |
| {{Text|SHELL|#F0F0F0}} {{Text|_DONTWAIT|#F0F0F0}} QuotedFilename$(lastBinaryGenerated$) + ModifyCOMMAND$
| |
| {{Text|ELSE|#F0F0F0}}
| |
| {{Text|SHELL|#F0F0F0}} {{Text|_DONTWAIT|#F0F0F0}} QuotedFilename$(path.exe$ + lastBinaryGenerated$) + ModifyCOMMAND$
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}}
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}}
| |
| {{Text|IF|#F0F0F0}} path.exe$ = {{Text|"./"|#FFB100}} {{Text|THEN|#F0F0F0}} path.exe$ = {{Text|""|#FFB100}}
| |
| {{Text|ELSE|#F0F0F0}}
| |
| {{Text|IF|#F0F0F0}} os$ = {{Text|"WIN"|#FFB100}} {{Text|THEN|#F0F0F0}} {{Text|SHELL|#F0F0F0}} QuotedFilename$({{Text|CHR$|#F0F0F0}}({{Text|34|#F580B1}}) + lastBinaryGenerated$ + {{Text|CHR$|#F0F0F0}}({{Text|34|#F580B1}})) + ModifyCOMMAND$
| |
| {{Text|IF|#F0F0F0}} path.exe$ = {{Text|""|#FFB100}} {{Text|THEN|#F0F0F0}} path.exe$ = {{Text|"./"|#FFB100}}
| |
| {{Text|IF|#F0F0F0}} os$ = {{Text|"LNX"|#FFB100}} {{Text|THEN|#F0F0F0}}
| |
| {{Text|IF|#F0F0F0}} {{Text|LEFT$|#F0F0F0}}(lastBinaryGenerated$, {{Text|LEN|#F0F0F0}}(path.exe$)) = path.exe$ {{Text|THEN|#F0F0F0}}
| |
| {{Text|SHELL|#F0F0F0}} QuotedFilename$(lastBinaryGenerated$) + ModifyCOMMAND$
| |
| {{Text|ELSE|#F0F0F0}}
| |
| {{Text|SHELL|#F0F0F0}} QuotedFilename$(path.exe$ + lastBinaryGenerated$) + ModifyCOMMAND$
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}}
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}}
| |
| {{Text|IF|#F0F0F0}} path.exe$ = {{Text|"./"|#FFB100}} {{Text|THEN|#F0F0F0}} path.exe$ = {{Text|""|#FFB100}}
| |
| {{Text|DO|#F0F0F0}}: {{Text|LOOP|#F0F0F0}} {{Text|UNTIL|#F0F0F0}} {{Text|INKEY$|#F0F0F0}} = {{Text|""|#FFB100}}
| |
| {{Text|DO|#F0F0F0}}: {{Text|LOOP|#F0F0F0}} {{Text|UNTIL|#F0F0F0}} {{Text|_KEYHIT|#F0F0F0}} = {{Text|0|#F580B1}}
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}}
| |
|
| |
| {{Text|IF|#F0F0F0}} idemode {{Text|THEN|#F0F0F0}}
| |
| {{Text|'Darken fg/bg colors|#31C4C4}}
| |
| dummy = DarkenFGBG({{Text|0|#F580B1}})
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}}
| |
|
| |
| {{Text|IF|#F0F0F0}} vWatchOn {{Text|THEN|#F0F0F0}}
| |
| sendc$ = {{Text|CHR$|#F0F0F0}}({{Text|254|#F580B1}}) {{Text|'launch debug interface|#31C4C4}}
| |
| {{Text|ELSE|#F0F0F0}}
| |
| sendc$ = {{Text|CHR$|#F0F0F0}}({{Text|6|#F580B1}}) {{Text|'ready|#31C4C4}}
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}}
| |
| {{Text|GOTO|#F0F0F0}} sendcommand
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}}
| |
|
| |
| {{Text|PRINT|#F0F0F0}} {{Text|"Invalid IDE message"|#FFB100}}: {{Text|END|#F0F0F0}}
| |
|
| |
| ideerror:
| |
| {{Text|IF|#F0F0F0}} {{Text|INSTR|#F0F0F0}}(idemessage$, sp$) {{Text|THEN|#F0F0F0}}
| |
| {{Text|'Something went wrong here, so let's give a generic error message to the user.|#31C4C4}}
| |
| {{Text|'(No error message should contain sp$ - that is, CHR$(13), when not in Debug mode)|#31C4C4}}
| |
| terrmsg$ = {{Text|_ERRORMESSAGE$|#F0F0F0}}
| |
| {{Text|IF|#F0F0F0}} terrmsg$ = {{Text|"No error"|#FFB100}} {{Text|THEN|#F0F0F0}} terrmsg$ = {{Text|"Internal error"|#FFB100}}
| |
| idemessage$ = {{Text|"Compiler error (check for syntax errors) ("|#FFB100}} + terrmsg$ + {{Text|":"|#FFB100}}
| |
| {{Text|IF|#F0F0F0}} {{Text|ERR|#F0F0F0}} {{Text|THEN|#F0F0F0}} idemessage$ = idemessage$ + str2$({{Text|ERR|#F0F0F0}}) + {{Text|"-"|#FFB100}}
| |
| {{Text|IF|#F0F0F0}} {{Text|_ERRORLINE|#F0F0F0}} {{Text|THEN|#F0F0F0}} idemessage$ = idemessage$ + str2$({{Text|_ERRORLINE|#F0F0F0}})
| |
| {{Text|IF|#F0F0F0}} {{Text|_INCLERRORLINE|#F0F0F0}} {{Text|THEN|#F0F0F0}} idemessage$ = idemessage$ + {{Text|"-"|#FFB100}} + {{Text|_INCLERRORFILE$|#F0F0F0}} + {{Text|"-"|#FFB100}} + str2$({{Text|_INCLERRORLINE|#F0F0F0}})
| |
| idemessage$ = idemessage$ + {{Text|")"|#FFB100}}
| |
| {{Text|IF|#F0F0F0}} inclevel > {{Text|0|#F580B1}} {{Text|THEN|#F0F0F0}} idemessage$ = idemessage$ + incerror$
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}}
| |
|
| |
| sendc$ = {{Text|CHR$|#F0F0F0}}({{Text|8|#F580B1}}) + idemessage$ + {{Text|MKL$|#F0F0F0}}(ideerrorline)
| |
| {{Text|GOTO|#F0F0F0}} sendcommand
| |
|
| |
|
| |
| noide:
| |
| {{Text|IF|#F0F0F0}} (qb64versionprinted = {{Text|0|#F580B1}} {{Text|OR|#F0F0F0}} ConsoleMode = {{Text|0|#F580B1}}) {{Text|AND|#F0F0F0}} {{Text|NOT|#F0F0F0}} QuietMode {{Text|THEN|#F0F0F0}}
| |
| qb64versionprinted = {{Text|-1|#F580B1}}
| |
| {{Text|PRINT|#F0F0F0}} {{Text|"QB64-PE Compiler V"|#FFB100}} + Version$
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}}
| |
|
| |
| {{Text|IF|#F0F0F0}} CMDLineFile = {{Text|""|#FFB100}} {{Text|THEN|#F0F0F0}}
| |
| {{Text|LINE|#F0F0F0}} {{Text|INPUT|#F0F0F0}} ; {{Text|"COMPILE (.bas)>"|#FFB100}}, f$
| |
| {{Text|ELSE|#F0F0F0}}
| |
| f$ = CMDLineFile
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}}
| |
|
| |
| f$ = {{Text|LTRIM$|#F0F0F0}}({{Text|RTRIM$|#F0F0F0}}(f$))
| |
|
| |
| {{Text|IF|#F0F0F0}} FileHasExtension(f$) = {{Text|0|#F580B1}} {{Text|THEN|#F0F0F0}} f$ = f$ + {{Text|".bas"|#FFB100}}
| |
|
| |
| sourcefile$ = f$
| |
| CMDLineFile = sourcefile$
| |
| {{Text|'derive name from sourcefile|#31C4C4}}
| |
| f$ = RemoveFileExtension$(f$)
| |
|
| |
| path.exe$ = {{Text|""|#FFB100}}
| |
| currentdir$ = {{Text|_CWD$|#F0F0F0}}
| |
| path.source$ = getfilepath$(sourcefile$)
| |
| {{Text|IF|#F0F0F0}} {{Text|LEN|#F0F0F0}}(path.source$) {{Text|THEN|#F0F0F0}}
| |
| {{Text|IF|#F0F0F0}} {{Text|_DIREXISTS|#F0F0F0}}(path.source$) = {{Text|0|#F580B1}} {{Text|THEN|#F0F0F0}}
| |
| {{Text|PRINT|#F0F0F0}}
| |
| {{Text|PRINT|#F0F0F0}} {{Text|"Cannot locate source file: "|#FFB100}} + sourcefile$
| |
| {{Text|IF|#F0F0F0}} ConsoleMode {{Text|THEN|#F0F0F0}} {{Text|SYSTEM|#F0F0F0}} {{Text|1|#F580B1}}
| |
| {{Text|END|#F0F0F0}} {{Text|1|#F580B1}}
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}}
| |
| {{Text|CHDIR|#F0F0F0}} path.source$
| |
| path.source$ = {{Text|_CWD$|#F0F0F0}}
| |
| {{Text|IF|#F0F0F0}} {{Text|RIGHT$|#F0F0F0}}(path.source$, {{Text|1|#F580B1}}) <> pathsep$ {{Text|THEN|#F0F0F0}} path.source$ = path.source$ + pathsep$
| |
| {{Text|CHDIR|#F0F0F0}} currentdir$
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}}
| |
| {{Text|IF|#F0F0F0}} SaveExeWithSource {{Text|THEN|#F0F0F0}} path.exe$ = path.source$
| |
|
| |
| {{Text|FOR|#F0F0F0}} x = {{Text|LEN|#F0F0F0}}(f$) {{Text|TO|#F0F0F0}} {{Text|1|#F580B1}} {{Text|STEP|#F0F0F0}} {{Text|-1|#F580B1}}
| |
| a$ = {{Text|MID$|#F0F0F0}}(f$, x, {{Text|1|#F580B1}})
| |
| {{Text|IF|#F0F0F0}} a$ = {{Text|"/"|#FFB100}} {{Text|OR|#F0F0F0}} a$ = {{Text|"\"|#FFB100}} {{Text|THEN|#F0F0F0}}
| |
| f$ = {{Text|RIGHT$|#F0F0F0}}(f$, {{Text|LEN|#F0F0F0}}(f$) - x)
| |
| {{Text|EXIT|#F0F0F0}} {{Text|FOR|#F0F0F0}}
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}}
| |
| {{Text|NEXT|#F0F0F0}}
| |
| file$ = f$
| |
|
| |
| {{Text|'if cmemlist(currentid+1)<>0 before calling regid the variable|#31C4C4}}
| |
| {{Text|'MUST be defined in cmem!|#31C4C4}}
| |
|
| |
| fullrecompile:
| |
|
| |
| {{Text|IF|#F0F0F0}} idemode = {{Text|0|#F580B1}} {{Text|AND|#F0F0F0}} {{Text|NOT|#F0F0F0}} QuietMode {{Text|THEN|#F0F0F0}}
| |
| {{Text|PRINT|#F0F0F0}}
| |
| {{Text|PRINT|#F0F0F0}} {{Text|"Beginning C++ output from QB64 code... "|#FFB100}}
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}}
| |
|
| |
| BU_DEPENDENCY_CONSOLE_ONLY = DEPENDENCY(DEPENDENCY_CONSOLE_ONLY)
| |
| {{Text|FOR|#F0F0F0}} i = {{Text|1|#F580B1}} {{Text|TO|#F0F0F0}} {{Text|UBOUND|#F0F0F0}}(DEPENDENCY): DEPENDENCY(i) = {{Text|0|#F580B1}}: {{Text|NEXT|#F0F0F0}}
| |
| DEPENDENCY(DEPENDENCY_CONSOLE_ONLY) = BU_DEPENDENCY_CONSOLE_ONLY {{Text|AND|#F0F0F0}} {{Text|2|#F580B1}} {{Text|'Restore -g switch if used|#31C4C4}}
| |
|
| |
| Error_Happened = {{Text|0|#F580B1}}
| |
|
| |
| {{Text|FOR|#F0F0F0}} closeall = {{Text|1|#F580B1}} {{Text|TO|#F0F0F0}} {{Text|255|#F580B1}}: {{Text|CLOSE|#F0F0F0}} closeall: {{Text|NEXT|#F0F0F0}}
| |
|
| |
| {{Text|OPEN|#F0F0F0}} tmpdir$ + {{Text|"temp.bin"|#FFB100}} {{Text|FOR|#F0F0F0}} {{Text|OUTPUT|#F0F0F0}} {{Text|LOCK|#F0F0F0}} {{Text|WRITE|#F0F0F0}} {{Text|AS|#F0F0F0}} #26 {{Text|'relock|#31C4C4}}
| |
|
| |
| bh = OpenBuffer%({{Text|"O"|#FFB100}}, tmpdir$ + {{Text|"dyninfo.txt"|#FFB100}})
| |
|
| |
| {{Text|IF|#F0F0F0}} Debug {{Text|THEN|#F0F0F0}} {{Text|CLOSE|#F0F0F0}} #9: {{Text|OPEN|#F0F0F0}} tmpdir$ + {{Text|"debug.txt"|#FFB100}} {{Text|FOR|#F0F0F0}} {{Text|OUTPUT|#F0F0F0}} {{Text|AS|#F0F0F0}} #9
| |
|
| |
| {{Text|FOR|#F0F0F0}} i = {{Text|1|#F580B1}} {{Text|TO|#F0F0F0}} ids_max + {{Text|1|#F580B1}}
| |
| arrayelementslist(i) = {{Text|0|#F580B1}}
| |
| cmemlist(i) = {{Text|0|#F580B1}}
| |
| sfcmemargs(i) = {{Text|""|#FFB100}}
| |
| {{Text|NEXT|#F0F0F0}}
| |
|
| |
| {{Text|'erase cmemlist|#31C4C4}}
| |
| {{Text|'erase sfcmemargs|#31C4C4}}
| |
|
| |
| lastunresolved = {{Text|-1|#F580B1}} {{Text|'first pass|#31C4C4}}
| |
| sflistn = {{Text|-1|#F580B1}} {{Text|'no entries|#31C4C4}}
| |
|
| |
| SubNameLabels = sp {{Text|'QB64 will perform a repass to resolve sub names used as labels|#31C4C4}}
| |
|
| |
| vWatchDesiredState = {{Text|0|#F580B1}}
| |
| vWatchRecompileAttempts = {{Text|0|#F580B1}}
| |
|
| |
| qb64prefix_set_desiredState = {{Text|0|#F580B1}}
| |
| qb64prefix_set_recompileAttempts = {{Text|0|#F580B1}}
| |
|
| |
| opex_desiredState = {{Text|0|#F580B1}}
| |
| opex_recompileAttempts = {{Text|0|#F580B1}}
| |
|
| |
| opexarray_desiredState = {{Text|0|#F580B1}}
| |
| opexarray_recompileAttempts = {{Text|0|#F580B1}}
| |
|
| |
| recompile:
| |
| vWatchOn = vWatchDesiredState
| |
| vWatchVariable {{Text|""|#FFB100}}, {{Text|-1|#F580B1}} {{Text|'reset internal variables list|#31C4C4}}
| |
|
| |
| qb64prefix_set = qb64prefix_set_desiredState
| |
| qb64prefix$ = {{Text|"_"|#FFB100}}
| |
|
| |
| optionexplicit = opex_desiredState
| |
| {{Text|IF|#F0F0F0}} optionexplicit_cmd = {{Text|-1|#F580B1}} {{Text|AND|#F0F0F0}} NoIDEMode = {{Text|1|#F580B1}} {{Text|THEN|#F0F0F0}} optionexplicit = {{Text|-1|#F580B1}}
| |
| optionexplicitarray = opexarray_desiredState
| |
|
| |
| lastLineReturn = {{Text|0|#F580B1}}
| |
| lastLine = {{Text|0|#F580B1}}
| |
| firstLine = {{Text|1|#F580B1}}
| |
|
| |
| {{Text|_Resize|#F0F0F0}} = {{Text|0|#F580B1}}
| |
| Resize_Scale = {{Text|0|#F580B1}}
| |
|
| |
| UseGL = {{Text|0|#F580B1}}
| |
|
| |
| Error_Happened = {{Text|0|#F580B1}}
| |
|
| |
| HashClear {{Text|'clear the hash table|#31C4C4}}
| |
|
| |
| {{Text|'add reserved words to hashtable|#31C4C4}}
| |
|
| |
| f = HASHFLAG_TYPE + HASHFLAG_RESERVED
| |
| HashAdd {{Text|"_UNSIGNED"|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| HashAdd {{Text|"_BIT"|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| HashAdd {{Text|"_BYTE"|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| HashAdd {{Text|"INTEGER"|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| HashAdd {{Text|"LONG"|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| HashAdd {{Text|"_INTEGER64"|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| HashAdd {{Text|"_OFFSET"|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| HashAdd {{Text|"SINGLE"|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| HashAdd {{Text|"DOUBLE"|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| HashAdd {{Text|"_FLOAT"|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| HashAdd {{Text|"STRING"|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| HashAdd {{Text|"ANY"|#FFB100}}, f, {{Text|0|#F580B1}}
| |
|
| |
| f = HASHFLAG_OPERATOR + HASHFLAG_RESERVED
| |
| HashAdd {{Text|"NOT"|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| HashAdd {{Text|"IMP"|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| HashAdd {{Text|"EQV"|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| HashAdd {{Text|"AND"|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| HashAdd {{Text|"OR"|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| HashAdd {{Text|"XOR"|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| HashAdd {{Text|"MOD"|#FFB100}}, f, {{Text|0|#F580B1}}
| |
|
| |
| f = HASHFLAG_RESERVED + HASHFLAG_CUSTOMSYNTAX
| |
| HashAdd {{Text|"LIST"|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| HashAdd {{Text|"BASE"|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| HashAdd {{Text|"_EXPLICIT"|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| HashAdd {{Text|"AS"|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| HashAdd {{Text|"IS"|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| HashAdd {{Text|"OFF"|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| HashAdd {{Text|"ON"|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| HashAdd {{Text|"STOP"|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| HashAdd {{Text|"TO"|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| HashAdd {{Text|"USING"|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| {{Text|'PUT(graphics) statement:|#31C4C4}}
| |
| HashAdd {{Text|"PRESET"|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| HashAdd {{Text|"PSET"|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| {{Text|'OPEN statement:|#31C4C4}}
| |
| HashAdd {{Text|"FOR"|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| HashAdd {{Text|"OUTPUT"|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| HashAdd {{Text|"RANDOM"|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| HashAdd {{Text|"BINARY"|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| HashAdd {{Text|"APPEND"|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| HashAdd {{Text|"SHARED"|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| HashAdd {{Text|"ACCESS"|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| HashAdd {{Text|"LOCK"|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| HashAdd {{Text|"READ"|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| HashAdd {{Text|"WRITE"|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| {{Text|'LINE statement:|#31C4C4}}
| |
| HashAdd {{Text|"STEP"|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| {{Text|'WIDTH statement:|#31C4C4}}
| |
| HashAdd {{Text|"LPRINT"|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| {{Text|'VIEW statement:|#31C4C4}}
| |
| HashAdd {{Text|"PRINT"|#FFB100}}, f, {{Text|0|#F580B1}}
| |
|
| |
| f = HASHFLAG_RESERVED + HASHFLAG_XELEMENTNAME + HASHFLAG_XTYPENAME
| |
| {{Text|'A|#31C4C4}}
| |
| {{Text|'B|#31C4C4}}
| |
| {{Text|'C|#31C4C4}}
| |
| HashAdd {{Text|"COMMON"|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| HashAdd {{Text|"CALL"|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| HashAdd {{Text|"CASE"|#FFB100}}, f - HASHFLAG_XELEMENTNAME, {{Text|0|#F580B1}}
| |
| HashAdd {{Text|"COM"|#FFB100}}, f, {{Text|0|#F580B1}} {{Text|'(ON...)|#31C4C4}}
| |
| HashAdd {{Text|"CONST"|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| {{Text|'D|#31C4C4}}
| |
| HashAdd {{Text|"DATA"|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| HashAdd {{Text|"DECLARE"|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| HashAdd {{Text|"DEF"|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| HashAdd {{Text|"DEFDBL"|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| HashAdd {{Text|"DEFINT"|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| HashAdd {{Text|"DEFLNG"|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| HashAdd {{Text|"DEFSNG"|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| HashAdd {{Text|"DEFSTR"|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| HashAdd {{Text|"DIM"|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| HashAdd {{Text|"DO"|#FFB100}}, f - HASHFLAG_XELEMENTNAME, {{Text|0|#F580B1}}
| |
| {{Text|'E|#31C4C4}}
| |
| HashAdd {{Text|"ERROR"|#FFB100}}, f - HASHFLAG_XELEMENTNAME, {{Text|0|#F580B1}} {{Text|'(ON ...)|#31C4C4}}
| |
| HashAdd {{Text|"ELSE"|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| HashAdd {{Text|"ELSEIF"|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| HashAdd {{Text|"ENDIF"|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| HashAdd {{Text|"EXIT"|#FFB100}}, f - HASHFLAG_XELEMENTNAME, {{Text|0|#F580B1}}
| |
| {{Text|'F|#31C4C4}}
| |
| HashAdd {{Text|"FIELD"|#FFB100}}, f - HASHFLAG_XELEMENTNAME, {{Text|0|#F580B1}}
| |
| HashAdd {{Text|"FUNCTION"|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| {{Text|'G|#31C4C4}}
| |
| HashAdd {{Text|"GOSUB"|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| HashAdd {{Text|"GOTO"|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| {{Text|'H|#31C4C4}}
| |
| {{Text|'I|#31C4C4}}
| |
| HashAdd {{Text|"INPUT"|#FFB100}}, f - HASHFLAG_XELEMENTNAME - HASHFLAG_XTYPENAME, {{Text|0|#F580B1}} {{Text|'(INPUT$ function exists, so conflicts if allowed as custom syntax)|#31C4C4}}
| |
| HashAdd {{Text|"IF"|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| {{Text|'K|#31C4C4}}
| |
| HashAdd {{Text|"KEY"|#FFB100}}, f - HASHFLAG_XELEMENTNAME - HASHFLAG_XTYPENAME, {{Text|0|#F580B1}} {{Text|'(ON...)|#31C4C4}}
| |
| {{Text|'L|#31C4C4}}
| |
| HashAdd {{Text|"LET"|#FFB100}}, f - HASHFLAG_XELEMENTNAME, {{Text|0|#F580B1}}
| |
| HashAdd {{Text|"LOOP"|#FFB100}}, f - HASHFLAG_XELEMENTNAME, {{Text|0|#F580B1}}
| |
| HashAdd {{Text|"LEN"|#FFB100}}, f - HASHFLAG_XELEMENTNAME, {{Text|0|#F580B1}} {{Text|'(LEN function exists, so conflicts if allowed as custom syntax)|#31C4C4}}
| |
| {{Text|'M|#31C4C4}}
| |
| {{Text|'N|#31C4C4}}
| |
| HashAdd {{Text|"NEXT"|#FFB100}}, f - HASHFLAG_XELEMENTNAME, {{Text|0|#F580B1}}
| |
| {{Text|'O|#31C4C4}}
| |
| {{Text|'P|#31C4C4}}
| |
| HashAdd {{Text|"PLAY"|#FFB100}}, f - HASHFLAG_XELEMENTNAME - HASHFLAG_XTYPENAME, {{Text|0|#F580B1}} {{Text|'(ON...)|#31C4C4}}
| |
| HashAdd {{Text|"PEN"|#FFB100}}, f - HASHFLAG_XELEMENTNAME - HASHFLAG_XTYPENAME, {{Text|0|#F580B1}} {{Text|'(ON...)|#31C4C4}}
| |
| {{Text|'Q|#31C4C4}}
| |
| {{Text|'R|#31C4C4}}
| |
| HashAdd {{Text|"REDIM"|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| HashAdd {{Text|"REM"|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| HashAdd {{Text|"RESTORE"|#FFB100}}, f - HASHFLAG_XELEMENTNAME, {{Text|0|#F580B1}}
| |
| HashAdd {{Text|"RESUME"|#FFB100}}, f - HASHFLAG_XELEMENTNAME, {{Text|0|#F580B1}}
| |
| HashAdd {{Text|"RETURN"|#FFB100}}, f - HASHFLAG_XELEMENTNAME, {{Text|0|#F580B1}}
| |
| HashAdd {{Text|"RUN"|#FFB100}}, f - HASHFLAG_XELEMENTNAME, {{Text|0|#F580B1}}
| |
| {{Text|'S|#31C4C4}}
| |
| HashAdd {{Text|"STATIC"|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| HashAdd {{Text|"STRIG"|#FFB100}}, f, {{Text|0|#F580B1}} {{Text|'(ON...)|#31C4C4}}
| |
| HashAdd {{Text|"SEG"|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| HashAdd {{Text|"SELECT"|#FFB100}}, f - HASHFLAG_XELEMENTNAME - HASHFLAG_XTYPENAME, {{Text|0|#F580B1}}
| |
| HashAdd {{Text|"SUB"|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| HashAdd {{Text|"SCREEN"|#FFB100}}, f - HASHFLAG_XELEMENTNAME - HASHFLAG_XTYPENAME, {{Text|0|#F580B1}}
| |
| {{Text|'T|#31C4C4}}
| |
| HashAdd {{Text|"THEN"|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| HashAdd {{Text|"TIMER"|#FFB100}}, f - HASHFLAG_XELEMENTNAME - HASHFLAG_XTYPENAME, {{Text|0|#F580B1}} {{Text|'(ON...)|#31C4C4}}
| |
| HashAdd {{Text|"TYPE"|#FFB100}}, f - HASHFLAG_XELEMENTNAME, {{Text|0|#F580B1}}
| |
| {{Text|'U|#31C4C4}}
| |
| HashAdd {{Text|"UNTIL"|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| HashAdd {{Text|"UEVENT"|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| {{Text|'V|#31C4C4}}
| |
| {{Text|'W|#31C4C4}}
| |
| HashAdd {{Text|"WEND"|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| HashAdd {{Text|"WHILE"|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| {{Text|'X|#31C4C4}}
| |
| {{Text|'Y|#31C4C4}}
| |
| {{Text|'Z|#31C4C4}}
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
| {{Text|'clear/init variables|#31C4C4}}
| |
| {{Text|_Console|#F0F0F0}} = {{Text|0|#F580B1}}
| |
| {{Text|_ScreenHide|#F0F0F0}} = {{Text|0|#F580B1}}
| |
| Asserts = {{Text|0|#F580B1}}
| |
| ResolveStaticFunctions = {{Text|0|#F580B1}}
| |
| dynamiclibrary = {{Text|0|#F580B1}}
| |
| dimsfarray = {{Text|0|#F580B1}}
| |
| dimstatic = {{Text|0|#F580B1}}
| |
| AllowLocalName = {{Text|0|#F580B1}}
| |
| PossibleSubNameLabels = sp {{Text|'QB64 will perform a repass to resolve sub names used as labels|#31C4C4}}
| |
| use_global_byte_elements = {{Text|0|#F580B1}}
| |
| dimshared = {{Text|0|#F580B1}}: dimmethod = {{Text|0|#F580B1}}: dimoption = {{Text|0|#F580B1}}: redimoption = {{Text|0|#F580B1}}: commonoption = {{Text|0|#F580B1}}
| |
| mylib$ = {{Text|""|#FFB100}}: mylibopt$ = {{Text|""|#FFB100}}
| |
| declaringlibrary = {{Text|0|#F580B1}}
| |
| nLabels = {{Text|0|#F580B1}}
| |
| dynscope = {{Text|0|#F580B1}}
| |
| elsefollowup = {{Text|0|#F580B1}}
| |
| ontimerid = {{Text|0|#F580B1}}: onkeyid = {{Text|0|#F580B1}}: onstrigid = {{Text|0|#F580B1}}
| |
| commonarraylist = {{Text|""|#FFB100}}: commonarraylistn = {{Text|0|#F580B1}}
| |
| staticarraylist = {{Text|""|#FFB100}}: staticarraylistn = {{Text|0|#F580B1}}
| |
| fooindwel = {{Text|0|#F580B1}}
| |
| layout = {{Text|""|#FFB100}}
| |
| layoutok = {{Text|0|#F580B1}}
| |
| NoChecks = {{Text|0|#F580B1}}
| |
| inclevel = {{Text|0|#F580B1}}
| |
| errorLineInInclude = {{Text|0|#F580B1}}
| |
| addmetainclude$ = {{Text|""|#FFB100}}
| |
| nextrunlineindex = {{Text|1|#F580B1}}
| |
| lasttype = {{Text|0|#F580B1}}
| |
| lasttypeelement = {{Text|0|#F580B1}}
| |
| {{Text|REDIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} udtxname({{Text|1000|#F580B1}}) {{Text|AS|#F0F0F0}} {{Text|STRING|#F0F0F0}} * {{Text|256|#F580B1}}
| |
| {{Text|REDIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} udtxcname({{Text|1000|#F580B1}}) {{Text|AS|#F0F0F0}} {{Text|STRING|#F0F0F0}} * {{Text|256|#F580B1}}
| |
| {{Text|REDIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} udtxsize({{Text|1000|#F580B1}}) {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}}
| |
| {{Text|REDIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} udtxbytealign({{Text|1000|#F580B1}}) {{Text|AS|#F0F0F0}} {{Text|INTEGER|#F0F0F0}} {{Text|'first element MUST be on a byte alignment & size is a multiple of 8|#31C4C4}}
| |
| {{Text|REDIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} udtxnext({{Text|1000|#F580B1}}) {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}}
| |
| {{Text|REDIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} udtxvariable({{Text|1000|#F580B1}}) {{Text|AS|#F0F0F0}} {{Text|INTEGER|#F0F0F0}} {{Text|'true if the udt contains variable length elements|#31C4C4}}
| |
| {{Text|'elements|#31C4C4}}
| |
| {{Text|REDIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} udtename({{Text|1000|#F580B1}}) {{Text|AS|#F0F0F0}} {{Text|STRING|#F0F0F0}} * {{Text|256|#F580B1}}
| |
| {{Text|REDIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} udtecname({{Text|1000|#F580B1}}) {{Text|AS|#F0F0F0}} {{Text|STRING|#F0F0F0}} * {{Text|256|#F580B1}}
| |
| {{Text|REDIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} udtebytealign({{Text|1000|#F580B1}}) {{Text|AS|#F0F0F0}} {{Text|INTEGER|#F0F0F0}}
| |
| {{Text|REDIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} udtesize({{Text|1000|#F580B1}}) {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}}
| |
| {{Text|REDIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} udtetype({{Text|1000|#F580B1}}) {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}}
| |
| {{Text|REDIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} udtetypesize({{Text|1000|#F580B1}}) {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}}
| |
| {{Text|REDIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} udtearrayelements({{Text|1000|#F580B1}}) {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}}
| |
| {{Text|REDIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} udtenext({{Text|1000|#F580B1}}) {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}}
| |
| definingtype = {{Text|0|#F580B1}}
| |
| definingtypeerror = {{Text|0|#F580B1}}
| |
| constlast = {{Text|-1|#F580B1}}
| |
| {{Text|'constlastshared = -1|#31C4C4}}
| |
| closedmain = {{Text|0|#F580B1}}
| |
| addmetastatic = {{Text|0|#F580B1}}
| |
| addmetadynamic = {{Text|0|#F580B1}}
| |
| DynamicMode = {{Text|0|#F580B1}}
| |
| optionbase = {{Text|0|#F580B1}}
| |
| ExeIconSet = {{Text|0|#F580B1}}
| |
| VersionInfoSet = {{Text|0|#F580B1}}
| |
| viFileVersionNum$ = {{Text|""|#FFB100}}: viProductVersionNum$ = {{Text|""|#FFB100}}: viCompanyName$ = {{Text|""|#FFB100}}
| |
| viFileDescription$ = {{Text|""|#FFB100}}: viFileVersion$ = {{Text|""|#FFB100}}: viInternalName$ = {{Text|""|#FFB100}}
| |
| viLegalCopyright$ = {{Text|""|#FFB100}}: viLegalTrademarks$ = {{Text|""|#FFB100}}: viOriginalFilename$ = {{Text|""|#FFB100}}
| |
| viProductName$ = {{Text|""|#FFB100}}: viProductVersion$ = {{Text|""|#FFB100}}: viComments$ = {{Text|""|#FFB100}}: viWeb$ = {{Text|""|#FFB100}}
| |
| DataOffset = {{Text|0|#F580B1}}
| |
| statementn = {{Text|0|#F580B1}}
| |
| everycasenewcase = {{Text|0|#F580B1}}
| |
| qberrorhappened = {{Text|0|#F580B1}}: qberrorcode = {{Text|0|#F580B1}}: qberrorline = {{Text|0|#F580B1}}
| |
| {{Text|FOR|#F0F0F0}} i = {{Text|1|#F580B1}} {{Text|TO|#F0F0F0}} {{Text|27|#F580B1}}: defineaz(i) = {{Text|"SINGLE"|#FFB100}}: defineextaz(i) = {{Text|"!"|#FFB100}}: {{Text|NEXT|#F0F0F0}}
| |
| controllevel = {{Text|0|#F580B1}}
| |
| findidsecondarg$ = {{Text|""|#FFB100}}: findanotherid = {{Text|0|#F580B1}}: findidinternal = {{Text|0|#F580B1}}: currentid = {{Text|0|#F580B1}}
| |
| linenumber = {{Text|0|#F580B1}}
| |
| wholeline$ = {{Text|""|#FFB100}}
| |
| linefragment$ = {{Text|""|#FFB100}}
| |
| idn = {{Text|0|#F580B1}}
| |
| arrayprocessinghappened = {{Text|0|#F580B1}}
| |
| stringprocessinghappened = {{Text|0|#F580B1}}
| |
| inputfunctioncalled = {{Text|0|#F580B1}}
| |
| subfuncn = {{Text|0|#F580B1}}
| |
| closedsubfunc = {{Text|0|#F580B1}}
| |
| subfunc = {{Text|""|#FFB100}}
| |
| SelectCaseCounter = {{Text|0|#F580B1}}
| |
| ExecCounter = {{Text|0|#F580B1}}
| |
| UserDefineCount = {{Text|7|#F580B1}}
| |
| totalVariablesCreated = {{Text|0|#F580B1}}
| |
| typeDefinitions$ = {{Text|""|#FFB100}}
| |
| totalMainVariablesCreated = {{Text|0|#F580B1}}
| |
| {{Text|REDIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} usedVariableList({{Text|1000|#F580B1}}) {{Text|AS|#F0F0F0}} usedVarList
| |
| totalWarnings = {{Text|0|#F580B1}}
| |
| duplicateConstWarning = {{Text|0|#F580B1}}
| |
| emptySCWarning = {{Text|0|#F580B1}}
| |
| warningListItems = {{Text|0|#F580B1}}
| |
| lastWarningHeader = {{Text|""|#FFB100}}
| |
| vWatchUsedLabels = {{Text|SPACE$|#F0F0F0}}({{Text|1000|#F580B1}})
| |
| vWatchUsedSkipLabels = {{Text|SPACE$|#F0F0F0}}({{Text|1000|#F580B1}})
| |
| firstLineNumberLabelvWatch = {{Text|0|#F580B1}}
| |
| {{Text|REDIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} warning$({{Text|1000|#F580B1}})
| |
| {{Text|REDIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} warningLines({{Text|1000|#F580B1}}) {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}}
| |
| {{Text|REDIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} warningIncLines({{Text|1000|#F580B1}}) {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}}
| |
| {{Text|REDIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} warningIncFiles({{Text|1000|#F580B1}}) {{Text|AS|#F0F0F0}} {{Text|STRING|#F0F0F0}}
| |
| maxLineNumber = {{Text|0|#F580B1}}
| |
| uniquenumbern = {{Text|0|#F580B1}}
| |
|
| |
|
| |
| {{Text|''create a type for storing memory blocks|#31C4C4}}
| |
| {{Text|''UDT|#31C4C4}}
| |
| {{Text|''names|#31C4C4}}
| |
| {{Text|'DIM SHARED lasttype AS LONG|#31C4C4}}
| |
| {{Text|'DIM SHARED udtxname(1000) AS STRING * 256|#31C4C4}}
| |
| {{Text|'DIM SHARED udtxcname(1000) AS STRING * 256|#31C4C4}}
| |
| {{Text|'DIM SHARED udtxsize(1000) AS LONG|#31C4C4}}
| |
| {{Text|'DIM SHARED udtxbytealign(1000) AS INTEGER 'first element MUST be on a byte alignment & size is a multiple of 8|#31C4C4}}
| |
| {{Text|'DIM SHARED udtxnext(1000) AS LONG|#31C4C4}}
| |
| {{Text|''elements|#31C4C4}}
| |
| {{Text|'DIM SHARED lasttypeelement AS LONG|#31C4C4}}
| |
| {{Text|'DIM SHARED udtename(1000) AS STRING * 256|#31C4C4}}
| |
| {{Text|'DIM SHARED udtecname(1000) AS STRING * 256|#31C4C4}}
| |
| {{Text|'DIM SHARED udtebytealign(1000) AS INTEGER|#31C4C4}}
| |
| {{Text|'DIM SHARED udtesize(1000) AS LONG|#31C4C4}}
| |
| {{Text|'DIM SHARED udtetype(1000) AS LONG|#31C4C4}}
| |
| {{Text|'DIM SHARED udtetypesize(1000) AS LONG|#31C4C4}}
| |
| {{Text|'DIM SHARED udtearrayelements(1000) AS LONG|#31C4C4}}
| |
| {{Text|'DIM SHARED udtenext(1000) AS LONG|#31C4C4}}
| |
|
| |
| {{Text|'import _MEM type|#31C4C4}}
| |
| ptrsz = OS_BITS \ {{Text|8|#F580B1}}
| |
|
| |
| lasttype = lasttype + {{Text|1|#F580B1}}: i = lasttype
| |
| udtxname(i) = {{Text|"_MEM"|#FFB100}}
| |
| udtxcname(i) = {{Text|"_MEM"|#FFB100}}
| |
| udtxsize(i) = ((ptrsz) * {{Text|5|#F580B1}} + ({{Text|4|#F580B1}}) * {{Text|2|#F580B1}} + ({{Text|8|#F580B1}}) * {{Text|1|#F580B1}}) * {{Text|8|#F580B1}}
| |
| udtxbytealign(i) = {{Text|1|#F580B1}}
| |
| lasttypeelement = lasttypeelement + {{Text|1|#F580B1}}: i2 = lasttypeelement
| |
| udtename(i2) = {{Text|"OFFSET"|#FFB100}}
| |
| udtecname(i2) = {{Text|"OFFSET"|#FFB100}}
| |
| udtebytealign(i2) = {{Text|1|#F580B1}}
| |
| udtetype(i2) = OFFSETTYPE: udtesize(i2) = ptrsz * {{Text|8|#F580B1}}
| |
| udtetypesize(i2) = {{Text|0|#F580B1}} {{Text|'tsize|#31C4C4}}
| |
| udtxnext(i) = i2
| |
| i3 = i2
| |
| lasttypeelement = lasttypeelement + {{Text|1|#F580B1}}: i2 = lasttypeelement
| |
| udtename(i2) = {{Text|"SIZE"|#FFB100}}
| |
| udtecname(i2) = {{Text|"SIZE"|#FFB100}}
| |
| udtebytealign(i2) = {{Text|1|#F580B1}}
| |
| udtetype(i2) = OFFSETTYPE: udtesize(i2) = ptrsz * {{Text|8|#F580B1}}
| |
| udtetypesize(i2) = {{Text|0|#F580B1}} {{Text|'tsize|#31C4C4}}
| |
| udtenext(i3) = i2
| |
| i3 = i2
| |
| lasttypeelement = lasttypeelement + {{Text|1|#F580B1}}: i2 = lasttypeelement
| |
| udtename(i2) = {{Text|"$_LOCK_ID"|#FFB100}}
| |
| udtecname(i2) = {{Text|"$_LOCK_ID"|#FFB100}}
| |
| udtebytealign(i2) = {{Text|1|#F580B1}}
| |
| udtetype(i2) = INTEGER64TYPE: udtesize(i2) = {{Text|64|#F580B1}}
| |
| udtetypesize(i2) = {{Text|0|#F580B1}} {{Text|'tsize|#31C4C4}}
| |
| udtenext(i3) = i2
| |
| i3 = i2
| |
| lasttypeelement = lasttypeelement + {{Text|1|#F580B1}}: i2 = lasttypeelement
| |
| udtename(i2) = {{Text|"$_LOCK_OFFSET"|#FFB100}}
| |
| udtecname(i2) = {{Text|"$_LOCK_OFFSET"|#FFB100}}
| |
| udtebytealign(i2) = {{Text|1|#F580B1}}
| |
| udtetype(i2) = OFFSETTYPE: udtesize(i2) = ptrsz * {{Text|8|#F580B1}}
| |
| udtetypesize(i2) = {{Text|0|#F580B1}} {{Text|'tsize|#31C4C4}}
| |
| udtenext(i3) = i2
| |
| i3 = i2
| |
| lasttypeelement = lasttypeelement + {{Text|1|#F580B1}}: i2 = lasttypeelement
| |
| udtename(i2) = {{Text|"TYPE"|#FFB100}}
| |
| udtecname(i2) = {{Text|"TYPE"|#FFB100}}
| |
| udtebytealign(i2) = {{Text|1|#F580B1}}
| |
| udtetype(i2) = OFFSETTYPE: udtesize(i2) = ptrsz * {{Text|8|#F580B1}}
| |
| udtetypesize(i2) = {{Text|0|#F580B1}} {{Text|'tsize|#31C4C4}}
| |
| udtenext(i3) = i2
| |
| i3 = i2
| |
| lasttypeelement = lasttypeelement + {{Text|1|#F580B1}}: i2 = lasttypeelement
| |
| udtename(i2) = {{Text|"ELEMENTSIZE"|#FFB100}}
| |
| udtecname(i2) = {{Text|"ELEMENTSIZE"|#FFB100}}
| |
| udtebytealign(i2) = {{Text|1|#F580B1}}
| |
| udtetype(i2) = OFFSETTYPE: udtesize(i2) = ptrsz * {{Text|8|#F580B1}}
| |
| udtetypesize(i2) = {{Text|0|#F580B1}} {{Text|'tsize|#31C4C4}}
| |
| udtenext(i3) = i2
| |
| udtenext(i2) = {{Text|0|#F580B1}}
| |
| i3 = i2
| |
| lasttypeelement = lasttypeelement + {{Text|1|#F580B1}}: i2 = lasttypeelement
| |
| udtename(i2) = {{Text|"IMAGE"|#FFB100}}
| |
| udtecname(i2) = {{Text|"IMAGE"|#FFB100}}
| |
| udtebytealign(i2) = {{Text|1|#F580B1}}
| |
| udtetype(i2) = LONGTYPE: udtesize(i2) = {{Text|32|#F580B1}}
| |
| udtetypesize(i2) = {{Text|0|#F580B1}} {{Text|'tsize|#31C4C4}}
| |
| udtenext(i3) = i2
| |
| udtenext(i2) = {{Text|0|#F580B1}}
| |
| i3 = i2
| |
| lasttypeelement = lasttypeelement + {{Text|1|#F580B1}}: i2 = lasttypeelement
| |
| udtename(i2) = {{Text|"SOUND"|#FFB100}}
| |
| udtecname(i2) = {{Text|"SOUND"|#FFB100}}
| |
| udtebytealign(i2) = {{Text|1|#F580B1}}
| |
| udtetype(i2) = LONGTYPE: udtesize(i2) = {{Text|32|#F580B1}}
| |
| udtetypesize(i2) = {{Text|0|#F580B1}} {{Text|'tsize|#31C4C4}}
| |
| udtenext(i3) = i2
| |
| udtenext(i2) = {{Text|0|#F580B1}}
| |
|
| |
| {{Text|' Reset all unstable flags|#31C4C4}}
| |
| {{Text|FOR|#F0F0F0}} i = {{Text|1|#F580B1}} {{Text|TO|#F0F0F0}} {{Text|UBOUND|#F0F0F0}}(unstableFlags): unstableFlags(i) = {{Text|0|#F580B1}}: {{Text|NEXT|#F0F0F0}}
| |
|
| |
| {{Text|' Indicates if a MIDI sound font was selected|#31C4C4}}
| |
| {{Text|'|#31C4C4}}
| |
| {{Text|' Captures both the line number and line contents for error reporting later-on|#31C4C4}}
| |
| {{Text|' in the compilation process|#31C4C4}}
| |
| MidiSoundFontSet = {{Text|0|#F580B1}}
| |
| MidiSoundFontLine$ = {{Text|""|#FFB100}}
| |
|
| |
| {{Text|' If MidiSoundFont$ is blank, then the default is used|#31C4C4}}
| |
| MidiSoundFont$ = {{Text|""|#FFB100}}
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
| {{Text|'begin compilation|#31C4C4}}
| |
| {{Text|FOR|#F0F0F0}} closeall = {{Text|1|#F580B1}} {{Text|TO|#F0F0F0}} {{Text|255|#F580B1}}: {{Text|CLOSE|#F0F0F0}} closeall: {{Text|NEXT|#F0F0F0}}
| |
| {{Text|OPEN|#F0F0F0}} tmpdir$ + {{Text|"temp.bin"|#FFB100}} {{Text|FOR|#F0F0F0}} {{Text|OUTPUT|#F0F0F0}} {{Text|LOCK|#F0F0F0}} {{Text|WRITE|#F0F0F0}} {{Text|AS|#F0F0F0}} #26 {{Text|'relock|#31C4C4}}
| |
|
| |
| bh = OpenBuffer%({{Text|"O"|#FFB100}}, tmpdir$ + {{Text|"icon.rc"|#FFB100}})
| |
|
| |
| {{Text|IF|#F0F0F0}} Debug {{Text|THEN|#F0F0F0}} {{Text|CLOSE|#F0F0F0}} #9: {{Text|OPEN|#F0F0F0}} tmpdir$ + {{Text|"debug.txt"|#FFB100}} {{Text|FOR|#F0F0F0}} {{Text|APPEND|#F0F0F0}} {{Text|AS|#F0F0F0}} #9
| |
|
| |
| {{Text|IF|#F0F0F0}} idemode = {{Text|0|#F580B1}} {{Text|THEN|#F0F0F0}}
| |
| qberrorhappened = {{Text|-1|#F580B1}}
| |
| {{Text|OPEN|#F0F0F0}} sourcefile$ {{Text|FOR|#F0F0F0}} {{Text|INPUT|#F0F0F0}} {{Text|AS|#F0F0F0}} #1
| |
| qberrorhappened1:
| |
| {{Text|IF|#F0F0F0}} qberrorhappened = {{Text|1|#F580B1}} {{Text|THEN|#F0F0F0}}
| |
| {{Text|PRINT|#F0F0F0}}
| |
| {{Text|PRINT|#F0F0F0}} {{Text|"Cannot locate source file: "|#FFB100}} + sourcefile$
| |
| {{Text|IF|#F0F0F0}} ConsoleMode {{Text|THEN|#F0F0F0}} {{Text|SYSTEM|#F0F0F0}} {{Text|1|#F580B1}}
| |
| {{Text|END|#F0F0F0}} {{Text|1|#F580B1}}
| |
| {{Text|ELSE|#F0F0F0}}
| |
| {{Text|CLOSE|#F0F0F0}} #1
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}}
| |
| qberrorhappened = {{Text|0|#F580B1}}
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}}
| |
|
| |
| reginternal
| |
|
| |
| {{Text|IF|#F0F0F0}} qb64prefix_set {{Text|THEN|#F0F0F0}}
| |
| qb64prefix$ = {{Text|""|#FFB100}}
| |
|
| |
| {{Text|'re-add internal keywords without the "_" prefix|#31C4C4}}
| |
| reginternal
| |
|
| |
| f = HASHFLAG_TYPE + HASHFLAG_RESERVED
| |
| HashAdd {{Text|"UNSIGNED"|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| HashAdd {{Text|"BIT"|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| HashAdd {{Text|"BYTE"|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| HashAdd {{Text|"INTEGER64"|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| HashAdd {{Text|"OFFSET"|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| HashAdd {{Text|"FLOAT"|#FFB100}}, f, {{Text|0|#F580B1}}
| |
|
| |
| f = HASHFLAG_RESERVED + HASHFLAG_CUSTOMSYNTAX
| |
| HashAdd {{Text|"EXPLICIT"|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}}
| |
|
| |
| {{Text|DIM|#F0F0F0}} {{Text|SHARED|#F0F0F0}} GlobTxtBuf: GlobTxtBuf = OpenBuffer%({{Text|"O"|#FFB100}}, tmpdir$ + {{Text|"global.txt"|#FFB100}})
| |
| defdatahandle = GlobTxtBuf
| |
|
| |
| {{Text|IF|#F0F0F0}} iderecompile {{Text|THEN|#F0F0F0}}
| |
| iderecompile = {{Text|0|#F580B1}}
| |
| idepass = {{Text|1|#F580B1}} {{Text|'prepass must be done again|#31C4C4}}
| |
| sendc$ = {{Text|CHR$|#F0F0F0}}({{Text|7|#F580B1}}) {{Text|'repass request|#31C4C4}}
| |
| {{Text|GOTO|#F0F0F0}} sendcommand
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}}
| |
|
| |
| {{Text|IF|#F0F0F0}} idemode {{Text|THEN|#F0F0F0}} {{Text|GOTO|#F0F0F0}} ideret1
| |
|
| |
| lineinput3load sourcefile$
| |
|
| |
| {{Text|DO|#F0F0F0}}
| |
|
| |
| {{Text|'### STEVE EDIT FOR CONST EXPANSION 10/11/2013|#31C4C4}}
| |
|
| |
| wholeline$ = lineinput3$
| |
| {{Text|IF|#F0F0F0}} wholeline$ = {{Text|CHR$|#F0F0F0}}({{Text|13|#F580B1}}) {{Text|THEN|#F0F0F0}} {{Text|EXIT|#F0F0F0}} {{Text|DO|#F0F0F0}}
| |
|
| |
| ideprepass:
| |
| prepassLastLine:
| |
|
| |
| {{Text|IF|#F0F0F0}} lastLine <> {{Text|0|#F580B1}} {{Text|OR|#F0F0F0}} firstLine <> {{Text|0|#F580B1}} {{Text|THEN|#F0F0F0}}
| |
| lineBackup$ = wholeline$ {{Text|'backup the real line (will be blank when lastline is set)|#31C4C4}}
| |
| forceIncludeFromRoot$ = {{Text|""|#FFB100}}
| |
| {{Text|IF|#F0F0F0}} vWatchOn {{Text|THEN|#F0F0F0}}
| |
| addingvWatch = {{Text|1|#F580B1}}
| |
| {{Text|IF|#F0F0F0}} firstLine <> {{Text|0|#F580B1}} {{Text|THEN|#F0F0F0}} forceIncludeFromRoot$ = {{Text|"internal\support\vwatch\vwatch.bi"|#FFB100}}
| |
| {{Text|IF|#F0F0F0}} lastLine <> {{Text|0|#F580B1}} {{Text|THEN|#F0F0F0}} forceIncludeFromRoot$ = {{Text|"internal\support\vwatch\vwatch.bm"|#FFB100}}
| |
| {{Text|ELSE|#F0F0F0}}
| |
| {{Text|'IF firstLine <> 0 THEN forceIncludeFromRoot$ = "internal\support\vwatch\vwatch_stub.bi"|#31C4C4}}
| |
| {{Text|IF|#F0F0F0}} lastLine <> {{Text|0|#F580B1}} {{Text|THEN|#F0F0F0}} forceIncludeFromRoot$ = {{Text|"internal\support\vwatch\vwatch_stub.bm"|#FFB100}}
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}}
| |
| firstLine = {{Text|0|#F580B1}}: lastLine = {{Text|0|#F580B1}}
| |
| {{Text|IF|#F0F0F0}} {{Text|LEN|#F0F0F0}}(forceIncludeFromRoot$) {{Text|THEN|#F0F0F0}} {{Text|GOTO|#F0F0F0}} forceInclude_prepass
| |
| forceIncludeCompleted_prepass:
| |
| addingvWatch = {{Text|0|#F580B1}}
| |
| wholeline$ = lineBackup$
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}}
| |
|
| |
| wholestv$ = wholeline$ {{Text|'### STEVE EDIT FOR CONST EXPANSION 10/11/2013|#31C4C4}}
| |
|
| |
| prepass = {{Text|1|#F580B1}}
| |
| layout = {{Text|""|#FFB100}}
| |
| layoutok = {{Text|0|#F580B1}}
| |
|
| |
| linenumber = linenumber + {{Text|1|#F580B1}}
| |
| reallinenumber = reallinenumber + {{Text|1|#F580B1}}
| |
|
| |
| {{Text|DO|#F0F0F0}} {{Text|UNTIL|#F0F0F0}} linenumber < {{Text|UBOUND|#F0F0F0}}(InValidLine) {{Text|'color information flag for each line|#31C4C4}}
| |
| {{Text|REDIM|#F0F0F0}} {{Text|_PRESERVE|#F0F0F0}} InValidLine({{Text|UBOUND|#F0F0F0}}(InValidLine) + {{Text|1000|#F580B1}}) {{Text|AS|#F0F0F0}} {{Text|_BYTE|#F0F0F0}}
| |
| {{Text|LOOP|#F0F0F0}}
| |
| InValidLine(linenumber) = {{Text|0|#F580B1}}
| |
|
| |
| {{Text|IF|#F0F0F0}} {{Text|LEN|#F0F0F0}}(wholeline$) {{Text|THEN|#F0F0F0}}
| |
|
| |
| {{Text|IF|#F0F0F0}} {{Text|UCASE$|#F0F0F0}}({{Text|_TRIM$|#F0F0F0}}(wholeline$)) = {{Text|"$NOPREFIX"|#FFB100}} {{Text|THEN|#F0F0F0}}
| |
| qb64prefix_set_desiredState = {{Text|1|#F580B1}}
| |
| {{Text|IF|#F0F0F0}} qb64prefix_set = {{Text|0|#F580B1}} {{Text|THEN|#F0F0F0}}
| |
| {{Text|IF|#F0F0F0}} qb64prefix_set_recompileAttempts = {{Text|0|#F580B1}} {{Text|THEN|#F0F0F0}}
| |
| qb64prefix_set_recompileAttempts = qb64prefix_set_recompileAttempts + {{Text|1|#F580B1}}
| |
| {{Text|GOTO|#F0F0F0}} do_recompile
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}}
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}}
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}}
| |
|
| |
| wholeline$ = lineformat(wholeline$)
| |
| {{Text|IF|#F0F0F0}} Error_Happened {{Text|THEN|#F0F0F0}} {{Text|GOTO|#F0F0F0}} errmes
| |
|
| |
|
| |
| temp$ = {{Text|LTRIM$|#F0F0F0}}({{Text|RTRIM$|#F0F0F0}}({{Text|UCASE$|#F0F0F0}}(wholestv$)))
| |
|
| |
| {{Text|IF|#F0F0F0}} temp$ = {{Text|"$COLOR:0"|#FFB100}} {{Text|THEN|#F0F0F0}}
| |
| {{Text|IF|#F0F0F0}} qb64prefix_set {{Text|THEN|#F0F0F0}}
| |
| addmetainclude$ = getfilepath$({{Text|COMMAND$|#F0F0F0}}({{Text|0|#F580B1}})) + {{Text|"internal"|#FFB100}} + pathsep$ + {{Text|"support"|#FFB100}} + pathsep$ + {{Text|"color"|#FFB100}} + pathsep$ + {{Text|"color0_noprefix.bi"|#FFB100}}
| |
| {{Text|ELSE|#F0F0F0}}
| |
| addmetainclude$ = getfilepath$({{Text|COMMAND$|#F0F0F0}}({{Text|0|#F580B1}})) + {{Text|"internal"|#FFB100}} + pathsep$ + {{Text|"support"|#FFB100}} + pathsep$ + {{Text|"color"|#FFB100}} + pathsep$ + {{Text|"color0.bi"|#FFB100}}
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}}
| |
| {{Text|GOTO|#F0F0F0}} finishedlinepp
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}}
| |
|
| |
| {{Text|IF|#F0F0F0}} temp$ = {{Text|"$COLOR:32"|#FFB100}} {{Text|THEN|#F0F0F0}}
| |
| {{Text|IF|#F0F0F0}} qb64prefix_set {{Text|THEN|#F0F0F0}}
| |
| addmetainclude$ = getfilepath$({{Text|COMMAND$|#F0F0F0}}({{Text|0|#F580B1}})) + {{Text|"internal"|#FFB100}} + pathsep$ + {{Text|"support"|#FFB100}} + pathsep$ + {{Text|"color"|#FFB100}} + pathsep$ + {{Text|"color32_noprefix.bi"|#FFB100}}
| |
| {{Text|ELSE|#F0F0F0}}
| |
| addmetainclude$ = getfilepath$({{Text|COMMAND$|#F0F0F0}}({{Text|0|#F580B1}})) + {{Text|"internal"|#FFB100}} + pathsep$ + {{Text|"support"|#FFB100}} + pathsep$ + {{Text|"color"|#FFB100}} + pathsep$ + {{Text|"color32.bi"|#FFB100}}
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}}
| |
| {{Text|GOTO|#F0F0F0}} finishedlinepp
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}}
| |
|
| |
| {{Text|IF|#F0F0F0}} temp$ = {{Text|"$DEBUG"|#FFB100}} {{Text|THEN|#F0F0F0}}
| |
| vWatchDesiredState = {{Text|1|#F580B1}}
| |
| {{Text|IF|#F0F0F0}} vWatchOn = {{Text|0|#F580B1}} {{Text|THEN|#F0F0F0}}
| |
| {{Text|IF|#F0F0F0}} vWatchRecompileAttempts = {{Text|0|#F580B1}} {{Text|THEN|#F0F0F0}}
| |
| {{Text|'this is the first time a conflict has occurred, so react immediately with a full recompilation using the desired state|#31C4C4}}
| |
| vWatchRecompileAttempts = vWatchRecompileAttempts + {{Text|1|#F580B1}}
| |
| {{Text|GOTO|#F0F0F0}} do_recompile
| |
| {{Text|ELSE|#F0F0F0}}
| |
| {{Text|'continue compilation to retrieve the final state requested and act on that as required|#31C4C4}}
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}}
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}}
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}}
| |
|
| |
| {{Text|IF|#F0F0F0}} {{Text|LEFT$|#F0F0F0}}(temp$, {{Text|4|#F580B1}}) = {{Text|"$IF "|#FFB100}} {{Text|THEN|#F0F0F0}}
| |
| {{Text|IF|#F0F0F0}} {{Text|RIGHT$|#F0F0F0}}(temp$, {{Text|5|#F580B1}}) <> {{Text|" THEN"|#FFB100}} {{Text|THEN|#F0F0F0}} a$ = {{Text|"$IF without THEN"|#FFB100}}: {{Text|GOTO|#F0F0F0}} errmes
| |
| temp$ = {{Text|LTRIM$|#F0F0F0}}({{Text|MID$|#F0F0F0}}(temp$, {{Text|4|#F580B1}})) {{Text|'strip off the $IF and extra spaces|#31C4C4}}
| |
| temp$ = {{Text|RTRIM$|#F0F0F0}}({{Text|LEFT$|#F0F0F0}}(temp$, {{Text|LEN|#F0F0F0}}(temp$) - {{Text|4|#F580B1}})) {{Text|'and strip off the THEN and extra spaces|#31C4C4}}
| |
| temp = {{Text|INSTR|#F0F0F0}}(temp$, {{Text|"="|#FFB100}})
| |
| ExecCounter = ExecCounter + {{Text|1|#F580B1}}
| |
| ExecLevel(ExecCounter) = {{Text|-1|#F580B1}} {{Text|'default to a skip value|#31C4C4}}
| |
| DefineElse(ExecCounter) = {{Text|1|#F580B1}} {{Text|'1 says we have an $IF statement at this level|#31C4C4}}
| |
| result = EvalPreIF(temp$, a$)
| |
| {{Text|IF|#F0F0F0}} a$ <> {{Text|""|#FFB100}} {{Text|THEN|#F0F0F0}} {{Text|GOTO|#F0F0F0}} errmes
| |
| {{Text|IF|#F0F0F0}} result <> {{Text|0|#F580B1}} {{Text|THEN|#F0F0F0}}
| |
| ExecLevel(ExecCounter) = ExecLevel(ExecCounter - {{Text|1|#F580B1}}) {{Text|'So we inherit the execlevel from above|#31C4C4}}
| |
| {{Text|IF|#F0F0F0}} ExecLevel(ExecCounter) = {{Text|0|#F580B1}} {{Text|THEN|#F0F0F0}} DefineElse(ExecCounter) = DefineElse(ExecCounter) {{Text|OR|#F0F0F0}} {{Text|4|#F580B1}} {{Text|'Else if used and conditon found|#31C4C4}}
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}}
| |
| {{Text|GOTO|#F0F0F0}} finishedlinepp {{Text|'and then we're finished -- and at this point we didn't make a match so we exit with a DONT READ type flag on our code.|#31C4C4}}
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}}
| |
|
| |
| {{Text|IF|#F0F0F0}} temp$ = {{Text|"$ELSE"|#FFB100}} {{Text|THEN|#F0F0F0}}
| |
| {{Text|IF|#F0F0F0}} DefineElse(ExecCounter) = {{Text|0|#F580B1}} {{Text|THEN|#F0F0F0}} a$ = {{Text|"$ELSE without $IF"|#FFB100}}: {{Text|GOTO|#F0F0F0}} errmes
| |
| {{Text|IF|#F0F0F0}} DefineElse(ExecCounter) {{Text|AND|#F0F0F0}} {{Text|2|#F580B1}} {{Text|THEN|#F0F0F0}} a$ = {{Text|"$IF block already has $ELSE statement in it"|#FFB100}}: {{Text|GOTO|#F0F0F0}} errmes
| |
| DefineElse(ExecCounter) = DefineElse(ExecCounter) {{Text|OR|#F0F0F0}} {{Text|2|#F580B1}} {{Text|'set the flag to declare an $ELSE already in this block|#31C4C4}}
| |
| {{Text|IF|#F0F0F0}} DefineElse(ExecCounter) {{Text|AND|#F0F0F0}} {{Text|4|#F580B1}} {{Text|THEN|#F0F0F0}} {{Text|'If we executed code in a previous IF or ELSE IF statement, we can't do it here|#31C4C4}}
| |
| ExecLevel(ExecCounter) = {{Text|-1|#F580B1}} {{Text|'So we inherit the execlevel from above|#31C4C4}}
| |
| {{Text|ELSE|#F0F0F0}}
| |
| ExecLevel(ExecCounter) = ExecLevel(ExecCounter - {{Text|1|#F580B1}}) {{Text|'If we were processing code before, code after this segment is going to be SKIPPED|#31C4C4}}
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}}
| |
| {{Text|GOTO|#F0F0F0}} finishedlinepp
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}}
| |
|
| |
| {{Text|IF|#F0F0F0}} {{Text|LEFT$|#F0F0F0}}(temp$, {{Text|5|#F580B1}}) = {{Text|"$ELSE"|#FFB100}} {{Text|THEN|#F0F0F0}} {{Text|'looking for $ELSE IF|#31C4C4}}
| |
| temp$ = {{Text|LTRIM$|#F0F0F0}}({{Text|MID$|#F0F0F0}}(temp$, {{Text|6|#F580B1}}))
| |
| {{Text|IF|#F0F0F0}} {{Text|LEFT$|#F0F0F0}}(temp$, {{Text|3|#F580B1}}) = {{Text|"IF "|#FFB100}} {{Text|THEN|#F0F0F0}}
| |
| {{Text|IF|#F0F0F0}} DefineElse(ExecCounter) = {{Text|0|#F580B1}} {{Text|THEN|#F0F0F0}} a$ = {{Text|"$ELSE IF without $IF"|#FFB100}}: {{Text|GOTO|#F0F0F0}} errmes
| |
| {{Text|IF|#F0F0F0}} DefineElse(ExecCounter) {{Text|AND|#F0F0F0}} {{Text|2|#F580B1}} {{Text|THEN|#F0F0F0}} a$ = {{Text|"$ELSE IF cannot follow $ELSE"|#FFB100}}: {{Text|GOTO|#F0F0F0}} errmes
| |
| {{Text|IF|#F0F0F0}} {{Text|RIGHT$|#F0F0F0}}(temp$, {{Text|5|#F580B1}}) <> {{Text|" THEN"|#FFB100}} {{Text|THEN|#F0F0F0}} a$ = {{Text|"$ELSE IF without THEN"|#FFB100}}: {{Text|GOTO|#F0F0F0}} errmes
| |
| {{Text|IF|#F0F0F0}} DefineElse(ExecCounter) {{Text|AND|#F0F0F0}} {{Text|4|#F580B1}} {{Text|THEN|#F0F0F0}} {{Text|'If we executed code in a previous IF or ELSE IF statement, we can't do it here|#31C4C4}}
| |
| ExecLevel(ExecCounter) = {{Text|-1|#F580B1}}
| |
| {{Text|GOTO|#F0F0F0}} finishedlinepp
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}}
| |
| temp$ = {{Text|LTRIM$|#F0F0F0}}({{Text|MID$|#F0F0F0}}(temp$, {{Text|3|#F580B1}})) {{Text|'strip off the IF and extra spaces|#31C4C4}}
| |
| temp$ = {{Text|RTRIM$|#F0F0F0}}({{Text|LEFT$|#F0F0F0}}(temp$, {{Text|LEN|#F0F0F0}}(temp$) - {{Text|4|#F580B1}})) {{Text|'and strip off the THEN and extra spaces|#31C4C4}}
| |
| result = EvalPreIF(temp$, a$)
| |
| {{Text|IF|#F0F0F0}} a$ <> {{Text|""|#FFB100}} {{Text|THEN|#F0F0F0}} {{Text|GOTO|#F0F0F0}} errmes
| |
| {{Text|IF|#F0F0F0}} result <> {{Text|0|#F580B1}} {{Text|THEN|#F0F0F0}}
| |
| ExecLevel(ExecCounter) = ExecLevel(ExecCounter - {{Text|1|#F580B1}}) {{Text|'So we inherit the execlevel from above|#31C4C4}}
| |
| {{Text|IF|#F0F0F0}} ExecLevel(ExecCounter) = {{Text|0|#F580B1}} {{Text|THEN|#F0F0F0}} DefineElse(ExecCounter) = DefineElse(ExecCounter) {{Text|OR|#F0F0F0}} {{Text|4|#F580B1}} {{Text|'Else if used and conditon found|#31C4C4}}
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}}
| |
| {{Text|GOTO|#F0F0F0}} finishedlinepp {{Text|'and then we're finished -- and at this point we didn't make a match so we exit with a DONT READ type flag on our code.|#31C4C4}}
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}}
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}}
| |
|
| |
| {{Text|IF|#F0F0F0}} temp$ = {{Text|"$END IF"|#FFB100}} {{Text|OR|#F0F0F0}} temp$ = {{Text|"$ENDIF"|#FFB100}} {{Text|THEN|#F0F0F0}}
| |
| {{Text|IF|#F0F0F0}} DefineElse(ExecCounter) = {{Text|0|#F580B1}} {{Text|THEN|#F0F0F0}} a$ = {{Text|"$END IF without $IF"|#FFB100}}: {{Text|GOTO|#F0F0F0}} errmes
| |
| DefineElse(ExecCounter) = {{Text|0|#F580B1}} {{Text|'We no longer have an $IF block at this level|#31C4C4}}
| |
| ExecCounter = ExecCounter - {{Text|1|#F580B1}}
| |
| {{Text|GOTO|#F0F0F0}} finishedlinepp
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}}
| |
|
| |
| {{Text|IF|#F0F0F0}} ExecLevel(ExecCounter) {{Text|THEN|#F0F0F0}}
| |
| {{Text|DO|#F0F0F0}} {{Text|UNTIL|#F0F0F0}} linenumber < {{Text|UBOUND|#F0F0F0}}(InValidLine)
| |
| {{Text|REDIM|#F0F0F0}} {{Text|_PRESERVE|#F0F0F0}} InValidLine({{Text|UBOUND|#F0F0F0}}(InValidLine) + {{Text|1000|#F580B1}}) {{Text|AS|#F0F0F0}} {{Text|_BYTE|#F0F0F0}}
| |
| {{Text|LOOP|#F0F0F0}}
| |
|
| |
| InValidLine(linenumber) = {{Text|-1|#F580B1}}
| |
| {{Text|GOTO|#F0F0F0}} finishedlinepp {{Text|'we don't check for anything inside lines that we've marked for skipping|#31C4C4}}
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}}
| |
|
| |
| {{Text|IF|#F0F0F0}} {{Text|LEFT$|#F0F0F0}}(temp$, {{Text|7|#F580B1}}) = {{Text|"$ERROR "|#FFB100}} {{Text|THEN|#F0F0F0}}
| |
| temp$ = {{Text|LTRIM$|#F0F0F0}}({{Text|MID$|#F0F0F0}}(temp$, {{Text|7|#F580B1}}))
| |
| a$ = {{Text|"Compilation check failed: "|#FFB100}} + temp$
| |
| {{Text|GOTO|#F0F0F0}} errmes
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}}
| |
|
| |
| {{Text|IF|#F0F0F0}} {{Text|LEFT$|#F0F0F0}}(temp$, {{Text|5|#F580B1}}) = {{Text|"$LET "|#FFB100}} {{Text|THEN|#F0F0F0}}
| |
| temp$ = {{Text|LTRIM$|#F0F0F0}}({{Text|MID$|#F0F0F0}}(temp$, {{Text|5|#F580B1}})) {{Text|'simply shorten our string to parse|#31C4C4}}
| |
| {{Text|'For starters, let's make certain that we have 3 elements to deal with|#31C4C4}}
| |
| temp = {{Text|INSTR|#F0F0F0}}(temp$, {{Text|"="|#FFB100}}) {{Text|'without an = in there, we can't get a value from the left and right side|#31C4C4}}
| |
| {{Text|IF|#F0F0F0}} temp = {{Text|0|#F580B1}} {{Text|THEN|#F0F0F0}} a$ = {{Text|"Invalid Syntax. $LET <flag> = <value>"|#FFB100}}: {{Text|GOTO|#F0F0F0}} errmes
| |
| l$ = {{Text|RTRIM$|#F0F0F0}}({{Text|LEFT$|#F0F0F0}}(temp$, temp - {{Text|1|#F580B1}})): r$ = {{Text|LTRIM$|#F0F0F0}}({{Text|MID$|#F0F0F0}}(temp$, temp + {{Text|1|#F580B1}}))
| |
| {{Text|'then validate to make certain the left side looks proper|#31C4C4}}
| |
| {{Text|IF|#F0F0F0}} validname(l$) = {{Text|0|#F580B1}} {{Text|THEN|#F0F0F0}} a$ = {{Text|"Invalid flag name"|#FFB100}}: {{Text|GOTO|#F0F0F0}} errmes
| |
| {{Text|IF|#F0F0F0}} {{Text|LEFT$|#F0F0F0}}(r$, {{Text|1|#F580B1}}) = {{Text|CHR$|#F0F0F0}}({{Text|34|#F580B1}}) {{Text|THEN|#F0F0F0}} r$ = {{Text|LTRIM$|#F0F0F0}}({{Text|MID$|#F0F0F0}}(r$, {{Text|2|#F580B1}}))
| |
| {{Text|IF|#F0F0F0}} {{Text|RIGHT$|#F0F0F0}}(r$, {{Text|1|#F580B1}}) = {{Text|CHR$|#F0F0F0}}({{Text|34|#F580B1}}) {{Text|THEN|#F0F0F0}} r$ = {{Text|RTRIM$|#F0F0F0}}({{Text|LEFT$|#F0F0F0}}(r$, {{Text|LEN|#F0F0F0}}(r$) - {{Text|1|#F580B1}}))
| |
| {{Text|IF|#F0F0F0}} {{Text|LEFT$|#F0F0F0}}(r$, {{Text|1|#F580B1}}) = {{Text|"-"|#FFB100}} {{Text|THEN|#F0F0F0}}
| |
| r1$ = {{Text|"-"|#FFB100}}
| |
| r$ = {{Text|LTRIM$|#F0F0F0}}({{Text|MID$|#F0F0F0}}(r$, {{Text|2|#F580B1}}))
| |
| {{Text|ELSE|#F0F0F0}}
| |
| r1$ = {{Text|""|#FFB100}}
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}}
| |
| {{Text|'then validate to make certain the left side looks proper|#31C4C4}}
| |
| {{Text|FOR|#F0F0F0}} i = {{Text|1|#F580B1}} {{Text|TO|#F0F0F0}} {{Text|LEN|#F0F0F0}}(r$)
| |
| a = {{Text|ASC|#F0F0F0}}(r$, i)
| |
| {{Text|SELECT|#F0F0F0}} {{Text|CASE|#F0F0F0}} a
| |
| {{Text|CASE|#F0F0F0}} {{Text|32|#F580B1}}
| |
| {{Text|CASE|#F0F0F0}} {{Text|46|#F580B1}} {{Text|'periods are fine.|#31C4C4}}
| |
| r1$ = r1$ + {{Text|"."|#FFB100}}
| |
| {{Text|CASE|#F0F0F0}} {{Text|IS|#F0F0F0}} < {{Text|48|#F580B1}}, {{Text|IS|#F0F0F0}} > {{Text|90|#F580B1}}
| |
| a$ = {{Text|"Invalid value"|#FFB100}}: {{Text|GOTO|#F0F0F0}} errmes
| |
| {{Text|CASE|#F0F0F0}} {{Text|ELSE|#F0F0F0}}
| |
| r1$ = r1$ + {{Text|CHR$|#F0F0F0}}(a)
| |
| {{Text|END|#F0F0F0}} {{Text|SELECT|#F0F0F0}}
| |
| {{Text|NEXT|#F0F0F0}}
| |
| r$ = r1$
| |
| {{Text|'First look to see if we have an existing setting like this and if so, update it|#31C4C4}}
| |
| {{Text|FOR|#F0F0F0}} i = {{Text|8|#F580B1}} {{Text|TO|#F0F0F0}} UserDefineCount {{Text|'UserDefineCount 1-7 are reserved for automatic OS/BIT detection & version|#31C4C4}}
| |
| {{Text|IF|#F0F0F0}} UserDefine({{Text|0|#F580B1}}, i) = l$ {{Text|THEN|#F0F0F0}} UserDefine({{Text|1|#F580B1}}, i) = r$: {{Text|GOTO|#F0F0F0}} finishedlinepp
| |
| {{Text|NEXT|#F0F0F0}}
| |
| {{Text|'Otherwise create a new setting and set the initial value for it|#31C4C4}}
| |
| UserDefineCount = UserDefineCount + {{Text|1|#F580B1}}
| |
| {{Text|IF|#F0F0F0}} UserDefineCount > {{Text|UBOUND|#F0F0F0}}(UserDefine, {{Text|2|#F580B1}}) {{Text|THEN|#F0F0F0}}
| |
| {{Text|REDIM|#F0F0F0}} {{Text|_PRESERVE|#F0F0F0}} UserDefine({{Text|1|#F580B1}}, {{Text|UBOUND|#F0F0F0}}(UserDefine, {{Text|2|#F580B1}}) + {{Text|10|#F580B1}}) {{Text|'Add another 10 elements to the array so it'll expand as the user adds to it|#31C4C4}}
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}}
| |
| UserDefine({{Text|0|#F580B1}}, UserDefineCount) = l$
| |
| UserDefine({{Text|1|#F580B1}}, UserDefineCount) = r$
| |
| {{Text|GOTO|#F0F0F0}} finishedlinepp
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}}
| |
|
| |
| {{Text|' We check for Unstable flags during the preprocessing step because it|#31C4C4}}
| |
| {{Text|' impacts what valid commands there are in all the other steps|#31C4C4}}
| |
| {{Text|IF|#F0F0F0}} {{Text|LEFT$|#F0F0F0}}(temp$, {{Text|10|#F580B1}}) = {{Text|"$UNSTABLE:"|#FFB100}} {{Text|THEN|#F0F0F0}}
| |
| token$ = {{Text|UCASE$|#F0F0F0}}({{Text|LTRIM$|#F0F0F0}}({{Text|RTRIM$|#F0F0F0}}({{Text|MID$|#F0F0F0}}(temp$, {{Text|11|#F580B1}}))))
| |
|
| |
| {{Text|SELECT|#F0F0F0}} {{Text|CASE|#F0F0F0}} token$
| |
| {{Text|CASE|#F0F0F0}} {{Text|"MIDI"|#FFB100}}
| |
| {{Text|IF|#F0F0F0}} {{Text|NOT|#F0F0F0}} UseMiniaudioBackend {{Text|THEN|#F0F0F0}}
| |
| a$ = {{Text|"Midi is not supported with the old OpenAL audio backend."|#FFB100}}
| |
| {{Text|GOTO|#F0F0F0}} errmes
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}}
| |
|
| |
| unstableFlags(UNSTABLE_MIDI) = {{Text|-1|#F580B1}}
| |
|
| |
| {{Text|CASE|#F0F0F0}} {{Text|"HTTP"|#FFB100}}
| |
| unstableFlags(UNSTABLE_HTTP) = {{Text|-1|#F580B1}}
| |
| regUnstableHttp
| |
|
| |
| {{Text|CASE|#F0F0F0}} {{Text|ELSE|#F0F0F0}}
| |
| a$ = {{Text|"Unrecognized unstable flag "|#FFB100}} + AddQuotes$(token$)
| |
| {{Text|GOTO|#F0F0F0}} errmes
| |
| {{Text|END|#F0F0F0}} {{Text|SELECT|#F0F0F0}}
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}}
| |
|
| |
| cwholeline$ = wholeline$
| |
| wholeline$ = eleucase$(wholeline$) {{Text|'********REMOVE THIS LINE LATER********|#31C4C4}}
| |
|
| |
|
| |
| addmetadynamic = {{Text|0|#F580B1}}: addmetastatic = {{Text|0|#F580B1}}
| |
| wholelinen = numelements(wholeline$)
| |
|
| |
| {{Text|IF|#F0F0F0}} wholelinen {{Text|THEN|#F0F0F0}}
| |
|
| |
| wholelinei = {{Text|1|#F580B1}}
| |
|
| |
| {{Text|'skip line number?|#31C4C4}}
| |
| e$ = getelement$(wholeline$, {{Text|1|#F580B1}})
| |
| {{Text|IF|#F0F0F0}} ({{Text|ASC|#F0F0F0}}(e$) >= {{Text|48|#F580B1}} {{Text|AND|#F0F0F0}} {{Text|ASC|#F0F0F0}}(e$) <= {{Text|59|#F580B1}}) {{Text|OR|#F0F0F0}} {{Text|ASC|#F0F0F0}}(e$) = {{Text|46|#F580B1}} {{Text|THEN|#F0F0F0}} wholelinei = {{Text|2|#F580B1}}: {{Text|GOTO|#F0F0F0}} ppskpl
| |
|
| |
| {{Text|'skip 'POSSIBLE' line label?|#31C4C4}}
| |
| {{Text|IF|#F0F0F0}} wholelinen >= {{Text|2|#F580B1}} {{Text|THEN|#F0F0F0}}
| |
| x2 = {{Text|INSTR|#F0F0F0}}(wholeline$, sp + {{Text|":"|#FFB100}} + sp): x3 = x2 + {{Text|2|#F580B1}}
| |
| {{Text|IF|#F0F0F0}} x2 = {{Text|0|#F580B1}} {{Text|THEN|#F0F0F0}}
| |
| {{Text|IF|#F0F0F0}} {{Text|RIGHT$|#F0F0F0}}(wholeline$, {{Text|2|#F580B1}}) = sp + {{Text|":"|#FFB100}} {{Text|THEN|#F0F0F0}} x2 = {{Text|LEN|#F0F0F0}}(wholeline$) - {{Text|1|#F580B1}}: x3 = x2 + {{Text|1|#F580B1}}
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}}
| |
|
| |
| {{Text|IF|#F0F0F0}} x2 {{Text|THEN|#F0F0F0}}
| |
| e$ = {{Text|LEFT$|#F0F0F0}}(wholeline$, x2 - {{Text|1|#F580B1}})
| |
| {{Text|IF|#F0F0F0}} validlabel(e$) {{Text|THEN|#F0F0F0}}
| |
| wholeline$ = {{Text|RIGHT$|#F0F0F0}}(wholeline$, {{Text|LEN|#F0F0F0}}(wholeline$) - x3)
| |
| cwholeline$ = {{Text|RIGHT$|#F0F0F0}}(cwholeline$, {{Text|LEN|#F0F0F0}}(wholeline$) - x3)
| |
| wholelinen = numelements(wholeline$)
| |
| {{Text|GOTO|#F0F0F0}} ppskpl
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}} {{Text|'valid|#31C4C4}}
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}} {{Text|'includes ":"|#31C4C4}}
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}} {{Text|'wholelinen>=2|#31C4C4}}
| |
|
| |
| ppskpl:
| |
| {{Text|IF|#F0F0F0}} wholelinei <= wholelinen {{Text|THEN|#F0F0F0}}
| |
| {{Text|'----------------------------------------|#31C4C4}}
| |
| a$ = {{Text|""|#FFB100}}
| |
| ca$ = {{Text|""|#FFB100}}
| |
| ppblda:
| |
| e$ = getelement$(wholeline$, wholelinei)
| |
| ce$ = getelement$(cwholeline$, wholelinei)
| |
| {{Text|IF|#F0F0F0}} e$ = {{Text|":"|#FFB100}} {{Text|OR|#F0F0F0}} e$ = {{Text|"ELSE"|#FFB100}} {{Text|OR|#F0F0F0}} e$ = {{Text|"THEN"|#FFB100}} {{Text|OR|#F0F0F0}} e$ = {{Text|""|#FFB100}} {{Text|THEN|#F0F0F0}}
| |
| {{Text|IF|#F0F0F0}} {{Text|LEN|#F0F0F0}}(a$) {{Text|THEN|#F0F0F0}}
| |
| {{Text|IF|#F0F0F0}} Debug {{Text|THEN|#F0F0F0}} {{Text|PRINT|#F0F0F0}} #9, {{Text|"PP["|#FFB100}} + a$ + {{Text|"]"|#FFB100}}
| |
| n = numelements(a$)
| |
| firstelement$ = getelement(a$, {{Text|1|#F580B1}})
| |
| secondelement$ = getelement(a$, {{Text|2|#F580B1}})
| |
| thirdelement$ = getelement(a$, {{Text|3|#F580B1}})
| |
| {{Text|'========================================|#31C4C4}}
| |
|
| |
| {{Text|IF|#F0F0F0}} n = {{Text|2|#F580B1}} {{Text|AND|#F0F0F0}} firstelement$ = {{Text|"END"|#FFB100}} {{Text|AND|#F0F0F0}} (secondelement$ = {{Text|"SUB"|#FFB100}} {{Text|OR|#F0F0F0}} secondelement$ = {{Text|"FUNCTION"|#FFB100}}) {{Text|THEN|#F0F0F0}}
| |
| closedsubfunc = {{Text|-1|#F580B1}}
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}}
| |
|
| |
| {{Text|'declare library|#31C4C4}}
| |
| {{Text|IF|#F0F0F0}} declaringlibrary {{Text|THEN|#F0F0F0}}
| |
|
| |
| {{Text|IF|#F0F0F0}} firstelement$ = {{Text|"END"|#FFB100}} {{Text|THEN|#F0F0F0}}
| |
| {{Text|IF|#F0F0F0}} n <> {{Text|2|#F580B1}} {{Text|OR|#F0F0F0}} secondelement$ <> {{Text|"DECLARE"|#FFB100}} {{Text|THEN|#F0F0F0}} a$ = {{Text|"Expected END DECLARE"|#FFB100}}: {{Text|GOTO|#F0F0F0}} errmes
| |
| declaringlibrary = {{Text|0|#F580B1}}
| |
| {{Text|GOTO|#F0F0F0}} finishedlinepp
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}} {{Text|'end declare|#31C4C4}}
| |
|
| |
| declaringlibrary = {{Text|2|#F580B1}}
| |
|
| |
| {{Text|IF|#F0F0F0}} firstelement$ = {{Text|"SUB"|#FFB100}} {{Text|OR|#F0F0F0}} firstelement$ = {{Text|"FUNCTION"|#FFB100}} {{Text|THEN|#F0F0F0}} subfuncn = subfuncn - {{Text|1|#F580B1}}: {{Text|GOTO|#F0F0F0}} declaresubfunc
| |
|
| |
| a$ = {{Text|"Expected SUB/FUNCTION definition or END DECLARE (#2)"|#FFB100}}: {{Text|GOTO|#F0F0F0}} errmes
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}}
| |
|
| |
| {{Text|'UDT TYPE definition|#31C4C4}}
| |
| {{Text|IF|#F0F0F0}} definingtype {{Text|THEN|#F0F0F0}}
| |
| i = definingtype
| |
|
| |
| {{Text|IF|#F0F0F0}} n >= {{Text|1|#F580B1}} {{Text|THEN|#F0F0F0}}
| |
| {{Text|IF|#F0F0F0}} firstelement$ = {{Text|"END"|#FFB100}} {{Text|THEN|#F0F0F0}}
| |
| {{Text|IF|#F0F0F0}} n <> {{Text|2|#F580B1}} {{Text|OR|#F0F0F0}} secondelement$ <> {{Text|"TYPE"|#FFB100}} {{Text|THEN|#F0F0F0}} a$ = {{Text|"Expected END TYPE"|#FFB100}}: {{Text|GOTO|#F0F0F0}} errmes
| |
| {{Text|IF|#F0F0F0}} udtxnext(i) = {{Text|0|#F580B1}} {{Text|THEN|#F0F0F0}} a$ = {{Text|"No elements defined in TYPE"|#FFB100}}: {{Text|GOTO|#F0F0F0}} errmes
| |
| definingtype = {{Text|0|#F580B1}}
| |
|
| |
| {{Text|'create global buffer for SWAP space|#31C4C4}}
| |
| siz$ = str2$(udtxsize(i) \ {{Text|8|#F580B1}})
| |
| WriteBufLine GlobTxtBuf, {{Text|"char *g_tmp_udt_"|#FFB100}} + {{Text|RTRIM$|#F0F0F0}}(udtxname(i)) + {{Text|"=(char*)malloc("|#FFB100}} + siz$ + {{Text|");"|#FFB100}}
| |
|
| |
| {{Text|'print "END TYPE";udtxsize(i);udtxbytealign(i)|#31C4C4}}
| |
| {{Text|GOTO|#F0F0F0}} finishedlinepp
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}}
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}}
| |
|
| |
| {{Text|IF|#F0F0F0}} n < {{Text|3|#F580B1}} {{Text|THEN|#F0F0F0}} a$ = {{Text|"Expected element-name AS type, AS type element-list, or END TYPE"|#FFB100}}: {{Text|GOTO|#F0F0F0}} errmes
| |
| n$ = firstelement$
| |
|
| |
| {{Text|IF|#F0F0F0}} n$ <> {{Text|"AS"|#FFB100}} {{Text|THEN|#F0F0F0}}
| |
| {{Text|'traditional variable-name AS type syntax, single-element|#31C4C4}}
| |
| lasttypeelement = lasttypeelement + {{Text|1|#F580B1}}
| |
| i2 = lasttypeelement
| |
| {{Text|WHILE|#F0F0F0}} i2 > {{Text|UBOUND|#F0F0F0}}(udtenext): increaseUDTArrays: {{Text|WEND|#F0F0F0}}
| |
| udtenext(i2) = {{Text|0|#F580B1}}
| |
|
| |
| ii = {{Text|2|#F580B1}}
| |
|
| |
| udtearrayelements(i2) = {{Text|0|#F580B1}}
| |
|
| |
| {{Text|IF|#F0F0F0}} ii >= n {{Text|OR|#F0F0F0}} getelement$(a$, ii) <> {{Text|"AS"|#FFB100}} {{Text|THEN|#F0F0F0}} a$ = {{Text|"Expected element-name AS type, AS type element-list, or END TYPE"|#FFB100}}: {{Text|GOTO|#F0F0F0}} errmes
| |
| t$ = getelements$(a$, ii + {{Text|1|#F580B1}}, n)
| |
|
| |
| {{Text|IF|#F0F0F0}} t$ = {{Text|RTRIM$|#F0F0F0}}(udtxname(definingtype)) {{Text|THEN|#F0F0F0}} a$ = {{Text|"Invalid self-reference"|#FFB100}}: {{Text|GOTO|#F0F0F0}} errmes
| |
| typ = typname2typ(t$)
| |
| {{Text|IF|#F0F0F0}} Error_Happened {{Text|THEN|#F0F0F0}} {{Text|GOTO|#F0F0F0}} errmes
| |
| {{Text|IF|#F0F0F0}} typ = {{Text|0|#F580B1}} {{Text|THEN|#F0F0F0}} a$ = {{Text|"Undefined type"|#FFB100}}: {{Text|GOTO|#F0F0F0}} errmes
| |
| typsize = typname2typsize
| |
|
| |
| {{Text|IF|#F0F0F0}} validname(n$) = {{Text|0|#F580B1}} {{Text|THEN|#F0F0F0}} a$ = {{Text|"Invalid name"|#FFB100}}: {{Text|GOTO|#F0F0F0}} errmes
| |
| udtename(i2) = n$
| |
| udtecname(i2) = getelement$(ca$, {{Text|1|#F580B1}})
| |
| NormalTypeBlock:
| |
| typeDefinitions$ = typeDefinitions$ + {{Text|MKL$|#F0F0F0}}(i2) + {{Text|MKL$|#F0F0F0}}({{Text|LEN|#F0F0F0}}(n$)) + n$
| |
| udtetype(i2) = typ
| |
| udtetypesize(i2) = typsize
| |
|
| |
| hashname$ = n$
| |
|
| |
| {{Text|'check for name conflicts (any similar reserved or element from current UDT)|#31C4C4}}
| |
| hashchkflags = HASHFLAG_RESERVED + HASHFLAG_UDTELEMENT
| |
| hashres = HashFind(hashname$, hashchkflags, hashresflags, hashresref)
| |
| {{Text|DO|#F0F0F0}} {{Text|WHILE|#F0F0F0}} hashres
| |
| {{Text|IF|#F0F0F0}} hashresflags {{Text|AND|#F0F0F0}} HASHFLAG_UDTELEMENT {{Text|THEN|#F0F0F0}}
| |
| {{Text|IF|#F0F0F0}} hashresref = i {{Text|THEN|#F0F0F0}} a$ = {{Text|"Name already in use ("|#FFB100}} + hashname$ + {{Text|")"|#FFB100}}: {{Text|GOTO|#F0F0F0}} errmes
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}}
| |
| {{Text|IF|#F0F0F0}} hashresflags {{Text|AND|#F0F0F0}} HASHFLAG_RESERVED {{Text|THEN|#F0F0F0}}
| |
| {{Text|IF|#F0F0F0}} hashresflags {{Text|AND|#F0F0F0}} (HASHFLAG_TYPE + HASHFLAG_CUSTOMSYNTAX + HASHFLAG_OPERATOR + HASHFLAG_XELEMENTNAME) {{Text|THEN|#F0F0F0}} a$ = {{Text|"Name already in use ("|#FFB100}} + hashname$ + {{Text|")"|#FFB100}}: {{Text|GOTO|#F0F0F0}} errmes
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}}
| |
| {{Text|IF|#F0F0F0}} hashres <> {{Text|1|#F580B1}} {{Text|THEN|#F0F0F0}} hashres = HashFindCont(hashresflags, hashresref) {{Text|ELSE|#F0F0F0}} hashres = {{Text|0|#F580B1}}
| |
| {{Text|LOOP|#F0F0F0}}
| |
| {{Text|'add to hash table|#31C4C4}}
| |
| HashAdd hashname$, HASHFLAG_UDTELEMENT, i
| |
|
| |
| {{Text|'Calculate element's size|#31C4C4}}
| |
| {{Text|IF|#F0F0F0}} typ {{Text|AND|#F0F0F0}} ISUDT {{Text|THEN|#F0F0F0}}
| |
| u = typ {{Text|AND|#F0F0F0}} {{Text|511|#F580B1}}
| |
| udtesize(i2) = udtxsize(u)
| |
| {{Text|IF|#F0F0F0}} udtxbytealign(u) {{Text|THEN|#F0F0F0}} udtxbytealign(i) = {{Text|1|#F580B1}}: udtebytealign(i2) = {{Text|1|#F580B1}}
| |
| {{Text|IF|#F0F0F0}} udtxvariable(u) {{Text|THEN|#F0F0F0}} udtxvariable(i) = {{Text|-1|#F580B1}}
| |
| {{Text|ELSE|#F0F0F0}}
| |
| {{Text|IF|#F0F0F0}} (typ {{Text|AND|#F0F0F0}} ISSTRING) {{Text|THEN|#F0F0F0}}
| |
| {{Text|IF|#F0F0F0}} (typ {{Text|AND|#F0F0F0}} ISFIXEDLENGTH) = {{Text|0|#F580B1}} {{Text|THEN|#F0F0F0}}
| |
| udtesize(i2) = OFFSETTYPE {{Text|AND|#F0F0F0}} {{Text|511|#F580B1}}
| |
| udtxvariable(i) = {{Text|-1|#F580B1}}
| |
| {{Text|ELSE|#F0F0F0}}
| |
| udtesize(i2) = typsize * {{Text|8|#F580B1}}
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}}
| |
| udtxbytealign(i) = {{Text|1|#F580B1}}: udtebytealign(i2) = {{Text|1|#F580B1}}
| |
| {{Text|ELSE|#F0F0F0}}
| |
| udtesize(i2) = typ {{Text|AND|#F0F0F0}} {{Text|511|#F580B1}}
| |
| {{Text|IF|#F0F0F0}} (typ {{Text|AND|#F0F0F0}} ISOFFSETINBITS) = {{Text|0|#F580B1}} {{Text|THEN|#F0F0F0}} udtxbytealign(i) = {{Text|1|#F580B1}}: udtebytealign(i2) = {{Text|1|#F580B1}}
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}}
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}}
| |
|
| |
| {{Text|'Increase block size|#31C4C4}}
| |
| {{Text|IF|#F0F0F0}} udtebytealign(i2) {{Text|THEN|#F0F0F0}}
| |
| {{Text|IF|#F0F0F0}} udtxsize(i) {{Text|MOD|#F0F0F0}} {{Text|8|#F580B1}} {{Text|THEN|#F0F0F0}}
| |
| udtxsize(i) = udtxsize(i) + ({{Text|8|#F580B1}} - (udtxsize(i) {{Text|MOD|#F0F0F0}} {{Text|8|#F580B1}}))
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}}
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}}
| |
| udtxsize(i) = udtxsize(i) + udtesize(i2)
| |
|
| |
| {{Text|'Link element to previous element|#31C4C4}}
| |
| {{Text|IF|#F0F0F0}} udtxnext(i) = {{Text|0|#F580B1}} {{Text|THEN|#F0F0F0}}
| |
| udtxnext(i) = i2
| |
| {{Text|ELSE|#F0F0F0}}
| |
| udtenext(i2 - {{Text|1|#F580B1}}) = i2
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}}
| |
|
| |
| {{Text|'print "+"+rtrim$(udtename(i2));udtetype(i2);udtesize(i2);udtebytealign(i2);udtxsize(i)|#31C4C4}}
| |
| {{Text|IF|#F0F0F0}} newAsTypeBlockSyntax {{Text|THEN|#F0F0F0}} {{Text|RETURN|#F0F0F0}}
| |
| {{Text|GOTO|#F0F0F0}} finishedlinepp
| |
| {{Text|ELSE|#F0F0F0}}
| |
| {{Text|'new AS type variable-list syntax, multiple elements|#31C4C4}}
| |
| ii = {{Text|2|#F580B1}}
| |
|
| |
| {{Text|IF|#F0F0F0}} ii >= n {{Text|THEN|#F0F0F0}} a$ = {{Text|"Expected element-name AS type, AS type element-list, or END TYPE"|#FFB100}}: {{Text|GOTO|#F0F0F0}} errmes
| |
| previousElement$ = {{Text|""|#FFB100}}
| |
| t$ = {{Text|""|#FFB100}}
| |
| lastElement$ = {{Text|""|#FFB100}}
| |
| buildTypeName:
| |
| lastElement$ = getelement$(a$, ii)
| |
| {{Text|IF|#F0F0F0}} lastElement$ <> {{Text|","|#FFB100}} {{Text|AND|#F0F0F0}} lastElement$ <> {{Text|""|#FFB100}} {{Text|THEN|#F0F0F0}}
| |
| n$ = lastElement$
| |
| cn$ = getelement$(ca$, ii)
| |
| {{Text|IF|#F0F0F0}} {{Text|LEN|#F0F0F0}}(previousElement$) {{Text|THEN|#F0F0F0}} t$ = t$ + previousElement$ + {{Text|" "|#FFB100}}
| |
| previousElement$ = n$
| |
| lastElement$ = {{Text|""|#FFB100}}
| |
| ii = ii + {{Text|1|#F580B1}}
| |
| {{Text|GOTO|#F0F0F0}} buildTypeName
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}}
| |
|
| |
| t$ = {{Text|RTRIM$|#F0F0F0}}(t$)
| |
| {{Text|IF|#F0F0F0}} t$ = {{Text|RTRIM$|#F0F0F0}}(udtxname(definingtype)) {{Text|THEN|#F0F0F0}} a$ = {{Text|"Invalid self-reference"|#FFB100}}: {{Text|GOTO|#F0F0F0}} errmes
| |
| typ = typname2typ(t$)
| |
| {{Text|IF|#F0F0F0}} Error_Happened {{Text|THEN|#F0F0F0}} {{Text|GOTO|#F0F0F0}} errmes
| |
| {{Text|IF|#F0F0F0}} typ = {{Text|0|#F580B1}} {{Text|THEN|#F0F0F0}} a$ = {{Text|"Undefined type"|#FFB100}}: {{Text|GOTO|#F0F0F0}} errmes
| |
| typsize = typname2typsize
| |
|
| |
| previousElement$ = lastElement$
| |
| nexttypeelement:
| |
| lasttypeelement = lasttypeelement + {{Text|1|#F580B1}}
| |
| i2 = lasttypeelement
| |
| {{Text|WHILE|#F0F0F0}} i2 > {{Text|UBOUND|#F0F0F0}}(udtenext): increaseUDTArrays: {{Text|WEND|#F0F0F0}}
| |
| udtenext(i2) = {{Text|0|#F580B1}}
| |
| udtearrayelements(i2) = {{Text|0|#F580B1}}
| |
|
| |
| udtename(i2) = n$
| |
| udtecname(i2) = cn$
| |
|
| |
| {{Text|IF|#F0F0F0}} validname(n$) = {{Text|0|#F580B1}} {{Text|THEN|#F0F0F0}} a$ = {{Text|"Invalid name"|#FFB100}}: {{Text|GOTO|#F0F0F0}} errmes
| |
|
| |
| newAsTypeBlockSyntax = {{Text|-1|#F580B1}}
| |
| {{Text|GOSUB|#F0F0F0}} NormalTypeBlock
| |
| newAsTypeBlockSyntax = {{Text|0|#F580B1}}
| |
|
| |
| getNextElement:
| |
| ii = ii + {{Text|1|#F580B1}}
| |
| lastElement$ = getelement$(a$, ii)
| |
| {{Text|IF|#F0F0F0}} lastElement$ = {{Text|""|#FFB100}} {{Text|THEN|#F0F0F0}} {{Text|GOTO|#F0F0F0}} finishedlinepp
| |
| {{Text|IF|#F0F0F0}} ii = n {{Text|AND|#F0F0F0}} lastElement$ = {{Text|","|#FFB100}} {{Text|THEN|#F0F0F0}} a$ = {{Text|"Expected element-name"|#FFB100}}: {{Text|GOTO|#F0F0F0}} errmes
| |
| {{Text|IF|#F0F0F0}} lastElement$ = {{Text|","|#FFB100}} {{Text|THEN|#F0F0F0}}
| |
| {{Text|IF|#F0F0F0}} previousElement$ = {{Text|","|#FFB100}} {{Text|THEN|#F0F0F0}} a$ = {{Text|"Expected element-name"|#FFB100}}: {{Text|GOTO|#F0F0F0}} errmes
| |
| previousElement$ = lastElement$
| |
| {{Text|GOTO|#F0F0F0}} getNextElement
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}}
| |
| n$ = lastElement$
| |
| {{Text|IF|#F0F0F0}} previousElement$ <> {{Text|","|#FFB100}} {{Text|THEN|#F0F0F0}} a$ = {{Text|"Expected ,"|#FFB100}}: {{Text|GOTO|#F0F0F0}} errmes
| |
| previousElement$ = lastElement$
| |
| cn$ = getelement$(ca$, ii)
| |
| {{Text|GOTO|#F0F0F0}} nexttypeelement
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}}
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}} {{Text|'definingtype|#31C4C4}}
| |
|
| |
| {{Text|IF|#F0F0F0}} definingtype {{Text|AND|#F0F0F0}} n >= {{Text|1|#F580B1}} {{Text|THEN|#F0F0F0}} a$ = {{Text|"Expected END TYPE"|#FFB100}}: {{Text|GOTO|#F0F0F0}} errmes
| |
|
| |
| {{Text|IF|#F0F0F0}} n >= {{Text|1|#F580B1}} {{Text|THEN|#F0F0F0}}
| |
| {{Text|IF|#F0F0F0}} firstelement$ = {{Text|"TYPE"|#FFB100}} {{Text|THEN|#F0F0F0}}
| |
| {{Text|IF|#F0F0F0}} n <> {{Text|2|#F580B1}} {{Text|THEN|#F0F0F0}} a$ = {{Text|"Expected TYPE typename"|#FFB100}}: {{Text|GOTO|#F0F0F0}} errmes
| |
| lasttype = lasttype + {{Text|1|#F580B1}}
| |
| typeDefinitions$ = typeDefinitions$ + {{Text|MKL$|#F0F0F0}}({{Text|-1|#F580B1}}) + {{Text|MKL$|#F0F0F0}}(lasttype)
| |
| definingtype = lasttype
| |
| i = definingtype
| |
| {{Text|WHILE|#F0F0F0}} i > {{Text|UBOUND|#F0F0F0}}(udtenext): increaseUDTArrays: {{Text|WEND|#F0F0F0}}
| |
| {{Text|IF|#F0F0F0}} validname(secondelement$) = {{Text|0|#F580B1}} {{Text|THEN|#F0F0F0}} a$ = {{Text|"Invalid name"|#FFB100}}: {{Text|GOTO|#F0F0F0}} errmes
| |
| typeDefinitions$ = typeDefinitions$ + {{Text|MKL$|#F0F0F0}}({{Text|LEN|#F0F0F0}}(secondelement$)) + secondelement$
| |
| udtxname(i) = secondelement$
| |
| udtxcname(i) = getelement(ca$, {{Text|2|#F580B1}})
| |
| udtxnext(i) = {{Text|0|#F580B1}}
| |
| udtxsize(i) = {{Text|0|#F580B1}}
| |
| udtxvariable(i) = {{Text|0|#F580B1}}
| |
|
| |
| hashname$ = secondelement$
| |
| hashflags = HASHFLAG_UDT
| |
| {{Text|'check for name conflicts (any similar reserved/sub/function/UDT name)|#31C4C4}}
| |
| hashchkflags = HASHFLAG_RESERVED + HASHFLAG_SUB + HASHFLAG_FUNCTION + HASHFLAG_UDT
| |
| hashres = HashFind(hashname$, hashchkflags, hashresflags, hashresref)
| |
| {{Text|DO|#F0F0F0}} {{Text|WHILE|#F0F0F0}} hashres
| |
| allow = {{Text|0|#F580B1}}
| |
| {{Text|IF|#F0F0F0}} hashresflags {{Text|AND|#F0F0F0}} (HASHFLAG_SUB + HASHFLAG_FUNCTION) {{Text|THEN|#F0F0F0}}
| |
| allow = {{Text|1|#F580B1}}
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}}
| |
| {{Text|IF|#F0F0F0}} hashresflags {{Text|AND|#F0F0F0}} HASHFLAG_RESERVED {{Text|THEN|#F0F0F0}}
| |
| {{Text|IF|#F0F0F0}} (hashresflags {{Text|AND|#F0F0F0}} (HASHFLAG_TYPE + HASHFLAG_OPERATOR + HASHFLAG_CUSTOMSYNTAX + HASHFLAG_XTYPENAME)) = {{Text|0|#F580B1}} {{Text|THEN|#F0F0F0}} allow = {{Text|1|#F580B1}}
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}}
| |
| {{Text|IF|#F0F0F0}} allow = {{Text|0|#F580B1}} {{Text|THEN|#F0F0F0}} a$ = {{Text|"Name already in use ("|#FFB100}} + hashname$ + {{Text|")"|#FFB100}}: {{Text|GOTO|#F0F0F0}} errmes
| |
| {{Text|IF|#F0F0F0}} hashres <> {{Text|1|#F580B1}} {{Text|THEN|#F0F0F0}} hashres = HashFindCont(hashresflags, hashresref) {{Text|ELSE|#F0F0F0}} hashres = {{Text|0|#F580B1}}
| |
| {{Text|LOOP|#F0F0F0}}
| |
|
| |
| {{Text|'add to hash table|#31C4C4}}
| |
| HashAdd hashname$, hashflags, i
| |
|
| |
| {{Text|GOTO|#F0F0F0}} finishedlinepp
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}}
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}}
| |
|
| |
|
| |
|
| |
|
| |
|
| |
| {{Text|IF|#F0F0F0}} n >= {{Text|1|#F580B1}} {{Text|AND|#F0F0F0}} firstelement$ = {{Text|"CONST"|#FFB100}} {{Text|THEN|#F0F0F0}}
| |
| {{Text|'l$ = "CONST"|#31C4C4}}
| |
| {{Text|'DEF... do not change type, the expression is stored in a suitable type|#31C4C4}}
| |
| {{Text|'based on its value if type isn't forced/specified|#31C4C4}}
| |
|
| |
| {{Text|IF|#F0F0F0}} subfuncn > {{Text|0|#F580B1}} {{Text|AND|#F0F0F0}} closedsubfunc <> {{Text|0|#F580B1}} {{Text|THEN|#F0F0F0}} a$ = {{Text|"Statement cannot be placed between SUB/FUNCTIONs"|#FFB100}}: {{Text|GOTO|#F0F0F0}} errmes
| |
|
| |
| {{Text|'convert periods to _046_|#31C4C4}}
| |
| i2 = {{Text|INSTR|#F0F0F0}}(a$, sp + {{Text|"."|#FFB100}} + sp)
| |
| {{Text|IF|#F0F0F0}} i2 {{Text|THEN|#F0F0F0}}
| |
| {{Text|DO|#F0F0F0}}
| |
| a$ = {{Text|LEFT$|#F0F0F0}}(a$, i2 - {{Text|1|#F580B1}}) + fix046$ + {{Text|RIGHT$|#F0F0F0}}(a$, {{Text|LEN|#F0F0F0}}(a$) - i2 - {{Text|2|#F580B1}})
| |
| ca$ = {{Text|LEFT$|#F0F0F0}}(ca$, i2 - {{Text|1|#F580B1}}) + fix046$ + {{Text|RIGHT$|#F0F0F0}}(ca$, {{Text|LEN|#F0F0F0}}(ca$) - i2 - {{Text|2|#F580B1}})
| |
| i2 = {{Text|INSTR|#F0F0F0}}(a$, sp + {{Text|"."|#FFB100}} + sp)
| |
| {{Text|LOOP|#F0F0F0}} {{Text|UNTIL|#F0F0F0}} i2 = {{Text|0|#F580B1}}
| |
| n = numelements(a$)
| |
| firstelement$ = getelement(a$, {{Text|1|#F580B1}}): secondelement$ = getelement(a$, {{Text|2|#F580B1}}): thirdelement$ = getelement(a$, {{Text|3|#F580B1}})
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}}
| |
|
| |
| {{Text|IF|#F0F0F0}} n < {{Text|3|#F580B1}} {{Text|THEN|#F0F0F0}} a$ = {{Text|"Expected CONST name = value/expression"|#FFB100}}: {{Text|GOTO|#F0F0F0}} errmes
| |
| i = {{Text|2|#F580B1}}
| |
| constdefpendingpp:
| |
| pending = {{Text|0|#F580B1}}
| |
|
| |
| n$ = getelement$(ca$, i): i = i + {{Text|1|#F580B1}}
| |
| typeoverride = {{Text|0|#F580B1}}
| |
| s$ = removesymbol$(n$)
| |
| {{Text|IF|#F0F0F0}} Error_Happened {{Text|THEN|#F0F0F0}} {{Text|GOTO|#F0F0F0}} errmes
| |
| {{Text|IF|#F0F0F0}} s$ <> {{Text|""|#FFB100}} {{Text|THEN|#F0F0F0}}
| |
| typeoverride = typname2typ(s$)
| |
| {{Text|IF|#F0F0F0}} Error_Happened {{Text|THEN|#F0F0F0}} {{Text|GOTO|#F0F0F0}} errmes
| |
| {{Text|IF|#F0F0F0}} typeoverride {{Text|AND|#F0F0F0}} ISFIXEDLENGTH {{Text|THEN|#F0F0F0}} a$ = {{Text|"Invalid constant type"|#FFB100}}: {{Text|GOTO|#F0F0F0}} errmes
| |
| {{Text|IF|#F0F0F0}} typeoverride = {{Text|0|#F580B1}} {{Text|THEN|#F0F0F0}} a$ = {{Text|"Invalid constant type"|#FFB100}}: {{Text|GOTO|#F0F0F0}} errmes
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}}
| |
|
| |
| {{Text|IF|#F0F0F0}} getelement$(a$, i) <> {{Text|"="|#FFB100}} {{Text|THEN|#F0F0F0}} a$ = {{Text|"Expected ="|#FFB100}}: {{Text|GOTO|#F0F0F0}} errmes
| |
| i = i + {{Text|1|#F580B1}}
| |
|
| |
| {{Text|'get expression|#31C4C4}}
| |
| e$ = {{Text|""|#FFB100}}
| |
| readable_e$ = {{Text|""|#FFB100}}
| |
| B = {{Text|0|#F580B1}}
| |
| {{Text|FOR|#F0F0F0}} i2 = i {{Text|TO|#F0F0F0}} n
| |
| e2$ = getelement$(ca$, i2)
| |
| {{Text|IF|#F0F0F0}} e2$ = {{Text|"("|#FFB100}} {{Text|THEN|#F0F0F0}} B = B + {{Text|1|#F580B1}}
| |
| {{Text|IF|#F0F0F0}} e2$ = {{Text|")"|#FFB100}} {{Text|THEN|#F0F0F0}} B = B - {{Text|1|#F580B1}}
| |
| {{Text|IF|#F0F0F0}} e2$ = {{Text|","|#FFB100}} {{Text|AND|#F0F0F0}} B = {{Text|0|#F580B1}} {{Text|THEN|#F0F0F0}}
| |
| pending = {{Text|1|#F580B1}}
| |
| i = i2 + {{Text|1|#F580B1}}
| |
| {{Text|IF|#F0F0F0}} i > n - {{Text|2|#F580B1}} {{Text|THEN|#F0F0F0}} a$ = {{Text|"Expected CONST ... , name = value/expression"|#FFB100}}: {{Text|GOTO|#F0F0F0}} errmes
| |
| {{Text|EXIT|#F0F0F0}} {{Text|FOR|#F0F0F0}}
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}}
| |
| {{Text|IF|#F0F0F0}} {{Text|LEN|#F0F0F0}}(e$) = {{Text|0|#F580B1}} {{Text|THEN|#F0F0F0}} e$ = e2$ {{Text|ELSE|#F0F0F0}} e$ = e$ + sp + e2$
| |
|
| |
| e3$ = e2$
| |
| {{Text|IF|#F0F0F0}} {{Text|LEN|#F0F0F0}}(e2$) > {{Text|1|#F580B1}} {{Text|THEN|#F0F0F0}}
| |
| {{Text|IF|#F0F0F0}} {{Text|ASC|#F0F0F0}}(e2$, {{Text|1|#F580B1}}) = {{Text|34|#F580B1}} {{Text|THEN|#F0F0F0}}
| |
| removeComma = {{Text|_INSTRREV|#F0F0F0}}(e2$, {{Text|","|#FFB100}})
| |
| e3$ = {{Text|LEFT$|#F0F0F0}}(e2$, removeComma - {{Text|1|#F580B1}})
| |
| {{Text|ELSE|#F0F0F0}}
| |
| removeComma = {{Text|INSTR|#F0F0F0}}(e2$, {{Text|","|#FFB100}})
| |
| e3$ = {{Text|MID$|#F0F0F0}}(e2$, removeComma + {{Text|1|#F580B1}})
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}}
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}}
| |
|
| |
| {{Text|IF|#F0F0F0}} {{Text|LEN|#F0F0F0}}(readable_e$) = {{Text|0|#F580B1}} {{Text|THEN|#F0F0F0}}
| |
| readable_e$ = e3$
| |
| {{Text|ELSE|#F0F0F0}}
| |
| readable_e$ = readable_e$ + {{Text|" "|#FFB100}} + e3$
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}}
| |
| {{Text|NEXT|#F0F0F0}}
| |
|
| |
| {{Text|'intercept current expression and pass it through Evaluate_Expression$|#31C4C4}}
| |
| {{Text|'(unless it is a literal string)|#31C4C4}}
| |
| {{Text|IF|#F0F0F0}} {{Text|LEFT$|#F0F0F0}}(readable_e$, {{Text|1|#F580B1}}) <> {{Text|CHR$|#F0F0F0}}({{Text|34|#F580B1}}) {{Text|THEN|#F0F0F0}}
| |
| temp1$ = {{Text|_TRIM$|#F0F0F0}}(Evaluate_Expression$(readable_e$))
| |
| {{Text|IF|#F0F0F0}} {{Text|LEFT$|#F0F0F0}}(temp1$, {{Text|5|#F580B1}}) <> {{Text|"ERROR"|#FFB100}} {{Text|AND|#F0F0F0}} e$ <> temp1$ {{Text|THEN|#F0F0F0}}
| |
| e$ = lineformat(temp1$) {{Text|'retrieve parseable format|#31C4C4}}
| |
| {{Text|ELSE|#F0F0F0}}
| |
| {{Text|IF|#F0F0F0}} temp1$ = {{Text|"ERROR - Division By Zero"|#FFB100}} {{Text|THEN|#F0F0F0}} a$ = temp1$: {{Text|GOTO|#F0F0F0}} errmes
| |
| {{Text|IF|#F0F0F0}} {{Text|INSTR|#F0F0F0}}(temp1$, {{Text|"Improper operations"|#FFB100}}) {{Text|THEN|#F0F0F0}}
| |
| a$ = {{Text|"Invalid CONST expression.14"|#FFB100}}: {{Text|GOTO|#F0F0F0}} errmes
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}}
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}}
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}}
| |
|
| |
| {{Text|'Proceed as usual|#31C4C4}}
| |
| e$ = fixoperationorder(e$)
| |
| {{Text|IF|#F0F0F0}} Error_Happened {{Text|THEN|#F0F0F0}} {{Text|GOTO|#F0F0F0}} errmes
| |
|
| |
| e$ = evaluateconst(e$, t)
| |
| {{Text|IF|#F0F0F0}} Error_Happened {{Text|THEN|#F0F0F0}} {{Text|GOTO|#F0F0F0}} errmes
| |
|
| |
| {{Text|IF|#F0F0F0}} t {{Text|AND|#F0F0F0}} ISSTRING {{Text|THEN|#F0F0F0}} {{Text|'string type|#31C4C4}}
| |
|
| |
| {{Text|IF|#F0F0F0}} typeoverride {{Text|THEN|#F0F0F0}}
| |
| {{Text|IF|#F0F0F0}} (typeoverride {{Text|AND|#F0F0F0}} ISSTRING) = {{Text|0|#F580B1}} {{Text|THEN|#F0F0F0}} a$ = {{Text|"Type mismatch"|#FFB100}}: {{Text|GOTO|#F0F0F0}} errmes
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}}
| |
|
| |
| {{Text|ELSE|#F0F0F0}} {{Text|'not a string type|#31C4C4}}
| |
|
| |
| {{Text|IF|#F0F0F0}} typeoverride {{Text|THEN|#F0F0F0}}
| |
| {{Text|IF|#F0F0F0}} typeoverride {{Text|AND|#F0F0F0}} ISSTRING {{Text|THEN|#F0F0F0}} a$ = {{Text|"Type mismatch"|#FFB100}}: {{Text|GOTO|#F0F0F0}} errmes
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}}
| |
|
| |
| {{Text|IF|#F0F0F0}} t {{Text|AND|#F0F0F0}} ISFLOAT {{Text|THEN|#F0F0F0}}
| |
| constval## = {{Text|_CV|#F0F0F0}}({{Text|_FLOAT|#F0F0F0}}, e$)
| |
| constval&& = constval##
| |
| constval~&& = constval&&
| |
| {{Text|ELSE|#F0F0F0}}
| |
| {{Text|IF|#F0F0F0}} (t {{Text|AND|#F0F0F0}} ISUNSIGNED) {{Text|AND|#F0F0F0}} (t {{Text|AND|#F0F0F0}} {{Text|511|#F580B1}}) = {{Text|64|#F580B1}} {{Text|THEN|#F0F0F0}}
| |
| constval~&& = {{Text|_CV|#F0F0F0}}({{Text|_UNSIGNED|#F0F0F0}} _INTEGER64, e$)
| |
| constval&& = constval~&&
| |
| constval## = constval&&
| |
| {{Text|ELSE|#F0F0F0}}
| |
| constval&& = {{Text|_CV|#F0F0F0}}(_INTEGER64, e$)
| |
| constval## = constval&&
| |
| constval~&& = constval&&
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}}
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}}
| |
|
| |
| {{Text|'override type?|#31C4C4}}
| |
| {{Text|IF|#F0F0F0}} typeoverride {{Text|THEN|#F0F0F0}}
| |
| {{Text|'range check required here (noted in todo)|#31C4C4}}
| |
| t = typeoverride
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}}
| |
|
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}} {{Text|'not a string type|#31C4C4}}
| |
|
| |
| constlast = constlast + {{Text|1|#F580B1}}
| |
| {{Text|IF|#F0F0F0}} constlast > constmax {{Text|THEN|#F0F0F0}}
| |
| constmax = constmax * {{Text|2|#F580B1}}
| |
| {{Text|REDIM|#F0F0F0}} {{Text|_PRESERVE|#F0F0F0}} constname(constmax) {{Text|AS|#F0F0F0}} {{Text|STRING|#F0F0F0}}
| |
| {{Text|REDIM|#F0F0F0}} {{Text|_PRESERVE|#F0F0F0}} constcname(constmax) {{Text|AS|#F0F0F0}} {{Text|STRING|#F0F0F0}}
| |
| {{Text|REDIM|#F0F0F0}} {{Text|_PRESERVE|#F0F0F0}} constnamesymbol(constmax) {{Text|AS|#F0F0F0}} {{Text|STRING|#F0F0F0}} {{Text|'optional name symbol|#31C4C4}}
| |
| {{Text|REDIM|#F0F0F0}} {{Text|_PRESERVE|#F0F0F0}} consttype(constmax) {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}} {{Text|'variable type number|#31C4C4}}
| |
| {{Text|REDIM|#F0F0F0}} {{Text|_PRESERVE|#F0F0F0}} constinteger(constmax) {{Text|AS|#F0F0F0}} _INTEGER64
| |
| {{Text|REDIM|#F0F0F0}} {{Text|_PRESERVE|#F0F0F0}} constuinteger(constmax) {{Text|AS|#F0F0F0}} {{Text|_UNSIGNED|#F0F0F0}} _INTEGER64
| |
| {{Text|REDIM|#F0F0F0}} {{Text|_PRESERVE|#F0F0F0}} constfloat(constmax) {{Text|AS|#F0F0F0}} {{Text|_FLOAT|#F0F0F0}}
| |
| {{Text|REDIM|#F0F0F0}} {{Text|_PRESERVE|#F0F0F0}} conststring(constmax) {{Text|AS|#F0F0F0}} {{Text|STRING|#F0F0F0}}
| |
| {{Text|REDIM|#F0F0F0}} {{Text|_PRESERVE|#F0F0F0}} constsubfunc(constmax) {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}}
| |
| {{Text|REDIM|#F0F0F0}} {{Text|_PRESERVE|#F0F0F0}} constdefined(constmax) {{Text|AS|#F0F0F0}} {{Text|LONG|#F0F0F0}}
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}}
| |
|
| |
| i2 = constlast
| |
|
| |
| constsubfunc(i2) = subfuncn
| |
| {{Text|'IF subfunc = "" THEN constlastshared = i2|#31C4C4}}
| |
|
| |
| {{Text|IF|#F0F0F0}} validname(n$) = {{Text|0|#F580B1}} {{Text|THEN|#F0F0F0}} a$ = {{Text|"Invalid name"|#FFB100}}: {{Text|GOTO|#F0F0F0}} errmes
| |
| constname(i2) = {{Text|UCASE$|#F0F0F0}}(n$)
| |
|
| |
| hashname$ = n$
| |
| {{Text|'check for name conflicts (any similar: reserved, sub, function, constant)|#31C4C4}}
| |
|
| |
| allow = {{Text|0|#F580B1}}
| |
| const_recheck:
| |
| hashchkflags = HASHFLAG_RESERVED + HASHFLAG_SUB + HASHFLAG_FUNCTION + HASHFLAG_CONSTANT
| |
| hashres = HashFind(hashname$, hashchkflags, hashresflags, hashresref)
| |
| {{Text|DO|#F0F0F0}} {{Text|WHILE|#F0F0F0}} hashres
| |
| {{Text|IF|#F0F0F0}} hashresflags {{Text|AND|#F0F0F0}} HASHFLAG_CONSTANT {{Text|THEN|#F0F0F0}}
| |
| {{Text|IF|#F0F0F0}} constsubfunc(hashresref) = subfuncn {{Text|THEN|#F0F0F0}}
| |
| {{Text|'If merely redefining a CONST with same value|#31C4C4}}
| |
| {{Text|'just issue a warning instead of an error|#31C4C4}}
| |
| issueWarning = {{Text|0|#F580B1}}
| |
| {{Text|IF|#F0F0F0}} t {{Text|AND|#F0F0F0}} ISSTRING {{Text|THEN|#F0F0F0}}
| |
| {{Text|IF|#F0F0F0}} conststring(hashresref) = e$ {{Text|THEN|#F0F0F0}} issueWarning = {{Text|-1|#F580B1}}: thisconstval$ = e$
| |
| {{Text|ELSE|#F0F0F0}}
| |
| {{Text|IF|#F0F0F0}} t {{Text|AND|#F0F0F0}} ISFLOAT {{Text|THEN|#F0F0F0}}
| |
| {{Text|IF|#F0F0F0}} constfloat(hashresref) = constval## {{Text|THEN|#F0F0F0}} issueWarning = {{Text|-1|#F580B1}}: thisconstval$ = {{Text|STR$|#F0F0F0}}(constval##)
| |
| {{Text|ELSE|#F0F0F0}}
| |
| {{Text|IF|#F0F0F0}} t {{Text|AND|#F0F0F0}} ISUNSIGNED {{Text|THEN|#F0F0F0}}
| |
| {{Text|IF|#F0F0F0}} constuinteger(hashresref) = constval~&& {{Text|THEN|#F0F0F0}} issueWarning = {{Text|-1|#F580B1}}: thisconstval$ = {{Text|STR$|#F0F0F0}}(constval~&&)
| |
| {{Text|ELSE|#F0F0F0}}
| |
| {{Text|IF|#F0F0F0}} constinteger(hashresref) = constval&& {{Text|THEN|#F0F0F0}} issueWarning = {{Text|-1|#F580B1}}: thisconstval$ = {{Text|STR$|#F0F0F0}}(constval&&)
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}}
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}}
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}}
| |
| {{Text|IF|#F0F0F0}} issueWarning {{Text|THEN|#F0F0F0}}
| |
| {{Text|IF|#F0F0F0}} {{Text|NOT|#F0F0F0}} IgnoreWarnings {{Text|THEN|#F0F0F0}}
| |
| addWarning linenumber, inclevel, inclinenumber(inclevel), incname$(inclevel), {{Text|"duplicate constant definition"|#FFB100}}, n$ + {{Text|" ="|#FFB100}} + thisconstval$
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}}
| |
| {{Text|GOTO|#F0F0F0}} constAddDone
| |
| {{Text|ELSE|#F0F0F0}}
| |
| a$ = {{Text|"Name already in use ("|#FFB100}} + hashname$ + {{Text|")"|#FFB100}}: {{Text|GOTO|#F0F0F0}} errmes
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}}
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}}
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}}
| |
| {{Text|IF|#F0F0F0}} hashresflags {{Text|AND|#F0F0F0}} HASHFLAG_RESERVED {{Text|THEN|#F0F0F0}}
| |
| a$ = {{Text|"Name already in use ("|#FFB100}} + hashname$ + {{Text|")"|#FFB100}}: {{Text|GOTO|#F0F0F0}} errmes
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}}
| |
| {{Text|IF|#F0F0F0}} hashresflags {{Text|AND|#F0F0F0}} (HASHFLAG_SUB + HASHFLAG_FUNCTION) {{Text|THEN|#F0F0F0}}
| |
| {{Text|IF|#F0F0F0}} ids(hashresref).internal_subfunc = {{Text|0|#F580B1}} {{Text|OR|#F0F0F0}} {{Text|RTRIM$|#F0F0F0}}(ids(hashresref).musthave) <> {{Text|"$"|#FFB100}} {{Text|THEN|#F0F0F0}} a$ = {{Text|"Name already in use ("|#FFB100}} + hashname$ + {{Text|")"|#FFB100}}: {{Text|GOTO|#F0F0F0}} errmes
| |
| {{Text|IF|#F0F0F0}} t {{Text|AND|#F0F0F0}} ISSTRING {{Text|THEN|#F0F0F0}} a$ = {{Text|"Name already in use ("|#FFB100}} + hashname$ + {{Text|")"|#FFB100}}: {{Text|GOTO|#F0F0F0}} errmes
| |
| {{Text|END|#F0F0F0}} {{Text|IF|#F0F0F0}}
| |
| {{Text|IF|#F0F0F0}} hashres <> {{Text|1|#F580B1}} {{Text|THEN|#F0F0F0}} hashres = HashFindCont(hashresflags, hashresref) {{Text|ELSE|#F0F0F0}} hashres = {{Text|0|#F580B1}}
| |
| {{Text|LOOP|#F0F0F0}}
| |
|
| |
| {{Text|'add to hash table|#31C4C4}}
| |
| HashAdd hashname$, HASHFLAG_CONSTANT, i2
| |
|
| |
| {{CodeEnd}}
| |