|
Tags: Replaced Manual revert |
Line 96: |
Line 96: |
|
| |
|
| {{PageNavigation}} | | {{PageNavigation}} |
|
| |
| {{CodeStart}}
| |
| {{Text|<nowiki>'All variables will be of type LONG unless explicitly defined</nowiki>|#919191}}
| |
| {{Cl|DEFLNG}} A-Z
| |
|
| |
| {{Text|<nowiki>'All arrays will be dynamically allocated so they can be REDIM-ed</nowiki>|#919191}}
| |
| {{Text|<nowiki>'</nowiki>|#919191}}{{Cm|$DYNAMIC}}
| |
|
| |
| {{Text|<nowiki>'We need console access to support command-line compilation via the -x command line compile option</nowiki>|#919191}}
| |
| {{Cm|$CONSOLE}}
| |
|
| |
| {{Text|<nowiki>'Initially the "SCREEN" will be hidden, if the -x option is used it will never be created</nowiki>|#919191}}
| |
| {{Cm|$SCREENHIDE}}
| |
|
| |
| {{Cm|$EXEICON}}:{{Text|<nowiki>'./qb64pe.ico'</nowiki>|#919191}}
| |
|
| |
| {{Cm|$VERSIONINFO}}:CompanyName=QB64 Phoenix Edition
| |
| {{Cm|$VERSIONINFO}}:FileDescription=QB64 IDE and Compiler
| |
| {{Cm|$VERSIONINFO}}:InternalName=qb64pe.bas
| |
| {{Cm|$VERSIONINFO}}:LegalCopyright=MIT
| |
| {{Cm|$VERSIONINFO}}:LegalTrademarks=
| |
| {{Cm|$VERSIONINFO}}:OriginalFilename=qb64pe.exe
| |
| {{Cm|$VERSIONINFO}}:ProductName=QB64-PE
| |
| {{Cm|$VERSIONINFO}}: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|<nowiki>'</nowiki>|#919191}}{{Cm|$INCLUDE}}:{{Text|<nowiki>'global\version.bas'</nowiki>|#919191}}
| |
| {{Text|<nowiki>'</nowiki>|#919191}}{{Cm|$INCLUDE}}:{{Text|<nowiki>'global\settings.bas'</nowiki>|#919191}}
| |
| {{Text|<nowiki>'</nowiki>|#919191}}{{Cm|$INCLUDE}}:{{Text|<nowiki>'global\constants.bas'</nowiki>|#919191}}
| |
| {{Text|<nowiki>'</nowiki>|#919191}}{{Cm|$INCLUDE}}:{{Text|<nowiki>'subs_functions\extensions\opengl\opengl_global.bas'</nowiki>|#919191}}
| |
| {{Text|<nowiki>'</nowiki>|#919191}}{{Cm|$INCLUDE}}:{{Text|<nowiki>'utilities\ini-manager\ini.bi'</nowiki>|#919191}}
| |
| {{Text|<nowiki>'</nowiki>|#919191}}{{Cm|$INCLUDE}}:{{Text|<nowiki>'utilities\s-buffer\simplebuffer.bi'</nowiki>|#919191}}
| |
|
| |
| {{Cl|DEFLNG}} A-Z
| |
|
| |
| {{Text|<nowiki>'-------- Optional IDE Component (1/2) --------</nowiki>|#919191}}
| |
| {{Text|<nowiki>'</nowiki>|#919191}}{{Cm|$INCLUDE}}:{{Text|<nowiki>'ide\ide_global.bas'</nowiki>|#919191}}
| |
|
| |
| {{Cl|REDIM}} {{Cl|SHARED}} OName({{Text|1000|#F580B1}}) {{Cl|AS}} {{Cl|STRING}} {{Text|<nowiki>'Operation Name</nowiki>|#919191}}
| |
| {{Cl|REDIM}} {{Cl|SHARED}} PL({{Text|1000|#F580B1}}) {{Cl|AS}} {{Cl|INTEGER}} {{Text|<nowiki>'Priority Level</nowiki>|#919191}}
| |
| {{Cl|REDIM}} {{Cl|SHARED}} PP_TypeMod({{Text|0|#F580B1}}) {{Cl|AS}} {{Cl|STRING}}, PP_ConvertedMod({{Text|0|#F580B1}}) {{Cl|AS}} {{Cl|STRING}} {{Text|<nowiki>'Prepass Name Conversion variables.</nowiki>|#919191}}
| |
| {{Text|Set_OrderOfOperations|#55FF55}}
| |
|
| |
| {{Cl|DIM}} {{Cl|SHARED}} NoExeSaved {{Cl|AS}} {{Cl|INTEGER}}
| |
|
| |
| {{Cl|DIM}} {{Cl|SHARED}} vWatchOn, vWatchRecompileAttempts, vWatchDesiredState, vWatchErrorCall$
| |
| {{Cl|DIM}} {{Cl|SHARED}} vWatchNewVariable$, vWatchVariableExclusions$
| |
| vWatchErrorCall$ = {{Text|<nowiki>"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;};"</nowiki>|#FFB100}}
| |
| vWatchVariableExclusions$ = {{Text|<nowiki>"@__LONG_VWATCH_LINENUMBER@__LONG_VWATCH_SUBLEVEL@__LONG_VWATCH_GOTO@"</nowiki>|#FFB100}} + _
| |
| {{Text|<nowiki>"@__STRING_VWATCH_SUBNAME@__STRING_VWATCH_CALLSTACK@__ARRAY_BYTE_VWATCH_BREAKPOINTS"</nowiki>|#FFB100}} + _
| |
| {{Text|<nowiki>"@__ARRAY_BYTE_VWATCH_SKIPLINES@__STRING_VWATCH_INTERNALSUBNAME@__ARRAY_STRING_VWATCH_STACK@"</nowiki>|#FFB100}}
| |
|
| |
| {{Cl|DIM}} {{Cl|SHARED}} nativeDataTypes$
| |
| nativeDataTypes$ = {{Text|<nowiki>"@_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@"</nowiki>|#FFB100}}
| |
|
| |
| {{Cl|DIM}} {{Cl|SHARED}} qb64prefix_set_recompileAttempts, qb64prefix_set_desiredState
| |
| {{Cl|DIM}} {{Cl|SHARED}} opex_recompileAttempts, opex_desiredState
| |
| {{Cl|DIM}} {{Cl|SHARED}} opexarray_recompileAttempts, opexarray_desiredState
| |
|
| |
| {{Cl|REDIM}} EveryCaseSet({{Text|100|#F580B1}}), SelectCaseCounter {{Cl|AS}} {{Cl|_UNSIGNED}} {{Cl|LONG}}
| |
| {{Cl|REDIM}} SelectCaseHasCaseBlock({{Text|100|#F580B1}})
| |
| {{Cl|DIM}} ExecLevel({{Text|255|#F580B1}}), ExecCounter {{Cl|AS}} {{Cl|INTEGER}}
| |
| {{Cl|REDIM}} {{Cl|SHARED}} UserDefine({{Text|1|#F580B1}}, {{Text|100|#F580B1}}) {{Cl|AS}} {{Cl|STRING}} {{Text|<nowiki>'0 element is the name, 1 element is the string value</nowiki>|#919191}}
| |
| {{Cl|REDIM}} {{Cl|SHARED}} InValidLine({{Text|10000|#F580B1}}) {{Cl|AS}} {{Cl|_BYTE}}
| |
| {{Cl|DIM}} DefineElse({{Text|255|#F580B1}}) {{Cl|AS}} {{Cl|_BYTE}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} UserDefineCount {{Cl|AS}} {{Cl|INTEGER}}, UserDefineList$
| |
| UserDefineList$ = {{Text|<nowiki>"@DEFINED@UNDEFINED@WINDOWS@WIN@LINUX@MAC@MACOSX@32BIT@64BIT@VERSION@"</nowiki>|#FFB100}}
| |
| UserDefine({{Text|0|#F580B1}}, {{Text|0|#F580B1}}) = {{Text|<nowiki>"WINDOWS"</nowiki>|#FFB100}}: UserDefine({{Text|0|#F580B1}}, {{Text|1|#F580B1}}) = {{Text|<nowiki>"WIN"</nowiki>|#FFB100}}
| |
| UserDefine({{Text|0|#F580B1}}, {{Text|2|#F580B1}}) = {{Text|<nowiki>"LINUX"</nowiki>|#FFB100}}
| |
| UserDefine({{Text|0|#F580B1}}, {{Text|3|#F580B1}}) = {{Text|<nowiki>"MAC"</nowiki>|#FFB100}}: UserDefine({{Text|0|#F580B1}}, {{Text|4|#F580B1}}) = {{Text|<nowiki>"MACOSX"</nowiki>|#FFB100}}
| |
| UserDefine({{Text|0|#F580B1}}, {{Text|5|#F580B1}}) = {{Text|<nowiki>"32BIT"</nowiki>|#FFB100}}: UserDefine({{Text|0|#F580B1}}, {{Text|6|#F580B1}}) = {{Text|<nowiki>"64BIT"</nowiki>|#FFB100}}
| |
| UserDefine({{Text|0|#F580B1}}, {{Text|7|#F580B1}}) = {{Text|<nowiki>"VERSION"</nowiki>|#FFB100}}
| |
| {{Cl|IF}} {{Cl|INSTR}}({{Cl|_OS$}}, {{Text|<nowiki>"WIN"</nowiki>|#FFB100}}) {{Cl|THEN}} UserDefine({{Text|1|#F580B1}}, {{Text|0|#F580B1}}) = {{Text|<nowiki>"-1"</nowiki>|#FFB100}}: UserDefine({{Text|1|#F580B1}}, {{Text|1|#F580B1}}) = {{Text|<nowiki>"-1"</nowiki>|#FFB100}} {{Cl|ELSE}} UserDefine({{Text|1|#F580B1}}, {{Text|0|#F580B1}}) = {{Text|<nowiki>"0"</nowiki>|#FFB100}}: UserDefine({{Text|1|#F580B1}}, {{Text|1|#F580B1}}) = {{Text|<nowiki>"0"</nowiki>|#FFB100}}
| |
| {{Cl|IF}} {{Cl|INSTR}}({{Cl|_OS$}}, {{Text|<nowiki>"LINUX"</nowiki>|#FFB100}}) {{Cl|THEN}} UserDefine({{Text|1|#F580B1}}, {{Text|2|#F580B1}}) = {{Text|<nowiki>"-1"</nowiki>|#FFB100}} {{Cl|ELSE}} UserDefine({{Text|1|#F580B1}}, {{Text|2|#F580B1}}) = {{Text|<nowiki>"0"</nowiki>|#FFB100}}
| |
| {{Cl|IF}} {{Cl|INSTR}}({{Cl|_OS$}}, {{Text|<nowiki>"MAC"</nowiki>|#FFB100}}) {{Cl|THEN}} UserDefine({{Text|1|#F580B1}}, {{Text|3|#F580B1}}) = {{Text|<nowiki>"-1"</nowiki>|#FFB100}}: UserDefine({{Text|1|#F580B1}}, {{Text|4|#F580B1}}) = {{Text|<nowiki>"-1"</nowiki>|#FFB100}} {{Cl|ELSE}} UserDefine({{Text|1|#F580B1}}, {{Text|3|#F580B1}}) = {{Text|<nowiki>"0"</nowiki>|#FFB100}}: UserDefine({{Text|1|#F580B1}}, {{Text|4|#F580B1}}) = {{Text|<nowiki>"0"</nowiki>|#FFB100}}
| |
| {{Cl|IF}} {{Cl|INSTR}}({{Cl|_OS$}}, {{Text|<nowiki>"32BIT"</nowiki>|#FFB100}}) {{Cl|THEN}} UserDefine({{Text|1|#F580B1}}, {{Text|5|#F580B1}}) = {{Text|<nowiki>"-1"</nowiki>|#FFB100}}: UserDefine({{Text|1|#F580B1}}, {{Text|6|#F580B1}}) = {{Text|<nowiki>"0"</nowiki>|#FFB100}} {{Cl|ELSE}} UserDefine({{Text|1|#F580B1}}, {{Text|5|#F580B1}}) = {{Text|<nowiki>"0"</nowiki>|#FFB100}}: UserDefine({{Text|1|#F580B1}}, {{Text|6|#F580B1}}) = {{Text|<nowiki>"-1"</nowiki>|#FFB100}}
| |
| UserDefine({{Text|1|#F580B1}}, {{Text|7|#F580B1}}) = Version$
| |
|
| |
| {{Cl|DIM}} {{Cl|SHARED}} QB64_uptime!
| |
|
| |
| QB64_uptime! = {{Cl|TIMER (function)|TIMER}}
| |
|
| |
| NoInternalFolder:
| |
| {{Cl|IF}} {{Cl|_DIREXISTS}}({{Text|<nowiki>"internal"</nowiki>|#FFB100}}) = {{Text|0|#F580B1}} {{Cl|THEN}}
| |
| {{Cl|_SCREENSHOW}}
| |
| {{Cl|PRINT}} {{Text|<nowiki>"QB64-PE cannot locate the 'internal' folder"</nowiki>|#FFB100}}
| |
| {{Cl|PRINT}}
| |
| {{Cl|PRINT}} {{Text|<nowiki>"Check that QB64-PE has been extracted properly."</nowiki>|#FFB100}}
| |
| {{Cl|PRINT}} {{Text|<nowiki>"For MacOSX, launch 'qb64pe_start.command' or enter './qb64pe' in Terminal."</nowiki>|#FFB100}}
| |
| {{Cl|PRINT}} {{Text|<nowiki>"For Linux, in the console enter './qb64pe'."</nowiki>|#FFB100}}
| |
| {{Cl|DO}}
| |
| {{Cl|_LIMIT}} {{Text|1|#F580B1}}
| |
| {{Cl|DO...LOOP|LOOP UNTIL}} {{Cl|INKEY$}} <> {{Text|<nowiki>""</nowiki>|#FFB100}}
| |
| {{Cl|SYSTEM}} {{Text|1|#F580B1}}
| |
| {{Cl|END IF}}
| |
|
| |
| {{Cl|DIM}} {{Cl|SHARED}} Include_GDB_Debugging_Info {{Text|<nowiki>'set using "options.bin"</nowiki>|#919191}}
| |
|
| |
| {{Cl|DIM}} {{Cl|SHARED}} DEPENDENCY_LAST
| |
| {{Cl|CONST}} DEPENDENCY_LOADFONT = {{Text|1|#F580B1}}: DEPENDENCY_LAST = DEPENDENCY_LAST + {{Text|1|#F580B1}}
| |
| {{Cl|CONST}} DEPENDENCY_AUDIO_CONVERSION = {{Text|2|#F580B1}}: DEPENDENCY_LAST = DEPENDENCY_LAST + {{Text|1|#F580B1}}
| |
| {{Cl|CONST}} DEPENDENCY_AUDIO_DECODE = {{Text|3|#F580B1}}: DEPENDENCY_LAST = DEPENDENCY_LAST + {{Text|1|#F580B1}}
| |
| {{Cl|CONST}} DEPENDENCY_AUDIO_OUT = {{Text|4|#F580B1}}: DEPENDENCY_LAST = DEPENDENCY_LAST + {{Text|1|#F580B1}}
| |
| {{Cl|CONST}} DEPENDENCY_GL = {{Text|5|#F580B1}}: DEPENDENCY_LAST = DEPENDENCY_LAST + {{Text|1|#F580B1}}
| |
| {{Cl|CONST}} DEPENDENCY_IMAGE_CODEC = {{Text|6|#F580B1}}: DEPENDENCY_LAST = DEPENDENCY_LAST + {{Text|1|#F580B1}}
| |
| {{Cl|CONST}} DEPENDENCY_CONSOLE_ONLY = {{Text|7|#F580B1}}: DEPENDENCY_LAST = DEPENDENCY_LAST + {{Text|1|#F580B1}} {{Text|<nowiki>'=2 if via -g switch, =1 if via metacommand $CONSOLE:ONLY</nowiki>|#919191}}
| |
| {{Cl|CONST}} DEPENDENCY_SOCKETS = {{Text|8|#F580B1}}: DEPENDENCY_LAST = DEPENDENCY_LAST + {{Text|1|#F580B1}}
| |
| {{Cl|CONST}} DEPENDENCY_PRINTER = {{Text|9|#F580B1}}: DEPENDENCY_LAST = DEPENDENCY_LAST + {{Text|1|#F580B1}}
| |
| {{Cl|CONST}} DEPENDENCY_ICON = {{Text|10|#F580B1}}: DEPENDENCY_LAST = DEPENDENCY_LAST + {{Text|1|#F580B1}}
| |
| {{Cl|CONST}} DEPENDENCY_SCREENIMAGE = {{Text|11|#F580B1}}: DEPENDENCY_LAST = DEPENDENCY_LAST + {{Text|1|#F580B1}}
| |
| {{Cl|CONST}} DEPENDENCY_DEVICEINPUT = {{Text|12|#F580B1}}: DEPENDENCY_LAST = DEPENDENCY_LAST + {{Text|1|#F580B1}} {{Text|<nowiki>'removes support for gamepad input if not present</nowiki>|#919191}}
| |
| {{Cl|CONST}} DEPENDENCY_ZLIB = {{Text|13|#F580B1}}: DEPENDENCY_LAST = DEPENDENCY_LAST + {{Text|1|#F580B1}} {{Text|<nowiki>'ZLIB library linkage, if desired, for compression/decompression.</nowiki>|#919191}}
| |
|
| |
|
| |
|
| |
| {{Cl|DIM}} {{Cl|SHARED}} DEPENDENCY({{Text|1|#F580B1}} {{Cl|TO}} DEPENDENCY_LAST)
| |
|
| |
| {{Cl|DIM}} {{Cl|SHARED}} UseGL {{Text|<nowiki>'declared SUB _GL (no params)</nowiki>|#919191}}
| |
|
| |
|
| |
| {{Cl|DIM}} {{Cl|SHARED}} OS_BITS {{Cl|AS}} {{Cl|LONG}}, WindowTitle {{Cl|AS}} {{Cl|STRING}}
| |
| OS_BITS = {{Text|64|#F580B1}}: {{Cl|IF}} {{Cl|INSTR}}({{Cl|_OS$}}, {{Text|<nowiki>"[32BIT]"</nowiki>|#FFB100}}) {{Cl|THEN}} OS_BITS = {{Text|32|#F580B1}}
| |
|
| |
| {{Cl|IF}} OS_BITS = {{Text|32|#F580B1}} {{Cl|THEN}} WindowTitle = {{Text|<nowiki>"QB64 Phoenix Edition (x32)"</nowiki>|#FFB100}} {{Cl|ELSE}} WindowTitle = {{Text|<nowiki>"QB64 Phoenix Edition (x64)"</nowiki>|#FFB100}}
| |
| {{Cl|_TITLE}} WindowTitle
| |
|
| |
| {{Cl|DIM}} {{Cl|SHARED}} ConsoleMode, No_C_Compile_Mode, NoIDEMode
| |
| {{Cl|DIM}} {{Cl|SHARED}} ShowWarnings {{Cl|AS}} {{Cl|_BYTE}}, QuietMode {{Cl|AS}} {{Cl|_BYTE}}, CMDLineFile {{Cl|AS}} {{Cl|STRING}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} MonochromeLoggingMode {{Cl|AS}} {{Cl|_BYTE}}
| |
|
| |
| {{Cl|TYPE}} usedVarList
| |
| {{Cl|AS}} {{Cl|LONG}} id, linenumber, includeLevel, includedLine, {{Text|scope|#55FF55}}, localIndex
| |
| {{Cl|AS}} {{Cl|LONG}} arrayElementSize
| |
| {{Cl|AS}} {{Cl|_BYTE}} used, watch, isarray, displayFormat {{Text|<nowiki>'displayFormat: 0=DEC;1=HEX;2=BIN;3=OCT</nowiki>|#919191}}
| |
| {{Cl|AS}} {{Cl|STRING}} name, cname, varType, includedFile, subfunc
| |
| {{Cl|AS}} {{Cl|STRING}} watchRange, indexes, elements, elementTypes {{Text|<nowiki>'for Arrays and UDTs</nowiki>|#919191}}
| |
| {{Cl|AS}} {{Cl|STRING}} elementOffset, storage
| |
| {{Cl|END TYPE}}
| |
|
| |
| {{Cl|REDIM}} {{Cl|SHARED}} backupUsedVariableList({{Text|1000|#F580B1}}) {{Cl|AS}} usedVarList
| |
| {{Cl|DIM}} {{Cl|SHARED}} typeDefinitions$, backupTypeDefinitions$
| |
| {{Cl|DIM}} {{Cl|SHARED}} totalVariablesCreated {{Cl|AS}} {{Cl|LONG}}, totalMainVariablesCreated {{Cl|AS}} {{Cl|LONG}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} bypassNextVariable {{Cl|AS}} {{Cl|_BYTE}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} totalWarnings {{Cl|AS}} {{Cl|LONG}}, warningListItems {{Cl|AS}} {{Cl|LONG}}, lastWarningHeader {{Cl|AS}} {{Cl|STRING}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} duplicateConstWarning {{Cl|AS}} {{Cl|_BYTE}}, warningsissued {{Cl|AS}} {{Cl|_BYTE}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} emptySCWarning {{Cl|AS}} {{Cl|_BYTE}}, maxLineNumber {{Cl|AS}} {{Cl|LONG}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} ExeIconSet {{Cl|AS}} {{Cl|LONG}}, qb64prefix$, qb64prefix_set
| |
| {{Cl|DIM}} {{Cl|SHARED}} VersionInfoSet {{Cl|AS}} {{Cl|_BYTE}}
| |
|
| |
| {{Text|<nowiki>'Variables to handle $VERSIONINFO metacommand:</nowiki>|#919191}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} viFileVersionNum$, viProductVersionNum$, viCompanyName$
| |
| {{Cl|DIM}} {{Cl|SHARED}} viFileDescription$, viFileVersion$, viInternalName$
| |
| {{Cl|DIM}} {{Cl|SHARED}} viLegalCopyright$, viLegalTrademarks$, viOriginalFilename$
| |
| {{Cl|DIM}} {{Cl|SHARED}} viProductName$, viProductVersion$, viComments$, viWeb$
| |
|
| |
| {{Cl|DIM}} {{Cl|SHARED}} NoChecks
| |
|
| |
| {{Cl|DIM}} {{Cl|SHARED}} Console
| |
| {{Cl|DIM}} {{Cl|SHARED}} ScreenHide
| |
| {{Cl|DIM}} {{Cl|SHARED}} Asserts
| |
| {{Cl|DIM}} {{Cl|SHARED}} OptMax {{Cl|AS}} {{Cl|LONG}}
| |
| OptMax = {{Text|256|#F580B1}}
| |
| {{Cl|REDIM}} {{Cl|SHARED}} Opt({{Text|1|#F580B1}} {{Cl|TO}} OptMax, {{Text|1|#F580B1}} {{Cl|TO}} {{Text|10|#F580B1}}) {{Cl|AS}} {{Cl|STRING}} * {{Text|256|#F580B1}}
| |
| {{Text|<nowiki>' (1,1)="READ"</nowiki>|#919191}}
| |
| {{Text|<nowiki>' (1,2)="WRITE"</nowiki>|#919191}}
| |
| {{Text|<nowiki>' (1,3)="READ WRITE"</nowiki>|#919191}}
| |
| {{Cl|REDIM}} {{Cl|SHARED}} OptWords({{Text|1|#F580B1}} {{Cl|TO}} OptMax, {{Text|1|#F580B1}} {{Cl|TO}} {{Text|10|#F580B1}}) {{Cl|AS}} {{Cl|INTEGER}} {{Text|<nowiki>'The number of words of each opt () element</nowiki>|#919191}}
| |
| {{Text|<nowiki>' (1,1)=1 '"READ"</nowiki>|#919191}}
| |
| {{Text|<nowiki>' (1,2)=1 '"WRITE"</nowiki>|#919191}}
| |
| {{Text|<nowiki>' (1,3)=2 '"READ WRITE"</nowiki>|#919191}}
| |
| {{Cl|REDIM}} {{Cl|SHARED}} T({{Text|1|#F580B1}} {{Cl|TO}} OptMax) {{Cl|AS}} {{Cl|INTEGER}} {{Text|<nowiki>'The type of the entry</nowiki>|#919191}}
| |
| {{Text|<nowiki>' t is 0 for ? opts</nowiki>|#919191}}
| |
| {{Text|<nowiki>' ---------- 0 means ? , 1+ means a symbol or {}block ----------</nowiki>|#919191}}
| |
| {{Text|<nowiki>' t is 1 for symbol opts</nowiki>|#919191}}
| |
| {{Text|<nowiki>' t is the number of rhs opt () index enteries for {READ|WRITE|READ WRITE} like opts</nowiki>|#919191}}
| |
| {{Cl|REDIM}} {{Cl|SHARED}} Lev({{Text|1|#F580B1}} {{Cl|TO}} OptMax) {{Cl|AS}} {{Cl|INTEGER}} {{Text|<nowiki>'The indwelling level of each opt () element (the lowest is 0)</nowiki>|#919191}}
| |
| {{Cl|REDIM}} {{Cl|SHARED}} EntryLev({{Text|1|#F580B1}} {{Cl|TO}} OptMax) {{Cl|AS}} {{Cl|INTEGER}} {{Text|<nowiki>'The level required from which this opt () can be validly be entered/checked-for</nowiki>|#919191}}
| |
| {{Cl|REDIM}} {{Cl|SHARED}} DitchLev({{Text|1|#F580B1}} {{Cl|TO}} OptMax) {{Cl|AS}} {{Cl|INTEGER}} {{Text|<nowiki>'The lowest level recorded between the previous Opt and this Opt</nowiki>|#919191}}
| |
| {{Cl|REDIM}} {{Cl|SHARED}} DontPass({{Text|1|#F580B1}} {{Cl|TO}} OptMax) {{Cl|AS}} {{Cl|INTEGER}} {{Text|<nowiki>'Set to 1 or 0, with 1 meaning don't pass</nowiki>|#919191}}
| |
| {{Text|<nowiki>'Determines whether the opt () entry needs to actually be passed to the C++ sub/function</nowiki>|#919191}}
| |
| {{Cl|REDIM}} {{Cl|SHARED}} TempList({{Text|1|#F580B1}} {{Cl|TO}} OptMax) {{Cl|AS}} {{Cl|INTEGER}}
| |
| {{Cl|REDIM}} {{Cl|SHARED}} PassRule({{Text|1|#F580B1}} {{Cl|TO}} OptMax) {{Cl|AS}} {{Cl|LONG}}
| |
| {{Text|<nowiki>'0 means no pass rule</nowiki>|#919191}}
| |
| {{Text|<nowiki>'negative values refer to an opt () element</nowiki>|#919191}}
| |
| {{Text|<nowiki>'positive values refer to a flag value</nowiki>|#919191}}
| |
| {{Cl|REDIM}} {{Cl|SHARED}} LevelEntered(OptMax) {{Text|<nowiki>'up to 64 levels supported</nowiki>|#919191}}
| |
| {{Cl|REDIM}} {{Cl|SHARED}} separgs(OptMax + {{Text|1|#F580B1}}) {{Cl|AS}} {{Cl|STRING}}
| |
| {{Cl|REDIM}} {{Cl|SHARED}} separgslayout(OptMax + {{Text|1|#F580B1}}) {{Cl|AS}} {{Cl|STRING}}
| |
| {{Cl|REDIM}} {{Cl|SHARED}} separgs2(OptMax + {{Text|1|#F580B1}}) {{Cl|AS}} {{Cl|STRING}}
| |
| {{Cl|REDIM}} {{Cl|SHARED}} separgslayout2(OptMax + {{Text|1|#F580B1}}) {{Cl|AS}} {{Cl|STRING}}
| |
|
| |
|
| |
|
| |
|
| |
|
| |
| {{Cl|DIM}} {{Cl|SHARED}} E
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
| {{Cl|DIM}} {{Cl|SHARED}} ResolveStaticFunctions
| |
| {{Cl|REDIM}} {{Cl|SHARED}} ResolveStaticFunction_File({{Text|1|#F580B1}} {{Cl|TO}} {{Text|100|#F580B1}}) {{Cl|AS}} {{Cl|STRING}}
| |
| {{Cl|REDIM}} {{Cl|SHARED}} ResolveStaticFunction_Name({{Text|1|#F580B1}} {{Cl|TO}} {{Text|100|#F580B1}}) {{Cl|AS}} {{Cl|STRING}}
| |
| {{Cl|REDIM}} {{Cl|SHARED}} ResolveStaticFunction_Method({{Text|1|#F580B1}} {{Cl|TO}} {{Text|100|#F580B1}}) {{Cl|AS}} {{Cl|LONG}}
| |
|
| |
|
| |
|
| |
|
| |
|
| |
| {{Cl|DIM}} {{Cl|SHARED}} Error_Happened {{Cl|AS}} {{Cl|LONG}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} Error_Message {{Cl|AS}} {{Cl|STRING}}
| |
|
| |
| {{Cl|DIM}} {{Cl|SHARED}} os {{Cl|AS}} {{Cl|STRING}}
| |
| os$ = {{Text|<nowiki>"WIN"</nowiki>|#FFB100}}
| |
| {{Cl|IF}} {{Cl|INSTR}}({{Cl|_OS$}}, {{Text|<nowiki>"[LINUX]"</nowiki>|#FFB100}}) {{Cl|THEN}} os$ = {{Text|<nowiki>"LNX"</nowiki>|#FFB100}}
| |
|
| |
| {{Cl|DIM}} {{Cl|SHARED}} MacOSX {{Cl|AS}} {{Cl|LONG}}
| |
| {{Cl|IF}} {{Cl|INSTR}}({{Cl|_OS$}}, {{Text|<nowiki>"[MACOSX]"</nowiki>|#FFB100}}) {{Cl|THEN}} MacOSX = {{Text|1|#F580B1}}
| |
|
| |
| {{Cl|DIM}} {{Cl|SHARED}} inline_DATA
| |
| {{Cl|IF}} MacOSX {{Cl|THEN}} inline_DATA = {{Text|1|#F580B1}}
| |
|
| |
| {{Cl|DIM}} {{Cl|SHARED}} BATCHFILE_EXTENSION {{Cl|AS}} {{Cl|STRING}}
| |
| BATCHFILE_EXTENSION = {{Text|<nowiki>".bat"</nowiki>|#FFB100}}
| |
| {{Cl|IF}} os$ = {{Text|<nowiki>"LNX"</nowiki>|#FFB100}} {{Cl|THEN}} BATCHFILE_EXTENSION = {{Text|<nowiki>".sh"</nowiki>|#FFB100}}
| |
| {{Cl|IF}} MacOSX {{Cl|THEN}} BATCHFILE_EXTENSION = {{Text|<nowiki>".command"</nowiki>|#FFB100}}
| |
|
| |
|
| |
| {{Cl|DIM}} inlinedatastr({{Text|255|#F580B1}}) {{Cl|AS}} {{Cl|STRING}}
| |
| {{Cl|FOR}} i = {{Text|0|#F580B1}} {{Cl|TO}} {{Text|255|#F580B1}}
| |
| inlinedatastr(i) = {{Text|str2$|#55FF55}}(i) + {{Text|<nowiki>","</nowiki>|#FFB100}}
| |
| {{Cl|NEXT}}
| |
|
| |
|
| |
| {{Cl|DIM}} {{Cl|SHARED}} extension {{Cl|AS}} {{Cl|STRING}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} path.exe$, path.source$, lastBinaryGenerated$
| |
| extension$ = {{Text|<nowiki>".exe"</nowiki>|#FFB100}}
| |
| {{Cl|IF}} os$ = {{Text|<nowiki>"LNX"</nowiki>|#FFB100}} {{Cl|THEN}} extension$ = {{Text|<nowiki>""</nowiki>|#FFB100}} {{Text|<nowiki>'no extension under Linux</nowiki>|#919191}}
| |
|
| |
| {{Cl|DIM}} {{Cl|SHARED}} pathsep {{Cl|AS}} {{Cl|STRING}} * {{Text|1|#F580B1}}
| |
| pathsep$ = {{Text|<nowiki>"\"</nowiki>|#FFB100}}
| |
| {{Cl|IF}} os$ = {{Text|<nowiki>"LNX"</nowiki>|#FFB100}} {{Cl|THEN}} pathsep$ = {{Text|<nowiki>"/"</nowiki>|#FFB100}}
| |
| {{Text|<nowiki>'note: QB64 handles OS specific path separators automatically except under SHELL calls</nowiki>|#919191}}
| |
|
| |
| {{Cl|ON ERROR}} {{Cl|GOTO}} qberror_test
| |
|
| |
| {{Cl|DIM}} {{Cl|SHARED}} tmpdir {{Cl|AS}} {{Cl|STRING}}, tmpdir2 {{Cl|AS}} {{Cl|STRING}}
| |
| {{Cl|IF}} os$ = {{Text|<nowiki>"WIN"</nowiki>|#FFB100}} {{Cl|THEN}} tmpdir$ = {{Text|<nowiki>".\internal\temp\"</nowiki>|#FFB100}}: tmpdir2$ = {{Text|<nowiki>"..\\temp\\"</nowiki>|#FFB100}}
| |
| {{Cl|IF}} os$ = {{Text|<nowiki>"LNX"</nowiki>|#FFB100}} {{Cl|THEN}} tmpdir$ = {{Text|<nowiki>"./internal/temp/"</nowiki>|#FFB100}}: tmpdir2$ = {{Text|<nowiki>"../temp/"</nowiki>|#FFB100}}
| |
|
| |
| {{Cl|IF}} {{Cl|NOT}} {{Cl|_DIREXISTS}}(tmpdir$) {{Cl|THEN}} {{Cl|MKDIR}} tmpdir$
| |
|
| |
| {{Cl|DECLARE LIBRARY}}
| |
| {{Cl|FUNCTION}} {{Text|getpid&|#55FF55}} ()
| |
| {{Cl|END DECLARE}}
| |
|
| |
| thisinstancepid = {{Text|getpid&|#55FF55}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} tempfolderindex
| |
|
| |
| {{Cl|IF}} {{Cl|INSTR}}({{Cl|_OS$}}, {{Text|<nowiki>"LINUX"</nowiki>|#FFB100}}) {{Cl|THEN}}
| |
| fh = {{Cl|FREEFILE}}
| |
| {{Cl|OPEN}} {{Text|<nowiki>".\internal\temp\tempfoldersearch.bin"</nowiki>|#FFB100}} {{Cl|OPEN#File_Access_Modes|FOR}} {{Cl|OPEN#File_Access_Modes|RANDOM}} {{Cl|OPEN|AS}} #fh {{Cl|OPEN|LEN}} = {{Cl|OPEN|LEN}}(tempfolderindex)
| |
| tempfolderrecords = {{Cl|LOF}}(fh) / {{Cl|LEN}}(tempfolderindex)
| |
| i = {{Text|1|#F580B1}}
| |
| {{Cl|IF}} tempfolderrecords = {{Text|0|#F580B1}} {{Cl|THEN}}
| |
| {{Text|<nowiki>'first run ever?</nowiki>|#919191}}
| |
| {{Cl|PUT}} #fh, {{Text|1|#F580B1}}, thisinstancepid
| |
| {{Cl|ELSE}}
| |
| {{Cl|FOR}} i = {{Text|1|#F580B1}} {{Cl|TO}} tempfolderrecords
| |
| {{Text|<nowiki>'check if any of the temp folders is being used = pid still active</nowiki>|#919191}}
| |
| {{Cl|GET}} #fh, i, tempfoldersearch
| |
|
| |
| {{Cl|SHELL}} {{Cl|_HIDE}} {{Text|<nowiki>"ps -p "</nowiki>|#FFB100}} + {{Cl|STR$}}(tempfoldersearch) + {{Text|<nowiki>" > /dev/null 2>&1; echo $? > internal/temp/checkpid.bin"</nowiki>|#FFB100}}
| |
| fh2 = {{Cl|FREEFILE}}
| |
| {{Cl|OPEN}} {{Text|<nowiki>"internal/temp/checkpid.bin"</nowiki>|#FFB100}} {{Cl|OPEN#File_Access_Modes|FOR}} {{Cl|OPEN#File_Access_Modes|BINARY}} {{Cl|OPEN|AS}} #fh2
| |
| {{Cl|LINE INPUT (file statement)|LINE INPUT}} #fh2, checkpid$
| |
| {{Cl|CLOSE}} #fh2
| |
| {{Cl|IF}} {{Cl|VAL}}(checkpid$) = {{Text|1|#F580B1}} {{Cl|THEN}}
| |
| {{Text|<nowiki>'This temp folder was locked by an instance that's no longer active, so</nowiki>|#919191}}
| |
| {{Text|<nowiki>'this will be our temp folder</nowiki>|#919191}}
| |
| {{Cl|PUT}} #fh, i, thisinstancepid
| |
| {{Cl|EXIT FOR}}
| |
| {{Cl|END IF}}
| |
| {{Cl|NEXT}}
| |
| {{Cl|IF}} i > tempfolderrecords {{Cl|THEN}}
| |
| {{Text|<nowiki>'All indexes were busy. Let's initiate a new one:</nowiki>|#919191}}
| |
| {{Cl|PUT}} #fh, i, thisinstancepid
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}}
| |
| {{Cl|CLOSE}} #fh
| |
| {{Cl|IF}} i > {{Text|1|#F580B1}} {{Cl|THEN}}
| |
| tmpdir$ = {{Text|<nowiki>"./internal/temp"</nowiki>|#FFB100}} + {{Text|str2$|#55FF55}}(i) + {{Text|<nowiki>"/"</nowiki>|#FFB100}}: tmpdir2$ = {{Text|<nowiki>"../temp"</nowiki>|#FFB100}} + {{Text|str2$|#55FF55}}(i) + {{Text|<nowiki>"/"</nowiki>|#FFB100}}
| |
| {{Cl|IF}} {{Cl|_DIREXISTS}}(tmpdir$) = {{Text|0|#F580B1}} {{Cl|THEN}}
| |
| {{Cl|MKDIR}} tmpdir$
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}}
| |
| {{Cl|OPEN}} tmpdir$ + {{Text|<nowiki>"temp.bin"</nowiki>|#FFB100}} {{Cl|OPEN#File_Access_Modes|FOR}} {{Cl|OPEN#File_Access_Modes|OUTPUT}} {{Cl|OPEN#File_ACCESS_and_LOCK_Permissions|LOCK}} {{Cl|OPEN#File_ACCESS_and_LOCK_Permissions|WRITE}} {{Cl|OPEN|AS}} #26
| |
| {{Cl|ELSE}}
| |
| {{Cl|ON ERROR}} {{Cl|GOTO}} qberror_test
| |
| E = {{Text|0|#F580B1}}
| |
| i = {{Text|1|#F580B1}}
| |
| {{Cl|OPEN}} tmpdir$ + {{Text|<nowiki>"temp.bin"</nowiki>|#FFB100}} {{Cl|OPEN#File_Access_Modes|FOR}} {{Cl|OPEN#File_Access_Modes|OUTPUT}} {{Cl|OPEN#File_ACCESS_and_LOCK_Permissions|LOCK}} {{Cl|OPEN#File_ACCESS_and_LOCK_Permissions|WRITE}} {{Cl|OPEN|AS}} #26
| |
| {{Cl|DO...LOOP|DO WHILE}} E
| |
| i = i + {{Text|1|#F580B1}}
| |
| {{Cl|IF}} i = {{Text|1000|#F580B1}} {{Cl|THEN}} {{Cl|PRINT}} {{Text|<nowiki>"Unable to locate the 'internal' folder"</nowiki>|#FFB100}}: {{Cl|END}} {{Text|1|#F580B1}}
| |
| {{Cl|MKDIR}} {{Text|<nowiki>".\internal\temp"</nowiki>|#FFB100}} + {{Text|str2$|#55FF55}}(i)
| |
| {{Cl|IF}} os$ = {{Text|<nowiki>"WIN"</nowiki>|#FFB100}} {{Cl|THEN}} tmpdir$ = {{Text|<nowiki>".\internal\temp"</nowiki>|#FFB100}} + {{Text|str2$|#55FF55}}(i) + {{Text|<nowiki>"\"</nowiki>|#FFB100}}: tmpdir2$ = {{Text|<nowiki>"..\\temp"</nowiki>|#FFB100}} + {{Text|str2$|#55FF55}}(i) + {{Text|<nowiki>"\\"</nowiki>|#FFB100}}
| |
| {{Cl|IF}} os$ = {{Text|<nowiki>"LNX"</nowiki>|#FFB100}} {{Cl|THEN}} tmpdir$ = {{Text|<nowiki>"./internal/temp"</nowiki>|#FFB100}} + {{Text|str2$|#55FF55}}(i) + {{Text|<nowiki>"/"</nowiki>|#FFB100}}: tmpdir2$ = {{Text|<nowiki>"../temp"</nowiki>|#FFB100}} + {{Text|str2$|#55FF55}}(i) + {{Text|<nowiki>"/"</nowiki>|#FFB100}}
| |
| E = {{Text|0|#F580B1}}
| |
| {{Cl|OPEN}} tmpdir$ + {{Text|<nowiki>"temp.bin"</nowiki>|#FFB100}} {{Cl|OPEN#File_Access_Modes|FOR}} {{Cl|OPEN#File_Access_Modes|OUTPUT}} {{Cl|OPEN#File_ACCESS_and_LOCK_Permissions|LOCK}} {{Cl|OPEN#File_ACCESS_and_LOCK_Permissions|WRITE}} {{Cl|OPEN|AS}} #26
| |
| {{Cl|LOOP}}
| |
| {{Cl|END IF}}
| |
|
| |
|
| |
| {{Text|<nowiki>'temp folder established</nowiki>|#919191}}
| |
| tempfolderindex = i
| |
| {{Cl|IF}} i > {{Text|1|#F580B1}} {{Cl|THEN}}
| |
| {{Text|<nowiki>'create modified version of qbx.cpp</nowiki>|#919191}}
| |
| {{Cl|OPEN}} {{Text|<nowiki>".\internal\c\qbx"</nowiki>|#FFB100}} + {{Text|str2$|#55FF55}}(i) + {{Text|<nowiki>".cpp"</nowiki>|#FFB100}} {{Cl|OPEN#File_Access_Modes|FOR}} {{Cl|OPEN#File_Access_Modes|OUTPUT}} {{Cl|OPEN|AS}} #2
| |
| {{Cl|OPEN}} {{Text|<nowiki>".\internal\c\qbx.cpp"</nowiki>|#FFB100}} {{Cl|OPEN#File_Access_Modes|FOR}} {{Cl|OPEN#File_Access_Modes|BINARY}} {{Cl|OPEN|AS}} #1
| |
| {{Cl|DO...LOOP|DO UNTIL}} {{Cl|EOF}}({{Text|1|#F580B1}})
| |
| {{Cl|LINE INPUT (file statement)|LINE INPUT}} #1, a$
| |
| x = {{Cl|INSTR}}(a$, {{Text|<nowiki>"..\\temp\\"</nowiki>|#FFB100}}): {{Cl|IF}} x {{Cl|THEN}} a$ = {{Cl|LEFT$}}(a$, x - {{Text|1|#F580B1}}) + {{Text|<nowiki>"..\\temp"</nowiki>|#FFB100}} + {{Text|str2$|#55FF55}}(i) + {{Text|<nowiki>"\\"</nowiki>|#FFB100}} + {{Cl|RIGHT$}}(a$, {{Cl|LEN}}(a$) - (x + {{Text|9|#F580B1}}))
| |
| x = {{Cl|INSTR}}(a$, {{Text|<nowiki>"../temp/"</nowiki>|#FFB100}}): {{Cl|IF}} x {{Cl|THEN}} a$ = {{Cl|LEFT$}}(a$, x - {{Text|1|#F580B1}}) + {{Text|<nowiki>"../temp"</nowiki>|#FFB100}} + {{Text|str2$|#55FF55}}(i) + {{Text|<nowiki>"/"</nowiki>|#FFB100}} + {{Cl|RIGHT$}}(a$, {{Cl|LEN}}(a$) - (x + {{Text|7|#F580B1}}))
| |
| {{Cl|PRINT (file statement)|PRINT}} #2, a$
| |
| {{Cl|LOOP}}
| |
| {{Cl|CLOSE}} #1, #2
| |
| {{Cl|END IF}}
| |
|
| |
| {{Cl|IF}} Debug {{Cl|THEN}} {{Cl|OPEN}} tmpdir$ + {{Text|<nowiki>"debug.txt"</nowiki>|#FFB100}} {{Cl|OPEN#File_Access_Modes|FOR}} {{Cl|OPEN#File_Access_Modes|OUTPUT}} {{Cl|OPEN|AS}} #9
| |
|
| |
| {{Cl|ON ERROR}} {{Cl|GOTO}} qberror
| |
|
| |
|
| |
|
| |
| {{Cl|DIM}} {{Cl|SHARED}} tempfolderindexstr {{Cl|AS}} {{Cl|STRING}} {{Text|<nowiki>'appended to "Untitled"</nowiki>|#919191}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} tempfolderindexstr2 {{Cl|AS}} {{Cl|STRING}}
| |
| {{Cl|IF}} tempfolderindex <> {{Text|1|#F580B1}} {{Cl|THEN}} tempfolderindexstr$ = {{Text|<nowiki>"("</nowiki>|#FFB100}} + {{Text|str2$|#55FF55}}(tempfolderindex) + {{Text|<nowiki>")"</nowiki>|#FFB100}}: tempfolderindexstr2$ = {{Text|str2$|#55FF55}}(tempfolderindex)
| |
|
| |
|
| |
| {{Cl|DIM}} {{Cl|SHARED}} idedebuginfo
| |
| {{Cl|DIM}} {{Cl|SHARED}} seperateargs_error
| |
| {{Cl|DIM}} {{Cl|SHARED}} seperateargs_error_message {{Cl|AS}} {{Cl|STRING}}
| |
|
| |
| {{Cl|DIM}} {{Cl|SHARED}} compfailed
| |
|
| |
| {{Cl|DIM}} {{Cl|SHARED}} reginternalsubfunc
| |
| {{Cl|DIM}} {{Cl|SHARED}} reginternalvariable
| |
|
| |
|
| |
| {{Cl|DIM}} {{Cl|SHARED}} symboltype_size
| |
| symboltype_size = {{Text|0|#F580B1}}
| |
|
| |
| {{Cl|DIM}} {{Cl|SHARED}} use_global_byte_elements
| |
| use_global_byte_elements = {{Text|0|#F580B1}}
| |
|
| |
| {{Text|<nowiki>'compiler-side IDE data & definitions</nowiki>|#919191}}
| |
| {{Text|<nowiki>'SHARED variables "passed" to/from the compiler & IDE</nowiki>|#919191}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} idecommand {{Cl|AS}} {{Cl|STRING}} {{Text|<nowiki>'a 1 byte message-type code, followed by optional string data</nowiki>|#919191}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} idereturn {{Cl|AS}} {{Cl|STRING}} {{Text|<nowiki>'used to pass formatted-lines and return information back to the IDE</nowiki>|#919191}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} ideerror {{Cl|AS}} {{Cl|LONG}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} idecompiled {{Cl|AS}} {{Cl|LONG}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} idemode {{Text|<nowiki>'1 if using the IDE to compile</nowiki>|#919191}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} ideerrorline {{Cl|AS}} {{Cl|LONG}} {{Text|<nowiki>'set by qb64-error(...) to the line number it would have reported, this number</nowiki>|#919191}}
| |
| {{Text|<nowiki>'is later passed to the ide in message #8</nowiki>|#919191}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} idemessage {{Cl|AS}} {{Cl|STRING}} {{Text|<nowiki>'set by qb64-error(...) to the error message to be reported, this</nowiki>|#919191}}
| |
| {{Text|<nowiki>'is later passed to the ide in message #8</nowiki>|#919191}}
| |
|
| |
| {{Cl|DIM}} {{Cl|SHARED}} optionexplicit {{Cl|AS}} {{Cl|_BYTE}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} optionexplicitarray {{Cl|AS}} {{Cl|_BYTE}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} optionexplicit_cmd {{Cl|AS}} {{Cl|_BYTE}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} ideStartAtLine {{Cl|AS}} {{Cl|LONG}}, errorLineInInclude {{Cl|AS}} {{Cl|LONG}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} warningInInclude {{Cl|AS}} {{Cl|LONG}}, warningInIncludeLine {{Cl|AS}} {{Cl|LONG}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} outputfile_cmd$
| |
| {{Cl|DIM}} {{Cl|SHARED}} compilelog$
| |
|
| |
| {{Text|<nowiki>'</nowiki>|#919191}}{{Cm|$INCLUDE}}:{{Text|<nowiki>'global\IDEsettings.bas'</nowiki>|#919191}}
| |
|
| |
| {{Cl|DIM}} OutputIsRelativeToStartDir {{Cl|AS}} {{Cl|LONG}}
| |
|
| |
| CMDLineFile = {{Text|ParseCMDLineArgs$|#55FF55}}
| |
| {{Cl|IF}} CMDLineFile <> {{Text|<nowiki>""</nowiki>|#FFB100}} {{Cl|AND (boolean)|AND}} {{Cl|_FILEEXISTS}}({{Cl|_STARTDIR$}} + {{Text|<nowiki>"/"</nowiki>|#FFB100}} + CMDLineFile) {{Cl|THEN}}
| |
| CMDLineFile = {{Cl|_STARTDIR$}} + {{Text|<nowiki>"/"</nowiki>|#FFB100}} + CMDLineFile
| |
| OutputIsRelativeToStartDir = {{Text|-1|#F580B1}}
| |
| {{Cl|END IF}}
| |
|
| |
| {{Cl|IF}} ConsoleMode {{Cl|THEN}}
| |
| {{Cl|_DEST}} {{Cl|_CONSOLE}}
| |
| {{Cl|ELSE}}
| |
| {{Cl|_CONSOLE}} {{Cl|OFF}}
| |
| {{Cl|_SCREENSHOW}}
| |
| {{Cl|_ICON}}
| |
| {{Cl|END IF}}
| |
|
| |
| {{Text|<nowiki>'the function ?=ide(?) should always be passed 0, it returns a message code number, any further information</nowiki>|#919191}}
| |
| {{Text|<nowiki>'is passed back in idereturn</nowiki>|#919191}}
| |
|
| |
| {{Text|<nowiki>'message code numbers:</nowiki>|#919191}}
| |
| {{Text|<nowiki>'0 no ide present (auto defined array ide() return 0)</nowiki>|#919191}}
| |
|
| |
| {{Text|<nowiki>'1 launch ide & with passed filename (compiler->ide)</nowiki>|#919191}}
| |
|
| |
| {{Text|<nowiki>'2 begin new compilation with returned line of code (compiler<-ide)</nowiki>|#919191}}
| |
| {{Text|<nowiki>' [2][line of code]</nowiki>|#919191}}
| |
|
| |
| {{Text|<nowiki>'3 request next line (compiler->ide)</nowiki>|#919191}}
| |
| {{Text|<nowiki>' [3]</nowiki>|#919191}}
| |
|
| |
| {{Text|<nowiki>'4 next line of code returned (compiler<-ide)</nowiki>|#919191}}
| |
| {{Text|<nowiki>' [4][line of code]</nowiki>|#919191}}
| |
|
| |
| {{Text|<nowiki>'5 no more lines of code exist (compiler<-ide)</nowiki>|#919191}}
| |
| {{Text|<nowiki>' [5]</nowiki>|#919191}}
| |
|
| |
| {{Text|<nowiki>'6 code is OK/ready (compiler->ide)</nowiki>|#919191}}
| |
| {{Text|<nowiki>' [6]</nowiki>|#919191}}
| |
|
| |
| {{Text|<nowiki>'7 repass the code from the beginning (compiler->ide)</nowiki>|#919191}}
| |
| {{Text|<nowiki>' [7]</nowiki>|#919191}}
| |
|
| |
| {{Text|<nowiki>'8 an error has occurred with 'this' message on 'this' line(compiler->ide)</nowiki>|#919191}}
| |
| {{Text|<nowiki>' [8][error message][line as LONG]</nowiki>|#919191}}
| |
|
| |
| {{Text|<nowiki>'9 C++ compile (if necessary) and run with 'this' name (compiler<-ide)</nowiki>|#919191}}
| |
| {{Text|<nowiki>' [9][name(no path, no .bas)]</nowiki>|#919191}}
| |
|
| |
| {{Text|<nowiki>'10 The line requires more time to process</nowiki>|#919191}}
| |
| {{Text|<nowiki>' Pass-back 'line of code' using method [4] when ready</nowiki>|#919191}}
| |
| {{Text|<nowiki>' [10][line of code]</nowiki>|#919191}}
| |
|
| |
| {{Text|<nowiki>'11 ".EXE file created" message</nowiki>|#919191}}
| |
|
| |
| {{Text|<nowiki>'12 The name of the exe I'll create is '...' (compiler->ide)</nowiki>|#919191}}
| |
| {{Text|<nowiki>' [12][exe name without .exe]</nowiki>|#919191}}
| |
|
| |
| {{Text|<nowiki>'255 A qb error happened in the IDE (compiler->ide)</nowiki>|#919191}}
| |
| {{Text|<nowiki>' note: detected by the fact that ideerror was not set to 0</nowiki>|#919191}}
| |
| {{Text|<nowiki>' [255]</nowiki>|#919191}}
| |
|
| |
| {{Text|<nowiki>'hash table data</nowiki>|#919191}}
| |
| {{Cl|TYPE}} HashListItem
| |
| Flags {{Cl|AS}} {{Cl|LONG}}
| |
| Reference {{Cl|AS}} {{Cl|LONG}}
| |
| NextItem {{Cl|AS}} {{Cl|LONG}}
| |
| PrevItem {{Cl|AS}} {{Cl|LONG}}
| |
| LastItem {{Cl|AS}} {{Cl|LONG}} {{Text|<nowiki>'note: this value is only valid on the first item in the list</nowiki>|#919191}}
| |
| {{Text|<nowiki>'note: name is stored in a seperate array of strings</nowiki>|#919191}}
| |
| {{Cl|END TYPE}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} HashFind_NextListItem {{Cl|AS}} {{Cl|LONG}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} HashFind_Reverse {{Cl|AS}} {{Cl|LONG}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} HashFind_SearchFlags {{Cl|AS}} {{Cl|LONG}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} HashFind_Name {{Cl|AS}} {{Cl|STRING}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} HashRemove_LastFound {{Cl|AS}} {{Cl|LONG}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} HashListSize {{Cl|AS}} {{Cl|LONG}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} HashListNext {{Cl|AS}} {{Cl|LONG}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} HashListFreeSize {{Cl|AS}} {{Cl|LONG}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} HashListFreeLast {{Cl|AS}} {{Cl|LONG}}
| |
| {{Text|<nowiki>'hash lookup tables</nowiki>|#919191}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} hash1char({{Text|255|#F580B1}}) {{Cl|AS}} {{Cl|INTEGER}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} hash2char({{Text|65535|#F580B1}}) {{Cl|AS}} {{Cl|INTEGER}}
| |
| {{Cl|FOR}} x = {{Text|1|#F580B1}} {{Cl|TO}} {{Text|26|#F580B1}}
| |
| hash1char({{Text|64|#F580B1}} + x) = x
| |
| hash1char({{Text|96|#F580B1}} + x) = x
| |
| {{Cl|NEXT}}
| |
| hash1char({{Text|95|#F580B1}}) = {{Text|27|#F580B1}} {{Text|<nowiki>'_</nowiki>|#919191}}
| |
| hash1char({{Text|48|#F580B1}}) = {{Text|28|#F580B1}} {{Text|<nowiki>'0</nowiki>|#919191}}
| |
| hash1char({{Text|49|#F580B1}}) = {{Text|29|#F580B1}} {{Text|<nowiki>'1</nowiki>|#919191}}
| |
| hash1char({{Text|50|#F580B1}}) = {{Text|30|#F580B1}} {{Text|<nowiki>'2</nowiki>|#919191}}
| |
| hash1char({{Text|51|#F580B1}}) = {{Text|31|#F580B1}} {{Text|<nowiki>'3</nowiki>|#919191}}
| |
| hash1char({{Text|52|#F580B1}}) = {{Text|23|#F580B1}} {{Text|<nowiki>'4 'note: x, y, z and beginning alphabet letters avoided because of common usage (eg. a2, y3)</nowiki>|#919191}}
| |
| hash1char({{Text|53|#F580B1}}) = {{Text|22|#F580B1}} {{Text|<nowiki>'5</nowiki>|#919191}}
| |
| hash1char({{Text|54|#F580B1}}) = {{Text|20|#F580B1}} {{Text|<nowiki>'6</nowiki>|#919191}}
| |
| hash1char({{Text|55|#F580B1}}) = {{Text|19|#F580B1}} {{Text|<nowiki>'7</nowiki>|#919191}}
| |
| hash1char({{Text|56|#F580B1}}) = {{Text|18|#F580B1}} {{Text|<nowiki>'8</nowiki>|#919191}}
| |
| hash1char({{Text|57|#F580B1}}) = {{Text|17|#F580B1}} {{Text|<nowiki>'9</nowiki>|#919191}}
| |
| {{Cl|FOR}} c1 = {{Text|0|#F580B1}} {{Cl|TO}} {{Text|255|#F580B1}}
| |
| {{Cl|FOR}} c2 = {{Text|0|#F580B1}} {{Cl|TO}} {{Text|255|#F580B1}}
| |
| hash2char(c1 + c2 * {{Text|256|#F580B1}}) = hash1char(c1) + hash1char(c2) * {{Text|32|#F580B1}}
| |
| {{Cl|NEXT}}
| |
| {{Cl|NEXT}}
| |
| {{Text|<nowiki>'init</nowiki>|#919191}}
| |
| HashListSize = {{Text|65536|#F580B1}}
| |
| HashListNext = {{Text|1|#F580B1}}
| |
| HashListFreeSize = {{Text|1024|#F580B1}}
| |
| HashListFreeLast = {{Text|0|#F580B1}}
| |
| {{Cl|REDIM}} {{Cl|SHARED}} HashList({{Text|1|#F580B1}} {{Cl|TO}} HashListSize) {{Cl|AS}} HashListItem
| |
| {{Cl|REDIM}} {{Cl|SHARED}} HashListName({{Text|1|#F580B1}} {{Cl|TO}} HashListSize) {{Cl|AS}} {{Cl|STRING}} * {{Text|256|#F580B1}}
| |
| {{Cl|REDIM}} {{Cl|SHARED}} HashListFree({{Text|1|#F580B1}} {{Cl|TO}} HashListFreeSize) {{Cl|AS}} {{Cl|LONG}}
| |
| {{Cl|REDIM}} {{Cl|SHARED}} HashTable({{Text|16777215|#F580B1}}) {{Cl|AS}} {{Cl|LONG}} {{Text|<nowiki>'64MB lookup table with indexes to the hashlist</nowiki>|#919191}}
| |
|
| |
| {{Cl|CONST}} HASHFLAG_LABEL = {{Text|2|#F580B1}}
| |
| {{Cl|CONST}} HASHFLAG_TYPE = {{Text|4|#F580B1}}
| |
| {{Cl|CONST}} HASHFLAG_RESERVED = {{Text|8|#F580B1}}
| |
| {{Cl|CONST}} HASHFLAG_OPERATOR = {{Text|16|#F580B1}}
| |
| {{Cl|CONST}} HASHFLAG_CUSTOMSYNTAX = {{Text|32|#F580B1}}
| |
| {{Cl|CONST}} HASHFLAG_SUB = {{Text|64|#F580B1}}
| |
| {{Cl|CONST}} HASHFLAG_FUNCTION = {{Text|128|#F580B1}}
| |
| {{Cl|CONST}} HASHFLAG_UDT = {{Text|256|#F580B1}}
| |
| {{Cl|CONST}} HASHFLAG_UDTELEMENT = {{Text|512|#F580B1}}
| |
| {{Cl|CONST}} HASHFLAG_CONSTANT = {{Text|1024|#F580B1}}
| |
| {{Cl|CONST}} HASHFLAG_VARIABLE = {{Text|2048|#F580B1}}
| |
| {{Cl|CONST}} HASHFLAG_ARRAY = {{Text|4096|#F580B1}}
| |
| {{Cl|CONST}} HASHFLAG_XELEMENTNAME = {{Text|8192|#F580B1}}
| |
| {{Cl|CONST}} HASHFLAG_XTYPENAME = {{Text|16384|#F580B1}}
| |
|
| |
| {{Cl|TYPE}} Label_Type
| |
| State {{Cl|AS}} {{Cl|_UNSIGNED}} {{Cl|_BYTE}} {{Text|<nowiki>'0=label referenced, 1=label created</nowiki>|#919191}}
| |
| cn {{Cl|AS}} {{Cl|STRING}} * {{Text|256|#F580B1}}
| |
| {{Text|Scope|#55FF55}} {{Cl|AS}} {{Cl|LONG}}
| |
| Data_Offset {{Cl|AS}} {{Cl|_INTEGER64}} {{Text|<nowiki>'offset within data</nowiki>|#919191}}
| |
| Data_Referenced {{Cl|AS}} {{Cl|_UNSIGNED}} {{Cl|_BYTE}} {{Text|<nowiki>'set to 1 if data is referenced (data_offset will be used to create the data offset variable)</nowiki>|#919191}}
| |
| Error_Line {{Cl|AS}} {{Cl|LONG}} {{Text|<nowiki>'the line number to reference on errors</nowiki>|#919191}}
| |
| Scope_Restriction {{Cl|AS}} {{Cl|LONG}} {{Text|<nowiki>'cannot exist inside this scope (post checked)</nowiki>|#919191}}
| |
| SourceLineNumber {{Cl|AS}} {{Cl|LONG}}
| |
| {{Cl|END TYPE}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} nLabels, Labels_Ubound
| |
| Labels_Ubound = {{Text|100|#F580B1}}
| |
| {{Cl|REDIM}} {{Cl|SHARED}} Labels({{Text|1|#F580B1}} {{Cl|TO}} Labels_Ubound) {{Cl|AS}} Label_Type
| |
| {{Cl|DIM}} {{Cl|SHARED}} Empty_Label {{Cl|AS}} Label_Type
| |
|
| |
| {{Cl|DIM}} {{Cl|SHARED}} PossibleSubNameLabels {{Cl|AS}} {{Cl|STRING}} {{Text|<nowiki>'format: name+sp+name+sp+name <-ucase$'d</nowiki>|#919191}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} SubNameLabels {{Cl|AS}} {{Cl|STRING}} {{Text|<nowiki>'format: name+sp+name+sp+name <-ucase$'d</nowiki>|#919191}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} CreatingLabel {{Cl|AS}} {{Cl|LONG}}
| |
|
| |
| {{Cl|DIM}} {{Cl|SHARED}} AllowLocalName {{Cl|AS}} {{Cl|LONG}}
| |
|
| |
| {{Cl|DIM}} {{Cl|SHARED}} DataOffset
| |
|
| |
| {{Cl|DIM}} {{Cl|SHARED}} prepass
| |
|
| |
|
| |
| {{Cl|DIM}} {{Cl|SHARED}} autoarray
| |
|
| |
| {{Cl|DIM}} {{Cl|SHARED}} ontimerid, onkeyid, onstrigid
| |
|
| |
| {{Cl|DIM}} {{Cl|SHARED}} revertmaymusthave({{Text|1|#F580B1}} {{Cl|TO}} {{Text|10000|#F580B1}})
| |
| {{Cl|DIM}} {{Cl|SHARED}} revertmaymusthaven
| |
|
| |
| {{Cl|DIM}} {{Cl|SHARED}} linecontinuation
| |
|
| |
| {{Cl|DIM}} {{Cl|SHARED}} dim2typepassback {{Cl|AS}} {{Cl|STRING}} {{Text|<nowiki>'passes back correct case sensitive version of type</nowiki>|#919191}}
| |
|
| |
|
| |
| {{Cl|DIM}} {{Cl|SHARED}} inclevel
| |
| {{Cl|DIM}} {{Cl|SHARED}} incname({{Text|100|#F580B1}}) {{Cl|AS}} {{Cl|STRING}} {{Text|<nowiki>'must be full path as given</nowiki>|#919191}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} inclinenumber({{Text|100|#F580B1}}) {{Cl|AS}} {{Cl|LONG}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} incerror {{Cl|AS}} {{Cl|STRING}}
| |
|
| |
|
| |
| {{Cl|DIM}} {{Cl|SHARED}} fix046 {{Cl|AS}} {{Cl|STRING}}
| |
| fix046$ = {{Text|<nowiki>"__"</nowiki>|#FFB100}} + {{Text|<nowiki>"ASCII"</nowiki>|#FFB100}} + {{Text|<nowiki>"_"</nowiki>|#FFB100}} + {{Text|<nowiki>"CHR"</nowiki>|#FFB100}} + {{Text|<nowiki>"_"</nowiki>|#FFB100}} + {{Text|<nowiki>"046"</nowiki>|#FFB100}} + {{Text|<nowiki>"__"</nowiki>|#FFB100}} {{Text|<nowiki>'broken up to avoid detection for layout reversion</nowiki>|#919191}}
| |
|
| |
| {{Cl|DIM}} {{Cl|SHARED}} layout {{Cl|AS}} {{Cl|STRING}} {{Text|<nowiki>'passed to IDE</nowiki>|#919191}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} layoutok {{Cl|AS}} {{Cl|LONG}} {{Text|<nowiki>'tracks status of entire line</nowiki>|#919191}}
| |
|
| |
| {{Cl|DIM}} {{Cl|SHARED}} layoutcomment {{Cl|AS}} {{Cl|STRING}}
| |
|
| |
| {{Cl|DIM}} {{Cl|SHARED}} tlayout {{Cl|AS}} {{Cl|STRING}} {{Text|<nowiki>'temporary layout string set by supporting functions</nowiki>|#919191}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} layoutdone {{Cl|AS}} {{Cl|LONG}} {{Text|<nowiki>'tracks status of single command</nowiki>|#919191}}
| |
|
| |
|
| |
| {{Cl|DIM}} {{Cl|SHARED}} fooindwel
| |
|
| |
| {{Cl|DIM}} {{Cl|SHARED}} alphanumeric({{Text|255|#F580B1}})
| |
| {{Cl|FOR}} i = {{Text|48|#F580B1}} {{Cl|TO}} {{Text|57|#F580B1}}
| |
| alphanumeric(i) = {{Text|-1|#F580B1}}
| |
| {{Cl|NEXT}}
| |
| {{Cl|FOR}} i = {{Text|65|#F580B1}} {{Cl|TO}} {{Text|90|#F580B1}}
| |
| alphanumeric(i) = {{Text|-1|#F580B1}}
| |
| {{Cl|NEXT}}
| |
| {{Cl|FOR}} i = {{Text|97|#F580B1}} {{Cl|TO}} {{Text|122|#F580B1}}
| |
| alphanumeric(i) = {{Text|-1|#F580B1}}
| |
| {{Cl|NEXT}}
| |
| {{Text|<nowiki>'_ is treated as an alphabet letter</nowiki>|#919191}}
| |
| alphanumeric({{Text|95|#F580B1}}) = {{Text|-1|#F580B1}}
| |
|
| |
| {{Cl|DIM}} {{Cl|SHARED}} isalpha({{Text|255|#F580B1}})
| |
| {{Cl|FOR}} i = {{Text|65|#F580B1}} {{Cl|TO}} {{Text|90|#F580B1}}
| |
| isalpha(i) = {{Text|-1|#F580B1}}
| |
| {{Cl|NEXT}}
| |
| {{Cl|FOR}} i = {{Text|97|#F580B1}} {{Cl|TO}} {{Text|122|#F580B1}}
| |
| isalpha(i) = {{Text|-1|#F580B1}}
| |
| {{Cl|NEXT}}
| |
| {{Text|<nowiki>'_ is treated as an alphabet letter</nowiki>|#919191}}
| |
| isalpha({{Text|95|#F580B1}}) = {{Text|-1|#F580B1}}
| |
|
| |
| {{Cl|DIM}} {{Cl|SHARED}} isnumeric({{Text|255|#F580B1}})
| |
| {{Cl|FOR}} i = {{Text|48|#F580B1}} {{Cl|TO}} {{Text|57|#F580B1}}
| |
| isnumeric(i) = {{Text|-1|#F580B1}}
| |
| {{Cl|NEXT}}
| |
|
| |
|
| |
| {{Cl|DIM}} {{Cl|SHARED}} lfsinglechar({{Text|255|#F580B1}})
| |
| lfsinglechar({{Text|40|#F580B1}}) = {{Text|1|#F580B1}} {{Text|<nowiki>'(</nowiki>|#919191}}
| |
| lfsinglechar({{Text|41|#F580B1}}) = {{Text|1|#F580B1}} {{Text|<nowiki>')</nowiki>|#919191}}
| |
| lfsinglechar({{Text|42|#F580B1}}) = {{Text|1|#F580B1}} {{Text|<nowiki>'*</nowiki>|#919191}}
| |
| lfsinglechar({{Text|43|#F580B1}}) = {{Text|1|#F580B1}} {{Text|<nowiki>'+</nowiki>|#919191}}
| |
| lfsinglechar({{Text|45|#F580B1}}) = {{Text|1|#F580B1}} {{Text|<nowiki>'-</nowiki>|#919191}}
| |
| lfsinglechar({{Text|47|#F580B1}}) = {{Text|1|#F580B1}} {{Text|<nowiki>'/</nowiki>|#919191}}
| |
| lfsinglechar({{Text|60|#F580B1}}) = {{Text|1|#F580B1}} {{Text|<nowiki>'<</nowiki>|#919191}}
| |
| lfsinglechar({{Text|61|#F580B1}}) = {{Text|1|#F580B1}} {{Text|<nowiki>'=</nowiki>|#919191}}
| |
| lfsinglechar({{Text|62|#F580B1}}) = {{Text|1|#F580B1}} {{Text|<nowiki>'></nowiki>|#919191}}
| |
| lfsinglechar({{Text|92|#F580B1}}) = {{Text|1|#F580B1}} {{Text|<nowiki>'\</nowiki>|#919191}}
| |
| lfsinglechar({{Text|94|#F580B1}}) = {{Text|1|#F580B1}} {{Text|<nowiki>'^</nowiki>|#919191}}
| |
|
| |
| lfsinglechar({{Text|44|#F580B1}}) = {{Text|1|#F580B1}} {{Text|<nowiki>',</nowiki>|#919191}}
| |
| lfsinglechar({{Text|46|#F580B1}}) = {{Text|1|#F580B1}} {{Text|<nowiki>'.</nowiki>|#919191}}
| |
| lfsinglechar({{Text|58|#F580B1}}) = {{Text|1|#F580B1}} {{Text|<nowiki>':</nowiki>|#919191}}
| |
| lfsinglechar({{Text|59|#F580B1}}) = {{Text|1|#F580B1}} {{Text|<nowiki>';</nowiki>|#919191}}
| |
|
| |
| lfsinglechar({{Text|35|#F580B1}}) = {{Text|1|#F580B1}} {{Text|<nowiki>'# (file no only)</nowiki>|#919191}}
| |
| lfsinglechar({{Text|36|#F580B1}}) = {{Text|1|#F580B1}} {{Text|<nowiki>'$ (metacommand only)</nowiki>|#919191}}
| |
| lfsinglechar({{Text|63|#F580B1}}) = {{Text|1|#F580B1}} {{Text|<nowiki>'? (print macro)</nowiki>|#919191}}
| |
| lfsinglechar({{Text|95|#F580B1}}) = {{Text|1|#F580B1}} {{Text|<nowiki>'_</nowiki>|#919191}}
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
| {{Cl|DIM}} {{Cl|SHARED}} nextrunlineindex {{Cl|AS}} {{Cl|LONG}}
| |
|
| |
| {{Cl|DIM}} {{Cl|SHARED}} lineinput3buffer {{Cl|AS}} {{Cl|STRING}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} lineinput3index {{Cl|AS}} {{Cl|LONG}}
| |
|
| |
| {{Cl|DIM}} {{Cl|SHARED}} dimstatic {{Cl|AS}} {{Cl|LONG}}
| |
|
| |
| {{Cl|DIM}} {{Cl|SHARED}} staticarraylist {{Cl|AS}} {{Cl|STRING}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} staticarraylistn {{Cl|AS}} {{Cl|LONG}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} commonarraylist {{Cl|AS}} {{Cl|STRING}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} commonarraylistn {{Cl|AS}} {{Cl|LONG}}
| |
|
| |
| {{Text|<nowiki>'CONST support</nowiki>|#919191}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} constmax {{Cl|AS}} {{Cl|LONG}}
| |
| constmax = {{Text|100|#F580B1}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} constlast {{Cl|AS}} {{Cl|LONG}}
| |
| constlast = {{Text|-1|#F580B1}}
| |
| {{Cl|REDIM}} {{Cl|SHARED}} constname(constmax) {{Cl|AS}} {{Cl|STRING}}
| |
| {{Cl|REDIM}} {{Cl|SHARED}} constcname(constmax) {{Cl|AS}} {{Cl|STRING}}
| |
| {{Cl|REDIM}} {{Cl|SHARED}} constnamesymbol(constmax) {{Cl|AS}} {{Cl|STRING}} {{Text|<nowiki>'optional name symbol</nowiki>|#919191}}
| |
| {{Text|<nowiki>' `1 and `no-number must be handled correctly</nowiki>|#919191}}
| |
| {{Text|<nowiki>'DIM SHARED constlastshared AS LONG 'so any defined inside a sub/function after this index can be "forgotten" when sub/function exits</nowiki>|#919191}}
| |
| {{Text|<nowiki>'constlastshared = -1</nowiki>|#919191}}
| |
| {{Cl|REDIM}} {{Cl|SHARED}} consttype(constmax) {{Cl|AS}} {{Cl|LONG}} {{Text|<nowiki>'variable type number</nowiki>|#919191}}
| |
| {{Text|<nowiki>'consttype determines storage</nowiki>|#919191}}
| |
| {{Cl|REDIM}} {{Cl|SHARED}} constinteger(constmax) {{Cl|AS}} {{Cl|_INTEGER64}}
| |
| {{Cl|REDIM}} {{Cl|SHARED}} constuinteger(constmax) {{Cl|AS}} {{Cl|_UNSIGNED}} {{Cl|_INTEGER64}}
| |
| {{Cl|REDIM}} {{Cl|SHARED}} constfloat(constmax) {{Cl|AS}} {{Cl|_FLOAT}}
| |
| {{Cl|REDIM}} {{Cl|SHARED}} conststring(constmax) {{Cl|AS}} {{Cl|STRING}}
| |
| {{Cl|REDIM}} {{Cl|SHARED}} constsubfunc(constmax) {{Cl|AS}} {{Cl|LONG}}
| |
| {{Cl|REDIM}} {{Cl|SHARED}} constdefined(constmax) {{Cl|AS}} {{Cl|LONG}}
| |
|
| |
| {{Text|<nowiki>'UDT</nowiki>|#919191}}
| |
| {{Text|<nowiki>'names</nowiki>|#919191}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} lasttype {{Cl|AS}} {{Cl|LONG}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} lasttypeelement {{Cl|AS}} {{Cl|LONG}}
| |
|
| |
| {{Cl|TYPE}} idstruct
| |
|
| |
| n {{Cl|AS}} {{Cl|STRING}} * {{Text|256|#F580B1}} {{Text|<nowiki>'name</nowiki>|#919191}}
| |
| cn {{Cl|AS}} {{Cl|STRING}} * {{Text|256|#F580B1}} {{Text|<nowiki>'case sensitive version of n</nowiki>|#919191}}
| |
|
| |
| arraytype {{Cl|AS}} {{Cl|LONG}} {{Text|<nowiki>'similar to t</nowiki>|#919191}}
| |
| arrayelements {{Cl|AS}} {{Cl|INTEGER}}
| |
| staticarray {{Cl|AS}} {{Cl|INTEGER}} {{Text|<nowiki>'set for arrays declared in the main module with static elements</nowiki>|#919191}}
| |
|
| |
| mayhave {{Cl|AS}} {{Cl|STRING}} * {{Text|8|#F580B1}} {{Text|<nowiki>'mayhave and musthave are exclusive of each other</nowiki>|#919191}}
| |
| musthave {{Cl|AS}} {{Cl|STRING}} * {{Text|8|#F580B1}}
| |
| t {{Cl|AS}} {{Cl|LONG}} {{Text|<nowiki>'type</nowiki>|#919191}}
| |
|
| |
| tsize {{Cl|AS}} {{Cl|LONG}}
| |
|
| |
|
| |
| subfunc {{Cl|AS}} {{Cl|INTEGER}} {{Text|<nowiki>'if function=1, sub=2 (max 100 arguments)</nowiki>|#919191}}
| |
| Dependency {{Cl|AS}} {{Cl|INTEGER}}
| |
| internal_subfunc {{Cl|AS}} {{Cl|INTEGER}}
| |
|
| |
| callname {{Cl|AS}} {{Cl|STRING}} * {{Text|256|#F580B1}}
| |
| ccall {{Cl|AS}} {{Cl|INTEGER}}
| |
| overloaded {{Cl|AS}} {{Cl|_BYTE}}
| |
| args {{Cl|AS}} {{Cl|INTEGER}}
| |
| minargs {{Cl|AS}} {{Cl|INTEGER}}
| |
| arg {{Cl|AS}} {{Cl|STRING}} * {{Text|400|#F580B1}} {{Text|<nowiki>'similar to t</nowiki>|#919191}}
| |
| argsize {{Cl|AS}} {{Cl|STRING}} * {{Text|400|#F580B1}} {{Text|<nowiki>'similar to tsize (used for fixed length strings)</nowiki>|#919191}}
| |
| specialformat {{Cl|AS}} {{Cl|STRING}} * {{Text|256|#F580B1}}
| |
| secondargmustbe {{Cl|AS}} {{Cl|STRING}} * {{Text|256|#F580B1}}
| |
| secondargcantbe {{Cl|AS}} {{Cl|STRING}} * {{Text|256|#F580B1}}
| |
| ret {{Cl|AS}} {{Cl|LONG}} {{Text|<nowiki>'the value it returns if it is a function (again like t)</nowiki>|#919191}}
| |
|
| |
| insubfunc {{Cl|AS}} {{Cl|STRING}} * {{Text|256|#F580B1}}
| |
| insubfuncn {{Cl|AS}} {{Cl|LONG}}
| |
|
| |
| share {{Cl|AS}} {{Cl|INTEGER}}
| |
| nele {{Cl|AS}} {{Cl|STRING}} * {{Text|100|#F580B1}}
| |
| nelereq {{Cl|AS}} {{Cl|STRING}} * {{Text|100|#F580B1}}
| |
| linkid {{Cl|AS}} {{Cl|LONG}}
| |
| linkarg {{Cl|AS}} {{Cl|INTEGER}}
| |
| staticscope {{Cl|AS}} {{Cl|INTEGER}}
| |
| {{Text|<nowiki>'For variables which are arguments passed to a sub/function</nowiki>|#919191}}
| |
| sfid {{Cl|AS}} {{Cl|LONG}} {{Text|<nowiki>'id number of variable's parent sub/function</nowiki>|#919191}}
| |
| sfarg {{Cl|AS}} {{Cl|INTEGER}} {{Text|<nowiki>'argument/parameter # within call (1=first)</nowiki>|#919191}}
| |
|
| |
| hr_syntax {{Cl|AS}} {{Cl|STRING}}
| |
| {{Cl|END TYPE}}
| |
|
| |
| {{Cl|DIM}} {{Cl|SHARED}} id {{Cl|AS}} idstruct
| |
|
| |
| {{Cl|DIM}} {{Cl|SHARED}} idn {{Cl|AS}} {{Cl|LONG}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} ids_max {{Cl|AS}} {{Cl|LONG}}
| |
| ids_max = {{Text|1024|#F580B1}}
| |
| {{Cl|REDIM}} {{Cl|SHARED}} ids({{Text|1|#F580B1}} {{Cl|TO}} ids_max) {{Cl|AS}} idstruct
| |
| {{Cl|REDIM}} {{Cl|SHARED}} cmemlist({{Text|1|#F580B1}} {{Cl|TO}} ids_max + {{Text|1|#F580B1}}) {{Cl|AS}} {{Cl|INTEGER}} {{Text|<nowiki>'variables that must be in cmem</nowiki>|#919191}}
| |
| {{Cl|REDIM}} {{Cl|SHARED}} sfcmemargs({{Text|1|#F580B1}} {{Cl|TO}} ids_max + {{Text|1|#F580B1}}) {{Cl|AS}} {{Cl|STRING}} * {{Text|100|#F580B1}} {{Text|<nowiki>'s/f arg that must be in cmem</nowiki>|#919191}}
| |
| {{Cl|REDIM}} {{Cl|SHARED}} arrayelementslist({{Text|1|#F580B1}} {{Cl|TO}} ids_max + {{Text|1|#F580B1}}) {{Cl|AS}} {{Cl|INTEGER}} {{Text|<nowiki>'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</nowiki>|#919191}}
| |
|
| |
|
| |
| {{Text|<nowiki>'create blank id template for idclear to copy (stops strings being set to chr$(0))</nowiki>|#919191}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} cleariddata {{Cl|AS}} idstruct
| |
| cleariddata.cn = {{Text|<nowiki>""</nowiki>|#FFB100}}
| |
| cleariddata.n = {{Text|<nowiki>""</nowiki>|#FFB100}}
| |
| cleariddata.mayhave = {{Text|<nowiki>""</nowiki>|#FFB100}}
| |
| cleariddata.musthave = {{Text|<nowiki>""</nowiki>|#FFB100}}
| |
| cleariddata.callname = {{Text|<nowiki>""</nowiki>|#FFB100}}
| |
| cleariddata.arg = {{Text|<nowiki>""</nowiki>|#FFB100}}
| |
| cleariddata.argsize = {{Text|<nowiki>""</nowiki>|#FFB100}}
| |
| cleariddata.specialformat = {{Text|<nowiki>""</nowiki>|#FFB100}}
| |
| cleariddata.secondargmustbe = {{Text|<nowiki>""</nowiki>|#FFB100}}
| |
| cleariddata.secondargcantbe = {{Text|<nowiki>""</nowiki>|#FFB100}}
| |
| cleariddata.insubfunc = {{Text|<nowiki>""</nowiki>|#FFB100}}
| |
| cleariddata.nele = {{Text|<nowiki>""</nowiki>|#FFB100}}
| |
| cleariddata.nelereq = {{Text|<nowiki>""</nowiki>|#FFB100}}
| |
|
| |
| {{Cl|DIM}} {{Cl|SHARED}} ISSTRING {{Cl|AS}} {{Cl|LONG}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} ISFLOAT {{Cl|AS}} {{Cl|LONG}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} ISUNSIGNED {{Cl|AS}} {{Cl|LONG}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} ISPOINTER {{Cl|AS}} {{Cl|LONG}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} ISFIXEDLENGTH {{Cl|AS}} {{Cl|LONG}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} ISINCONVENTIONALMEMORY {{Cl|AS}} {{Cl|LONG}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} ISOFFSETINBITS {{Cl|AS}} {{Cl|LONG}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} ISARRAY {{Cl|AS}} {{Cl|LONG}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} ISREFERENCE {{Cl|AS}} {{Cl|LONG}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} ISUDT {{Cl|AS}} {{Cl|LONG}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} ISOFFSET {{Cl|AS}} {{Cl|LONG}}
| |
|
| |
| {{Cl|DIM}} {{Cl|SHARED}} STRINGTYPE {{Cl|AS}} {{Cl|LONG}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} BITTYPE {{Cl|AS}} {{Cl|LONG}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} UBITTYPE {{Cl|AS}} {{Cl|LONG}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} BYTETYPE {{Cl|AS}} {{Cl|LONG}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} UBYTETYPE {{Cl|AS}} {{Cl|LONG}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} INTEGERTYPE {{Cl|AS}} {{Cl|LONG}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} UINTEGERTYPE {{Cl|AS}} {{Cl|LONG}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} LONGTYPE {{Cl|AS}} {{Cl|LONG}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} ULONGTYPE {{Cl|AS}} {{Cl|LONG}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} INTEGER64TYPE {{Cl|AS}} {{Cl|LONG}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} UINTEGER64TYPE {{Cl|AS}} {{Cl|LONG}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} SINGLETYPE {{Cl|AS}} {{Cl|LONG}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} DOUBLETYPE {{Cl|AS}} {{Cl|LONG}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} FLOATTYPE {{Cl|AS}} {{Cl|LONG}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} OFFSETTYPE {{Cl|AS}} {{Cl|LONG}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} UOFFSETTYPE {{Cl|AS}} {{Cl|LONG}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} UDTTYPE {{Cl|AS}} {{Cl|LONG}}
| |
|
| |
| {{Cl|DIM}} {{Cl|SHARED}} gosubid {{Cl|AS}} {{Cl|LONG}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} redimoption {{Cl|AS}} {{Cl|INTEGER}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} dimoption {{Cl|AS}} {{Cl|INTEGER}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} arraydesc {{Cl|AS}} {{Cl|INTEGER}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} qberrorhappened {{Cl|AS}} {{Cl|INTEGER}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} qberrorcode {{Cl|AS}} {{Cl|INTEGER}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} qberrorline {{Cl|AS}} {{Cl|INTEGER}}
| |
| {{Text|<nowiki>'COMMON SHARED defineaz() AS STRING</nowiki>|#919191}}
| |
| {{Text|<nowiki>'COMMON SHARED defineextaz() AS STRING</nowiki>|#919191}}
| |
|
| |
| {{Cl|DIM}} {{Cl|SHARED}} sourcefile {{Cl|AS}} {{Cl|STRING}} {{Text|<nowiki>'the full path and filename</nowiki>|#919191}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} file {{Cl|AS}} {{Cl|STRING}} {{Text|<nowiki>'name of the file (without .bas or path)</nowiki>|#919191}}
| |
|
| |
| {{Text|<nowiki>'COMMON SHARED separgs() AS STRING</nowiki>|#919191}}
| |
|
| |
| {{Cl|DIM}} {{Cl|SHARED}} constequation {{Cl|AS}} {{Cl|INTEGER}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} DynamicMode {{Cl|AS}} {{Cl|INTEGER}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} findidsecondarg {{Cl|AS}} {{Cl|STRING}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} findanotherid {{Cl|AS}} {{Cl|INTEGER}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} findidinternal {{Cl|AS}} {{Cl|LONG}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} currentid {{Cl|AS}} {{Cl|LONG}} {{Text|<nowiki>'is the index of the last ID accessed</nowiki>|#919191}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} linenumber {{Cl|AS}} {{Cl|LONG}}, reallinenumber {{Cl|AS}} {{Cl|LONG}}, totallinenumber {{Cl|AS}} {{Cl|LONG}}, definingtypeerror {{Cl|AS}} {{Cl|LONG}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} wholeline {{Cl|AS}} {{Cl|STRING}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} firstLineNumberLabelvWatch {{Cl|AS}} {{Cl|LONG}}, lastLineNumberLabelvWatch {{Cl|AS}} {{Cl|LONG}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} vWatchUsedLabels {{Cl|AS}} {{Cl|STRING}}, vWatchUsedSkipLabels {{Cl|AS}} {{Cl|STRING}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} linefragment {{Cl|AS}} {{Cl|STRING}}
| |
| {{Text|<nowiki>'COMMON SHARED bitmask() AS _INTEGER64</nowiki>|#919191}}
| |
| {{Text|<nowiki>'COMMON SHARED bitmaskinv() AS _INTEGER64</nowiki>|#919191}}
| |
|
| |
| {{Cl|DIM}} {{Cl|SHARED}} arrayprocessinghappened {{Cl|AS}} {{Cl|INTEGER}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} stringprocessinghappened {{Cl|AS}} {{Cl|INTEGER}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} cleanupstringprocessingcall {{Cl|AS}} {{Cl|STRING}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} inputfunctioncalled {{Cl|AS}} {{Cl|_BYTE}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} recompile {{Cl|AS}} {{Cl|INTEGER}} {{Text|<nowiki>'forces recompilation</nowiki>|#919191}}
| |
| {{Text|<nowiki>'COMMON SHARED cmemlist() AS INTEGER</nowiki>|#919191}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} optionbase {{Cl|AS}} {{Cl|INTEGER}}
| |
|
| |
| {{Cl|DIM}} {{Cl|SHARED}} addmetastatic {{Cl|AS}} {{Cl|INTEGER}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} addmetadynamic {{Cl|AS}} {{Cl|INTEGER}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} addmetainclude {{Cl|AS}} {{Cl|STRING}}
| |
|
| |
| {{Cl|DIM}} {{Cl|SHARED}} closedmain {{Cl|AS}} {{Cl|INTEGER}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} module {{Cl|AS}} {{Cl|STRING}}
| |
|
| |
| {{Cl|DIM}} {{Cl|SHARED}} subfunc {{Cl|AS}} {{Cl|STRING}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} subfuncn {{Cl|AS}} {{Cl|LONG}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} closedsubfunc {{Cl|AS}} {{Cl|_BYTE}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} subfuncid {{Cl|AS}} {{Cl|LONG}}
| |
|
| |
| {{Cl|DIM}} {{Cl|SHARED}} defdatahandle {{Cl|AS}} {{Cl|INTEGER}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} dimsfarray {{Cl|AS}} {{Cl|INTEGER}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} dimshared {{Cl|AS}} {{Cl|INTEGER}}
| |
|
| |
| {{Text|<nowiki>'Allows passing of known elements to recompilation</nowiki>|#919191}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} sflistn {{Cl|AS}} {{Cl|INTEGER}}
| |
| {{Text|<nowiki>'COMMON SHARED sfidlist() AS LONG</nowiki>|#919191}}
| |
| {{Text|<nowiki>'COMMON SHARED sfarglist() AS INTEGER</nowiki>|#919191}}
| |
| {{Text|<nowiki>'COMMON SHARED sfelelist() AS INTEGER</nowiki>|#919191}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} glinkid {{Cl|AS}} {{Cl|LONG}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} glinkarg {{Cl|AS}} {{Cl|INTEGER}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} typname2typsize {{Cl|AS}} {{Cl|LONG}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} uniquenumbern {{Cl|AS}} {{Cl|LONG}}
| |
|
| |
| {{Text|<nowiki>'CLEAR , , 16384</nowiki>|#919191}}
| |
|
| |
|
| |
| {{Cl|DIM}} {{Cl|SHARED}} bitmask({{Text|1|#F580B1}} {{Cl|TO}} {{Text|64|#F580B1}}) {{Cl|AS}} {{Cl|_INTEGER64}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} bitmaskinv({{Text|1|#F580B1}} {{Cl|TO}} {{Text|64|#F580B1}}) {{Cl|AS}} {{Cl|_INTEGER64}}
| |
|
| |
| {{Cl|DIM}} {{Cl|SHARED}} defineextaz({{Text|1|#F580B1}} {{Cl|TO}} {{Text|27|#F580B1}}) {{Cl|AS}} {{Cl|STRING}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} defineaz({{Text|1|#F580B1}} {{Cl|TO}} {{Text|27|#F580B1}}) {{Cl|AS}} {{Cl|STRING}} {{Text|<nowiki>'27 is an underscore</nowiki>|#919191}}
| |
|
| |
| ISSTRING = {{Text|1073741824|#F580B1}}
| |
| ISFLOAT = {{Text|536870912|#F580B1}}
| |
| ISUNSIGNED = {{Text|268435456|#F580B1}}
| |
| ISPOINTER = {{Text|134217728|#F580B1}}
| |
| ISFIXEDLENGTH = {{Text|67108864|#F580B1}} {{Text|<nowiki>'only set for strings with pointer flag</nowiki>|#919191}}
| |
| 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|<nowiki>'QB64 will also support BIT*n, eg. DIM bitarray[10] AS _UNSIGNED _BIT*10</nowiki>|#919191}}
| |
| 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|<nowiki>'8-32 bytes</nowiki>|#919191}}
| |
| OFFSETTYPE = {{Text|64&|#F580B1}} + ISOFFSET + ISPOINTER: {{Cl|IF}} OS_BITS = {{Text|32|#F580B1}} {{Cl|THEN}} OFFSETTYPE = {{Text|32&|#F580B1}} + ISOFFSET + ISPOINTER
| |
| UOFFSETTYPE = {{Text|64&|#F580B1}} + ISOFFSET + ISUNSIGNED + ISPOINTER: {{Cl|IF}} OS_BITS = {{Text|32|#F580B1}} {{Cl|THEN}} UOFFSETTYPE = {{Text|32&|#F580B1}} + ISOFFSET + ISUNSIGNED + ISPOINTER
| |
| UDTTYPE = ISUDT + ISPOINTER
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
| {{Cl|DIM}} {{Cl|SHARED}} statementn {{Cl|AS}} {{Cl|LONG}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} everycasenewcase {{Cl|AS}} {{Cl|LONG}}
| |
|
| |
|
| |
|
| |
|
| |
| {{Cl|DIM}} {{Cl|SHARED}} controllevel {{Cl|AS}} {{Cl|INTEGER}} {{Text|<nowiki>'0=not in a control block</nowiki>|#919191}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} controltype({{Text|1000|#F580B1}}) {{Cl|AS}} {{Cl|INTEGER}}
| |
| {{Text|<nowiki>'1=IF (awaiting END IF)</nowiki>|#919191}}
| |
| {{Text|<nowiki>'2=FOR (awaiting NEXT)</nowiki>|#919191}}
| |
| {{Text|<nowiki>'3=DO (awaiting LOOP [UNTIL|WHILE param])</nowiki>|#919191}}
| |
| {{Text|<nowiki>'4=DO WHILE/UNTIL (awaiting LOOP)</nowiki>|#919191}}
| |
| {{Text|<nowiki>'5=WHILE (awaiting WEND)</nowiki>|#919191}}
| |
| {{Text|<nowiki>'6=$IF (precompiler)</nowiki>|#919191}}
| |
| {{Text|<nowiki>'10=SELECT CASE qbs (awaiting END SELECT/CASE)</nowiki>|#919191}}
| |
| {{Text|<nowiki>'11=SELECT CASE int64 (awaiting END SELECT/CASE)</nowiki>|#919191}}
| |
| {{Text|<nowiki>'12=SELECT CASE uint64 (awaiting END SELECT/CASE)</nowiki>|#919191}}
| |
| {{Text|<nowiki>'13=SELECT CASE LONG double (awaiting END SELECT/CASE/CASE ELSE)</nowiki>|#919191}}
| |
| {{Text|<nowiki>'14=SELECT CASE float ...</nowiki>|#919191}}
| |
| {{Text|<nowiki>'15=SELECT CASE double</nowiki>|#919191}}
| |
| {{Text|<nowiki>'16=SELECT CASE int32</nowiki>|#919191}}
| |
| {{Text|<nowiki>'17=SELECT CASE uint32</nowiki>|#919191}}
| |
| {{Text|<nowiki>'18=CASE (awaiting END SELECT/CASE/CASE ELSE)</nowiki>|#919191}}
| |
| {{Text|<nowiki>'19=CASE ELSE (awaiting END SELECT)</nowiki>|#919191}}
| |
| {{Text|<nowiki>'32=SUB/FUNCTION (awaiting END SUB/FUNCTION)</nowiki>|#919191}}
| |
| {{Cl|DIM}} controlid({{Text|1000|#F580B1}}) {{Cl|AS}} {{Cl|LONG}}
| |
| {{Cl|DIM}} controlvalue({{Text|1000|#F580B1}}) {{Cl|AS}} {{Cl|LONG}}
| |
| {{Cl|DIM}} controlstate({{Text|1000|#F580B1}}) {{Cl|AS}} {{Cl|INTEGER}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} controlref({{Text|1000|#F580B1}}) {{Cl|AS}} {{Cl|LONG}} {{Text|<nowiki>'the line number the control was created on</nowiki>|#919191}}
| |
|
| |
| {{Text|<nowiki>'</nowiki>|#919191}}
| |
| {{Text|<nowiki>' Collection of flags indicating which unstable features should be used during compilation</nowiki>|#919191}}
| |
| {{Text|<nowiki>'</nowiki>|#919191}}
| |
| {{Cl|REDIM}} {{Cl|SHARED}} unstableFlags({{Text|1|#F580B1}} {{Cl|TO}} {{Text|2|#F580B1}}) {{Cl|AS}} {{Cl|_BYTE}}
| |
| {{Cl|DIM}} UNSTABLE_MIDI {{Cl|AS}} {{Cl|LONG}}
| |
| {{Cl|DIM}} UNSTABLE_HTTP {{Cl|AS}} {{Cl|LONG}}
| |
|
| |
| UNSTABLE_MIDI = {{Text|1|#F580B1}}
| |
| UNSTABLE_HTTP = {{Text|2|#F580B1}}
| |
|
| |
|
| |
|
| |
|
| |
| {{Cl|ON ERROR}} {{Cl|GOTO}} qberror
| |
|
| |
| i2&& = {{Text|1|#F580B1}}
| |
| {{Cl|FOR}} i&& = {{Text|1|#F580B1}} {{Cl|TO}} {{Text|64|#F580B1}}
| |
| bitmask(i&&) = i2&&
| |
| bitmaskinv(i&&) = {{Cl|NOT}} i2&&
| |
| i2&& = i2&& + {{Text|2|#F580B1}} ^ i&&
| |
| {{Cl|NEXT}}
| |
|
| |
| {{Cl|DIM}} id2 {{Cl|AS}} idstruct
| |
|
| |
| cleanupstringprocessingcall$ = {{Text|<nowiki>"qbs_cleanup(qbs_tmp_base,"</nowiki>|#FFB100}}
| |
|
| |
| {{Cl|DIM}} {{Cl|SHARED}} sfidlist({{Text|1000|#F580B1}}) {{Cl|AS}} {{Cl|LONG}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} sfarglist({{Text|1000|#F580B1}}) {{Cl|AS}} {{Cl|INTEGER}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} sfelelist({{Text|1000|#F580B1}}) {{Cl|AS}} {{Cl|INTEGER}}
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
| {{Text|<nowiki>'----------------ripgl.bas--------------------------------------------------------------------------------</nowiki>|#919191}}
| |
| {{Text|gl_scan_header|#55FF55}}
| |
| {{Text|<nowiki>'----------------ripgl.bas--------------------------------------------------------------------------------</nowiki>|#919191}}
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
| {{Text|<nowiki>'-----------------------QB64 COMPILER ONCE ONLY SETUP CODE ENDS HERE---------------------------------------</nowiki>|#919191}}
| |
|
| |
| {{Cl|IF}} NoIDEMode {{Cl|THEN}} IDE_AutoPosition = {{Text|0|#F580B1}}: {{Cl|GOTO}} noide
| |
| {{Cl|DIM}} FileDropEnabled {{Cl|AS}} {{Cl|_BYTE}}
| |
| {{Cl|IF}} FileDropEnabled = {{Text|0|#F580B1}} {{Cl|THEN}} FileDropEnabled = {{Text|-1|#F580B1}}: {{Cl|_ACCEPTFILEDROP}}
| |
|
| |
| {{Cl|IF}} IDE_AutoPosition {{Cl|AND (boolean)|AND}} {{Cl|NOT}} IDE_BypassAutoPosition {{Cl|THEN}} {{Cl|_SCREENMOVE}} IDE_LeftPosition, IDE_TopPosition
| |
| idemode = {{Text|1|#F580B1}}
| |
| sendc$ = {{Text|<nowiki>""</nowiki>|#FFB100}} {{Text|<nowiki>'no initial message</nowiki>|#919191}}
| |
| {{Cl|IF}} CMDLineFile <> {{Text|<nowiki>""</nowiki>|#FFB100}} {{Cl|THEN}} sendc$ = {{Cl|CHR$}}({{Text|1|#F580B1}}) + CMDLineFile
| |
| sendcommand:
| |
| idecommand$ = sendc$
| |
| C = {{Text|ide|#55FF55}}({{Text|0|#F580B1}})
| |
| ideerror = {{Text|0|#F580B1}}
| |
| {{Cl|IF}} C = {{Text|0|#F580B1}} {{Cl|THEN}} idemode = {{Text|0|#F580B1}}: {{Cl|GOTO}} noide
| |
| c$ = idereturn$
| |
|
| |
| {{Cl|IF}} C = {{Text|2|#F580B1}} {{Cl|THEN}} {{Text|<nowiki>'begin</nowiki>|#919191}}
| |
| ideerrorline = {{Text|0|#F580B1}} {{Text|<nowiki>'addresses invalid prepass error line numbers being reported</nowiki>|#919191}}
| |
| idepass = {{Text|1|#F580B1}}
| |
| {{Cl|GOTO}} fullrecompile
| |
| ideret1:
| |
| wholeline$ = c$
| |
| {{Cl|GOTO}} ideprepass
| |
| ideret2:
| |
| {{Cl|IF}} lastLineReturn {{Cl|THEN}} {{Cl|GOTO}} lastLineReturn
| |
| sendc$ = {{Cl|CHR$}}({{Text|3|#F580B1}}) {{Text|<nowiki>'request next line</nowiki>|#919191}}
| |
| {{Cl|GOTO}} sendcommand
| |
| {{Cl|END IF}}
| |
|
| |
| {{Cl|IF}} C = {{Text|4|#F580B1}} {{Cl|THEN}} {{Text|<nowiki>'next line</nowiki>|#919191}}
| |
| {{Cl|IF}} idepass = {{Text|1|#F580B1}} {{Cl|THEN}}
| |
| wholeline$ = c$
| |
| {{Cl|GOTO}} ideprepass
| |
| {{Text|<nowiki>'(returns to ideret2: above)</nowiki>|#919191}}
| |
| {{Cl|END IF}}
| |
| {{Text|<nowiki>'assume idepass>1</nowiki>|#919191}}
| |
| a3$ = c$
| |
| continuelinefrom = {{Text|0|#F580B1}}
| |
| {{Cl|GOTO}} ide4
| |
| ideret4:
| |
| {{Cl|IF}} lastLineReturn {{Cl|THEN}} {{Cl|GOTO}} lastLineReturn
| |
| sendc$ = {{Cl|CHR$}}({{Text|3|#F580B1}}) {{Text|<nowiki>'request next line</nowiki>|#919191}}
| |
| {{Cl|GOTO}} sendcommand
| |
| {{Cl|END IF}}
| |
|
| |
| {{Cl|IF}} C = {{Text|5|#F580B1}} {{Cl|THEN}} {{Text|<nowiki>'end of program reached</nowiki>|#919191}}
| |
|
| |
| lastLine = {{Text|1|#F580B1}}
| |
| lastLineReturn = {{Text|1|#F580B1}}
| |
| {{Cl|IF}} idepass = {{Text|1|#F580B1}} {{Cl|THEN}}
| |
| wholeline$ = {{Text|<nowiki>""</nowiki>|#FFB100}}
| |
| {{Cl|GOTO}} ideprepass
| |
| {{Text|<nowiki>'(returns to ideret2: above, then to lastLinePrepassReturn below)</nowiki>|#919191}}
| |
| {{Cl|END IF}}
| |
| {{Text|<nowiki>'idepass>1</nowiki>|#919191}}
| |
| a3$ = {{Text|<nowiki>""</nowiki>|#FFB100}}
| |
| continuelinefrom = {{Text|0|#F580B1}}
| |
| {{Cl|GOTO}} ide4 {{Text|<nowiki>'returns to ideret4, then to lastLinePrepassReturn below</nowiki>|#919191}}
| |
| lastLineReturn:
| |
| lastLineReturn = {{Text|0|#F580B1}}
| |
| lastLine = {{Text|0|#F580B1}}
| |
|
| |
| {{Cl|IF}} idepass = {{Text|1|#F580B1}} {{Cl|THEN}}
| |
| {{Text|<nowiki>'prepass complete</nowiki>|#919191}}
| |
| idepass = {{Text|2|#F580B1}}
| |
| {{Cl|GOTO}} ide3
| |
| ideret3:
| |
| sendc$ = {{Cl|CHR$}}({{Text|7|#F580B1}}) {{Text|<nowiki>'repass request</nowiki>|#919191}}
| |
| firstLine = {{Text|1|#F580B1}}
| |
| {{Cl|GOTO}} sendcommand
| |
| {{Cl|END IF}}
| |
| {{Text|<nowiki>'assume idepass=2</nowiki>|#919191}}
| |
| {{Text|<nowiki>'finalize program</nowiki>|#919191}}
| |
| {{Cl|GOTO}} ide5
| |
| ideret5: {{Text|<nowiki>'note: won't return here if a recompile was required!</nowiki>|#919191}}
| |
| sendc$ = {{Cl|CHR$}}({{Text|6|#F580B1}}) {{Text|<nowiki>'ready</nowiki>|#919191}}
| |
| idecompiled = {{Text|0|#F580B1}}
| |
| {{Cl|GOTO}} sendcommand
| |
| {{Cl|END IF}}
| |
|
| |
| {{Cl|IF}} C = {{Text|9|#F580B1}} {{Cl|THEN}} {{Text|<nowiki>'run</nowiki>|#919191}}
| |
|
| |
| {{Cl|IF}} idecompiled = {{Text|0|#F580B1}} {{Cl|THEN}} {{Text|<nowiki>'exe needs to be compiled</nowiki>|#919191}}
| |
| file$ = c$
| |
|
| |
| {{Text|<nowiki>'locate accessible file and truncate</nowiki>|#919191}}
| |
| f$ = file$
| |
|
| |
| path.exe$ = {{Text|<nowiki>""</nowiki>|#FFB100}}
| |
| {{Cl|IF}} SaveExeWithSource {{Cl|THEN}}
| |
| {{Cl|IF}} {{Cl|LEN}}(ideprogname) {{Cl|THEN}} path.exe$ = idepath$ + pathsep$
| |
| {{Cl|END IF}}
| |
|
| |
| i = {{Text|1|#F580B1}}
| |
| nextexeindex:
| |
| {{Cl|IF}} {{Cl|_FILEEXISTS}}(path.exe$ + file$ + extension$) {{Cl|THEN}}
| |
| E = {{Text|0|#F580B1}}
| |
| {{Cl|ON ERROR}} {{Cl|GOTO}} qberror_test
| |
| {{Cl|KILL}} path.exe$ + file$ + extension$
| |
| {{Cl|ON ERROR}} {{Cl|GOTO}} qberror
| |
| {{Cl|IF}} E = {{Text|1|#F580B1}} {{Cl|THEN}}
| |
| i = i + {{Text|1|#F580B1}}
| |
| file$ = f$ + {{Text|<nowiki>"("</nowiki>|#FFB100}} + {{Text|str2$|#55FF55}}(i) + {{Text|<nowiki>")"</nowiki>|#FFB100}}
| |
| {{Cl|GOTO}} nextexeindex
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}}
| |
|
| |
| {{Text|<nowiki>'inform IDE of name change if necessary (IDE will respond with message 9 and corrected name)</nowiki>|#919191}}
| |
| {{Cl|IF}} i <> {{Text|1|#F580B1}} {{Cl|THEN}}
| |
| sendc$ = {{Cl|CHR$}}({{Text|12|#F580B1}}) + file$
| |
| {{Cl|GOTO}} sendcommand
| |
| {{Cl|END IF}}
| |
|
| |
| ideerrorline = {{Text|0|#F580B1}} {{Text|<nowiki>'addresses C++ comp. error's line number</nowiki>|#919191}}
| |
| {{Cl|GOTO}} ide6
| |
| ideret6:
| |
| idecompiled = {{Text|1|#F580B1}}
| |
| {{Cl|END IF}}
| |
|
| |
| {{Cl|IF}} iderunmode = {{Text|2|#F580B1}} {{Cl|THEN}}
| |
| sendc$ = {{Cl|CHR$}}({{Text|11|#F580B1}}) {{Text|<nowiki>'.EXE file created</nowiki>|#919191}}
| |
| {{Cl|GOTO}} sendcommand
| |
| {{Cl|END IF}}
| |
|
| |
| {{Text|<nowiki>'execute program</nowiki>|#919191}}
| |
|
| |
|
| |
|
| |
|
| |
| {{Cl|IF}} iderunmode = {{Text|1|#F580B1}} {{Cl|THEN}}
| |
| {{Cl|IF}} NoExeSaved {{Cl|THEN}}
| |
| {{Text|<nowiki>'This is the section which deals with if the user selected to run the program without</nowiki>|#919191}}
| |
| {{Text|<nowiki>'saving an EXE file to the disk.</nowiki>|#919191}}
| |
| {{Text|<nowiki>'We start off by first running the EXE, and then we delete it from the drive.</nowiki>|#919191}}
| |
| {{Text|<nowiki>'making it a temporary file when all is said and done.</nowiki>|#919191}}
| |
| {{Cl|IF}} os$ = {{Text|<nowiki>"WIN"</nowiki>|#FFB100}} {{Cl|THEN}}
| |
| {{Cl|SHELL}} {{Text|QuotedFilename$|#55FF55}}({{Cl|CHR$}}({{Text|34|#F580B1}}) + lastBinaryGenerated$ + {{Cl|CHR$}}({{Text|34|#F580B1}})) + ModifyCOMMAND$ {{Text|<nowiki>'run the newly created program</nowiki>|#919191}}
| |
| {{Cl|SHELL}} {{Cl|_HIDE}} {{Cl|_DONTWAIT}} {{Text|<nowiki>"del "</nowiki>|#FFB100}} + {{Text|QuotedFilename$|#55FF55}}({{Cl|CHR$}}({{Text|34|#F580B1}}) + lastBinaryGenerated$ + {{Cl|CHR$}}({{Text|34|#F580B1}})) {{Text|<nowiki>'kill it</nowiki>|#919191}}
| |
| {{Cl|END IF}}
| |
| {{Cl|IF}} path.exe$ = {{Text|<nowiki>""</nowiki>|#FFB100}} {{Cl|THEN}} path.exe$ = {{Text|<nowiki>"./"</nowiki>|#FFB100}}
| |
| {{Cl|IF}} os$ = {{Text|<nowiki>"LNX"</nowiki>|#FFB100}} {{Cl|THEN}}
| |
| {{Cl|IF}} {{Cl|LEFT$}}(lastBinaryGenerated$, {{Cl|LEN}}(path.exe$)) = path.exe$ {{Cl|THEN}}
| |
| {{Cl|SHELL}} {{Text|QuotedFilename$|#55FF55}}(lastBinaryGenerated$) + ModifyCOMMAND$
| |
| {{Cl|KILL}} lastBinaryGenerated$
| |
| {{Cl|ELSE}}
| |
| {{Cl|SHELL}} {{Text|QuotedFilename$|#55FF55}}(path.exe$ + lastBinaryGenerated$) + ModifyCOMMAND$
| |
| {{Cl|KILL}} path.exe$ + lastBinaryGenerated$
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}}
| |
| {{Cl|IF}} path.exe$ = {{Text|<nowiki>"./"</nowiki>|#FFB100}} {{Cl|THEN}} path.exe$ = {{Text|<nowiki>""</nowiki>|#FFB100}}
| |
| NoExeSaved = {{Text|0|#F580B1}} {{Text|<nowiki>'reset the flag for a temp EXE</nowiki>|#919191}}
| |
| sendc$ = {{Cl|CHR$}}({{Text|6|#F580B1}}) {{Text|<nowiki>'ready</nowiki>|#919191}}
| |
| {{Cl|GOTO}} sendcommand
| |
| {{Cl|END IF}}
| |
|
| |
|
| |
|
| |
| {{Cl|IF}} os$ = {{Text|<nowiki>"WIN"</nowiki>|#FFB100}} {{Cl|THEN}} {{Cl|SHELL}} {{Cl|_DONTWAIT}} {{Text|QuotedFilename$|#55FF55}}({{Cl|CHR$}}({{Text|34|#F580B1}}) + lastBinaryGenerated$ + {{Cl|CHR$}}({{Text|34|#F580B1}})) + ModifyCOMMAND$
| |
| {{Cl|IF}} path.exe$ = {{Text|<nowiki>""</nowiki>|#FFB100}} {{Cl|THEN}} path.exe$ = {{Text|<nowiki>"./"</nowiki>|#FFB100}}
| |
| {{Cl|IF}} os$ = {{Text|<nowiki>"LNX"</nowiki>|#FFB100}} {{Cl|THEN}}
| |
| {{Cl|IF}} {{Cl|LEFT$}}(lastBinaryGenerated$, {{Cl|LEN}}(path.exe$)) = path.exe$ {{Cl|THEN}}
| |
| {{Cl|SHELL}} {{Cl|_DONTWAIT}} {{Text|QuotedFilename$|#55FF55}}(lastBinaryGenerated$) + ModifyCOMMAND$
| |
| {{Cl|ELSE}}
| |
| {{Cl|SHELL}} {{Cl|_DONTWAIT}} {{Text|QuotedFilename$|#55FF55}}(path.exe$ + lastBinaryGenerated$) + ModifyCOMMAND$
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}}
| |
| {{Cl|IF}} path.exe$ = {{Text|<nowiki>"./"</nowiki>|#FFB100}} {{Cl|THEN}} path.exe$ = {{Text|<nowiki>""</nowiki>|#FFB100}}
| |
| {{Cl|ELSE}}
| |
| {{Cl|IF}} os$ = {{Text|<nowiki>"WIN"</nowiki>|#FFB100}} {{Cl|THEN}} {{Cl|SHELL}} {{Text|QuotedFilename$|#55FF55}}({{Cl|CHR$}}({{Text|34|#F580B1}}) + lastBinaryGenerated$ + {{Cl|CHR$}}({{Text|34|#F580B1}})) + ModifyCOMMAND$
| |
| {{Cl|IF}} path.exe$ = {{Text|<nowiki>""</nowiki>|#FFB100}} {{Cl|THEN}} path.exe$ = {{Text|<nowiki>"./"</nowiki>|#FFB100}}
| |
| {{Cl|IF}} os$ = {{Text|<nowiki>"LNX"</nowiki>|#FFB100}} {{Cl|THEN}}
| |
| {{Cl|IF}} {{Cl|LEFT$}}(lastBinaryGenerated$, {{Cl|LEN}}(path.exe$)) = path.exe$ {{Cl|THEN}}
| |
| {{Cl|SHELL}} {{Text|QuotedFilename$|#55FF55}}(lastBinaryGenerated$) + ModifyCOMMAND$
| |
| {{Cl|ELSE}}
| |
| {{Cl|SHELL}} {{Text|QuotedFilename$|#55FF55}}(path.exe$ + lastBinaryGenerated$) + ModifyCOMMAND$
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}}
| |
| {{Cl|IF}} path.exe$ = {{Text|<nowiki>"./"</nowiki>|#FFB100}} {{Cl|THEN}} path.exe$ = {{Text|<nowiki>""</nowiki>|#FFB100}}
| |
| {{Cl|DO}}: {{Cl|DO...LOOP|LOOP UNTIL}} {{Cl|INKEY$}} = {{Text|<nowiki>""</nowiki>|#FFB100}}
| |
| {{Cl|DO}}: {{Cl|DO...LOOP|LOOP UNTIL}} {{Cl|_KEYHIT}} = {{Text|0|#F580B1}}
| |
| {{Cl|END IF}}
| |
|
| |
| {{Cl|IF}} idemode {{Cl|THEN}}
| |
| {{Text|<nowiki>'Darken fg/bg colors</nowiki>|#919191}}
| |
| dummy = {{Text|DarkenFGBG|#55FF55}}({{Text|0|#F580B1}})
| |
| {{Cl|END IF}}
| |
|
| |
| {{Cl|IF}} vWatchOn {{Cl|THEN}}
| |
| sendc$ = {{Cl|CHR$}}({{Text|254|#F580B1}}) {{Text|<nowiki>'launch debug interface</nowiki>|#919191}}
| |
| {{Cl|ELSE}}
| |
| sendc$ = {{Cl|CHR$}}({{Text|6|#F580B1}}) {{Text|<nowiki>'ready</nowiki>|#919191}}
| |
| {{Cl|END IF}}
| |
| {{Cl|GOTO}} sendcommand
| |
| {{Cl|END IF}}
| |
|
| |
| {{Cl|PRINT}} {{Text|<nowiki>"Invalid IDE message"</nowiki>|#FFB100}}: {{Cl|END}}
| |
|
| |
| ideerror:
| |
| {{Cl|IF}} {{Cl|INSTR}}(idemessage$, sp$) {{Cl|THEN}}
| |
| {{Text|<nowiki>'Something went wrong here, so let's give a generic error message to the user.</nowiki>|#919191}}
| |
| {{Text|<nowiki>'(No error message should contain sp$ - that is, CHR$(13), when not in Debug mode)</nowiki>|#919191}}
| |
| terrmsg$ = {{Cl|_ERRORMESSAGE$}}
| |
| {{Cl|IF}} terrmsg$ = {{Text|<nowiki>"No error"</nowiki>|#FFB100}} {{Cl|THEN}} terrmsg$ = {{Text|<nowiki>"Internal error"</nowiki>|#FFB100}}
| |
| idemessage$ = {{Text|<nowiki>"Compiler error (check for syntax errors) ("</nowiki>|#FFB100}} + terrmsg$ + {{Text|<nowiki>":"</nowiki>|#FFB100}}
| |
| {{Cl|IF}} {{Cl|ERR}} {{Cl|THEN}} idemessage$ = idemessage$ + {{Text|str2$|#55FF55}}({{Cl|ERR}}) + {{Text|<nowiki>"-"</nowiki>|#FFB100}}
| |
| {{Cl|IF}} {{Cl|_ERRORLINE}} {{Cl|THEN}} idemessage$ = idemessage$ + {{Text|str2$|#55FF55}}({{Cl|_ERRORLINE}})
| |
| {{Cl|IF}} {{Cl|_INCLERRORLINE}} {{Cl|THEN}} idemessage$ = idemessage$ + {{Text|<nowiki>"-"</nowiki>|#FFB100}} + {{Cl|_INCLERRORFILE$}} + {{Text|<nowiki>"-"</nowiki>|#FFB100}} + {{Text|str2$|#55FF55}}({{Cl|_INCLERRORLINE}})
| |
| idemessage$ = idemessage$ + {{Text|<nowiki>")"</nowiki>|#FFB100}}
| |
| {{Cl|IF}} inclevel > {{Text|0|#F580B1}} {{Cl|THEN}} idemessage$ = idemessage$ + incerror$
| |
| {{Cl|END IF}}
| |
|
| |
| sendc$ = {{Cl|CHR$}}({{Text|8|#F580B1}}) + idemessage$ + {{Cl|MKL$}}(ideerrorline)
| |
| {{Cl|GOTO}} sendcommand
| |
|
| |
|
| |
| noide:
| |
| {{Cl|IF}} (qb64versionprinted = {{Text|0|#F580B1}} {{Cl|OR (boolean)|OR}} ConsoleMode = {{Text|0|#F580B1}}) {{Cl|AND (boolean)|AND}} {{Cl|NOT}} QuietMode {{Cl|THEN}}
| |
| qb64versionprinted = {{Text|-1|#F580B1}}
| |
| {{Cl|PRINT}} {{Text|<nowiki>"QB64-PE Compiler V"</nowiki>|#FFB100}} + Version$
| |
| {{Cl|END IF}}
| |
|
| |
| {{Cl|IF}} CMDLineFile = {{Text|<nowiki>""</nowiki>|#FFB100}} {{Cl|THEN}}
| |
| {{Cl|LINE INPUT}} ; {{Text|<nowiki>"COMPILE (.bas)>"</nowiki>|#FFB100}}, f$
| |
| {{Cl|ELSE}}
| |
| f$ = CMDLineFile
| |
| {{Cl|END IF}}
| |
|
| |
| f$ = {{Cl|LTRIM$}}({{Cl|RTRIM$}}(f$))
| |
|
| |
| {{Cl|IF}} {{Text|FileHasExtension|#55FF55}}(f$) = {{Text|0|#F580B1}} {{Cl|THEN}} f$ = f$ + {{Text|<nowiki>".bas"</nowiki>|#FFB100}}
| |
|
| |
| sourcefile$ = f$
| |
| CMDLineFile = sourcefile$
| |
| {{Text|<nowiki>'derive name from sourcefile</nowiki>|#919191}}
| |
| f$ = {{Text|RemoveFileExtension$|#55FF55}}(f$)
| |
|
| |
| path.exe$ = {{Text|<nowiki>""</nowiki>|#FFB100}}
| |
| currentdir$ = {{Cl|_CWD$}}
| |
| path.source$ = {{Text|getfilepath$|#55FF55}}(sourcefile$)
| |
| {{Cl|IF}} {{Cl|LEN}}(path.source$) {{Cl|THEN}}
| |
| {{Cl|IF}} {{Cl|_DIREXISTS}}(path.source$) = {{Text|0|#F580B1}} {{Cl|THEN}}
| |
| {{Cl|PRINT}}
| |
| {{Cl|PRINT}} {{Text|<nowiki>"Cannot locate source file: "</nowiki>|#FFB100}} + sourcefile$
| |
| {{Cl|IF}} ConsoleMode {{Cl|THEN}} {{Cl|SYSTEM}} {{Text|1|#F580B1}}
| |
| {{Cl|END}} {{Text|1|#F580B1}}
| |
| {{Cl|END IF}}
| |
| {{Cl|CHDIR}} path.source$
| |
| path.source$ = {{Cl|_CWD$}}
| |
| {{Cl|IF}} {{Cl|RIGHT$}}(path.source$, {{Text|1|#F580B1}}) <> pathsep$ {{Cl|THEN}} path.source$ = path.source$ + pathsep$
| |
| {{Cl|CHDIR}} currentdir$
| |
| {{Cl|END IF}}
| |
| {{Cl|IF}} SaveExeWithSource {{Cl|THEN}} path.exe$ = path.source$
| |
|
| |
| {{Cl|FOR}} x = {{Cl|LEN}}(f$) {{Cl|TO}} {{Text|1|#F580B1}} {{Cl|STEP}} {{Text|-1|#F580B1}}
| |
| a$ = {{Cl|MID$ (function)|MID$}}(f$, x, {{Text|1|#F580B1}})
| |
| {{Cl|IF}} a$ = {{Text|<nowiki>"/"</nowiki>|#FFB100}} {{Cl|OR (boolean)|OR}} a$ = {{Text|<nowiki>"\"</nowiki>|#FFB100}} {{Cl|THEN}}
| |
| f$ = {{Cl|RIGHT$}}(f$, {{Cl|LEN}}(f$) - x)
| |
| {{Cl|EXIT FOR}}
| |
| {{Cl|END IF}}
| |
| {{Cl|NEXT}}
| |
| file$ = f$
| |
|
| |
| {{Text|<nowiki>'if cmemlist(currentid+1)<>0 before calling regid the variable</nowiki>|#919191}}
| |
| {{Text|<nowiki>'MUST be defined in cmem!</nowiki>|#919191}}
| |
|
| |
| fullrecompile:
| |
|
| |
| {{Cl|IF}} idemode = {{Text|0|#F580B1}} {{Cl|AND (boolean)|AND}} {{Cl|NOT}} QuietMode {{Cl|THEN}}
| |
| {{Cl|PRINT}}
| |
| {{Cl|PRINT}} {{Text|<nowiki>"Beginning C++ output from QB64 code... "</nowiki>|#FFB100}}
| |
| {{Cl|END IF}}
| |
|
| |
| BU_DEPENDENCY_CONSOLE_ONLY = DEPENDENCY(DEPENDENCY_CONSOLE_ONLY)
| |
| {{Cl|FOR}} i = {{Text|1|#F580B1}} {{Cl|TO}} {{Cl|UBOUND}}(DEPENDENCY): DEPENDENCY(i) = {{Text|0|#F580B1}}: {{Cl|NEXT}}
| |
| DEPENDENCY(DEPENDENCY_CONSOLE_ONLY) = BU_DEPENDENCY_CONSOLE_ONLY {{Cl|AND}} {{Text|2|#F580B1}} {{Text|<nowiki>'Restore -g switch if used</nowiki>|#919191}}
| |
|
| |
| Error_Happened = {{Text|0|#F580B1}}
| |
|
| |
| {{Cl|FOR}} closeall = {{Text|1|#F580B1}} {{Cl|TO}} {{Text|255|#F580B1}}: {{Cl|CLOSE}} closeall: {{Cl|NEXT}}
| |
|
| |
| {{Cl|OPEN}} tmpdir$ + {{Text|<nowiki>"temp.bin"</nowiki>|#FFB100}} {{Cl|OPEN#File_Access_Modes|FOR}} {{Cl|OPEN#File_Access_Modes|OUTPUT}} {{Cl|OPEN#File_ACCESS_and_LOCK_Permissions|LOCK}} {{Cl|OPEN#File_ACCESS_and_LOCK_Permissions|WRITE}} {{Cl|OPEN|AS}} #26 {{Text|<nowiki>'relock</nowiki>|#919191}}
| |
|
| |
| bh = {{Text|OpenBuffer%|#55FF55}}({{Text|<nowiki>"O"</nowiki>|#FFB100}}, tmpdir$ + {{Text|<nowiki>"dyninfo.txt"</nowiki>|#FFB100}})
| |
|
| |
| {{Cl|IF}} Debug {{Cl|THEN}} {{Cl|CLOSE}} #9: {{Cl|OPEN}} tmpdir$ + {{Text|<nowiki>"debug.txt"</nowiki>|#FFB100}} {{Cl|OPEN#File_Access_Modes|FOR}} {{Cl|OPEN#File_Access_Modes|OUTPUT}} {{Cl|OPEN|AS}} #9
| |
|
| |
| {{Cl|FOR}} i = {{Text|1|#F580B1}} {{Cl|TO}} ids_max + {{Text|1|#F580B1}}
| |
| arrayelementslist(i) = {{Text|0|#F580B1}}
| |
| cmemlist(i) = {{Text|0|#F580B1}}
| |
| sfcmemargs(i) = {{Text|<nowiki>""</nowiki>|#FFB100}}
| |
| {{Cl|NEXT}}
| |
|
| |
| {{Text|<nowiki>'erase cmemlist</nowiki>|#919191}}
| |
| {{Text|<nowiki>'erase sfcmemargs</nowiki>|#919191}}
| |
|
| |
| lastunresolved = {{Text|-1|#F580B1}} {{Text|<nowiki>'first pass</nowiki>|#919191}}
| |
| sflistn = {{Text|-1|#F580B1}} {{Text|<nowiki>'no entries</nowiki>|#919191}}
| |
|
| |
| SubNameLabels = sp {{Text|<nowiki>'QB64 will perform a repass to resolve sub names used as labels</nowiki>|#919191}}
| |
|
| |
| 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
| |
| {{Text|vWatchVariable|#55FF55}} {{Text|<nowiki>""</nowiki>|#FFB100}}, {{Text|-1|#F580B1}} {{Text|<nowiki>'reset internal variables list</nowiki>|#919191}}
| |
|
| |
| qb64prefix_set = qb64prefix_set_desiredState
| |
| qb64prefix$ = {{Text|<nowiki>"_"</nowiki>|#FFB100}}
| |
|
| |
| optionexplicit = opex_desiredState
| |
| {{Cl|IF}} optionexplicit_cmd = {{Text|-1|#F580B1}} {{Cl|AND (boolean)|AND}} NoIDEMode = {{Text|1|#F580B1}} {{Cl|THEN}} optionexplicit = {{Text|-1|#F580B1}}
| |
| optionexplicitarray = opexarray_desiredState
| |
|
| |
| lastLineReturn = {{Text|0|#F580B1}}
| |
| lastLine = {{Text|0|#F580B1}}
| |
| firstLine = {{Text|1|#F580B1}}
| |
|
| |
| Resize = {{Text|0|#F580B1}}
| |
| Resize_Scale = {{Text|0|#F580B1}}
| |
|
| |
| UseGL = {{Text|0|#F580B1}}
| |
|
| |
| Error_Happened = {{Text|0|#F580B1}}
| |
|
| |
| {{Text|HashClear|#55FF55}} {{Text|<nowiki>'clear the hash table</nowiki>|#919191}}
| |
|
| |
| {{Text|<nowiki>'add reserved words to hashtable</nowiki>|#919191}}
| |
|
| |
| f = HASHFLAG_TYPE + HASHFLAG_RESERVED
| |
| {{Text|HashAdd|#55FF55}} {{Text|<nowiki>"_UNSIGNED"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| {{Text|HashAdd|#55FF55}} {{Text|<nowiki>"_BIT"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| {{Text|HashAdd|#55FF55}} {{Text|<nowiki>"_BYTE"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| {{Text|HashAdd|#55FF55}} {{Text|<nowiki>"INTEGER"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| {{Text|HashAdd|#55FF55}} {{Text|<nowiki>"LONG"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| {{Text|HashAdd|#55FF55}} {{Text|<nowiki>"_INTEGER64"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| {{Text|HashAdd|#55FF55}} {{Text|<nowiki>"_OFFSET"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| {{Text|HashAdd|#55FF55}} {{Text|<nowiki>"SINGLE"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| {{Text|HashAdd|#55FF55}} {{Text|<nowiki>"DOUBLE"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| {{Text|HashAdd|#55FF55}} {{Text|<nowiki>"_FLOAT"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| {{Text|HashAdd|#55FF55}} {{Text|<nowiki>"STRING"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| {{Text|HashAdd|#55FF55}} {{Text|<nowiki>"ANY"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
| |
|
| |
| f = HASHFLAG_OPERATOR + HASHFLAG_RESERVED
| |
| {{Text|HashAdd|#55FF55}} {{Text|<nowiki>"NOT"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| {{Text|HashAdd|#55FF55}} {{Text|<nowiki>"IMP"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| {{Text|HashAdd|#55FF55}} {{Text|<nowiki>"EQV"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| {{Text|HashAdd|#55FF55}} {{Text|<nowiki>"AND"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| {{Text|HashAdd|#55FF55}} {{Text|<nowiki>"OR"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| {{Text|HashAdd|#55FF55}} {{Text|<nowiki>"XOR"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| {{Text|HashAdd|#55FF55}} {{Text|<nowiki>"MOD"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
| |
|
| |
| f = HASHFLAG_RESERVED + HASHFLAG_CUSTOMSYNTAX
| |
| {{Text|HashAdd|#55FF55}} {{Text|<nowiki>"LIST"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| {{Text|HashAdd|#55FF55}} {{Text|<nowiki>"BASE"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| {{Text|HashAdd|#55FF55}} {{Text|<nowiki>"_EXPLICIT"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| {{Text|HashAdd|#55FF55}} {{Text|<nowiki>"AS"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| {{Text|HashAdd|#55FF55}} {{Text|<nowiki>"IS"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| {{Text|HashAdd|#55FF55}} {{Text|<nowiki>"OFF"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| {{Text|HashAdd|#55FF55}} {{Text|<nowiki>"ON"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| {{Text|HashAdd|#55FF55}} {{Text|<nowiki>"STOP"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| {{Text|HashAdd|#55FF55}} {{Text|<nowiki>"TO"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| {{Text|HashAdd|#55FF55}} {{Text|<nowiki>"USING"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| {{Text|<nowiki>'PUT(graphics) statement:</nowiki>|#919191}}
| |
| {{Text|HashAdd|#55FF55}} {{Text|<nowiki>"PRESET"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| {{Text|HashAdd|#55FF55}} {{Text|<nowiki>"PSET"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| {{Text|<nowiki>'OPEN statement:</nowiki>|#919191}}
| |
| {{Text|HashAdd|#55FF55}} {{Text|<nowiki>"FOR"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| {{Text|HashAdd|#55FF55}} {{Text|<nowiki>"OUTPUT"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| {{Text|HashAdd|#55FF55}} {{Text|<nowiki>"RANDOM"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| {{Text|HashAdd|#55FF55}} {{Text|<nowiki>"BINARY"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| {{Text|HashAdd|#55FF55}} {{Text|<nowiki>"APPEND"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| {{Text|HashAdd|#55FF55}} {{Text|<nowiki>"SHARED"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| {{Text|HashAdd|#55FF55}} {{Text|<nowiki>"ACCESS"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| {{Text|HashAdd|#55FF55}} {{Text|<nowiki>"LOCK"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| {{Text|HashAdd|#55FF55}} {{Text|<nowiki>"READ"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| {{Text|HashAdd|#55FF55}} {{Text|<nowiki>"WRITE"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| {{Text|<nowiki>'LINE statement:</nowiki>|#919191}}
| |
| {{Text|HashAdd|#55FF55}} {{Text|<nowiki>"STEP"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| {{Text|<nowiki>'WIDTH statement:</nowiki>|#919191}}
| |
| {{Text|HashAdd|#55FF55}} {{Text|<nowiki>"LPRINT"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| {{Text|<nowiki>'VIEW statement:</nowiki>|#919191}}
| |
| {{Text|HashAdd|#55FF55}} {{Text|<nowiki>"PRINT"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
| |
|
| |
| f = HASHFLAG_RESERVED + HASHFLAG_XELEMENTNAME + HASHFLAG_XTYPENAME
| |
| {{Text|<nowiki>'A</nowiki>|#919191}}
| |
| {{Text|<nowiki>'B</nowiki>|#919191}}
| |
| {{Text|<nowiki>'C</nowiki>|#919191}}
| |
| {{Text|HashAdd|#55FF55}} {{Text|<nowiki>"COMMON"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| {{Text|HashAdd|#55FF55}} {{Text|<nowiki>"CALL"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| {{Text|HashAdd|#55FF55}} {{Text|<nowiki>"CASE"</nowiki>|#FFB100}}, f - HASHFLAG_XELEMENTNAME, {{Text|0|#F580B1}}
| |
| {{Text|HashAdd|#55FF55}} {{Text|<nowiki>"COM"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}} {{Text|<nowiki>'(ON...)</nowiki>|#919191}}
| |
| {{Text|HashAdd|#55FF55}} {{Text|<nowiki>"CONST"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| {{Text|<nowiki>'D</nowiki>|#919191}}
| |
| {{Text|HashAdd|#55FF55}} {{Text|<nowiki>"DATA"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| {{Text|HashAdd|#55FF55}} {{Text|<nowiki>"DECLARE"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| {{Text|HashAdd|#55FF55}} {{Text|<nowiki>"DEF"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| {{Text|HashAdd|#55FF55}} {{Text|<nowiki>"DEFDBL"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| {{Text|HashAdd|#55FF55}} {{Text|<nowiki>"DEFINT"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| {{Text|HashAdd|#55FF55}} {{Text|<nowiki>"DEFLNG"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| {{Text|HashAdd|#55FF55}} {{Text|<nowiki>"DEFSNG"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| {{Text|HashAdd|#55FF55}} {{Text|<nowiki>"DEFSTR"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| {{Text|HashAdd|#55FF55}} {{Text|<nowiki>"DIM"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| {{Text|HashAdd|#55FF55}} {{Text|<nowiki>"DO"</nowiki>|#FFB100}}, f - HASHFLAG_XELEMENTNAME, {{Text|0|#F580B1}}
| |
| {{Text|<nowiki>'E</nowiki>|#919191}}
| |
| {{Text|HashAdd|#55FF55}} {{Text|<nowiki>"ERROR"</nowiki>|#FFB100}}, f - HASHFLAG_XELEMENTNAME, {{Text|0|#F580B1}} {{Text|<nowiki>'(ON ...)</nowiki>|#919191}}
| |
| {{Text|HashAdd|#55FF55}} {{Text|<nowiki>"ELSE"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| {{Text|HashAdd|#55FF55}} {{Text|<nowiki>"ELSEIF"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| {{Text|HashAdd|#55FF55}} {{Text|<nowiki>"ENDIF"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| {{Text|HashAdd|#55FF55}} {{Text|<nowiki>"EXIT"</nowiki>|#FFB100}}, f - HASHFLAG_XELEMENTNAME, {{Text|0|#F580B1}}
| |
| {{Text|<nowiki>'F</nowiki>|#919191}}
| |
| {{Text|HashAdd|#55FF55}} {{Text|<nowiki>"FIELD"</nowiki>|#FFB100}}, f - HASHFLAG_XELEMENTNAME, {{Text|0|#F580B1}}
| |
| {{Text|HashAdd|#55FF55}} {{Text|<nowiki>"FUNCTION"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| {{Text|<nowiki>'G</nowiki>|#919191}}
| |
| {{Text|HashAdd|#55FF55}} {{Text|<nowiki>"GOSUB"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| {{Text|HashAdd|#55FF55}} {{Text|<nowiki>"GOTO"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| {{Text|<nowiki>'H</nowiki>|#919191}}
| |
| {{Text|<nowiki>'I</nowiki>|#919191}}
| |
| {{Text|HashAdd|#55FF55}} {{Text|<nowiki>"INPUT"</nowiki>|#FFB100}}, f - HASHFLAG_XELEMENTNAME - HASHFLAG_XTYPENAME, {{Text|0|#F580B1}} {{Text|<nowiki>'(INPUT$ function exists, so conflicts if allowed as custom syntax)</nowiki>|#919191}}
| |
| {{Text|HashAdd|#55FF55}} {{Text|<nowiki>"IF"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| {{Text|<nowiki>'K</nowiki>|#919191}}
| |
| {{Text|HashAdd|#55FF55}} {{Text|<nowiki>"KEY"</nowiki>|#FFB100}}, f - HASHFLAG_XELEMENTNAME - HASHFLAG_XTYPENAME, {{Text|0|#F580B1}} {{Text|<nowiki>'(ON...)</nowiki>|#919191}}
| |
| {{Text|<nowiki>'L</nowiki>|#919191}}
| |
| {{Text|HashAdd|#55FF55}} {{Text|<nowiki>"LET"</nowiki>|#FFB100}}, f - HASHFLAG_XELEMENTNAME, {{Text|0|#F580B1}}
| |
| {{Text|HashAdd|#55FF55}} {{Text|<nowiki>"LOOP"</nowiki>|#FFB100}}, f - HASHFLAG_XELEMENTNAME, {{Text|0|#F580B1}}
| |
| {{Text|HashAdd|#55FF55}} {{Text|<nowiki>"LEN"</nowiki>|#FFB100}}, f - HASHFLAG_XELEMENTNAME, {{Text|0|#F580B1}} {{Text|<nowiki>'(LEN function exists, so conflicts if allowed as custom syntax)</nowiki>|#919191}}
| |
| {{Text|<nowiki>'M</nowiki>|#919191}}
| |
| {{Text|<nowiki>'N</nowiki>|#919191}}
| |
| {{Text|HashAdd|#55FF55}} {{Text|<nowiki>"NEXT"</nowiki>|#FFB100}}, f - HASHFLAG_XELEMENTNAME, {{Text|0|#F580B1}}
| |
| {{Text|<nowiki>'O</nowiki>|#919191}}
| |
| {{Text|<nowiki>'P</nowiki>|#919191}}
| |
| {{Text|HashAdd|#55FF55}} {{Text|<nowiki>"PLAY"</nowiki>|#FFB100}}, f - HASHFLAG_XELEMENTNAME - HASHFLAG_XTYPENAME, {{Text|0|#F580B1}} {{Text|<nowiki>'(ON...)</nowiki>|#919191}}
| |
| {{Text|HashAdd|#55FF55}} {{Text|<nowiki>"PEN"</nowiki>|#FFB100}}, f - HASHFLAG_XELEMENTNAME - HASHFLAG_XTYPENAME, {{Text|0|#F580B1}} {{Text|<nowiki>'(ON...)</nowiki>|#919191}}
| |
| {{Text|<nowiki>'Q</nowiki>|#919191}}
| |
| {{Text|<nowiki>'R</nowiki>|#919191}}
| |
| {{Text|HashAdd|#55FF55}} {{Text|<nowiki>"REDIM"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| {{Text|HashAdd|#55FF55}} {{Text|<nowiki>"REM"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| {{Text|HashAdd|#55FF55}} {{Text|<nowiki>"RESTORE"</nowiki>|#FFB100}}, f - HASHFLAG_XELEMENTNAME, {{Text|0|#F580B1}}
| |
| {{Text|HashAdd|#55FF55}} {{Text|<nowiki>"RESUME"</nowiki>|#FFB100}}, f - HASHFLAG_XELEMENTNAME, {{Text|0|#F580B1}}
| |
| {{Text|HashAdd|#55FF55}} {{Text|<nowiki>"RETURN"</nowiki>|#FFB100}}, f - HASHFLAG_XELEMENTNAME, {{Text|0|#F580B1}}
| |
| {{Text|HashAdd|#55FF55}} {{Text|<nowiki>"RUN"</nowiki>|#FFB100}}, f - HASHFLAG_XELEMENTNAME, {{Text|0|#F580B1}}
| |
| {{Text|<nowiki>'S</nowiki>|#919191}}
| |
| {{Text|HashAdd|#55FF55}} {{Text|<nowiki>"STATIC"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| {{Text|HashAdd|#55FF55}} {{Text|<nowiki>"STRIG"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}} {{Text|<nowiki>'(ON...)</nowiki>|#919191}}
| |
| {{Text|HashAdd|#55FF55}} {{Text|<nowiki>"SEG"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| {{Text|HashAdd|#55FF55}} {{Text|<nowiki>"SELECT"</nowiki>|#FFB100}}, f - HASHFLAG_XELEMENTNAME - HASHFLAG_XTYPENAME, {{Text|0|#F580B1}}
| |
| {{Text|HashAdd|#55FF55}} {{Text|<nowiki>"SUB"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| {{Text|HashAdd|#55FF55}} {{Text|<nowiki>"SCREEN"</nowiki>|#FFB100}}, f - HASHFLAG_XELEMENTNAME - HASHFLAG_XTYPENAME, {{Text|0|#F580B1}}
| |
| {{Text|<nowiki>'T</nowiki>|#919191}}
| |
| {{Text|HashAdd|#55FF55}} {{Text|<nowiki>"THEN"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| {{Text|HashAdd|#55FF55}} {{Text|<nowiki>"TIMER"</nowiki>|#FFB100}}, f - HASHFLAG_XELEMENTNAME - HASHFLAG_XTYPENAME, {{Text|0|#F580B1}} {{Text|<nowiki>'(ON...)</nowiki>|#919191}}
| |
| {{Text|HashAdd|#55FF55}} {{Text|<nowiki>"TYPE"</nowiki>|#FFB100}}, f - HASHFLAG_XELEMENTNAME, {{Text|0|#F580B1}}
| |
| {{Text|<nowiki>'U</nowiki>|#919191}}
| |
| {{Text|HashAdd|#55FF55}} {{Text|<nowiki>"UNTIL"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| {{Text|HashAdd|#55FF55}} {{Text|<nowiki>"UEVENT"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| {{Text|<nowiki>'V</nowiki>|#919191}}
| |
| {{Text|<nowiki>'W</nowiki>|#919191}}
| |
| {{Text|HashAdd|#55FF55}} {{Text|<nowiki>"WEND"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| {{Text|HashAdd|#55FF55}} {{Text|<nowiki>"WHILE"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| {{Text|<nowiki>'X</nowiki>|#919191}}
| |
| {{Text|<nowiki>'Y</nowiki>|#919191}}
| |
| {{Text|<nowiki>'Z</nowiki>|#919191}}
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
| {{Text|<nowiki>'clear/init variables</nowiki>|#919191}}
| |
| Console = {{Text|0|#F580B1}}
| |
| ScreenHide = {{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|<nowiki>'QB64 will perform a repass to resolve sub names used as labels</nowiki>|#919191}}
| |
| 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|<nowiki>""</nowiki>|#FFB100}}: mylibopt$ = {{Text|<nowiki>""</nowiki>|#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|<nowiki>""</nowiki>|#FFB100}}: commonarraylistn = {{Text|0|#F580B1}}
| |
| staticarraylist = {{Text|<nowiki>""</nowiki>|#FFB100}}: staticarraylistn = {{Text|0|#F580B1}}
| |
| fooindwel = {{Text|0|#F580B1}}
| |
| layout = {{Text|<nowiki>""</nowiki>|#FFB100}}
| |
| layoutok = {{Text|0|#F580B1}}
| |
| NoChecks = {{Text|0|#F580B1}}
| |
| inclevel = {{Text|0|#F580B1}}
| |
| errorLineInInclude = {{Text|0|#F580B1}}
| |
| addmetainclude$ = {{Text|<nowiki>""</nowiki>|#FFB100}}
| |
| nextrunlineindex = {{Text|1|#F580B1}}
| |
| lasttype = {{Text|0|#F580B1}}
| |
| lasttypeelement = {{Text|0|#F580B1}}
| |
| {{Cl|REDIM}} {{Cl|SHARED}} udtxname({{Text|1000|#F580B1}}) {{Cl|AS}} {{Cl|STRING}} * {{Text|256|#F580B1}}
| |
| {{Cl|REDIM}} {{Cl|SHARED}} udtxcname({{Text|1000|#F580B1}}) {{Cl|AS}} {{Cl|STRING}} * {{Text|256|#F580B1}}
| |
| {{Cl|REDIM}} {{Cl|SHARED}} udtxsize({{Text|1000|#F580B1}}) {{Cl|AS}} {{Cl|LONG}}
| |
| {{Cl|REDIM}} {{Cl|SHARED}} udtxbytealign({{Text|1000|#F580B1}}) {{Cl|AS}} {{Cl|INTEGER}} {{Text|<nowiki>'first element MUST be on a byte alignment & size is a multiple of 8</nowiki>|#919191}}
| |
| {{Cl|REDIM}} {{Cl|SHARED}} udtxnext({{Text|1000|#F580B1}}) {{Cl|AS}} {{Cl|LONG}}
| |
| {{Cl|REDIM}} {{Cl|SHARED}} udtxvariable({{Text|1000|#F580B1}}) {{Cl|AS}} {{Cl|INTEGER}} {{Text|<nowiki>'true if the udt contains variable length elements</nowiki>|#919191}}
| |
| {{Text|<nowiki>'elements</nowiki>|#919191}}
| |
| {{Cl|REDIM}} {{Cl|SHARED}} udtename({{Text|1000|#F580B1}}) {{Cl|AS}} {{Cl|STRING}} * {{Text|256|#F580B1}}
| |
| {{Cl|REDIM}} {{Cl|SHARED}} udtecname({{Text|1000|#F580B1}}) {{Cl|AS}} {{Cl|STRING}} * {{Text|256|#F580B1}}
| |
| {{Cl|REDIM}} {{Cl|SHARED}} udtebytealign({{Text|1000|#F580B1}}) {{Cl|AS}} {{Cl|INTEGER}}
| |
| {{Cl|REDIM}} {{Cl|SHARED}} udtesize({{Text|1000|#F580B1}}) {{Cl|AS}} {{Cl|LONG}}
| |
| {{Cl|REDIM}} {{Cl|SHARED}} udtetype({{Text|1000|#F580B1}}) {{Cl|AS}} {{Cl|LONG}}
| |
| {{Cl|REDIM}} {{Cl|SHARED}} udtetypesize({{Text|1000|#F580B1}}) {{Cl|AS}} {{Cl|LONG}}
| |
| {{Cl|REDIM}} {{Cl|SHARED}} udtearrayelements({{Text|1000|#F580B1}}) {{Cl|AS}} {{Cl|LONG}}
| |
| {{Cl|REDIM}} {{Cl|SHARED}} udtenext({{Text|1000|#F580B1}}) {{Cl|AS}} {{Cl|LONG}}
| |
| definingtype = {{Text|0|#F580B1}}
| |
| definingtypeerror = {{Text|0|#F580B1}}
| |
| constlast = {{Text|-1|#F580B1}}
| |
| {{Text|<nowiki>'constlastshared = -1</nowiki>|#919191}}
| |
| 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|<nowiki>""</nowiki>|#FFB100}}: viProductVersionNum$ = {{Text|<nowiki>""</nowiki>|#FFB100}}: viCompanyName$ = {{Text|<nowiki>""</nowiki>|#FFB100}}
| |
| viFileDescription$ = {{Text|<nowiki>""</nowiki>|#FFB100}}: viFileVersion$ = {{Text|<nowiki>""</nowiki>|#FFB100}}: viInternalName$ = {{Text|<nowiki>""</nowiki>|#FFB100}}
| |
| viLegalCopyright$ = {{Text|<nowiki>""</nowiki>|#FFB100}}: viLegalTrademarks$ = {{Text|<nowiki>""</nowiki>|#FFB100}}: viOriginalFilename$ = {{Text|<nowiki>""</nowiki>|#FFB100}}
| |
| viProductName$ = {{Text|<nowiki>""</nowiki>|#FFB100}}: viProductVersion$ = {{Text|<nowiki>""</nowiki>|#FFB100}}: viComments$ = {{Text|<nowiki>""</nowiki>|#FFB100}}: viWeb$ = {{Text|<nowiki>""</nowiki>|#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}}
| |
| {{Cl|FOR}} i = {{Text|1|#F580B1}} {{Cl|TO}} {{Text|27|#F580B1}}: defineaz(i) = {{Text|<nowiki>"SINGLE"</nowiki>|#FFB100}}: defineextaz(i) = {{Text|<nowiki>"!"</nowiki>|#FFB100}}: {{Cl|NEXT}}
| |
| controllevel = {{Text|0|#F580B1}}
| |
| findidsecondarg$ = {{Text|<nowiki>""</nowiki>|#FFB100}}: findanotherid = {{Text|0|#F580B1}}: findidinternal = {{Text|0|#F580B1}}: currentid = {{Text|0|#F580B1}}
| |
| linenumber = {{Text|0|#F580B1}}
| |
| wholeline$ = {{Text|<nowiki>""</nowiki>|#FFB100}}
| |
| linefragment$ = {{Text|<nowiki>""</nowiki>|#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|<nowiki>""</nowiki>|#FFB100}}
| |
| SelectCaseCounter = {{Text|0|#F580B1}}
| |
| ExecCounter = {{Text|0|#F580B1}}
| |
| UserDefineCount = {{Text|7|#F580B1}}
| |
| totalVariablesCreated = {{Text|0|#F580B1}}
| |
| typeDefinitions$ = {{Text|<nowiki>""</nowiki>|#FFB100}}
| |
| totalMainVariablesCreated = {{Text|0|#F580B1}}
| |
| {{Cl|REDIM}} {{Cl|SHARED}} usedVariableList({{Text|1000|#F580B1}}) {{Cl|AS}} usedVarList
| |
| totalWarnings = {{Text|0|#F580B1}}
| |
| duplicateConstWarning = {{Text|0|#F580B1}}
| |
| emptySCWarning = {{Text|0|#F580B1}}
| |
| warningListItems = {{Text|0|#F580B1}}
| |
| lastWarningHeader = {{Text|<nowiki>""</nowiki>|#FFB100}}
| |
| vWatchUsedLabels = {{Cl|SPACE$}}({{Text|1000|#F580B1}})
| |
| vWatchUsedSkipLabels = {{Cl|SPACE$}}({{Text|1000|#F580B1}})
| |
| firstLineNumberLabelvWatch = {{Text|0|#F580B1}}
| |
| {{Cl|REDIM}} {{Cl|SHARED}} warning$({{Text|1000|#F580B1}})
| |
| {{Cl|REDIM}} {{Cl|SHARED}} warningLines({{Text|1000|#F580B1}}) {{Cl|AS}} {{Cl|LONG}}
| |
| {{Cl|REDIM}} {{Cl|SHARED}} warningIncLines({{Text|1000|#F580B1}}) {{Cl|AS}} {{Cl|LONG}}
| |
| {{Cl|REDIM}} {{Cl|SHARED}} warningIncFiles({{Text|1000|#F580B1}}) {{Cl|AS}} {{Cl|STRING}}
| |
| maxLineNumber = {{Text|0|#F580B1}}
| |
| uniquenumbern = {{Text|0|#F580B1}}
| |
|
| |
|
| |
| {{Text|<nowiki>''create a type for storing memory blocks</nowiki>|#919191}}
| |
| {{Text|<nowiki>''UDT</nowiki>|#919191}}
| |
| {{Text|<nowiki>''names</nowiki>|#919191}}
| |
| {{Text|<nowiki>'DIM SHARED lasttype AS LONG</nowiki>|#919191}}
| |
| {{Text|<nowiki>'DIM SHARED udtxname(1000) AS STRING * 256</nowiki>|#919191}}
| |
| {{Text|<nowiki>'DIM SHARED udtxcname(1000) AS STRING * 256</nowiki>|#919191}}
| |
| {{Text|<nowiki>'DIM SHARED udtxsize(1000) AS LONG</nowiki>|#919191}}
| |
| {{Text|<nowiki>'DIM SHARED udtxbytealign(1000) AS INTEGER 'first element MUST be on a byte alignment & size is a multiple of 8</nowiki>|#919191}}
| |
| {{Text|<nowiki>'DIM SHARED udtxnext(1000) AS LONG</nowiki>|#919191}}
| |
| {{Text|<nowiki>''elements</nowiki>|#919191}}
| |
| {{Text|<nowiki>'DIM SHARED lasttypeelement AS LONG</nowiki>|#919191}}
| |
| {{Text|<nowiki>'DIM SHARED udtename(1000) AS STRING * 256</nowiki>|#919191}}
| |
| {{Text|<nowiki>'DIM SHARED udtecname(1000) AS STRING * 256</nowiki>|#919191}}
| |
| {{Text|<nowiki>'DIM SHARED udtebytealign(1000) AS INTEGER</nowiki>|#919191}}
| |
| {{Text|<nowiki>'DIM SHARED udtesize(1000) AS LONG</nowiki>|#919191}}
| |
| {{Text|<nowiki>'DIM SHARED udtetype(1000) AS LONG</nowiki>|#919191}}
| |
| {{Text|<nowiki>'DIM SHARED udtetypesize(1000) AS LONG</nowiki>|#919191}}
| |
| {{Text|<nowiki>'DIM SHARED udtearrayelements(1000) AS LONG</nowiki>|#919191}}
| |
| {{Text|<nowiki>'DIM SHARED udtenext(1000) AS LONG</nowiki>|#919191}}
| |
|
| |
| {{Text|<nowiki>'import _MEM type</nowiki>|#919191}}
| |
| ptrsz = OS_BITS \ {{Text|8|#F580B1}}
| |
|
| |
| lasttype = lasttype + {{Text|1|#F580B1}}: i = lasttype
| |
| udtxname(i) = {{Text|<nowiki>"_MEM"</nowiki>|#FFB100}}
| |
| udtxcname(i) = {{Text|<nowiki>"_MEM"</nowiki>|#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|<nowiki>"OFFSET"</nowiki>|#FFB100}}
| |
| udtecname(i2) = {{Text|<nowiki>"OFFSET"</nowiki>|#FFB100}}
| |
| udtebytealign(i2) = {{Text|1|#F580B1}}
| |
| udtetype(i2) = OFFSETTYPE: udtesize(i2) = ptrsz * {{Text|8|#F580B1}}
| |
| udtetypesize(i2) = {{Text|0|#F580B1}} {{Text|<nowiki>'tsize</nowiki>|#919191}}
| |
| udtxnext(i) = i2
| |
| i3 = i2
| |
| lasttypeelement = lasttypeelement + {{Text|1|#F580B1}}: i2 = lasttypeelement
| |
| udtename(i2) = {{Text|<nowiki>"SIZE"</nowiki>|#FFB100}}
| |
| udtecname(i2) = {{Text|<nowiki>"SIZE"</nowiki>|#FFB100}}
| |
| udtebytealign(i2) = {{Text|1|#F580B1}}
| |
| udtetype(i2) = OFFSETTYPE: udtesize(i2) = ptrsz * {{Text|8|#F580B1}}
| |
| udtetypesize(i2) = {{Text|0|#F580B1}} {{Text|<nowiki>'tsize</nowiki>|#919191}}
| |
| udtenext(i3) = i2
| |
| i3 = i2
| |
| lasttypeelement = lasttypeelement + {{Text|1|#F580B1}}: i2 = lasttypeelement
| |
| udtename(i2) = {{Text|<nowiki>"$_LOCK_ID"</nowiki>|#FFB100}}
| |
| udtecname(i2) = {{Text|<nowiki>"$_LOCK_ID"</nowiki>|#FFB100}}
| |
| udtebytealign(i2) = {{Text|1|#F580B1}}
| |
| udtetype(i2) = INTEGER64TYPE: udtesize(i2) = {{Text|64|#F580B1}}
| |
| udtetypesize(i2) = {{Text|0|#F580B1}} {{Text|<nowiki>'tsize</nowiki>|#919191}}
| |
| udtenext(i3) = i2
| |
| i3 = i2
| |
| lasttypeelement = lasttypeelement + {{Text|1|#F580B1}}: i2 = lasttypeelement
| |
| udtename(i2) = {{Text|<nowiki>"$_LOCK_OFFSET"</nowiki>|#FFB100}}
| |
| udtecname(i2) = {{Text|<nowiki>"$_LOCK_OFFSET"</nowiki>|#FFB100}}
| |
| udtebytealign(i2) = {{Text|1|#F580B1}}
| |
| udtetype(i2) = OFFSETTYPE: udtesize(i2) = ptrsz * {{Text|8|#F580B1}}
| |
| udtetypesize(i2) = {{Text|0|#F580B1}} {{Text|<nowiki>'tsize</nowiki>|#919191}}
| |
| udtenext(i3) = i2
| |
| i3 = i2
| |
| lasttypeelement = lasttypeelement + {{Text|1|#F580B1}}: i2 = lasttypeelement
| |
| udtename(i2) = {{Text|<nowiki>"TYPE"</nowiki>|#FFB100}}
| |
| udtecname(i2) = {{Text|<nowiki>"TYPE"</nowiki>|#FFB100}}
| |
| udtebytealign(i2) = {{Text|1|#F580B1}}
| |
| udtetype(i2) = OFFSETTYPE: udtesize(i2) = ptrsz * {{Text|8|#F580B1}}
| |
| udtetypesize(i2) = {{Text|0|#F580B1}} {{Text|<nowiki>'tsize</nowiki>|#919191}}
| |
| udtenext(i3) = i2
| |
| i3 = i2
| |
| lasttypeelement = lasttypeelement + {{Text|1|#F580B1}}: i2 = lasttypeelement
| |
| udtename(i2) = {{Text|<nowiki>"ELEMENTSIZE"</nowiki>|#FFB100}}
| |
| udtecname(i2) = {{Text|<nowiki>"ELEMENTSIZE"</nowiki>|#FFB100}}
| |
| udtebytealign(i2) = {{Text|1|#F580B1}}
| |
| udtetype(i2) = OFFSETTYPE: udtesize(i2) = ptrsz * {{Text|8|#F580B1}}
| |
| udtetypesize(i2) = {{Text|0|#F580B1}} {{Text|<nowiki>'tsize</nowiki>|#919191}}
| |
| udtenext(i3) = i2
| |
| udtenext(i2) = {{Text|0|#F580B1}}
| |
| i3 = i2
| |
| lasttypeelement = lasttypeelement + {{Text|1|#F580B1}}: i2 = lasttypeelement
| |
| udtename(i2) = {{Text|<nowiki>"IMAGE"</nowiki>|#FFB100}}
| |
| udtecname(i2) = {{Text|<nowiki>"IMAGE"</nowiki>|#FFB100}}
| |
| udtebytealign(i2) = {{Text|1|#F580B1}}
| |
| udtetype(i2) = LONGTYPE: udtesize(i2) = {{Text|32|#F580B1}}
| |
| udtetypesize(i2) = {{Text|0|#F580B1}} {{Text|<nowiki>'tsize</nowiki>|#919191}}
| |
| udtenext(i3) = i2
| |
| udtenext(i2) = {{Text|0|#F580B1}}
| |
| i3 = i2
| |
| lasttypeelement = lasttypeelement + {{Text|1|#F580B1}}: i2 = lasttypeelement
| |
| udtename(i2) = {{Text|<nowiki>"SOUND"</nowiki>|#FFB100}}
| |
| udtecname(i2) = {{Text|<nowiki>"SOUND"</nowiki>|#FFB100}}
| |
| udtebytealign(i2) = {{Text|1|#F580B1}}
| |
| udtetype(i2) = LONGTYPE: udtesize(i2) = {{Text|32|#F580B1}}
| |
| udtetypesize(i2) = {{Text|0|#F580B1}} {{Text|<nowiki>'tsize</nowiki>|#919191}}
| |
| udtenext(i3) = i2
| |
| udtenext(i2) = {{Text|0|#F580B1}}
| |
|
| |
| {{Text|<nowiki>' Reset all unstable flags</nowiki>|#919191}}
| |
| {{Cl|FOR}} i = {{Text|1|#F580B1}} {{Cl|TO}} {{Cl|UBOUND}}(unstableFlags): unstableFlags(i) = {{Text|0|#F580B1}}: {{Cl|NEXT}}
| |
|
| |
| {{Text|<nowiki>' Indicates if a MIDI sound font was selected</nowiki>|#919191}}
| |
| {{Text|<nowiki>'</nowiki>|#919191}}
| |
| {{Text|<nowiki>' Captures both the line number and line contents for error reporting later-on</nowiki>|#919191}}
| |
| {{Text|<nowiki>' in the compilation process</nowiki>|#919191}}
| |
| MidiSoundFontSet = {{Text|0|#F580B1}}
| |
| MidiSoundFontLine$ = {{Text|<nowiki>""</nowiki>|#FFB100}}
| |
|
| |
| {{Text|<nowiki>' If MidiSoundFont$ is blank, then the default is used</nowiki>|#919191}}
| |
| MidiSoundFont$ = {{Text|<nowiki>""</nowiki>|#FFB100}}
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
| {{Text|<nowiki>'begin compilation</nowiki>|#919191}}
| |
| {{Cl|FOR}} closeall = {{Text|1|#F580B1}} {{Cl|TO}} {{Text|255|#F580B1}}: {{Cl|CLOSE}} closeall: {{Cl|NEXT}}
| |
| {{Cl|OPEN}} tmpdir$ + {{Text|<nowiki>"temp.bin"</nowiki>|#FFB100}} {{Cl|OPEN#File_Access_Modes|FOR}} {{Cl|OPEN#File_Access_Modes|OUTPUT}} {{Cl|OPEN#File_ACCESS_and_LOCK_Permissions|LOCK}} {{Cl|OPEN#File_ACCESS_and_LOCK_Permissions|WRITE}} {{Cl|OPEN|AS}} #26 {{Text|<nowiki>'relock</nowiki>|#919191}}
| |
|
| |
| bh = {{Text|OpenBuffer%|#55FF55}}({{Text|<nowiki>"O"</nowiki>|#FFB100}}, tmpdir$ + {{Text|<nowiki>"icon.rc"</nowiki>|#FFB100}})
| |
|
| |
| {{Cl|IF}} Debug {{Cl|THEN}} {{Cl|CLOSE}} #9: {{Cl|OPEN}} tmpdir$ + {{Text|<nowiki>"debug.txt"</nowiki>|#FFB100}} {{Cl|OPEN#File_Access_Modes|FOR}} {{Cl|OPEN#File_Access_Modes|APPEND}} {{Cl|OPEN|AS}} #9
| |
|
| |
| {{Cl|IF}} idemode = {{Text|0|#F580B1}} {{Cl|THEN}}
| |
| qberrorhappened = {{Text|-1|#F580B1}}
| |
| {{Cl|OPEN}} sourcefile$ {{Cl|OPEN#File_Access_Modes|FOR}} {{Cl|OPEN#File_Access_Modes|INPUT}} {{Cl|OPEN|AS}} #1
| |
| qberrorhappened1:
| |
| {{Cl|IF}} qberrorhappened = {{Text|1|#F580B1}} {{Cl|THEN}}
| |
| {{Cl|PRINT}}
| |
| {{Cl|PRINT}} {{Text|<nowiki>"Cannot locate source file: "</nowiki>|#FFB100}} + sourcefile$
| |
| {{Cl|IF}} ConsoleMode {{Cl|THEN}} {{Cl|SYSTEM}} {{Text|1|#F580B1}}
| |
| {{Cl|END}} {{Text|1|#F580B1}}
| |
| {{Cl|ELSE}}
| |
| {{Cl|CLOSE}} #1
| |
| {{Cl|END IF}}
| |
| qberrorhappened = {{Text|0|#F580B1}}
| |
| {{Cl|END IF}}
| |
|
| |
| {{Text|reginternal|#55FF55}}
| |
|
| |
| {{Cl|IF}} qb64prefix_set {{Cl|THEN}}
| |
| qb64prefix$ = {{Text|<nowiki>""</nowiki>|#FFB100}}
| |
|
| |
| {{Text|<nowiki>'re-add internal keywords without the "_" prefix</nowiki>|#919191}}
| |
| {{Text|reginternal|#55FF55}}
| |
|
| |
| f = HASHFLAG_TYPE + HASHFLAG_RESERVED
| |
| {{Text|HashAdd|#55FF55}} {{Text|<nowiki>"UNSIGNED"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| {{Text|HashAdd|#55FF55}} {{Text|<nowiki>"BIT"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| {{Text|HashAdd|#55FF55}} {{Text|<nowiki>"BYTE"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| {{Text|HashAdd|#55FF55}} {{Text|<nowiki>"INTEGER64"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| {{Text|HashAdd|#55FF55}} {{Text|<nowiki>"OFFSET"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| {{Text|HashAdd|#55FF55}} {{Text|<nowiki>"FLOAT"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
| |
|
| |
| f = HASHFLAG_RESERVED + HASHFLAG_CUSTOMSYNTAX
| |
| {{Text|HashAdd|#55FF55}} {{Text|<nowiki>"EXPLICIT"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
| |
| {{Cl|END IF}}
| |
|
| |
| {{Cl|DIM}} {{Cl|SHARED}} GlobTxtBuf: GlobTxtBuf = {{Text|OpenBuffer%|#55FF55}}({{Text|<nowiki>"O"</nowiki>|#FFB100}}, tmpdir$ + {{Text|<nowiki>"global.txt"</nowiki>|#FFB100}})
| |
| defdatahandle = GlobTxtBuf
| |
|
| |
| {{Cl|IF}} iderecompile {{Cl|THEN}}
| |
| iderecompile = {{Text|0|#F580B1}}
| |
| idepass = {{Text|1|#F580B1}} {{Text|<nowiki>'prepass must be done again</nowiki>|#919191}}
| |
| sendc$ = {{Cl|CHR$}}({{Text|7|#F580B1}}) {{Text|<nowiki>'repass request</nowiki>|#919191}}
| |
| {{Cl|GOTO}} sendcommand
| |
| {{Cl|END IF}}
| |
|
| |
| {{Cl|IF}} idemode {{Cl|THEN}} {{Cl|GOTO}} ideret1
| |
|
| |
| {{Text|lineinput3load|#55FF55}} sourcefile$
| |
|
| |
| {{Cl|DO}}
| |
|
| |
| {{Text|<nowiki>'### STEVE EDIT FOR CONST EXPANSION 10/11/2013</nowiki>|#919191}}
| |
|
| |
| wholeline$ = {{Text|lineinput3$|#55FF55}}
| |
| {{Cl|IF}} wholeline$ = {{Cl|CHR$}}({{Text|13|#F580B1}}) {{Cl|THEN}} {{Cl|EXIT DO}}
| |
|
| |
| ideprepass:
| |
| prepassLastLine:
| |
|
| |
| {{Cl|IF}} lastLine <> {{Text|0|#F580B1}} {{Cl|OR (boolean)|OR}} firstLine <> {{Text|0|#F580B1}} {{Cl|THEN}}
| |
| lineBackup$ = wholeline$ {{Text|<nowiki>'backup the real line (will be blank when lastline is set)</nowiki>|#919191}}
| |
| forceIncludeFromRoot$ = {{Text|<nowiki>""</nowiki>|#FFB100}}
| |
| {{Cl|IF}} vWatchOn {{Cl|THEN}}
| |
| addingvWatch = {{Text|1|#F580B1}}
| |
| {{Cl|IF}} firstLine <> {{Text|0|#F580B1}} {{Cl|THEN}} forceIncludeFromRoot$ = {{Text|<nowiki>"internal\support\vwatch\vwatch.bi"</nowiki>|#FFB100}}
| |
| {{Cl|IF}} lastLine <> {{Text|0|#F580B1}} {{Cl|THEN}} forceIncludeFromRoot$ = {{Text|<nowiki>"internal\support\vwatch\vwatch.bm"</nowiki>|#FFB100}}
| |
| {{Cl|ELSE}}
| |
| {{Text|<nowiki>'IF firstLine <> 0 THEN forceIncludeFromRoot$ = "internal\support\vwatch\vwatch_stub.bi"</nowiki>|#919191}}
| |
| {{Cl|IF}} lastLine <> {{Text|0|#F580B1}} {{Cl|THEN}} forceIncludeFromRoot$ = {{Text|<nowiki>"internal\support\vwatch\vwatch_stub.bm"</nowiki>|#FFB100}}
| |
| {{Cl|END IF}}
| |
| firstLine = {{Text|0|#F580B1}}: lastLine = {{Text|0|#F580B1}}
| |
| {{Cl|IF}} {{Cl|LEN}}(forceIncludeFromRoot$) {{Cl|THEN}} {{Cl|GOTO}} forceInclude_prepass
| |
| forceIncludeCompleted_prepass:
| |
| addingvWatch = {{Text|0|#F580B1}}
| |
| wholeline$ = lineBackup$
| |
| {{Cl|END IF}}
| |
|
| |
| wholestv$ = wholeline$ {{Text|<nowiki>'### STEVE EDIT FOR CONST EXPANSION 10/11/2013</nowiki>|#919191}}
| |
|
| |
| prepass = {{Text|1|#F580B1}}
| |
| layout = {{Text|<nowiki>""</nowiki>|#FFB100}}
| |
| layoutok = {{Text|0|#F580B1}}
| |
|
| |
| linenumber = linenumber + {{Text|1|#F580B1}}
| |
| reallinenumber = reallinenumber + {{Text|1|#F580B1}}
| |
|
| |
| {{Cl|DO...LOOP|DO UNTIL}} linenumber < {{Cl|UBOUND}}(InValidLine) {{Text|<nowiki>'color information flag for each line</nowiki>|#919191}}
| |
| {{Cl|REDIM}} {{Cl|_PRESERVE}} InValidLine({{Cl|UBOUND}}(InValidLine) + {{Text|1000|#F580B1}}) {{Cl|AS}} {{Cl|_BYTE}}
| |
| {{Cl|LOOP}}
| |
| InValidLine(linenumber) = {{Text|0|#F580B1}}
| |
|
| |
| {{Cl|IF}} {{Cl|LEN}}(wholeline$) {{Cl|THEN}}
| |
|
| |
| {{Cl|IF}} {{Cl|UCASE$}}({{Cl|_TRIM$}}(wholeline$)) = {{Text|<nowiki>"$NOPREFIX"</nowiki>|#FFB100}} {{Cl|THEN}}
| |
| qb64prefix_set_desiredState = {{Text|1|#F580B1}}
| |
| {{Cl|IF}} qb64prefix_set = {{Text|0|#F580B1}} {{Cl|THEN}}
| |
| {{Cl|IF}} qb64prefix_set_recompileAttempts = {{Text|0|#F580B1}} {{Cl|THEN}}
| |
| qb64prefix_set_recompileAttempts = qb64prefix_set_recompileAttempts + {{Text|1|#F580B1}}
| |
| {{Cl|GOTO}} do_recompile
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}}
| |
|
| |
| wholeline$ = {{Text|lineformat|#55FF55}}(wholeline$)
| |
| {{Cl|IF}} Error_Happened {{Cl|THEN}} {{Cl|GOTO}} errmes
| |
|
| |
|
| |
| temp$ = {{Cl|LTRIM$}}({{Cl|RTRIM$}}({{Cl|UCASE$}}(wholestv$)))
| |
|
| |
| {{Cl|IF}} temp$ = {{Text|<nowiki>"$COLOR:0"</nowiki>|#FFB100}} {{Cl|THEN}}
| |
| {{Cl|IF}} qb64prefix_set {{Cl|THEN}}
| |
| addmetainclude$ = {{Text|getfilepath$|#55FF55}}({{Cl|COMMAND$}}({{Text|0|#F580B1}})) + {{Text|<nowiki>"internal"</nowiki>|#FFB100}} + pathsep$ + {{Text|<nowiki>"support"</nowiki>|#FFB100}} + pathsep$ + {{Text|<nowiki>"color"</nowiki>|#FFB100}} + pathsep$ + {{Text|<nowiki>"color0_noprefix.bi"</nowiki>|#FFB100}}
| |
| {{Cl|ELSE}}
| |
| addmetainclude$ = {{Text|getfilepath$|#55FF55}}({{Cl|COMMAND$}}({{Text|0|#F580B1}})) + {{Text|<nowiki>"internal"</nowiki>|#FFB100}} + pathsep$ + {{Text|<nowiki>"support"</nowiki>|#FFB100}} + pathsep$ + {{Text|<nowiki>"color"</nowiki>|#FFB100}} + pathsep$ + {{Text|<nowiki>"color0.bi"</nowiki>|#FFB100}}
| |
| {{Cl|END IF}}
| |
| {{Cl|GOTO}} finishedlinepp
| |
| {{Cl|END IF}}
| |
|
| |
| {{Cl|IF}} temp$ = {{Text|<nowiki>"$COLOR:32"</nowiki>|#FFB100}} {{Cl|THEN}}
| |
| {{Cl|IF}} qb64prefix_set {{Cl|THEN}}
| |
| addmetainclude$ = {{Text|getfilepath$|#55FF55}}({{Cl|COMMAND$}}({{Text|0|#F580B1}})) + {{Text|<nowiki>"internal"</nowiki>|#FFB100}} + pathsep$ + {{Text|<nowiki>"support"</nowiki>|#FFB100}} + pathsep$ + {{Text|<nowiki>"color"</nowiki>|#FFB100}} + pathsep$ + {{Text|<nowiki>"color32_noprefix.bi"</nowiki>|#FFB100}}
| |
| {{Cl|ELSE}}
| |
| addmetainclude$ = {{Text|getfilepath$|#55FF55}}({{Cl|COMMAND$}}({{Text|0|#F580B1}})) + {{Text|<nowiki>"internal"</nowiki>|#FFB100}} + pathsep$ + {{Text|<nowiki>"support"</nowiki>|#FFB100}} + pathsep$ + {{Text|<nowiki>"color"</nowiki>|#FFB100}} + pathsep$ + {{Text|<nowiki>"color32.bi"</nowiki>|#FFB100}}
| |
| {{Cl|END IF}}
| |
| {{Cl|GOTO}} finishedlinepp
| |
| {{Cl|END IF}}
| |
|
| |
| {{Cl|IF}} temp$ = {{Text|<nowiki>"$DEBUG"</nowiki>|#FFB100}} {{Cl|THEN}}
| |
| vWatchDesiredState = {{Text|1|#F580B1}}
| |
| {{Cl|IF}} vWatchOn = {{Text|0|#F580B1}} {{Cl|THEN}}
| |
| {{Cl|IF}} vWatchRecompileAttempts = {{Text|0|#F580B1}} {{Cl|THEN}}
| |
| {{Text|<nowiki>'this is the first time a conflict has occurred, so react immediately with a full recompilation using the desired state</nowiki>|#919191}}
| |
| vWatchRecompileAttempts = vWatchRecompileAttempts + {{Text|1|#F580B1}}
| |
| {{Cl|GOTO}} do_recompile
| |
| {{Cl|ELSE}}
| |
| {{Text|<nowiki>'continue compilation to retrieve the final state requested and act on that as required</nowiki>|#919191}}
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}}
| |
|
| |
| {{Cl|IF}} {{Cl|LEFT$}}(temp$, {{Text|4|#F580B1}}) = {{Text|<nowiki>"$IF "</nowiki>|#FFB100}} {{Cl|THEN}}
| |
| {{Cl|IF}} {{Cl|RIGHT$}}(temp$, {{Text|5|#F580B1}}) <> {{Text|<nowiki>" THEN"</nowiki>|#FFB100}} {{Cl|THEN}} a$ = {{Text|<nowiki>"$IF without THEN"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
| |
| temp$ = {{Cl|LTRIM$}}({{Cl|MID$ (function)|MID$}}(temp$, {{Text|4|#F580B1}})) {{Text|<nowiki>'strip off the $IF and extra spaces</nowiki>|#919191}}
| |
| temp$ = {{Cl|RTRIM$}}({{Cl|LEFT$}}(temp$, {{Cl|LEN}}(temp$) - {{Text|4|#F580B1}})) {{Text|<nowiki>'and strip off the THEN and extra spaces</nowiki>|#919191}}
| |
| temp = {{Cl|INSTR}}(temp$, {{Text|<nowiki>"="</nowiki>|#FFB100}})
| |
| ExecCounter = ExecCounter + {{Text|1|#F580B1}}
| |
| ExecLevel(ExecCounter) = {{Text|-1|#F580B1}} {{Text|<nowiki>'default to a skip value</nowiki>|#919191}}
| |
| DefineElse(ExecCounter) = {{Text|1|#F580B1}} {{Text|<nowiki>'1 says we have an $IF statement at this level</nowiki>|#919191}}
| |
| result = {{Text|EvalPreIF|#55FF55}}(temp$, a$)
| |
| {{Cl|IF}} a$ <> {{Text|<nowiki>""</nowiki>|#FFB100}} {{Cl|THEN}} {{Cl|GOTO}} errmes
| |
| {{Cl|IF}} result <> {{Text|0|#F580B1}} {{Cl|THEN}}
| |
| ExecLevel(ExecCounter) = ExecLevel(ExecCounter - {{Text|1|#F580B1}}) {{Text|<nowiki>'So we inherit the execlevel from above</nowiki>|#919191}}
| |
| {{Cl|IF}} ExecLevel(ExecCounter) = {{Text|0|#F580B1}} {{Cl|THEN}} DefineElse(ExecCounter) = DefineElse(ExecCounter) {{Cl|OR}} {{Text|4|#F580B1}} {{Text|<nowiki>'Else if used and conditon found</nowiki>|#919191}}
| |
| {{Cl|END IF}}
| |
| {{Cl|GOTO}} finishedlinepp {{Text|<nowiki>'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.</nowiki>|#919191}}
| |
| {{Cl|END IF}}
| |
|
| |
| {{Cl|IF}} temp$ = {{Text|<nowiki>"$ELSE"</nowiki>|#FFB100}} {{Cl|THEN}}
| |
| {{Cl|IF}} DefineElse(ExecCounter) = {{Text|0|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"$ELSE without $IF"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
| |
| {{Cl|IF}} DefineElse(ExecCounter) {{Cl|AND (boolean)|AND}} {{Text|2|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"$IF block already has $ELSE statement in it"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
| |
| DefineElse(ExecCounter) = DefineElse(ExecCounter) {{Cl|OR}} {{Text|2|#F580B1}} {{Text|<nowiki>'set the flag to declare an $ELSE already in this block</nowiki>|#919191}}
| |
| {{Cl|IF}} DefineElse(ExecCounter) {{Cl|AND (boolean)|AND}} {{Text|4|#F580B1}} {{Cl|THEN}} {{Text|<nowiki>'If we executed code in a previous IF or ELSE IF statement, we can't do it here</nowiki>|#919191}}
| |
| ExecLevel(ExecCounter) = {{Text|-1|#F580B1}} {{Text|<nowiki>'So we inherit the execlevel from above</nowiki>|#919191}}
| |
| {{Cl|ELSE}}
| |
| ExecLevel(ExecCounter) = ExecLevel(ExecCounter - {{Text|1|#F580B1}}) {{Text|<nowiki>'If we were processing code before, code after this segment is going to be SKIPPED</nowiki>|#919191}}
| |
| {{Cl|END IF}}
| |
| {{Cl|GOTO}} finishedlinepp
| |
| {{Cl|END IF}}
| |
|
| |
| {{Cl|IF}} {{Cl|LEFT$}}(temp$, {{Text|5|#F580B1}}) = {{Text|<nowiki>"$ELSE"</nowiki>|#FFB100}} {{Cl|THEN}} {{Text|<nowiki>'looking for $ELSE IF</nowiki>|#919191}}
| |
| temp$ = {{Cl|LTRIM$}}({{Cl|MID$ (function)|MID$}}(temp$, {{Text|6|#F580B1}}))
| |
| {{Cl|IF}} {{Cl|LEFT$}}(temp$, {{Text|3|#F580B1}}) = {{Text|<nowiki>"IF "</nowiki>|#FFB100}} {{Cl|THEN}}
| |
| {{Cl|IF}} DefineElse(ExecCounter) = {{Text|0|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"$ELSE IF without $IF"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
| |
| {{Cl|IF}} DefineElse(ExecCounter) {{Cl|AND (boolean)|AND}} {{Text|2|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"$ELSE IF cannot follow $ELSE"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
| |
| {{Cl|IF}} {{Cl|RIGHT$}}(temp$, {{Text|5|#F580B1}}) <> {{Text|<nowiki>" THEN"</nowiki>|#FFB100}} {{Cl|THEN}} a$ = {{Text|<nowiki>"$ELSE IF without THEN"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
| |
| {{Cl|IF}} DefineElse(ExecCounter) {{Cl|AND (boolean)|AND}} {{Text|4|#F580B1}} {{Cl|THEN}} {{Text|<nowiki>'If we executed code in a previous IF or ELSE IF statement, we can't do it here</nowiki>|#919191}}
| |
| ExecLevel(ExecCounter) = {{Text|-1|#F580B1}}
| |
| {{Cl|GOTO}} finishedlinepp
| |
| {{Cl|END IF}}
| |
| temp$ = {{Cl|LTRIM$}}({{Cl|MID$ (function)|MID$}}(temp$, {{Text|3|#F580B1}})) {{Text|<nowiki>'strip off the IF and extra spaces</nowiki>|#919191}}
| |
| temp$ = {{Cl|RTRIM$}}({{Cl|LEFT$}}(temp$, {{Cl|LEN}}(temp$) - {{Text|4|#F580B1}})) {{Text|<nowiki>'and strip off the THEN and extra spaces</nowiki>|#919191}}
| |
| result = {{Text|EvalPreIF|#55FF55}}(temp$, a$)
| |
| {{Cl|IF}} a$ <> {{Text|<nowiki>""</nowiki>|#FFB100}} {{Cl|THEN}} {{Cl|GOTO}} errmes
| |
| {{Cl|IF}} result <> {{Text|0|#F580B1}} {{Cl|THEN}}
| |
| ExecLevel(ExecCounter) = ExecLevel(ExecCounter - {{Text|1|#F580B1}}) {{Text|<nowiki>'So we inherit the execlevel from above</nowiki>|#919191}}
| |
| {{Cl|IF}} ExecLevel(ExecCounter) = {{Text|0|#F580B1}} {{Cl|THEN}} DefineElse(ExecCounter) = DefineElse(ExecCounter) {{Cl|OR}} {{Text|4|#F580B1}} {{Text|<nowiki>'Else if used and conditon found</nowiki>|#919191}}
| |
| {{Cl|END IF}}
| |
| {{Cl|GOTO}} finishedlinepp {{Text|<nowiki>'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.</nowiki>|#919191}}
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}}
| |
|
| |
| {{Cl|IF}} temp$ = {{Text|<nowiki>"$END IF"</nowiki>|#FFB100}} {{Cl|OR (boolean)|OR}} temp$ = {{Text|<nowiki>"$ENDIF"</nowiki>|#FFB100}} {{Cl|THEN}}
| |
| {{Cl|IF}} DefineElse(ExecCounter) = {{Text|0|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"$END IF without $IF"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
| |
| DefineElse(ExecCounter) = {{Text|0|#F580B1}} {{Text|<nowiki>'We no longer have an $IF block at this level</nowiki>|#919191}}
| |
| ExecCounter = ExecCounter - {{Text|1|#F580B1}}
| |
| {{Cl|GOTO}} finishedlinepp
| |
| {{Cl|END IF}}
| |
|
| |
| {{Cl|IF}} ExecLevel(ExecCounter) {{Cl|THEN}}
| |
| {{Cl|DO...LOOP|DO UNTIL}} linenumber < {{Cl|UBOUND}}(InValidLine)
| |
| {{Cl|REDIM}} {{Cl|_PRESERVE}} InValidLine({{Cl|UBOUND}}(InValidLine) + {{Text|1000|#F580B1}}) {{Cl|AS}} {{Cl|_BYTE}}
| |
| {{Cl|LOOP}}
| |
|
| |
| InValidLine(linenumber) = {{Text|-1|#F580B1}}
| |
| {{Cl|GOTO}} finishedlinepp {{Text|<nowiki>'we don't check for anything inside lines that we've marked for skipping</nowiki>|#919191}}
| |
| {{Cl|END IF}}
| |
|
| |
| {{Cl|IF}} {{Cl|LEFT$}}(temp$, {{Text|7|#F580B1}}) = {{Text|<nowiki>"$ERROR "</nowiki>|#FFB100}} {{Cl|THEN}}
| |
| temp$ = {{Cl|LTRIM$}}({{Cl|MID$ (function)|MID$}}(temp$, {{Text|7|#F580B1}}))
| |
| a$ = {{Text|<nowiki>"Compilation check failed: "</nowiki>|#FFB100}} + temp$
| |
| {{Cl|GOTO}} errmes
| |
| {{Cl|END IF}}
| |
|
| |
| {{Cl|IF}} {{Cl|LEFT$}}(temp$, {{Text|5|#F580B1}}) = {{Text|<nowiki>"$LET "</nowiki>|#FFB100}} {{Cl|THEN}}
| |
| temp$ = {{Cl|LTRIM$}}({{Cl|MID$ (function)|MID$}}(temp$, {{Text|5|#F580B1}})) {{Text|<nowiki>'simply shorten our string to parse</nowiki>|#919191}}
| |
| {{Text|<nowiki>'For starters, let's make certain that we have 3 elements to deal with</nowiki>|#919191}}
| |
| temp = {{Cl|INSTR}}(temp$, {{Text|<nowiki>"="</nowiki>|#FFB100}}) {{Text|<nowiki>'without an = in there, we can't get a value from the left and right side</nowiki>|#919191}}
| |
| {{Cl|IF}} temp = {{Text|0|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Invalid Syntax. $LET <flag> = <value>"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
| |
| l$ = {{Cl|RTRIM$}}({{Cl|LEFT$}}(temp$, temp - {{Text|1|#F580B1}})): r$ = {{Cl|LTRIM$}}({{Cl|MID$ (function)|MID$}}(temp$, temp + {{Text|1|#F580B1}}))
| |
| {{Text|<nowiki>'then validate to make certain the left side looks proper</nowiki>|#919191}}
| |
| {{Cl|IF}} {{Text|validname|#55FF55}}(l$) = {{Text|0|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Invalid flag name"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
| |
| {{Cl|IF}} {{Cl|LEFT$}}(r$, {{Text|1|#F580B1}}) = {{Cl|CHR$}}({{Text|34|#F580B1}}) {{Cl|THEN}} r$ = {{Cl|LTRIM$}}({{Cl|MID$ (function)|MID$}}(r$, {{Text|2|#F580B1}}))
| |
| {{Cl|IF}} {{Cl|RIGHT$}}(r$, {{Text|1|#F580B1}}) = {{Cl|CHR$}}({{Text|34|#F580B1}}) {{Cl|THEN}} r$ = {{Cl|RTRIM$}}({{Cl|LEFT$}}(r$, {{Cl|LEN}}(r$) - {{Text|1|#F580B1}}))
| |
| {{Cl|IF}} {{Cl|LEFT$}}(r$, {{Text|1|#F580B1}}) = {{Text|<nowiki>"-"</nowiki>|#FFB100}} {{Cl|THEN}}
| |
| r1$ = {{Text|<nowiki>"-"</nowiki>|#FFB100}}
| |
| r$ = {{Cl|LTRIM$}}({{Cl|MID$ (function)|MID$}}(r$, {{Text|2|#F580B1}}))
| |
| {{Cl|ELSE}}
| |
| r1$ = {{Text|<nowiki>""</nowiki>|#FFB100}}
| |
| {{Cl|END IF}}
| |
| {{Text|<nowiki>'then validate to make certain the left side looks proper</nowiki>|#919191}}
| |
| {{Cl|FOR}} i = {{Text|1|#F580B1}} {{Cl|TO}} {{Cl|LEN}}(r$)
| |
| a = {{Cl|ASC (function)|ASC}}(r$, i)
| |
| {{Cl|SELECT CASE}} a
| |
| {{Cl|CASE}} {{Text|32|#F580B1}}
| |
| {{Cl|CASE}} {{Text|46|#F580B1}} {{Text|<nowiki>'periods are fine.</nowiki>|#919191}}
| |
| r1$ = r1$ + {{Text|<nowiki>"."</nowiki>|#FFB100}}
| |
| {{Cl|CASE}} {{Cl|IS}} < {{Text|48|#F580B1}}, {{Cl|IS}} > {{Text|90|#F580B1}}
| |
| a$ = {{Text|<nowiki>"Invalid value"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
| |
| {{Cl|CASE}} {{Cl|ELSE}}
| |
| r1$ = r1$ + {{Cl|CHR$}}(a)
| |
| {{Cl|END SELECT}}
| |
| {{Cl|NEXT}}
| |
| r$ = r1$
| |
| {{Text|<nowiki>'First look to see if we have an existing setting like this and if so, update it</nowiki>|#919191}}
| |
| {{Cl|FOR}} i = {{Text|8|#F580B1}} {{Cl|TO}} UserDefineCount {{Text|<nowiki>'UserDefineCount 1-7 are reserved for automatic OS/BIT detection & version</nowiki>|#919191}}
| |
| {{Cl|IF}} UserDefine({{Text|0|#F580B1}}, i) = l$ {{Cl|THEN}} UserDefine({{Text|1|#F580B1}}, i) = r$: {{Cl|GOTO}} finishedlinepp
| |
| {{Cl|NEXT}}
| |
| {{Text|<nowiki>'Otherwise create a new setting and set the initial value for it</nowiki>|#919191}}
| |
| UserDefineCount = UserDefineCount + {{Text|1|#F580B1}}
| |
| {{Cl|IF}} UserDefineCount > {{Cl|UBOUND}}(UserDefine, {{Text|2|#F580B1}}) {{Cl|THEN}}
| |
| {{Cl|REDIM}} {{Cl|_PRESERVE}} UserDefine({{Text|1|#F580B1}}, {{Cl|UBOUND}}(UserDefine, {{Text|2|#F580B1}}) + {{Text|10|#F580B1}}) {{Text|<nowiki>'Add another 10 elements to the array so it'll expand as the user adds to it</nowiki>|#919191}}
| |
| {{Cl|END IF}}
| |
| UserDefine({{Text|0|#F580B1}}, UserDefineCount) = l$
| |
| UserDefine({{Text|1|#F580B1}}, UserDefineCount) = r$
| |
| {{Cl|GOTO}} finishedlinepp
| |
| {{Cl|END IF}}
| |
|
| |
| {{Text|<nowiki>' We check for Unstable flags during the preprocessing step because it</nowiki>|#919191}}
| |
| {{Text|<nowiki>' impacts what valid commands there are in all the other steps</nowiki>|#919191}}
| |
| {{Cl|IF}} {{Cl|LEFT$}}(temp$, {{Text|10|#F580B1}}) = {{Text|<nowiki>"$UNSTABLE:"</nowiki>|#FFB100}} {{Cl|THEN}}
| |
| token$ = {{Cl|UCASE$}}({{Cl|LTRIM$}}({{Cl|RTRIM$}}({{Cl|MID$ (function)|MID$}}(temp$, {{Text|11|#F580B1}}))))
| |
|
| |
| {{Cl|SELECT CASE}} token$
| |
| {{Cl|CASE}} {{Text|<nowiki>"MIDI"</nowiki>|#FFB100}}
| |
| {{Cl|IF}} {{Cl|NOT}} UseMiniaudioBackend {{Cl|THEN}}
| |
| a$ = {{Text|<nowiki>"Midi is not supported with the old OpenAL audio backend."</nowiki>|#FFB100}}
| |
| {{Cl|GOTO}} errmes
| |
| {{Cl|END IF}}
| |
|
| |
| unstableFlags(UNSTABLE_MIDI) = {{Text|-1|#F580B1}}
| |
|
| |
| {{Cl|CASE}} {{Text|<nowiki>"HTTP"</nowiki>|#FFB100}}
| |
| unstableFlags(UNSTABLE_HTTP) = {{Text|-1|#F580B1}}
| |
| {{Text|regUnstableHttp|#55FF55}}
| |
|
| |
| {{Cl|CASE}} {{Cl|ELSE}}
| |
| a$ = {{Text|<nowiki>"Unrecognized unstable flag "</nowiki>|#FFB100}} + {{Text|AddQuotes$|#55FF55}}(token$)
| |
| {{Cl|GOTO}} errmes
| |
| {{Cl|END SELECT}}
| |
| {{Cl|END IF}}
| |
|
| |
| cwholeline$ = wholeline$
| |
| wholeline$ = {{Text|eleucase$|#55FF55}}(wholeline$) {{Text|<nowiki>'********REMOVE THIS LINE LATER********</nowiki>|#919191}}
| |
|
| |
|
| |
| addmetadynamic = {{Text|0|#F580B1}}: addmetastatic = {{Text|0|#F580B1}}
| |
| wholelinen = {{Text|numelements|#55FF55}}(wholeline$)
| |
|
| |
| {{Cl|IF}} wholelinen {{Cl|THEN}}
| |
|
| |
| wholelinei = {{Text|1|#F580B1}}
| |
|
| |
| {{Text|<nowiki>'skip line number?</nowiki>|#919191}}
| |
| e$ = {{Text|getelement$|#55FF55}}(wholeline$, {{Text|1|#F580B1}})
| |
| {{Cl|IF}} ({{Cl|ASC (function)|ASC}}(e$) >= {{Text|48|#F580B1}} {{Cl|AND (boolean)|AND}} {{Cl|ASC (function)|ASC}}(e$) <= {{Text|59|#F580B1}}) {{Cl|OR (boolean)|OR}} {{Cl|ASC (function)|ASC}}(e$) = {{Text|46|#F580B1}} {{Cl|THEN}} wholelinei = {{Text|2|#F580B1}}: {{Cl|GOTO}} ppskpl
| |
|
| |
| {{Text|<nowiki>'skip 'POSSIBLE' line label?</nowiki>|#919191}}
| |
| {{Cl|IF}} wholelinen >= {{Text|2|#F580B1}} {{Cl|THEN}}
| |
| x2 = {{Cl|INSTR}}(wholeline$, sp + {{Text|<nowiki>":"</nowiki>|#FFB100}} + sp): x3 = x2 + {{Text|2|#F580B1}}
| |
| {{Cl|IF}} x2 = {{Text|0|#F580B1}} {{Cl|THEN}}
| |
| {{Cl|IF}} {{Cl|RIGHT$}}(wholeline$, {{Text|2|#F580B1}}) = sp + {{Text|<nowiki>":"</nowiki>|#FFB100}} {{Cl|THEN}} x2 = {{Cl|LEN}}(wholeline$) - {{Text|1|#F580B1}}: x3 = x2 + {{Text|1|#F580B1}}
| |
| {{Cl|END IF}}
| |
|
| |
| {{Cl|IF}} x2 {{Cl|THEN}}
| |
| e$ = {{Cl|LEFT$}}(wholeline$, x2 - {{Text|1|#F580B1}})
| |
| {{Cl|IF}} {{Text|validlabel|#55FF55}}(e$) {{Cl|THEN}}
| |
| wholeline$ = {{Cl|RIGHT$}}(wholeline$, {{Cl|LEN}}(wholeline$) - x3)
| |
| cwholeline$ = {{Cl|RIGHT$}}(cwholeline$, {{Cl|LEN}}(wholeline$) - x3)
| |
| wholelinen = {{Text|numelements|#55FF55}}(wholeline$)
| |
| {{Cl|GOTO}} ppskpl
| |
| {{Cl|END IF}} {{Text|<nowiki>'valid</nowiki>|#919191}}
| |
| {{Cl|END IF}} {{Text|<nowiki>'includes ":"</nowiki>|#919191}}
| |
| {{Cl|END IF}} {{Text|<nowiki>'wholelinen>=2</nowiki>|#919191}}
| |
|
| |
| ppskpl:
| |
| {{Cl|IF}} wholelinei <= wholelinen {{Cl|THEN}}
| |
| {{Text|<nowiki>'----------------------------------------</nowiki>|#919191}}
| |
| a$ = {{Text|<nowiki>""</nowiki>|#FFB100}}
| |
| ca$ = {{Text|<nowiki>""</nowiki>|#FFB100}}
| |
| ppblda:
| |
| e$ = {{Text|getelement$|#55FF55}}(wholeline$, wholelinei)
| |
| ce$ = {{Text|getelement$|#55FF55}}(cwholeline$, wholelinei)
| |
| {{Cl|IF}} e$ = {{Text|<nowiki>":"</nowiki>|#FFB100}} {{Cl|OR (boolean)|OR}} e$ = {{Text|<nowiki>"ELSE"</nowiki>|#FFB100}} {{Cl|OR (boolean)|OR}} e$ = {{Text|<nowiki>"THEN"</nowiki>|#FFB100}} {{Cl|OR (boolean)|OR}} e$ = {{Text|<nowiki>""</nowiki>|#FFB100}} {{Cl|THEN}}
| |
| {{Cl|IF}} {{Cl|LEN}}(a$) {{Cl|THEN}}
| |
| {{Cl|IF}} Debug {{Cl|THEN}} {{Cl|PRINT (file statement)|PRINT}} #9, {{Text|<nowiki>"PP["</nowiki>|#FFB100}} + a$ + {{Text|<nowiki>"]"</nowiki>|#FFB100}}
| |
| n = {{Text|numelements|#55FF55}}(a$)
| |
| firstelement$ = {{Text|getelement|#55FF55}}(a$, {{Text|1|#F580B1}})
| |
| secondelement$ = {{Text|getelement|#55FF55}}(a$, {{Text|2|#F580B1}})
| |
| thirdelement$ = {{Text|getelement|#55FF55}}(a$, {{Text|3|#F580B1}})
| |
| {{Text|<nowiki>'========================================</nowiki>|#919191}}
| |
|
| |
| {{Cl|IF}} n = {{Text|2|#F580B1}} {{Cl|AND (boolean)|AND}} firstelement$ = {{Text|<nowiki>"END"</nowiki>|#FFB100}} {{Cl|AND (boolean)|AND}} (secondelement$ = {{Text|<nowiki>"SUB"</nowiki>|#FFB100}} {{Cl|OR (boolean)|OR}} secondelement$ = {{Text|<nowiki>"FUNCTION"</nowiki>|#FFB100}}) {{Cl|THEN}}
| |
| closedsubfunc = {{Text|-1|#F580B1}}
| |
| {{Cl|END IF}}
| |
|
| |
| {{Text|<nowiki>'declare library</nowiki>|#919191}}
| |
| {{Cl|IF}} declaringlibrary {{Cl|THEN}}
| |
|
| |
| {{Cl|IF}} firstelement$ = {{Text|<nowiki>"END"</nowiki>|#FFB100}} {{Cl|THEN}}
| |
| {{Cl|IF}} n <> {{Text|2|#F580B1}} {{Cl|OR (boolean)|OR}} secondelement$ <> {{Text|<nowiki>"DECLARE"</nowiki>|#FFB100}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Expected END DECLARE"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
| |
| declaringlibrary = {{Text|0|#F580B1}}
| |
| {{Cl|GOTO}} finishedlinepp
| |
| {{Cl|END IF}} {{Text|<nowiki>'end declare</nowiki>|#919191}}
| |
|
| |
| declaringlibrary = {{Text|2|#F580B1}}
| |
|
| |
| {{Cl|IF}} firstelement$ = {{Text|<nowiki>"SUB"</nowiki>|#FFB100}} {{Cl|OR (boolean)|OR}} firstelement$ = {{Text|<nowiki>"FUNCTION"</nowiki>|#FFB100}} {{Cl|THEN}} subfuncn = subfuncn - {{Text|1|#F580B1}}: {{Cl|GOTO}} declaresubfunc
| |
|
| |
| a$ = {{Text|<nowiki>"Expected SUB/FUNCTION definition or END DECLARE (#2)"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
| |
| {{Cl|END IF}}
| |
|
| |
| {{Text|<nowiki>'UDT TYPE definition</nowiki>|#919191}}
| |
| {{Cl|IF}} definingtype {{Cl|THEN}}
| |
| i = definingtype
| |
|
| |
| {{Cl|IF}} n >= {{Text|1|#F580B1}} {{Cl|THEN}}
| |
| {{Cl|IF}} firstelement$ = {{Text|<nowiki>"END"</nowiki>|#FFB100}} {{Cl|THEN}}
| |
| {{Cl|IF}} n <> {{Text|2|#F580B1}} {{Cl|OR (boolean)|OR}} secondelement$ <> {{Text|<nowiki>"TYPE"</nowiki>|#FFB100}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Expected END TYPE"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
| |
| {{Cl|IF}} udtxnext(i) = {{Text|0|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"No elements defined in TYPE"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
| |
| definingtype = {{Text|0|#F580B1}}
| |
|
| |
| {{Text|<nowiki>'create global buffer for SWAP space</nowiki>|#919191}}
| |
| siz$ = {{Text|str2$|#55FF55}}(udtxsize(i) \ {{Text|8|#F580B1}})
| |
| {{Text|WriteBufLine|#55FF55}} GlobTxtBuf, {{Text|<nowiki>"char *g_tmp_udt_"</nowiki>|#FFB100}} + {{Cl|RTRIM$}}(udtxname(i)) + {{Text|<nowiki>"=(char*)malloc("</nowiki>|#FFB100}} + siz$ + {{Text|<nowiki>");"</nowiki>|#FFB100}}
| |
|
| |
| {{Text|<nowiki>'print "END TYPE";udtxsize(i);udtxbytealign(i)</nowiki>|#919191}}
| |
| {{Cl|GOTO}} finishedlinepp
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}}
| |
|
| |
| {{Cl|IF}} n < {{Text|3|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Expected element-name AS type, AS type element-list, or END TYPE"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
| |
| n$ = firstelement$
| |
|
| |
| {{Cl|IF}} n$ <> {{Text|<nowiki>"AS"</nowiki>|#FFB100}} {{Cl|THEN}}
| |
| {{Text|<nowiki>'traditional variable-name AS type syntax, single-element</nowiki>|#919191}}
| |
| lasttypeelement = lasttypeelement + {{Text|1|#F580B1}}
| |
| i2 = lasttypeelement
| |
| {{Cl|WHILE}} i2 > {{Cl|UBOUND}}(udtenext): {{Text|increaseUDTArrays|#55FF55}}: {{Cl|WEND}}
| |
| udtenext(i2) = {{Text|0|#F580B1}}
| |
|
| |
| ii = {{Text|2|#F580B1}}
| |
|
| |
| udtearrayelements(i2) = {{Text|0|#F580B1}}
| |
|
| |
| {{Cl|IF}} ii >= n {{Cl|OR (boolean)|OR}} {{Text|getelement$|#55FF55}}(a$, ii) <> {{Text|<nowiki>"AS"</nowiki>|#FFB100}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Expected element-name AS type, AS type element-list, or END TYPE"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
| |
| t$ = {{Text|getelements$|#55FF55}}(a$, ii + {{Text|1|#F580B1}}, n)
| |
|
| |
| {{Cl|IF}} t$ = {{Cl|RTRIM$}}(udtxname(definingtype)) {{Cl|THEN}} a$ = {{Text|<nowiki>"Invalid self-reference"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
| |
| typ = {{Text|typname2typ|#55FF55}}(t$)
| |
| {{Cl|IF}} Error_Happened {{Cl|THEN}} {{Cl|GOTO}} errmes
| |
| {{Cl|IF}} typ = {{Text|0|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Undefined type"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
| |
| typsize = typname2typsize
| |
|
| |
| {{Cl|IF}} {{Text|validname|#55FF55}}(n$) = {{Text|0|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Invalid name"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
| |
| udtename(i2) = n$
| |
| udtecname(i2) = {{Text|getelement$|#55FF55}}(ca$, {{Text|1|#F580B1}})
| |
| NormalTypeBlock:
| |
| typeDefinitions$ = typeDefinitions$ + {{Cl|MKL$}}(i2) + {{Cl|MKL$}}({{Cl|LEN}}(n$)) + n$
| |
| udtetype(i2) = typ
| |
| udtetypesize(i2) = typsize
| |
|
| |
| hashname$ = n$
| |
|
| |
| {{Text|<nowiki>'check for name conflicts (any similar reserved or element from current UDT)</nowiki>|#919191}}
| |
| hashchkflags = HASHFLAG_RESERVED + HASHFLAG_UDTELEMENT
| |
| hashres = {{Text|HashFind|#55FF55}}(hashname$, hashchkflags, hashresflags, hashresref)
| |
| {{Cl|DO...LOOP|DO WHILE}} hashres
| |
| {{Cl|IF}} hashresflags {{Cl|AND (boolean)|AND}} HASHFLAG_UDTELEMENT {{Cl|THEN}}
| |
| {{Cl|IF}} hashresref = i {{Cl|THEN}} a$ = {{Text|<nowiki>"Name already in use ("</nowiki>|#FFB100}} + hashname$ + {{Text|<nowiki>")"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
| |
| {{Cl|END IF}}
| |
| {{Cl|IF}} hashresflags {{Cl|AND (boolean)|AND}} HASHFLAG_RESERVED {{Cl|THEN}}
| |
| {{Cl|IF}} hashresflags {{Cl|AND (boolean)|AND}} (HASHFLAG_TYPE + HASHFLAG_CUSTOMSYNTAX + HASHFLAG_OPERATOR + HASHFLAG_XELEMENTNAME) {{Cl|THEN}} a$ = {{Text|<nowiki>"Name already in use ("</nowiki>|#FFB100}} + hashname$ + {{Text|<nowiki>")"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
| |
| {{Cl|END IF}}
| |
| {{Cl|IF}} hashres <> {{Text|1|#F580B1}} {{Cl|THEN}} hashres = {{Text|HashFindCont|#55FF55}}(hashresflags, hashresref) {{Cl|ELSE}} hashres = {{Text|0|#F580B1}}
| |
| {{Cl|LOOP}}
| |
| {{Text|<nowiki>'add to hash table</nowiki>|#919191}}
| |
| {{Text|HashAdd|#55FF55}} hashname$, HASHFLAG_UDTELEMENT, i
| |
|
| |
| {{Text|<nowiki>'Calculate element's size</nowiki>|#919191}}
| |
| {{Cl|IF}} typ {{Cl|AND (boolean)|AND}} ISUDT {{Cl|THEN}}
| |
| u = typ {{Cl|AND}} {{Text|511|#F580B1}}
| |
| udtesize(i2) = udtxsize(u)
| |
| {{Cl|IF}} udtxbytealign(u) {{Cl|THEN}} udtxbytealign(i) = {{Text|1|#F580B1}}: udtebytealign(i2) = {{Text|1|#F580B1}}
| |
| {{Cl|IF}} udtxvariable(u) {{Cl|THEN}} udtxvariable(i) = {{Text|-1|#F580B1}}
| |
| {{Cl|ELSE}}
| |
| {{Cl|IF}} (typ {{Cl|AND (boolean)|AND}} ISSTRING) {{Cl|THEN}}
| |
| {{Cl|IF}} (typ {{Cl|AND (boolean)|AND}} ISFIXEDLENGTH) = {{Text|0|#F580B1}} {{Cl|THEN}}
| |
| udtesize(i2) = OFFSETTYPE {{Cl|AND}} {{Text|511|#F580B1}}
| |
| udtxvariable(i) = {{Text|-1|#F580B1}}
| |
| {{Cl|ELSE}}
| |
| udtesize(i2) = typsize * {{Text|8|#F580B1}}
| |
| {{Cl|END IF}}
| |
| udtxbytealign(i) = {{Text|1|#F580B1}}: udtebytealign(i2) = {{Text|1|#F580B1}}
| |
| {{Cl|ELSE}}
| |
| udtesize(i2) = typ {{Cl|AND}} {{Text|511|#F580B1}}
| |
| {{Cl|IF}} (typ {{Cl|AND (boolean)|AND}} ISOFFSETINBITS) = {{Text|0|#F580B1}} {{Cl|THEN}} udtxbytealign(i) = {{Text|1|#F580B1}}: udtebytealign(i2) = {{Text|1|#F580B1}}
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}}
| |
|
| |
| {{Text|<nowiki>'Increase block size</nowiki>|#919191}}
| |
| {{Cl|IF}} udtebytealign(i2) {{Cl|THEN}}
| |
| {{Cl|IF}} udtxsize(i) {{Cl|MOD}} {{Text|8|#F580B1}} {{Cl|THEN}}
| |
| udtxsize(i) = udtxsize(i) + ({{Text|8|#F580B1}} - (udtxsize(i) {{Cl|MOD}} {{Text|8|#F580B1}}))
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}}
| |
| udtxsize(i) = udtxsize(i) + udtesize(i2)
| |
|
| |
| {{Text|<nowiki>'Link element to previous element</nowiki>|#919191}}
| |
| {{Cl|IF}} udtxnext(i) = {{Text|0|#F580B1}} {{Cl|THEN}}
| |
| udtxnext(i) = i2
| |
| {{Cl|ELSE}}
| |
| udtenext(i2 - {{Text|1|#F580B1}}) = i2
| |
| {{Cl|END IF}}
| |
|
| |
| {{Text|<nowiki>'print "+"+rtrim$(udtename(i2));udtetype(i2);udtesize(i2);udtebytealign(i2);udtxsize(i)</nowiki>|#919191}}
| |
| {{Cl|IF}} newAsTypeBlockSyntax {{Cl|THEN}} {{Cl|RETURN}}
| |
| {{Cl|GOTO}} finishedlinepp
| |
| {{Cl|ELSE}}
| |
| {{Text|<nowiki>'new AS type variable-list syntax, multiple elements</nowiki>|#919191}}
| |
| ii = {{Text|2|#F580B1}}
| |
|
| |
| {{Cl|IF}} ii >= n {{Cl|THEN}} a$ = {{Text|<nowiki>"Expected element-name AS type, AS type element-list, or END TYPE"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
| |
| previousElement$ = {{Text|<nowiki>""</nowiki>|#FFB100}}
| |
| t$ = {{Text|<nowiki>""</nowiki>|#FFB100}}
| |
| lastElement$ = {{Text|<nowiki>""</nowiki>|#FFB100}}
| |
| buildTypeName:
| |
| lastElement$ = {{Text|getelement$|#55FF55}}(a$, ii)
| |
| {{Cl|IF}} lastElement$ <> {{Text|<nowiki>","</nowiki>|#FFB100}} {{Cl|AND (boolean)|AND}} lastElement$ <> {{Text|<nowiki>""</nowiki>|#FFB100}} {{Cl|THEN}}
| |
| n$ = lastElement$
| |
| cn$ = {{Text|getelement$|#55FF55}}(ca$, ii)
| |
| {{Cl|IF}} {{Cl|LEN}}(previousElement$) {{Cl|THEN}} t$ = t$ + previousElement$ + {{Text|<nowiki>" "</nowiki>|#FFB100}}
| |
| previousElement$ = n$
| |
| lastElement$ = {{Text|<nowiki>""</nowiki>|#FFB100}}
| |
| ii = ii + {{Text|1|#F580B1}}
| |
| {{Cl|GOTO}} buildTypeName
| |
| {{Cl|END IF}}
| |
|
| |
| t$ = {{Cl|RTRIM$}}(t$)
| |
| {{Cl|IF}} t$ = {{Cl|RTRIM$}}(udtxname(definingtype)) {{Cl|THEN}} a$ = {{Text|<nowiki>"Invalid self-reference"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
| |
| typ = {{Text|typname2typ|#55FF55}}(t$)
| |
| {{Cl|IF}} Error_Happened {{Cl|THEN}} {{Cl|GOTO}} errmes
| |
| {{Cl|IF}} typ = {{Text|0|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Undefined type"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
| |
| typsize = typname2typsize
| |
|
| |
| previousElement$ = lastElement$
| |
| nexttypeelement:
| |
| lasttypeelement = lasttypeelement + {{Text|1|#F580B1}}
| |
| i2 = lasttypeelement
| |
| {{Cl|WHILE}} i2 > {{Cl|UBOUND}}(udtenext): {{Text|increaseUDTArrays|#55FF55}}: {{Cl|WEND}}
| |
| udtenext(i2) = {{Text|0|#F580B1}}
| |
| udtearrayelements(i2) = {{Text|0|#F580B1}}
| |
|
| |
| udtename(i2) = n$
| |
| udtecname(i2) = cn$
| |
|
| |
| {{Cl|IF}} {{Text|validname|#55FF55}}(n$) = {{Text|0|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Invalid name"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
| |
|
| |
| newAsTypeBlockSyntax = {{Text|-1|#F580B1}}
| |
| {{Cl|GOSUB}} NormalTypeBlock
| |
| newAsTypeBlockSyntax = {{Text|0|#F580B1}}
| |
|
| |
| getNextElement:
| |
| ii = ii + {{Text|1|#F580B1}}
| |
| lastElement$ = {{Text|getelement$|#55FF55}}(a$, ii)
| |
| {{Cl|IF}} lastElement$ = {{Text|<nowiki>""</nowiki>|#FFB100}} {{Cl|THEN}} {{Cl|GOTO}} finishedlinepp
| |
| {{Cl|IF}} ii = n {{Cl|AND (boolean)|AND}} lastElement$ = {{Text|<nowiki>","</nowiki>|#FFB100}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Expected element-name"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
| |
| {{Cl|IF}} lastElement$ = {{Text|<nowiki>","</nowiki>|#FFB100}} {{Cl|THEN}}
| |
| {{Cl|IF}} previousElement$ = {{Text|<nowiki>","</nowiki>|#FFB100}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Expected element-name"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
| |
| previousElement$ = lastElement$
| |
| {{Cl|GOTO}} getNextElement
| |
| {{Cl|END IF}}
| |
| n$ = lastElement$
| |
| {{Cl|IF}} previousElement$ <> {{Text|<nowiki>","</nowiki>|#FFB100}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Expected ,"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
| |
| previousElement$ = lastElement$
| |
| cn$ = {{Text|getelement$|#55FF55}}(ca$, ii)
| |
| {{Cl|GOTO}} nexttypeelement
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}} {{Text|<nowiki>'definingtype</nowiki>|#919191}}
| |
|
| |
| {{Cl|IF}} definingtype {{Cl|AND (boolean)|AND}} n >= {{Text|1|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Expected END TYPE"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
| |
|
| |
| {{Cl|IF}} n >= {{Text|1|#F580B1}} {{Cl|THEN}}
| |
| {{Cl|IF}} firstelement$ = {{Text|<nowiki>"TYPE"</nowiki>|#FFB100}} {{Cl|THEN}}
| |
| {{Cl|IF}} n <> {{Text|2|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Expected TYPE typename"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
| |
| lasttype = lasttype + {{Text|1|#F580B1}}
| |
| typeDefinitions$ = typeDefinitions$ + {{Cl|MKL$}}({{Text|-1|#F580B1}}) + {{Cl|MKL$}}(lasttype)
| |
| definingtype = lasttype
| |
| i = definingtype
| |
| {{Cl|WHILE}} i > {{Cl|UBOUND}}(udtenext): {{Text|increaseUDTArrays|#55FF55}}: {{Cl|WEND}}
| |
| {{Cl|IF}} {{Text|validname|#55FF55}}(secondelement$) = {{Text|0|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Invalid name"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
| |
| typeDefinitions$ = typeDefinitions$ + {{Cl|MKL$}}({{Cl|LEN}}(secondelement$)) + secondelement$
| |
| udtxname(i) = secondelement$
| |
| udtxcname(i) = {{Text|getelement|#55FF55}}(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|<nowiki>'check for name conflicts (any similar reserved/sub/function/UDT name)</nowiki>|#919191}}
| |
| hashchkflags = HASHFLAG_RESERVED + HASHFLAG_SUB + HASHFLAG_FUNCTION + HASHFLAG_UDT
| |
| hashres = {{Text|HashFind|#55FF55}}(hashname$, hashchkflags, hashresflags, hashresref)
| |
| {{Cl|DO...LOOP|DO WHILE}} hashres
| |
| allow = {{Text|0|#F580B1}}
| |
| {{Cl|IF}} hashresflags {{Cl|AND (boolean)|AND}} (HASHFLAG_SUB + HASHFLAG_FUNCTION) {{Cl|THEN}}
| |
| allow = {{Text|1|#F580B1}}
| |
| {{Cl|END IF}}
| |
| {{Cl|IF}} hashresflags {{Cl|AND (boolean)|AND}} HASHFLAG_RESERVED {{Cl|THEN}}
| |
| {{Cl|IF}} (hashresflags {{Cl|AND (boolean)|AND}} (HASHFLAG_TYPE + HASHFLAG_OPERATOR + HASHFLAG_CUSTOMSYNTAX + HASHFLAG_XTYPENAME)) = {{Text|0|#F580B1}} {{Cl|THEN}} allow = {{Text|1|#F580B1}}
| |
| {{Cl|END IF}}
| |
| {{Cl|IF}} allow = {{Text|0|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Name already in use ("</nowiki>|#FFB100}} + hashname$ + {{Text|<nowiki>")"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
| |
| {{Cl|IF}} hashres <> {{Text|1|#F580B1}} {{Cl|THEN}} hashres = {{Text|HashFindCont|#55FF55}}(hashresflags, hashresref) {{Cl|ELSE}} hashres = {{Text|0|#F580B1}}
| |
| {{Cl|LOOP}}
| |
|
| |
| {{Text|<nowiki>'add to hash table</nowiki>|#919191}}
| |
| {{Text|HashAdd|#55FF55}} hashname$, hashflags, i
| |
|
| |
| {{Cl|GOTO}} finishedlinepp
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}}
| |
|
| |
|
| |
|
| |
|
| |
|
| |
| {{Cl|IF}} n >= {{Text|1|#F580B1}} {{Cl|AND (boolean)|AND}} firstelement$ = {{Text|<nowiki>"CONST"</nowiki>|#FFB100}} {{Cl|THEN}}
| |
| {{Text|<nowiki>'l$ = "CONST"</nowiki>|#919191}}
| |
| {{Text|<nowiki>'DEF... do not change type, the expression is stored in a suitable type</nowiki>|#919191}}
| |
| {{Text|<nowiki>'based on its value if type isn't forced/specified</nowiki>|#919191}}
| |
|
| |
| {{Cl|IF}} subfuncn > {{Text|0|#F580B1}} {{Cl|AND (boolean)|AND}} closedsubfunc <> {{Text|0|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Statement cannot be placed between SUB/FUNCTIONs"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
| |
|
| |
| {{Text|<nowiki>'convert periods to _046_</nowiki>|#919191}}
| |
| i2 = {{Cl|INSTR}}(a$, sp + {{Text|<nowiki>"."</nowiki>|#FFB100}} + sp)
| |
| {{Cl|IF}} i2 {{Cl|THEN}}
| |
| {{Cl|DO}}
| |
| a$ = {{Cl|LEFT$}}(a$, i2 - {{Text|1|#F580B1}}) + fix046$ + {{Cl|RIGHT$}}(a$, {{Cl|LEN}}(a$) - i2 - {{Text|2|#F580B1}})
| |
| ca$ = {{Cl|LEFT$}}(ca$, i2 - {{Text|1|#F580B1}}) + fix046$ + {{Cl|RIGHT$}}(ca$, {{Cl|LEN}}(ca$) - i2 - {{Text|2|#F580B1}})
| |
| i2 = {{Cl|INSTR}}(a$, sp + {{Text|<nowiki>"."</nowiki>|#FFB100}} + sp)
| |
| {{Cl|DO...LOOP|LOOP UNTIL}} i2 = {{Text|0|#F580B1}}
| |
| n = {{Text|numelements|#55FF55}}(a$)
| |
| firstelement$ = {{Text|getelement|#55FF55}}(a$, {{Text|1|#F580B1}}): secondelement$ = {{Text|getelement|#55FF55}}(a$, {{Text|2|#F580B1}}): thirdelement$ = {{Text|getelement|#55FF55}}(a$, {{Text|3|#F580B1}})
| |
| {{Cl|END IF}}
| |
|
| |
| {{Cl|IF}} n < {{Text|3|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Expected CONST name = value/expression"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
| |
| i = {{Text|2|#F580B1}}
| |
| constdefpendingpp:
| |
| pending = {{Text|0|#F580B1}}
| |
|
| |
| n$ = {{Text|getelement$|#55FF55}}(ca$, i): i = i + {{Text|1|#F580B1}}
| |
| typeoverride = {{Text|0|#F580B1}}
| |
| s$ = {{Text|removesymbol$|#55FF55}}(n$)
| |
| {{Cl|IF}} Error_Happened {{Cl|THEN}} {{Cl|GOTO}} errmes
| |
| {{Cl|IF}} s$ <> {{Text|<nowiki>""</nowiki>|#FFB100}} {{Cl|THEN}}
| |
| typeoverride = {{Text|typname2typ|#55FF55}}(s$)
| |
| {{Cl|IF}} Error_Happened {{Cl|THEN}} {{Cl|GOTO}} errmes
| |
| {{Cl|IF}} typeoverride {{Cl|AND (boolean)|AND}} ISFIXEDLENGTH {{Cl|THEN}} a$ = {{Text|<nowiki>"Invalid constant type"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
| |
| {{Cl|IF}} typeoverride = {{Text|0|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Invalid constant type"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
| |
| {{Cl|END IF}}
| |
|
| |
| {{Cl|IF}} {{Text|getelement$|#55FF55}}(a$, i) <> {{Text|<nowiki>"="</nowiki>|#FFB100}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Expected ="</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
| |
| i = i + {{Text|1|#F580B1}}
| |
|
| |
| {{Text|<nowiki>'get expression</nowiki>|#919191}}
| |
| e$ = {{Text|<nowiki>""</nowiki>|#FFB100}}
| |
| readable_e$ = {{Text|<nowiki>""</nowiki>|#FFB100}}
| |
| B = {{Text|0|#F580B1}}
| |
| {{Cl|FOR}} i2 = i {{Cl|TO}} n
| |
| e2$ = {{Text|getelement$|#55FF55}}(ca$, i2)
| |
| {{Cl|IF}} e2$ = {{Text|<nowiki>"("</nowiki>|#FFB100}} {{Cl|THEN}} B = B + {{Text|1|#F580B1}}
| |
| {{Cl|IF}} e2$ = {{Text|<nowiki>")"</nowiki>|#FFB100}} {{Cl|THEN}} B = B - {{Text|1|#F580B1}}
| |
| {{Cl|IF}} e2$ = {{Text|<nowiki>","</nowiki>|#FFB100}} {{Cl|AND (boolean)|AND}} B = {{Text|0|#F580B1}} {{Cl|THEN}}
| |
| pending = {{Text|1|#F580B1}}
| |
| i = i2 + {{Text|1|#F580B1}}
| |
| {{Cl|IF}} i > n - {{Text|2|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Expected CONST ... , name = value/expression"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
| |
| {{Cl|EXIT FOR}}
| |
| {{Cl|END IF}}
| |
| {{Cl|IF}} {{Cl|LEN}}(e$) = {{Text|0|#F580B1}} {{Cl|THEN}} e$ = e2$ {{Cl|ELSE}} e$ = e$ + sp + e2$
| |
|
| |
| e3$ = e2$
| |
| {{Cl|IF}} {{Cl|LEN}}(e2$) > {{Text|1|#F580B1}} {{Cl|THEN}}
| |
| {{Cl|IF}} {{Cl|ASC (function)|ASC}}(e2$, {{Text|1|#F580B1}}) = {{Text|34|#F580B1}} {{Cl|THEN}}
| |
| removeComma = {{Cl|_INSTRREV}}(e2$, {{Text|<nowiki>","</nowiki>|#FFB100}})
| |
| e3$ = {{Cl|LEFT$}}(e2$, removeComma - {{Text|1|#F580B1}})
| |
| {{Cl|ELSE}}
| |
| removeComma = {{Cl|INSTR}}(e2$, {{Text|<nowiki>","</nowiki>|#FFB100}})
| |
| e3$ = {{Cl|MID$ (function)|MID$}}(e2$, removeComma + {{Text|1|#F580B1}})
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}}
| |
|
| |
| {{Cl|IF}} {{Cl|LEN}}(readable_e$) = {{Text|0|#F580B1}} {{Cl|THEN}}
| |
| readable_e$ = e3$
| |
| {{Cl|ELSE}}
| |
| readable_e$ = readable_e$ + {{Text|<nowiki>" "</nowiki>|#FFB100}} + e3$
| |
| {{Cl|END IF}}
| |
| {{Cl|NEXT}}
| |
|
| |
| {{Text|<nowiki>'intercept current expression and pass it through Evaluate_Expression$</nowiki>|#919191}}
| |
| {{Text|<nowiki>'(unless it is a literal string)</nowiki>|#919191}}
| |
| {{Cl|IF}} {{Cl|LEFT$}}(readable_e$, {{Text|1|#F580B1}}) <> {{Cl|CHR$}}({{Text|34|#F580B1}}) {{Cl|THEN}}
| |
| temp1$ = {{Cl|_TRIM$}}({{Text|Evaluate_Expression$|#55FF55}}(readable_e$))
| |
| {{Cl|IF}} {{Cl|LEFT$}}(temp1$, {{Text|5|#F580B1}}) <> {{Text|<nowiki>"ERROR"</nowiki>|#FFB100}} {{Cl|AND (boolean)|AND}} e$ <> temp1$ {{Cl|THEN}}
| |
| e$ = {{Text|lineformat|#55FF55}}(temp1$) {{Text|<nowiki>'retrieve parseable format</nowiki>|#919191}}
| |
| {{Cl|ELSE}}
| |
| {{Cl|IF}} temp1$ = {{Text|<nowiki>"ERROR - Division By Zero"</nowiki>|#FFB100}} {{Cl|THEN}} a$ = temp1$: {{Cl|GOTO}} errmes
| |
| {{Cl|IF}} {{Cl|INSTR}}(temp1$, {{Text|<nowiki>"Improper operations"</nowiki>|#FFB100}}) {{Cl|THEN}}
| |
| a$ = {{Text|<nowiki>"Invalid CONST expression.14"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}}
| |
|
| |
| {{Text|<nowiki>'Proceed as usual</nowiki>|#919191}}
| |
| e$ = {{Text|fixoperationorder|#55FF55}}(e$)
| |
| {{Cl|IF}} Error_Happened {{Cl|THEN}} {{Cl|GOTO}} errmes
| |
|
| |
| e$ = {{Text|evaluateconst|#55FF55}}(e$, t)
| |
| {{Cl|IF}} Error_Happened {{Cl|THEN}} {{Cl|GOTO}} errmes
| |
|
| |
| {{Cl|IF}} t {{Cl|AND (boolean)|AND}} ISSTRING {{Cl|THEN}} {{Text|<nowiki>'string type</nowiki>|#919191}}
| |
|
| |
| {{Cl|IF}} typeoverride {{Cl|THEN}}
| |
| {{Cl|IF}} (typeoverride {{Cl|AND (boolean)|AND}} ISSTRING) = {{Text|0|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Type mismatch"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
| |
| {{Cl|END IF}}
| |
|
| |
| {{Cl|ELSE}} {{Text|<nowiki>'not a string type</nowiki>|#919191}}
| |
|
| |
| {{Cl|IF}} typeoverride {{Cl|THEN}}
| |
| {{Cl|IF}} typeoverride {{Cl|AND (boolean)|AND}} ISSTRING {{Cl|THEN}} a$ = {{Text|<nowiki>"Type mismatch"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
| |
| {{Cl|END IF}}
| |
|
| |
| {{Cl|IF}} t {{Cl|AND (boolean)|AND}} ISFLOAT {{Cl|THEN}}
| |
| constval## = {{Cl|_CV}}({{Cl|_FLOAT}}, e$)
| |
| constval&& = constval##
| |
| constval~&& = constval&&
| |
| {{Cl|ELSE}}
| |
| {{Cl|IF}} (t {{Cl|AND (boolean)|AND}} ISUNSIGNED) {{Cl|AND (boolean)|AND}} (t {{Cl|AND (boolean)|AND}} {{Text|511|#F580B1}}) = {{Text|64|#F580B1}} {{Cl|THEN}}
| |
| constval~&& = {{Cl|_CV}}({{Cl|_UNSIGNED}} {{Cl|_INTEGER64}}, e$)
| |
| constval&& = constval~&&
| |
| constval## = constval&&
| |
| {{Cl|ELSE}}
| |
| constval&& = {{Cl|_CV}}({{Cl|_INTEGER64}}, e$)
| |
| constval## = constval&&
| |
| constval~&& = constval&&
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}}
| |
|
| |
| {{Text|<nowiki>'override type?</nowiki>|#919191}}
| |
| {{Cl|IF}} typeoverride {{Cl|THEN}}
| |
| {{Text|<nowiki>'range check required here (noted in todo)</nowiki>|#919191}}
| |
| t = typeoverride
| |
| {{Cl|END IF}}
| |
|
| |
| {{Cl|END IF}} {{Text|<nowiki>'not a string type</nowiki>|#919191}}
| |
|
| |
| constlast = constlast + {{Text|1|#F580B1}}
| |
| {{Cl|IF}} constlast > constmax {{Cl|THEN}}
| |
| constmax = constmax * {{Text|2|#F580B1}}
| |
| {{Cl|REDIM}} {{Cl|_PRESERVE}} constname(constmax) {{Cl|AS}} {{Cl|STRING}}
| |
| {{Cl|REDIM}} {{Cl|_PRESERVE}} constcname(constmax) {{Cl|AS}} {{Cl|STRING}}
| |
| {{Cl|REDIM}} {{Cl|_PRESERVE}} constnamesymbol(constmax) {{Cl|AS}} {{Cl|STRING}} {{Text|<nowiki>'optional name symbol</nowiki>|#919191}}
| |
| {{Cl|REDIM}} {{Cl|_PRESERVE}} consttype(constmax) {{Cl|AS}} {{Cl|LONG}} {{Text|<nowiki>'variable type number</nowiki>|#919191}}
| |
| {{Cl|REDIM}} {{Cl|_PRESERVE}} constinteger(constmax) {{Cl|AS}} {{Cl|_INTEGER64}}
| |
| {{Cl|REDIM}} {{Cl|_PRESERVE}} constuinteger(constmax) {{Cl|AS}} {{Cl|_UNSIGNED}} {{Cl|_INTEGER64}}
| |
| {{Cl|REDIM}} {{Cl|_PRESERVE}} constfloat(constmax) {{Cl|AS}} {{Cl|_FLOAT}}
| |
| {{Cl|REDIM}} {{Cl|_PRESERVE}} conststring(constmax) {{Cl|AS}} {{Cl|STRING}}
| |
| {{Cl|REDIM}} {{Cl|_PRESERVE}} constsubfunc(constmax) {{Cl|AS}} {{Cl|LONG}}
| |
| {{Cl|REDIM}} {{Cl|_PRESERVE}} constdefined(constmax) {{Cl|AS}} {{Cl|LONG}}
| |
| {{Cl|END IF}}
| |
|
| |
| i2 = constlast
| |
|
| |
| constsubfunc(i2) = subfuncn
| |
| {{Text|<nowiki>'IF subfunc = "" THEN constlastshared = i2</nowiki>|#919191}}
| |
|
| |
| {{Cl|IF}} {{Text|validname|#55FF55}}(n$) = {{Text|0|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Invalid name"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
| |
| constname(i2) = {{Cl|UCASE$}}(n$)
| |
|
| |
| hashname$ = n$
| |
| {{Text|<nowiki>'check for name conflicts (any similar: reserved, sub, function, constant)</nowiki>|#919191}}
| |
|
| |
| allow = {{Text|0|#F580B1}}
| |
| const_recheck:
| |
| hashchkflags = HASHFLAG_RESERVED + HASHFLAG_SUB + HASHFLAG_FUNCTION + HASHFLAG_CONSTANT
| |
| hashres = {{Text|HashFind|#55FF55}}(hashname$, hashchkflags, hashresflags, hashresref)
| |
| {{Cl|DO...LOOP|DO WHILE}} hashres
| |
| {{Cl|IF}} hashresflags {{Cl|AND (boolean)|AND}} HASHFLAG_CONSTANT {{Cl|THEN}}
| |
| {{Cl|IF}} constsubfunc(hashresref) = subfuncn {{Cl|THEN}}
| |
| {{Text|<nowiki>'If merely redefining a CONST with same value</nowiki>|#919191}}
| |
| {{Text|<nowiki>'just issue a warning instead of an error</nowiki>|#919191}}
| |
| issueWarning = {{Text|0|#F580B1}}
| |
| {{Cl|IF}} t {{Cl|AND (boolean)|AND}} ISSTRING {{Cl|THEN}}
| |
| {{Cl|IF}} conststring(hashresref) = e$ {{Cl|THEN}} issueWarning = {{Text|-1|#F580B1}}: thisconstval$ = e$
| |
| {{Cl|ELSE}}
| |
| {{Cl|IF}} t {{Cl|AND (boolean)|AND}} ISFLOAT {{Cl|THEN}}
| |
| {{Cl|IF}} constfloat(hashresref) = constval## {{Cl|THEN}} issueWarning = {{Text|-1|#F580B1}}: thisconstval$ = {{Cl|STR$}}(constval##)
| |
| {{Cl|ELSE}}
| |
| {{Cl|IF}} t {{Cl|AND (boolean)|AND}} ISUNSIGNED {{Cl|THEN}}
| |
| {{Cl|IF}} constuinteger(hashresref) = constval~&& {{Cl|THEN}} issueWarning = {{Text|-1|#F580B1}}: thisconstval$ = {{Cl|STR$}}(constval~&&)
| |
| {{Cl|ELSE}}
| |
| {{Cl|IF}} constinteger(hashresref) = constval&& {{Cl|THEN}} issueWarning = {{Text|-1|#F580B1}}: thisconstval$ = {{Cl|STR$}}(constval&&)
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}}
| |
| {{Cl|IF}} issueWarning {{Cl|THEN}}
| |
| {{Cl|IF}} {{Cl|NOT}} IgnoreWarnings {{Cl|THEN}}
| |
| {{Text|addWarning|#55FF55}} linenumber, inclevel, inclinenumber(inclevel), incname$(inclevel), {{Text|<nowiki>"duplicate constant definition"</nowiki>|#FFB100}}, n$ + {{Text|<nowiki>" ="</nowiki>|#FFB100}} + thisconstval$
| |
| {{Cl|END IF}}
| |
| {{Cl|GOTO}} constAddDone
| |
| {{Cl|ELSE}}
| |
| a$ = {{Text|<nowiki>"Name already in use ("</nowiki>|#FFB100}} + hashname$ + {{Text|<nowiki>")"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}}
| |
| {{Cl|IF}} hashresflags {{Cl|AND (boolean)|AND}} HASHFLAG_RESERVED {{Cl|THEN}}
| |
| a$ = {{Text|<nowiki>"Name already in use ("</nowiki>|#FFB100}} + hashname$ + {{Text|<nowiki>")"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
| |
| {{Cl|END IF}}
| |
| {{Cl|IF}} hashresflags {{Cl|AND (boolean)|AND}} (HASHFLAG_SUB + HASHFLAG_FUNCTION) {{Cl|THEN}}
| |
| {{Cl|IF}} ids(hashresref).internal_subfunc = {{Text|0|#F580B1}} {{Cl|OR (boolean)|OR}} {{Cl|RTRIM$}}(ids(hashresref).musthave) <> {{Text|<nowiki>"$"</nowiki>|#FFB100}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Name already in use ("</nowiki>|#FFB100}} + hashname$ + {{Text|<nowiki>")"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
| |
| {{Cl|IF}} t {{Cl|AND (boolean)|AND}} ISSTRING {{Cl|THEN}} a$ = {{Text|<nowiki>"Name already in use ("</nowiki>|#FFB100}} + hashname$ + {{Text|<nowiki>")"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
| |
| {{Cl|END IF}}
| |
| {{Cl|IF}} hashres <> {{Text|1|#F580B1}} {{Cl|THEN}} hashres = {{Text|HashFindCont|#55FF55}}(hashresflags, hashresref) {{Cl|ELSE}} hashres = {{Text|0|#F580B1}}
| |
| {{Cl|LOOP}}
| |
|
| |
| {{Text|<nowiki>'add to hash table</nowiki>|#919191}}
| |
| {{Text|HashAdd|#55FF55}} hashname$, HASHFLAG_CONSTANT, i2
| |
|
| |
|
| |
|
| |
|
| |
|
| |
| constdefined(i2) = {{Text|1|#F580B1}}
| |
| constcname(i2) = n$
| |
| constnamesymbol(i2) = {{Text|typevalue2symbol$|#55FF55}}(t)
| |
| {{Cl|IF}} Error_Happened {{Cl|THEN}} {{Cl|GOTO}} errmes
| |
| consttype(i2) = t
| |
| {{Cl|IF}} t {{Cl|AND (boolean)|AND}} ISSTRING {{Cl|THEN}}
| |
| conststring(i2) = e$
| |
| {{Cl|ELSE}}
| |
| {{Cl|IF}} t {{Cl|AND (boolean)|AND}} ISFLOAT {{Cl|THEN}}
| |
| constfloat(i2) = constval##
| |
| {{Cl|ELSE}}
| |
| {{Cl|IF}} t {{Cl|AND (boolean)|AND}} ISUNSIGNED {{Cl|THEN}}
| |
| constuinteger(i2) = constval~&&
| |
| {{Cl|ELSE}}
| |
| constinteger(i2) = constval&&
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}}
| |
|
| |
| constAddDone:
| |
|
| |
| {{Cl|IF}} pending {{Cl|THEN}}
| |
| {{Text|<nowiki>'l$ = l$ + sp2 + ","</nowiki>|#919191}}
| |
| {{Cl|GOTO}} constdefpendingpp
| |
| {{Cl|END IF}}
| |
|
| |
| {{Text|<nowiki>'layoutdone = 1: IF LEN(layout$) THEN layout$ = layout$ + sp + l$ ELSE layout$ = l$</nowiki>|#919191}}
| |
| {{Cl|GOTO}} finishedlinepp
| |
| {{Cl|END IF}}
| |
|
| |
|
| |
|
| |
| {{Text|<nowiki>'DEFINE</nowiki>|#919191}}
| |
| d = {{Text|0|#F580B1}}
| |
| {{Cl|IF}} firstelement$ = {{Text|<nowiki>"DEFINT"</nowiki>|#FFB100}} {{Cl|THEN}} d = {{Text|1|#F580B1}}
| |
| {{Cl|IF}} firstelement$ = {{Text|<nowiki>"DEFLNG"</nowiki>|#FFB100}} {{Cl|THEN}} d = {{Text|1|#F580B1}}
| |
| {{Cl|IF}} firstelement$ = {{Text|<nowiki>"DEFSNG"</nowiki>|#FFB100}} {{Cl|THEN}} d = {{Text|1|#F580B1}}
| |
| {{Cl|IF}} firstelement$ = {{Text|<nowiki>"DEFDBL"</nowiki>|#FFB100}} {{Cl|THEN}} d = {{Text|1|#F580B1}}
| |
| {{Cl|IF}} firstelement$ = {{Text|<nowiki>"DEFSTR"</nowiki>|#FFB100}} {{Cl|THEN}} d = {{Text|1|#F580B1}}
| |
| {{Cl|IF}} firstelement$ = {{Text|<nowiki>"_DEFINE"</nowiki>|#FFB100}} {{Cl|OR (boolean)|OR}} (firstelement$ = {{Text|<nowiki>"DEFINE"</nowiki>|#FFB100}} {{Cl|AND (boolean)|AND}} qb64prefix_set = {{Text|1|#F580B1}}) {{Cl|THEN}} d = {{Text|1|#F580B1}}
| |
| {{Cl|IF}} d {{Cl|THEN}}
| |
| predefining = {{Text|1|#F580B1}}: {{Cl|GOTO}} predefine
| |
| predefined: predefining = {{Text|0|#F580B1}}
| |
| {{Cl|GOTO}} finishedlinepp
| |
| {{Cl|END IF}}
| |
|
| |
| {{Text|<nowiki>'declare library</nowiki>|#919191}}
| |
| {{Cl|IF}} firstelement$ = {{Text|<nowiki>"DECLARE"</nowiki>|#FFB100}} {{Cl|THEN}}
| |
| {{Cl|IF}} secondelement$ = {{Text|<nowiki>"LIBRARY"</nowiki>|#FFB100}} {{Cl|OR (boolean)|OR}} secondelement$ = {{Text|<nowiki>"DYNAMIC"</nowiki>|#FFB100}} {{Cl|OR (boolean)|OR}} secondelement$ = {{Text|<nowiki>"CUSTOMTYPE"</nowiki>|#FFB100}} {{Cl|OR (boolean)|OR}} secondelement$ = {{Text|<nowiki>"STATIC"</nowiki>|#FFB100}} {{Cl|THEN}}
| |
| declaringlibrary = {{Text|1|#F580B1}}
| |
| indirectlibrary = {{Text|0|#F580B1}}
| |
| {{Cl|IF}} secondelement$ = {{Text|<nowiki>"CUSTOMTYPE"</nowiki>|#FFB100}} {{Cl|OR (boolean)|OR}} secondelement$ = {{Text|<nowiki>"DYNAMIC"</nowiki>|#FFB100}} {{Cl|THEN}} indirectlibrary = {{Text|1|#F580B1}}
| |
| {{Cl|GOTO}} finishedlinepp
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}}
| |
|
| |
| {{Text|<nowiki>'SUB/FUNCTION</nowiki>|#919191}}
| |
| dynamiclibrary = {{Text|0|#F580B1}}
| |
| declaresubfunc:
| |
| firstelement$ = {{Text|getelement$|#55FF55}}(a$, {{Text|1|#F580B1}})
| |
| sf = {{Text|0|#F580B1}}
| |
| {{Cl|IF}} firstelement$ = {{Text|<nowiki>"FUNCTION"</nowiki>|#FFB100}} {{Cl|THEN}} sf = {{Text|1|#F580B1}}
| |
| {{Cl|IF}} firstelement$ = {{Text|<nowiki>"SUB"</nowiki>|#FFB100}} {{Cl|THEN}} sf = {{Text|2|#F580B1}}
| |
| {{Cl|IF}} sf {{Cl|THEN}}
| |
|
| |
| subfuncn = subfuncn + {{Text|1|#F580B1}}
| |
| closedsubfunc = {{Text|0|#F580B1}}
| |
|
| |
| {{Cl|IF}} n = {{Text|1|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Expected name after SUB/FUNCTION"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
| |
|
| |
| {{Text|<nowiki>'convert periods to _046_</nowiki>|#919191}}
| |
| i2 = {{Cl|INSTR}}(a$, sp + {{Text|<nowiki>"."</nowiki>|#FFB100}} + sp)
| |
| {{Cl|IF}} i2 {{Cl|THEN}}
| |
| {{Cl|DO}}
| |
| a$ = {{Cl|LEFT$}}(a$, i2 - {{Text|1|#F580B1}}) + fix046$ + {{Cl|RIGHT$}}(a$, {{Cl|LEN}}(a$) - i2 - {{Text|2|#F580B1}})
| |
| ca$ = {{Cl|LEFT$}}(ca$, i2 - {{Text|1|#F580B1}}) + fix046$ + {{Cl|RIGHT$}}(ca$, {{Cl|LEN}}(ca$) - i2 - {{Text|2|#F580B1}})
| |
| i2 = {{Cl|INSTR}}(a$, sp + {{Text|<nowiki>"."</nowiki>|#FFB100}} + sp)
| |
| {{Cl|DO...LOOP|LOOP UNTIL}} i2 = {{Text|0|#F580B1}}
| |
| n = {{Text|numelements|#55FF55}}(a$)
| |
| firstelement$ = {{Text|getelement|#55FF55}}(a$, {{Text|1|#F580B1}}): secondelement$ = {{Text|getelement|#55FF55}}(a$, {{Text|2|#F580B1}}): thirdelement$ = {{Text|getelement|#55FF55}}(a$, {{Text|3|#F580B1}})
| |
| {{Cl|END IF}}
| |
|
| |
| n$ = {{Text|getelement$|#55FF55}}(ca$, {{Text|2|#F580B1}})
| |
| symbol$ = {{Text|removesymbol$|#55FF55}}(n$)
| |
| {{Cl|IF}} Error_Happened {{Cl|THEN}} {{Cl|GOTO}} errmes
| |
| {{Cl|IF}} sf = {{Text|2|#F580B1}} {{Cl|AND (boolean)|AND}} symbol$ <> {{Text|<nowiki>""</nowiki>|#FFB100}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Type symbols after a SUB name are invalid"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
| |
|
| |
| {{Text|<nowiki>'remove STATIC (which is ignored)</nowiki>|#919191}}
| |
| e$ = {{Text|getelement$|#55FF55}}(a$, n): {{Cl|IF}} e$ = {{Text|<nowiki>"STATIC"</nowiki>|#FFB100}} {{Cl|THEN}} a$ = {{Cl|LEFT$}}(a$, {{Cl|LEN}}(a$) - {{Text|7|#F580B1}}): ca$ = {{Cl|LEFT$}}(ca$, {{Cl|LEN}}(ca$) - {{Text|7|#F580B1}}): n = n - {{Text|1|#F580B1}}
| |
|
| |
| {{Text|<nowiki>'check for ALIAS</nowiki>|#919191}}
| |
| aliasname$ = n$ {{Text|<nowiki>'use given name by default</nowiki>|#919191}}
| |
| {{Cl|IF}} n > {{Text|2|#F580B1}} {{Cl|THEN}}
| |
| e$ = {{Text|getelement$|#55FF55}}(a$, {{Text|3|#F580B1}})
| |
| {{Cl|IF}} e$ = {{Text|<nowiki>"ALIAS"</nowiki>|#FFB100}} {{Cl|THEN}}
| |
| {{Cl|IF}} declaringlibrary = {{Text|0|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"ALIAS can only be used with DECLARE LIBRARY"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
| |
| {{Cl|IF}} n = {{Text|3|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Expected ALIAS name-in-library"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
| |
| e$ = {{Text|getelement$|#55FF55}}(ca$, {{Text|4|#F580B1}})
| |
| {{Text|<nowiki>'strip string content (optional)</nowiki>|#919191}}
| |
| {{Cl|IF}} {{Cl|LEFT$}}(e$, {{Text|1|#F580B1}}) = {{Cl|CHR$}}({{Text|34|#F580B1}}) {{Cl|THEN}}
| |
| e$ = {{Cl|RIGHT$}}(e$, {{Cl|LEN}}(e$) - {{Text|1|#F580B1}})
| |
| x = {{Cl|INSTR}}(e$, {{Cl|CHR$}}({{Text|34|#F580B1}})): {{Cl|IF}} x = {{Text|0|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Expected "</nowiki>|#FFB100}} + {{Cl|CHR$}}({{Text|34|#F580B1}}): {{Cl|GOTO}} errmes
| |
| e$ = {{Cl|LEFT$}}(e$, x - {{Text|1|#F580B1}})
| |
| {{Cl|END IF}}
| |
| {{Text|<nowiki>'strip fix046$ (created by unquoted periods)</nowiki>|#919191}}
| |
| {{Cl|DO...LOOP|DO WHILE}} {{Cl|INSTR}}(e$, fix046$)
| |
| x = {{Cl|INSTR}}(e$, fix046$): e$ = {{Cl|LEFT$}}(e$, x - {{Text|1|#F580B1}}) + {{Text|<nowiki>"."</nowiki>|#FFB100}} + {{Cl|RIGHT$}}(e$, {{Cl|LEN}}(e$) - x + {{Text|1|#F580B1}} - {{Cl|LEN}}(fix046$))
| |
| {{Cl|LOOP}}
| |
| {{Text|<nowiki>'validate alias name</nowiki>|#919191}}
| |
| {{Cl|IF}} {{Cl|LEN}}(e$) = {{Text|0|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Expected ALIAS name-in-library"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
| |
| {{Cl|FOR}} x = {{Text|1|#F580B1}} {{Cl|TO}} {{Cl|LEN}}(e$)
| |
| a = {{Cl|ASC (function)|ASC}}(e$, x)
| |
| {{Cl|IF}} alphanumeric(a) = {{Text|0|#F580B1}} {{Cl|AND (boolean)|AND}} a <> ASC_FULLSTOP {{Cl|AND (boolean)|AND}} a <> ASC_COLON {{Cl|THEN}} a$ = {{Text|<nowiki>"Expected ALIAS name-in-library"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
| |
| {{Cl|NEXT}}
| |
| aliasname$ = e$
| |
| {{Text|<nowiki>'remove ALIAS section from line</nowiki>|#919191}}
| |
| {{Cl|IF}} n <= {{Text|4|#F580B1}} {{Cl|THEN}} a$ = {{Text|getelements|#55FF55}}(a$, {{Text|1|#F580B1}}, {{Text|2|#F580B1}})
| |
| {{Cl|IF}} n >= {{Text|5|#F580B1}} {{Cl|THEN}} a$ = {{Text|getelements|#55FF55}}(a$, {{Text|1|#F580B1}}, {{Text|2|#F580B1}}) + sp + {{Text|getelements|#55FF55}}(a$, {{Text|5|#F580B1}}, n)
| |
| {{Cl|IF}} n <= {{Text|4|#F580B1}} {{Cl|THEN}} ca$ = {{Text|getelements|#55FF55}}(ca$, {{Text|1|#F580B1}}, {{Text|2|#F580B1}})
| |
| {{Cl|IF}} n >= {{Text|5|#F580B1}} {{Cl|THEN}} ca$ = {{Text|getelements|#55FF55}}(ca$, {{Text|1|#F580B1}}, {{Text|2|#F580B1}}) + sp + {{Text|getelements|#55FF55}}(ca$, {{Text|5|#F580B1}}, n)
| |
| n = n - {{Text|2|#F580B1}}
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}}
| |
|
| |
| {{Cl|IF}} declaringlibrary {{Cl|THEN}}
| |
| {{Cl|IF}} indirectlibrary {{Cl|THEN}}
| |
| aliasname$ = n$ {{Text|<nowiki>'override the alias name</nowiki>|#919191}}
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}}
| |
|
| |
| params = {{Text|0|#F580B1}}
| |
| params$ = {{Text|<nowiki>""</nowiki>|#FFB100}}
| |
| paramsize$ = {{Text|<nowiki>""</nowiki>|#FFB100}}
| |
| nele$ = {{Text|<nowiki>""</nowiki>|#FFB100}}
| |
| nelereq$ = {{Text|<nowiki>""</nowiki>|#FFB100}}
| |
| {{Cl|IF}} n > {{Text|2|#F580B1}} {{Cl|THEN}}
| |
| e$ = {{Text|getelement$|#55FF55}}(a$, {{Text|3|#F580B1}})
| |
| {{Cl|IF}} e$ <> {{Text|<nowiki>"("</nowiki>|#FFB100}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Expected ("</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
| |
| e$ = {{Text|getelement$|#55FF55}}(a$, n)
| |
| {{Cl|IF}} e$ <> {{Text|<nowiki>")"</nowiki>|#FFB100}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Expected )"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
| |
| {{Cl|IF}} n < {{Text|4|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Expected ( ... )"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
| |
| {{Cl|IF}} n = {{Text|4|#F580B1}} {{Cl|THEN}} {{Cl|GOTO}} nosfparams
| |
| B = {{Text|0|#F580B1}}
| |
| a2$ = {{Text|<nowiki>""</nowiki>|#FFB100}}
| |
| {{Cl|FOR}} i = {{Text|4|#F580B1}} {{Cl|TO}} n - {{Text|1|#F580B1}}
| |
| e$ = {{Text|getelement$|#55FF55}}(a$, i)
| |
| {{Cl|IF}} e$ = {{Text|<nowiki>"("</nowiki>|#FFB100}} {{Cl|THEN}} B = B + {{Text|1|#F580B1}}
| |
| {{Cl|IF}} e$ = {{Text|<nowiki>")"</nowiki>|#FFB100}} {{Cl|THEN}} B = B - {{Text|1|#F580B1}}
| |
| {{Cl|IF}} e$ = {{Text|<nowiki>","</nowiki>|#FFB100}} {{Cl|AND (boolean)|AND}} B = {{Text|0|#F580B1}} {{Cl|THEN}}
| |
| {{Cl|IF}} i = n - {{Text|1|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Expected , ... )"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
| |
| getlastparam:
| |
| {{Cl|IF}} a2$ = {{Text|<nowiki>""</nowiki>|#FFB100}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Expected ... ,"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
| |
| a2$ = {{Cl|LEFT$}}(a2$, {{Cl|LEN}}(a2$) - {{Text|1|#F580B1}})
| |
| {{Text|<nowiki>'possible format: [BYVAL]a[%][(1)][AS][type]</nowiki>|#919191}}
| |
| n2 = {{Text|numelements|#55FF55}}(a2$)
| |
| array = {{Text|0|#F580B1}}
| |
| t2$ = {{Text|<nowiki>""</nowiki>|#FFB100}}
| |
|
| |
| i2 = {{Text|1|#F580B1}}
| |
| e$ = {{Text|getelement$|#55FF55}}(a2$, i2): i2 = i2 + {{Text|1|#F580B1}}
| |
|
| |
| byvalue = {{Text|0|#F580B1}}
| |
| {{Cl|IF}} e$ = {{Text|<nowiki>"BYVAL"</nowiki>|#FFB100}} {{Cl|THEN}}
| |
| {{Cl|IF}} declaringlibrary = {{Text|0|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"BYVAL can currently only be used with DECLARE LIBRARY"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
| |
| e$ = {{Text|getelement$|#55FF55}}(a2$, i2): i2 = i2 + {{Text|1|#F580B1}}: byvalue = {{Text|1|#F580B1}}
| |
| {{Cl|END IF}}
| |
|
| |
| n2$ = e$
| |
| symbol2$ = {{Text|removesymbol$|#55FF55}}(n2$)
| |
| {{Cl|IF}} {{Text|validname|#55FF55}}(n2$) = {{Text|0|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Invalid name"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
| |
|
| |
| {{Cl|IF}} Error_Happened {{Cl|THEN}} {{Cl|GOTO}} errmes
| |
| m = {{Text|0|#F580B1}}
| |
| {{Cl|FOR}} i2 = i2 {{Cl|TO}} n2
| |
| e$ = {{Text|getelement$|#55FF55}}(a2$, i2)
| |
| {{Cl|IF}} e$ = {{Text|<nowiki>"("</nowiki>|#FFB100}} {{Cl|THEN}}
| |
| {{Cl|IF}} m <> {{Text|0|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Syntax error - too many opening brackets"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
| |
| m = {{Text|1|#F580B1}}
| |
| array = {{Text|1|#F580B1}}
| |
| {{Cl|GOTO}} gotaa
| |
| {{Cl|END IF}}
| |
| {{Cl|IF}} e$ = {{Text|<nowiki>")"</nowiki>|#FFB100}} {{Cl|THEN}}
| |
| {{Cl|IF}} m <> {{Text|1|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Syntax error - closing bracket without opening bracket"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
| |
| m = {{Text|2|#F580B1}}
| |
| {{Cl|GOTO}} gotaa
| |
| {{Cl|END IF}}
| |
| {{Cl|IF}} e$ = {{Text|<nowiki>"AS"</nowiki>|#FFB100}} {{Cl|THEN}}
| |
| {{Cl|IF}} m <> {{Text|0|#F580B1}} {{Cl|AND (boolean)|AND}} m <> {{Text|2|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Syntax error - check your brackets"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
| |
| m = {{Text|3|#F580B1}}
| |
| {{Cl|GOTO}} gotaa
| |
| {{Cl|END IF}}
| |
| {{Cl|IF}} m = {{Text|1|#F580B1}} {{Cl|THEN}} {{Cl|GOTO}} gotaa {{Text|<nowiki>'ignore contents of bracket</nowiki>|#919191}}
| |
| {{Cl|IF}} m <> {{Text|3|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Syntax error - check your brackets"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
| |
| {{Cl|IF}} t2$ = {{Text|<nowiki>""</nowiki>|#FFB100}} {{Cl|THEN}} t2$ = e$ {{Cl|ELSE}} t2$ = t2$ + {{Text|<nowiki>" "</nowiki>|#FFB100}} + e$
| |
| gotaa:
| |
| {{Cl|NEXT}} i2
| |
|
| |
| params = params + {{Text|1|#F580B1}}: {{Cl|IF}} params > {{Text|100|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"SUB/FUNCTION exceeds 100 parameter limit"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
| |
|
| |
| argnelereq = {{Text|0|#F580B1}}
| |
|
| |
| {{Cl|IF}} symbol2$ <> {{Text|<nowiki>""</nowiki>|#FFB100}} {{Cl|AND (boolean)|AND}} t2$ <> {{Text|<nowiki>""</nowiki>|#FFB100}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Syntax error - check parameter types"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
| |
| {{Cl|IF}} t2$ = {{Text|<nowiki>""</nowiki>|#FFB100}} {{Cl|AND (boolean)|AND}} e$ = {{Text|<nowiki>"AS"</nowiki>|#FFB100}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Expected AS type"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
| |
| {{Cl|IF}} t2$ = {{Text|<nowiki>""</nowiki>|#FFB100}} {{Cl|THEN}} t2$ = symbol2$
| |
| {{Cl|IF}} t2$ = {{Text|<nowiki>""</nowiki>|#FFB100}} {{Cl|THEN}}
| |
| {{Cl|IF}} {{Cl|LEFT$}}(n2$, {{Text|1|#F580B1}}) = {{Text|<nowiki>"_"</nowiki>|#FFB100}} {{Cl|THEN}} v = {{Text|27|#F580B1}} {{Cl|ELSE}} v = {{Cl|ASC (function)|ASC}}({{Cl|UCASE$}}(n2$)) - {{Text|64|#F580B1}}
| |
| t2$ = defineaz(v)
| |
| {{Cl|END IF}}
| |
|
| |
| paramsize = {{Text|0|#F580B1}}
| |
| {{Cl|IF}} array = {{Text|1|#F580B1}} {{Cl|THEN}}
| |
| t = {{Text|typname2typ|#55FF55}}(t2$)
| |
| {{Cl|IF}} Error_Happened {{Cl|THEN}} {{Cl|GOTO}} errmes
| |
| {{Cl|IF}} t = {{Text|0|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Illegal SUB/FUNCTION parameter"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
| |
| {{Cl|IF}} (t {{Cl|AND (boolean)|AND}} ISFIXEDLENGTH) {{Cl|THEN}} paramsize = typname2typsize
| |
| t = t + ISARRAY
| |
| {{Text|<nowiki>'check for recompilation override</nowiki>|#919191}}
| |
| {{Cl|FOR}} i10 = {{Text|0|#F580B1}} {{Cl|TO}} sflistn
| |
| {{Cl|IF}} sfidlist(i10) = idn + {{Text|1|#F580B1}} {{Cl|THEN}}
| |
| {{Cl|IF}} sfarglist(i10) = params {{Cl|THEN}}
| |
| argnelereq = sfelelist(i10)
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}}
| |
| {{Cl|NEXT}}
| |
| {{Cl|ELSE}}
| |
| t = {{Text|typname2typ|#55FF55}}(t2$)
| |
| {{Cl|IF}} Error_Happened {{Cl|THEN}} {{Cl|GOTO}} errmes
| |
| {{Cl|IF}} t = {{Text|0|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Illegal SUB/FUNCTION parameter"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
| |
| {{Cl|IF}} (t {{Cl|AND (boolean)|AND}} ISFIXEDLENGTH) {{Cl|THEN}} paramsize = typname2typsize
| |
|
| |
| {{Cl|IF}} byvalue {{Cl|THEN}}
| |
| {{Cl|IF}} t {{Cl|AND (boolean)|AND}} ISPOINTER {{Cl|THEN}} t = t - ISPOINTER
| |
| {{Cl|END IF}}
| |
|
| |
| {{Cl|END IF}}
| |
| nelereq$ = nelereq$ + {{Cl|CHR$}}(argnelereq)
| |
|
| |
| {{Text|<nowiki>'consider changing 0 in following line too!</nowiki>|#919191}}
| |
| nele$ = nele$ + {{Cl|CHR$}}({{Text|0|#F580B1}})
| |
|
| |
| paramsize$ = paramsize$ + {{Cl|MKL$}}(paramsize)
| |
| params$ = params$ + {{Cl|MKL$}}(t)
| |
| a2$ = {{Text|<nowiki>""</nowiki>|#FFB100}}
| |
| {{Cl|ELSE}}
| |
| a2$ = a2$ + e$ + sp
| |
| {{Cl|IF}} i = n - {{Text|1|#F580B1}} {{Cl|THEN}} {{Cl|GOTO}} getlastparam
| |
| {{Cl|END IF}}
| |
| {{Cl|NEXT}} i
| |
| {{Cl|END IF}} {{Text|<nowiki>'n>2</nowiki>|#919191}}
| |
| nosfparams:
| |
|
| |
| {{Cl|IF}} sf = {{Text|1|#F580B1}} {{Cl|THEN}}
| |
| {{Text|<nowiki>'function</nowiki>|#919191}}
| |
| {{Text|clearid|#55FF55}}
| |
| id.n = n$
| |
| id.subfunc = {{Text|1|#F580B1}}
| |
|
| |
| id.callname = {{Text|<nowiki>"FUNC_"</nowiki>|#FFB100}} + {{Cl|UCASE$}}(n$)
| |
| {{Cl|IF}} declaringlibrary {{Cl|THEN}}
| |
| id.ccall = {{Text|1|#F580B1}}
| |
| {{Cl|IF}} indirectlibrary = {{Text|0|#F580B1}} {{Cl|THEN}} id.callname = aliasname$
| |
| {{Cl|END IF}}
| |
| id.args = params
| |
| id.arg = params$
| |
| id.argsize = paramsize$
| |
| id.nele = nele$
| |
| id.nelereq = nelereq$
| |
| {{Cl|IF}} symbol$ <> {{Text|<nowiki>""</nowiki>|#FFB100}} {{Cl|THEN}}
| |
| id.ret = {{Text|typname2typ|#55FF55}}(symbol$)
| |
| {{Cl|IF}} Error_Happened {{Cl|THEN}} {{Cl|GOTO}} errmes
| |
| {{Cl|ELSE}}
| |
| {{Cl|IF}} {{Cl|LEFT$}}(n$, {{Text|1|#F580B1}}) = {{Text|<nowiki>"_"</nowiki>|#FFB100}} {{Cl|THEN}} v = {{Text|27|#F580B1}} {{Cl|ELSE}} v = {{Cl|ASC (function)|ASC}}({{Cl|UCASE$}}(n$)) - {{Text|64|#F580B1}}
| |
| symbol$ = defineaz(v)
| |
| id.ret = {{Text|typname2typ|#55FF55}}(symbol$)
| |
| {{Cl|IF}} Error_Happened {{Cl|THEN}} {{Cl|GOTO}} errmes
| |
| {{Cl|END IF}}
| |
| {{Cl|IF}} id.ret = {{Text|0|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Invalid FUNCTION return type"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
| |
|
| |
| {{Cl|IF}} declaringlibrary {{Cl|THEN}}
| |
|
| |
| ctype$ = {{Text|typ2ctyp$|#55FF55}}(id.ret, {{Text|<nowiki>""</nowiki>|#FFB100}})
| |
| {{Cl|IF}} Error_Happened {{Cl|THEN}} {{Cl|GOTO}} errmes
| |
| {{Cl|IF}} ctype$ = {{Text|<nowiki>"qbs"</nowiki>|#FFB100}} {{Cl|THEN}} ctype$ = {{Text|<nowiki>"char*"</nowiki>|#FFB100}}
| |
| id.callname = {{Text|<nowiki>"( "</nowiki>|#FFB100}} + ctype$ + {{Text|<nowiki>" )"</nowiki>|#FFB100}} + {{Cl|RTRIM$}}(id.callname)
| |
|
| |
| {{Cl|END IF}}
| |
|
| |
| s$ = {{Cl|LEFT$}}(symbol$, {{Text|1|#F580B1}})
| |
| {{Cl|IF}} s$ <> {{Text|<nowiki>"~"</nowiki>|#FFB100}} {{Cl|AND (boolean)|AND}} s$ <> {{Text|<nowiki>"`"</nowiki>|#FFB100}} {{Cl|AND (boolean)|AND}} s$ <> {{Text|<nowiki>"%"</nowiki>|#FFB100}} {{Cl|AND (boolean)|AND}} s$ <> {{Text|<nowiki>"&"</nowiki>|#FFB100}} {{Cl|AND (boolean)|AND}} s$ <> {{Text|<nowiki>"!"</nowiki>|#FFB100}} {{Cl|AND (boolean)|AND}} s$ <> {{Text|<nowiki>"#"</nowiki>|#FFB100}} {{Cl|AND (boolean)|AND}} s$ <> {{Text|<nowiki>"$"</nowiki>|#FFB100}} {{Cl|THEN}}
| |
| symbol$ = {{Text|type2symbol$|#55FF55}}(symbol$)
| |
| {{Cl|IF}} Error_Happened {{Cl|THEN}} {{Cl|GOTO}} errmes
| |
| {{Cl|END IF}}
| |
| id.mayhave = symbol$
| |
| {{Cl|IF}} id.ret {{Cl|AND (boolean)|AND}} ISPOINTER {{Cl|THEN}}
| |
| {{Cl|IF}} (id.ret {{Cl|AND (boolean)|AND}} ISSTRING) = {{Text|0|#F580B1}} {{Cl|THEN}} id.ret = id.ret - ISPOINTER
| |
| {{Cl|END IF}}
| |
| {{Text|regid|#55FF55}}
| |
| {{Cl|IF}} Error_Happened {{Cl|THEN}} {{Cl|GOTO}} errmes
| |
| {{Cl|ELSE}}
| |
| {{Text|<nowiki>'sub</nowiki>|#919191}}
| |
| {{Text|clearid|#55FF55}}
| |
| id.n = n$
| |
| id.subfunc = {{Text|2|#F580B1}}
| |
| id.callname = {{Text|<nowiki>"SUB_"</nowiki>|#FFB100}} + {{Cl|UCASE$}}(n$)
| |
| {{Cl|IF}} declaringlibrary {{Cl|THEN}}
| |
| id.ccall = {{Text|1|#F580B1}}
| |
| {{Cl|IF}} indirectlibrary = {{Text|0|#F580B1}} {{Cl|THEN}} id.callname = aliasname$
| |
| {{Cl|END IF}}
| |
| id.args = params
| |
| id.arg = params$
| |
| id.argsize = paramsize$
| |
| id.nele = nele$
| |
| id.nelereq = nelereq$
| |
|
| |
| {{Cl|IF}} {{Cl|UCASE$}}(n$) = {{Text|<nowiki>"_GL"</nowiki>|#FFB100}} {{Cl|AND (boolean)|AND}} params = {{Text|0|#F580B1}} {{Cl|AND (boolean)|AND}} UseGL = {{Text|0|#F580B1}} {{Cl|THEN}} reginternalsubfunc = {{Text|1|#F580B1}}: UseGL = {{Text|1|#F580B1}}: id.n = {{Text|<nowiki>"_GL"</nowiki>|#FFB100}}: DEPENDENCY(DEPENDENCY_GL) = {{Text|1|#F580B1}}
| |
| {{Text|regid|#55FF55}}
| |
| reginternalsubfunc = {{Text|0|#F580B1}}
| |
|
| |
| {{Cl|IF}} Error_Happened {{Cl|THEN}} {{Cl|GOTO}} errmes
| |
| {{Cl|END IF}}
| |
|
| |
|
| |
| {{Cl|END IF}}
| |
|
| |
| {{Text|<nowiki>'========================================</nowiki>|#919191}}
| |
| finishedlinepp:
| |
| firstLine = {{Text|0|#F580B1}}
| |
| {{Cl|END IF}}
| |
| a$ = {{Text|<nowiki>""</nowiki>|#FFB100}}
| |
| ca$ = {{Text|<nowiki>""</nowiki>|#FFB100}}
| |
| {{Cl|ELSE}}
| |
| {{Cl|IF}} a$ = {{Text|<nowiki>""</nowiki>|#FFB100}} {{Cl|THEN}} a$ = e$: ca$ = ce$ {{Cl|ELSE}} a$ = a$ + sp + e$: ca$ = ca$ + sp + ce$
| |
| {{Cl|END IF}}
| |
| {{Cl|IF}} wholelinei <= wholelinen {{Cl|THEN}} wholelinei = wholelinei + {{Text|1|#F580B1}}: {{Cl|GOTO}} ppblda
| |
| {{Text|<nowiki>'----------------------------------------</nowiki>|#919191}}
| |
| {{Cl|END IF}} {{Text|<nowiki>'wholelinei<=wholelinen</nowiki>|#919191}}
| |
| {{Cl|END IF}} {{Text|<nowiki>'wholelinen</nowiki>|#919191}}
| |
| {{Cl|END IF}} {{Text|<nowiki>'len(wholeline$)</nowiki>|#919191}}
| |
|
| |
| {{Text|<nowiki>'Include Manager #1</nowiki>|#919191}}
| |
|
| |
|
| |
|
| |
| {{Cl|IF}} {{Cl|LEN}}(addmetainclude$) {{Cl|THEN}}
| |
| {{Cl|IF}} Debug {{Cl|THEN}} {{Cl|PRINT (file statement)|PRINT}} #9, {{Text|<nowiki>"Pre-pass:INCLUDE$-ing file:'"</nowiki>|#FFB100}} + addmetainclude$ + {{Text|<nowiki>"':On line"</nowiki>|#FFB100}}; linenumber
| |
| a$ = addmetainclude$: addmetainclude$ = {{Text|<nowiki>""</nowiki>|#FFB100}} {{Text|<nowiki>'read/clear message</nowiki>|#919191}}
| |
|
| |
| {{Cl|IF}} inclevel = {{Text|0|#F580B1}} {{Cl|THEN}}
| |
| includingFromRoot = {{Text|0|#F580B1}}
| |
| forceIncludingFile = {{Text|0|#F580B1}}
| |
| forceInclude_prepass:
| |
| {{Cl|IF}} forceIncludeFromRoot$ <> {{Text|<nowiki>""</nowiki>|#FFB100}} {{Cl|THEN}}
| |
| a$ = forceIncludeFromRoot$
| |
| forceIncludeFromRoot$ = {{Text|<nowiki>""</nowiki>|#FFB100}}
| |
| forceIncludingFile = {{Text|1|#F580B1}}
| |
| includingFromRoot = {{Text|1|#F580B1}}
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}}
| |
|
| |
| {{Cl|IF}} inclevel = {{Text|100|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Too many indwelling INCLUDE files"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
| |
| {{Text|<nowiki>'1. Verify file exists (location is either (a)relative to source file or (b)absolute)</nowiki>|#919191}}
| |
| fh = {{Text|99|#F580B1}} + inclevel + {{Text|1|#F580B1}}
| |
|
| |
| firstTryMethod = {{Text|1|#F580B1}}
| |
| {{Cl|IF}} includingFromRoot <> {{Text|0|#F580B1}} {{Cl|AND (boolean)|AND}} inclevel = {{Text|0|#F580B1}} {{Cl|THEN}} firstTryMethod = {{Text|2|#F580B1}}
| |
| {{Cl|FOR}} try = firstTryMethod {{Cl|TO}} {{Text|2|#F580B1}} {{Text|<nowiki>'if including file from root, do not attempt including from relative location</nowiki>|#919191}}
| |
| {{Cl|IF}} try = {{Text|1|#F580B1}} {{Cl|THEN}}
| |
| {{Cl|IF}} inclevel = {{Text|0|#F580B1}} {{Cl|THEN}}
| |
| {{Cl|IF}} idemode {{Cl|THEN}} p$ = idepath$ + pathsep$ {{Cl|ELSE}} p$ = {{Text|getfilepath$|#55FF55}}(sourcefile$)
| |
| {{Cl|ELSE}}
| |
| p$ = {{Text|getfilepath$|#55FF55}}(incname(inclevel))
| |
| {{Cl|END IF}}
| |
| f$ = p$ + a$
| |
| {{Cl|END IF}}
| |
| {{Cl|IF}} try = {{Text|2|#F580B1}} {{Cl|THEN}} f$ = a$
| |
| {{Cl|IF}} {{Cl|_FILEEXISTS}}(f$) {{Cl|THEN}}
| |
| qberrorhappened = {{Text|-3|#F580B1}}
| |
| {{Text|<nowiki>'We're using the faster LINE INPUT, which requires a BINARY open.</nowiki>|#919191}}
| |
| {{Cl|OPEN}} f$ {{Cl|OPEN#File_Access_Modes|FOR}} {{Cl|OPEN#File_Access_Modes|BINARY}} {{Cl|OPEN|AS}} #fh
| |
| {{Text|<nowiki>'And another line below edited</nowiki>|#919191}}
| |
| qberrorhappened3:
| |
| {{Cl|IF}} qberrorhappened = {{Text|-3|#F580B1}} {{Cl|THEN}} {{Cl|EXIT FOR}}
| |
| {{Cl|END IF}}
| |
| qberrorhappened = {{Text|0|#F580B1}}
| |
| {{Cl|NEXT}}
| |
| {{Cl|IF}} qberrorhappened <> {{Text|-3|#F580B1}} {{Cl|THEN}} qberrorhappened = {{Text|0|#F580B1}}: a$ = {{Text|<nowiki>"File "</nowiki>|#FFB100}} + a$ + {{Text|<nowiki>" not found"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
| |
| inclevel = inclevel + {{Text|1|#F580B1}}: incname$(inclevel) = f$: inclinenumber(inclevel) = {{Text|0|#F580B1}}
| |
| {{Cl|END IF}} {{Text|<nowiki>'fall through to next section...</nowiki>|#919191}}
| |
| {{Text|<nowiki>'--------------------</nowiki>|#919191}}
| |
| {{Cl|DO...LOOP|DO WHILE}} inclevel
| |
|
| |
| fh = {{Text|99|#F580B1}} + inclevel
| |
| {{Text|<nowiki>'2. Feed next line</nowiki>|#919191}}
| |
| {{Cl|IF}} {{Cl|EOF}}(fh) = {{Text|0|#F580B1}} {{Cl|THEN}}
| |
| {{Cl|LINE INPUT (file statement)|LINE INPUT}} #fh, x$
| |
|
| |
| wholeline$ = x$
| |
| inclinenumber(inclevel) = inclinenumber(inclevel) + {{Text|1|#F580B1}}
| |
| {{Text|<nowiki>'create extended error string 'incerror$'</nowiki>|#919191}}
| |
| errorLineInInclude = inclinenumber(inclevel)
| |
| e$ = {{Text|<nowiki>" in line "</nowiki>|#FFB100}} + {{Text|str2|#55FF55}}(inclinenumber(inclevel)) + {{Text|<nowiki>" of "</nowiki>|#FFB100}} + incname$(inclevel) + {{Text|<nowiki>" included"</nowiki>|#FFB100}}
| |
| {{Cl|IF}} inclevel > {{Text|1|#F580B1}} {{Cl|THEN}}
| |
| e$ = e$ + {{Text|<nowiki>" (through "</nowiki>|#FFB100}}
| |
| {{Cl|FOR}} x = {{Text|1|#F580B1}} {{Cl|TO}} inclevel - {{Text|1|#F580B1}} {{Cl|STEP}} {{Text|1|#F580B1}}
| |
| e$ = e$ + incname$(x)
| |
| {{Cl|IF}} x < inclevel - {{Text|1|#F580B1}} {{Cl|THEN}} {{Text|<nowiki>'a sep is req</nowiki>|#919191}}
| |
| {{Cl|IF}} x = inclevel - {{Text|2|#F580B1}} {{Cl|THEN}}
| |
| e$ = e$ + {{Text|<nowiki>" then "</nowiki>|#FFB100}}
| |
| {{Cl|ELSE}}
| |
| e$ = e$ + {{Text|<nowiki>", "</nowiki>|#FFB100}}
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}}
| |
| {{Cl|NEXT}}
| |
| e$ = e$ + {{Text|<nowiki>")"</nowiki>|#FFB100}}
| |
| {{Cl|END IF}}
| |
| incerror$ = e$
| |
| linenumber = linenumber - {{Text|1|#F580B1}} {{Text|<nowiki>'lower official linenumber to counter later increment</nowiki>|#919191}}
| |
|
| |
| {{Cl|IF}} Debug {{Cl|THEN}} {{Cl|PRINT (file statement)|PRINT}} #9, {{Text|<nowiki>"Pre-pass:Feeding INCLUDE$ line:["</nowiki>|#FFB100}} + wholeline$ + {{Text|<nowiki>"]"</nowiki>|#FFB100}}
| |
|
| |
| {{Cl|IF}} idemode {{Cl|THEN}} sendc$ = {{Cl|CHR$}}({{Text|10|#F580B1}}) + wholeline$: {{Cl|GOTO}} sendcommand {{Text|<nowiki>'passback</nowiki>|#919191}}
| |
| {{Cl|GOTO}} ideprepass
| |
| {{Cl|END IF}}
| |
| {{Text|<nowiki>'3. Close & return control</nowiki>|#919191}}
| |
| {{Cl|CLOSE}} #fh
| |
| inclevel = inclevel - {{Text|1|#F580B1}}
| |
| {{Cl|IF}} forceIncludingFile = {{Text|1|#F580B1}} {{Cl|AND (boolean)|AND}} inclevel = {{Text|0|#F580B1}} {{Cl|THEN}}
| |
| forceIncludingFile = {{Text|0|#F580B1}}
| |
| {{Cl|GOTO}} forceIncludeCompleted_prepass
| |
| {{Cl|END IF}}
| |
| {{Cl|LOOP}}
| |
| {{Text|<nowiki>'(end manager)</nowiki>|#919191}}
| |
|
| |
| {{Cl|IF}} idemode {{Cl|THEN}} {{Cl|GOTO}} ideret2
| |
| {{Cl|LOOP}}
| |
|
| |
| {{Text|<nowiki>'add final line</nowiki>|#919191}}
| |
| {{Cl|IF}} lastLineReturn = {{Text|0|#F580B1}} {{Cl|THEN}}
| |
| lastLineReturn = {{Text|1|#F580B1}}
| |
| lastLine = {{Text|1|#F580B1}}
| |
| wholeline$ = {{Text|<nowiki>""</nowiki>|#FFB100}}
| |
| {{Cl|GOTO}} prepassLastLine
| |
| {{Cl|END IF}}
| |
|
| |
| {{Cl|IF}} definingtype {{Cl|THEN}} definingtype = {{Text|0|#F580B1}} {{Text|<nowiki>'ignore this error so that auto-formatting can be performed and catch it again later</nowiki>|#919191}}
| |
| {{Cl|IF}} declaringlibrary {{Cl|THEN}} declaringlibrary = {{Text|0|#F580B1}} {{Text|<nowiki>'ignore this error so that auto-formatting can be performed and catch it again later</nowiki>|#919191}}
| |
|
| |
| totallinenumber = reallinenumber
| |
|
| |
| {{Text|<nowiki>'IF idemode = 0 AND NOT QuietMode THEN PRINT "first pass finished.": PRINT "Translating code... "</nowiki>|#919191}}
| |
|
| |
| {{Text|<nowiki>'prepass finished</nowiki>|#919191}}
| |
|
| |
| lineinput3index = {{Text|1|#F580B1}} {{Text|<nowiki>'reset input line</nowiki>|#919191}}
| |
|
| |
| {{Text|<nowiki>'ide specific</nowiki>|#919191}}
| |
| ide3:
| |
|
| |
| addmetainclude$ = {{Text|<nowiki>""</nowiki>|#FFB100}} {{Text|<nowiki>'reset stray meta-includes</nowiki>|#919191}}
| |
|
| |
| {{Text|<nowiki>'reset altered variables</nowiki>|#919191}}
| |
| DataOffset = {{Text|0|#F580B1}}
| |
| inclevel = {{Text|0|#F580B1}}
| |
| subfuncn = {{Text|0|#F580B1}}
| |
| lastLineReturn = {{Text|0|#F580B1}}
| |
| lastLine = {{Text|0|#F580B1}}
| |
| firstLine = {{Text|1|#F580B1}}
| |
| UserDefineCount = {{Text|7|#F580B1}}
| |
|
| |
| {{Cl|FOR}} i = {{Text|0|#F580B1}} {{Cl|TO}} constlast: constdefined(i) = {{Text|0|#F580B1}}: {{Cl|NEXT}} {{Text|<nowiki>'undefine constants</nowiki>|#919191}}
| |
|
| |
| {{Cl|FOR}} i = {{Text|1|#F580B1}} {{Cl|TO}} {{Text|27|#F580B1}}: defineaz(i) = {{Text|<nowiki>"SINGLE"</nowiki>|#FFB100}}: defineextaz(i) = {{Text|<nowiki>"!"</nowiki>|#FFB100}}: {{Cl|NEXT}}
| |
|
| |
| {{Cl|DIM}} {{Cl|SHARED}} DataBinBuf: DataBinBuf = {{Text|OpenBuffer%|#55FF55}}({{Text|<nowiki>"O"</nowiki>|#FFB100}}, tmpdir$ + {{Text|<nowiki>"data.bin"</nowiki>|#FFB100}})
| |
|
| |
| {{Cl|DIM}} {{Cl|SHARED}} MainTxtBuf: MainTxtBuf = {{Text|OpenBuffer%|#55FF55}}({{Text|<nowiki>"O"</nowiki>|#FFB100}}, tmpdir$ + {{Text|<nowiki>"main.txt"</nowiki>|#FFB100}})
| |
| {{Cl|DIM}} {{Cl|SHARED}} DataTxtBuf: DataTxtBuf = {{Text|OpenBuffer%|#55FF55}}({{Text|<nowiki>"O"</nowiki>|#FFB100}}, tmpdir$ + {{Text|<nowiki>"maindata.txt"</nowiki>|#FFB100}})
| |
|
| |
| {{Cl|DIM}} {{Cl|SHARED}} RegTxtBuf: RegTxtBuf = {{Text|OpenBuffer%|#55FF55}}({{Text|<nowiki>"O"</nowiki>|#FFB100}}, tmpdir$ + {{Text|<nowiki>"regsf.txt"</nowiki>|#FFB100}})
| |
|
| |
| {{Cl|DIM}} {{Cl|SHARED}} FreeTxtBuf: FreeTxtBuf = {{Text|OpenBuffer%|#55FF55}}({{Text|<nowiki>"O"</nowiki>|#FFB100}}, tmpdir$ + {{Text|<nowiki>"mainfree.txt"</nowiki>|#FFB100}})
| |
| {{Cl|DIM}} {{Cl|SHARED}} RunTxtBuf: RunTxtBuf = {{Text|OpenBuffer%|#55FF55}}({{Text|<nowiki>"O"</nowiki>|#FFB100}}, tmpdir$ + {{Text|<nowiki>"runline.txt"</nowiki>|#FFB100}})
| |
|
| |
| {{Cl|DIM}} {{Cl|SHARED}} ErrTxtBuf: ErrTxtBuf = {{Text|OpenBuffer%|#55FF55}}({{Text|<nowiki>"O"</nowiki>|#FFB100}}, tmpdir$ + {{Text|<nowiki>"mainerr.txt"</nowiki>|#FFB100}})
| |
| {{Text|<nowiki>'i. check the value of error_line</nowiki>|#919191}}
| |
| {{Text|<nowiki>'ii. jump to the appropriate label</nowiki>|#919191}}
| |
| errorlabels = {{Text|0|#F580B1}}
| |
| {{Text|WriteBufLine|#55FF55}} ErrTxtBuf, {{Text|<nowiki>"if (error_occurred){ error_occurred=0;"</nowiki>|#FFB100}}
| |
|
| |
| {{Cl|DIM}} {{Cl|SHARED}} ChainTxtBuf: ChainTxtBuf = {{Text|OpenBuffer%|#55FF55}}({{Text|<nowiki>"O"</nowiki>|#FFB100}}, tmpdir$ + {{Text|<nowiki>"chain.txt"</nowiki>|#FFB100}})
| |
| {{Cl|DIM}} {{Cl|SHARED}} InpChainTxtBuf: InpChainTxtBuf = {{Text|OpenBuffer%|#55FF55}}({{Text|<nowiki>"O"</nowiki>|#FFB100}}, tmpdir$ + {{Text|<nowiki>"inpchain.txt"</nowiki>|#FFB100}})
| |
|
| |
| {{Cl|DIM}} {{Cl|SHARED}} TimeTxtBuf: TimeTxtBuf = {{Text|OpenBuffer%|#55FF55}}({{Text|<nowiki>"O"</nowiki>|#FFB100}}, tmpdir$ + {{Text|<nowiki>"ontimer.txt"</nowiki>|#FFB100}})
| |
| {{Cl|DIM}} {{Cl|SHARED}} TimejTxtBuf: TimejTxtBuf = {{Text|OpenBuffer%|#55FF55}}({{Text|<nowiki>"O"</nowiki>|#FFB100}}, tmpdir$ + {{Text|<nowiki>"ontimerj.txt"</nowiki>|#FFB100}})
| |
|
| |
| {{Text|<nowiki>'*****#26 used for locking qb64pe</nowiki>|#919191}}
| |
|
| |
| {{Cl|DIM}} {{Cl|SHARED}} KeyTxtBuf: KeyTxtBuf = {{Text|OpenBuffer%|#55FF55}}({{Text|<nowiki>"O"</nowiki>|#FFB100}}, tmpdir$ + {{Text|<nowiki>"onkey.txt"</nowiki>|#FFB100}})
| |
| {{Cl|DIM}} {{Cl|SHARED}} KeyjTxtBuf: KeyjTxtBuf = {{Text|OpenBuffer%|#55FF55}}({{Text|<nowiki>"O"</nowiki>|#FFB100}}, tmpdir$ + {{Text|<nowiki>"onkeyj.txt"</nowiki>|#FFB100}})
| |
|
| |
| {{Cl|DIM}} {{Cl|SHARED}} StrigTxtBuf: StrigTxtBuf = {{Text|OpenBuffer%|#55FF55}}({{Text|<nowiki>"O"</nowiki>|#FFB100}}, tmpdir$ + {{Text|<nowiki>"onstrig.txt"</nowiki>|#FFB100}})
| |
| {{Cl|DIM}} {{Cl|SHARED}} StrigjTxtBuf: StrigjTxtBuf = {{Text|OpenBuffer%|#55FF55}}({{Text|<nowiki>"O"</nowiki>|#FFB100}}, tmpdir$ + {{Text|<nowiki>"onstrigj.txt"</nowiki>|#FFB100}})
| |
|
| |
| gosubid = {{Text|1|#F580B1}}
| |
| {{Text|<nowiki>'to be included whenever return without a label is called</nowiki>|#919191}}
| |
|
| |
| {{Text|<nowiki>'return [label] in QBASIC was not possible in a sub/function, but QB64 will support this</nowiki>|#919191}}
| |
| {{Text|<nowiki>'special codes will represent special return conditions:</nowiki>|#919191}}
| |
| {{Text|<nowiki>'0=return from main to calling sub/function/proc by return [NULL];</nowiki>|#919191}}
| |
| {{Text|<nowiki>'1... a global number representing a return point after a gosub</nowiki>|#919191}}
| |
| {{Text|<nowiki>'note: RETURN [label] should fail if a "return [NULL];" type return is required</nowiki>|#919191}}
| |
| {{Cl|DIM}} {{Cl|SHARED}} RetTxtBuf: RetTxtBuf = {{Text|OpenBuffer%|#55FF55}}({{Text|<nowiki>"O"</nowiki>|#FFB100}}, tmpdir$ + {{Text|<nowiki>"ret0.txt"</nowiki>|#FFB100}})
| |
| {{Text|WriteBufLine|#55FF55}} RetTxtBuf, {{Text|<nowiki>"if (next_return_point){"</nowiki>|#FFB100}}
| |
| {{Text|WriteBufLine|#55FF55}} RetTxtBuf, {{Text|<nowiki>"next_return_point--;"</nowiki>|#FFB100}}
| |
| {{Text|WriteBufLine|#55FF55}} RetTxtBuf, {{Text|<nowiki>"switch(return_point[next_return_point]){"</nowiki>|#FFB100}}
| |
| {{Text|WriteBufLine|#55FF55}} RetTxtBuf, {{Text|<nowiki>"case 0:"</nowiki>|#FFB100}}
| |
|
| |
| {{Text|WriteBufLine|#55FF55}} RetTxtBuf, {{Text|<nowiki>"return;"</nowiki>|#FFB100}}
| |
|
| |
| {{Text|WriteBufLine|#55FF55}} RetTxtBuf, {{Text|<nowiki>"break;"</nowiki>|#FFB100}}
| |
|
| |
| continueline = {{Text|0|#F580B1}}
| |
| endifs = {{Text|0|#F580B1}}
| |
| lineelseused = {{Text|0|#F580B1}}
| |
| continuelinefrom = {{Text|0|#F580B1}}
| |
| linenumber = {{Text|0|#F580B1}}
| |
| reallinenumber = {{Text|0|#F580B1}}
| |
| declaringlibrary = {{Text|0|#F580B1}}
| |
|
| |
| {{Text|WriteBufLine|#55FF55}} MainTxtBuf, {{Text|<nowiki>"S_0:;"</nowiki>|#FFB100}} {{Text|<nowiki>'note: REQUIRED by run statement</nowiki>|#919191}}
| |
|
| |
| {{Cl|IF}} UseGL {{Cl|THEN}} {{Text|gl_include_content|#55FF55}}
| |
|
| |
|
| |
| {{Text|<nowiki>'ide specific</nowiki>|#919191}}
| |
| {{Cl|IF}} idemode {{Cl|THEN}} {{Cl|GOTO}} ideret3
| |
|
| |
| {{Cl|DO}}
| |
| ide4:
| |
| includeline:
| |
| mainpassLastLine:
| |
|
| |
| {{Cl|IF}} lastLine <> {{Text|0|#F580B1}} {{Cl|OR (boolean)|OR}} firstLine <> {{Text|0|#F580B1}} {{Cl|THEN}}
| |
| lineBackup$ = a3$ {{Text|<nowiki>'backup the real first line (will be blank when lastline is set)</nowiki>|#919191}}
| |
| forceIncludeFromRoot$ = {{Text|<nowiki>""</nowiki>|#FFB100}}
| |
| {{Cl|IF}} vWatchOn {{Cl|THEN}}
| |
| addingvWatch = {{Text|1|#F580B1}}
| |
| {{Cl|IF}} firstLine <> {{Text|0|#F580B1}} {{Cl|THEN}} forceIncludeFromRoot$ = {{Text|<nowiki>"internal\support\vwatch\vwatch.bi"</nowiki>|#FFB100}}
| |
| {{Cl|IF}} lastLine <> {{Text|0|#F580B1}} {{Cl|THEN}} forceIncludeFromRoot$ = {{Text|<nowiki>"internal\support\vwatch\vwatch.bm"</nowiki>|#FFB100}}
| |
| {{Cl|ELSE}}
| |
| {{Text|<nowiki>'IF firstLine <> 0 THEN forceIncludeFromRoot$ = "internal\support\vwatch\vwatch_stub.bi"</nowiki>|#919191}}
| |
| {{Cl|IF}} lastLine <> {{Text|0|#F580B1}} {{Cl|THEN}} forceIncludeFromRoot$ = {{Text|<nowiki>"internal\support\vwatch\vwatch_stub.bm"</nowiki>|#FFB100}}
| |
| {{Cl|END IF}}
| |
| firstLine = {{Text|0|#F580B1}}: lastLine = {{Text|0|#F580B1}}
| |
| {{Cl|IF}} {{Cl|LEN}}(forceIncludeFromRoot$) {{Cl|THEN}} {{Cl|GOTO}} forceInclude
| |
| forceIncludeCompleted:
| |
| addingvWatch = {{Text|0|#F580B1}}
| |
| a3$ = lineBackup$
| |
| {{Cl|END IF}}
| |
|
| |
| prepass = {{Text|0|#F580B1}}
| |
|
| |
| stringprocessinghappened = {{Text|0|#F580B1}}
| |
|
| |
| {{Cl|IF}} continuelinefrom {{Cl|THEN}}
| |
| start = continuelinefrom
| |
| continuelinefrom = {{Text|0|#F580B1}}
| |
| {{Cl|GOTO}} contline
| |
| {{Cl|END IF}}
| |
|
| |
| {{Text|<nowiki>'begin a new line</nowiki>|#919191}}
| |
|
| |
| impliedendif = {{Text|0|#F580B1}}
| |
| THENGOTO = {{Text|0|#F580B1}}
| |
| continueline = {{Text|0|#F580B1}}
| |
| endifs = {{Text|0|#F580B1}}
| |
| lineelseused = {{Text|0|#F580B1}}
| |
| newif = {{Text|0|#F580B1}}
| |
|
| |
| {{Text|<nowiki>'apply metacommands from previous line</nowiki>|#919191}}
| |
| {{Cl|IF}} addmetadynamic = {{Text|1|#F580B1}} {{Cl|THEN}} addmetadynamic = {{Text|0|#F580B1}}: DynamicMode = {{Text|1|#F580B1}}
| |
| {{Cl|IF}} addmetastatic = {{Text|1|#F580B1}} {{Cl|THEN}} addmetastatic = {{Text|0|#F580B1}}: DynamicMode = {{Text|0|#F580B1}}
| |
|
| |
| {{Text|<nowiki>'a3$ is passed in idemode and when using $include</nowiki>|#919191}}
| |
| {{Cl|IF}} idemode = {{Text|0|#F580B1}} {{Cl|AND (boolean)|AND}} inclevel = {{Text|0|#F580B1}} {{Cl|THEN}} a3$ = {{Text|lineinput3$|#55FF55}}
| |
| {{Cl|IF}} a3$ = {{Cl|CHR$}}({{Text|13|#F580B1}}) {{Cl|THEN}} {{Cl|EXIT DO}}
| |
| linenumber = linenumber + {{Text|1|#F580B1}}
| |
| reallinenumber = reallinenumber + {{Text|1|#F580B1}}
| |
|
| |
| {{Cl|IF}} InValidLine(linenumber) {{Cl|THEN}}
| |
| layoutok = {{Text|1|#F580B1}}
| |
| layout$ = {{Cl|SPACE$}}(controllevel + {{Text|1|#F580B1}}) + {{Cl|LTRIM$}}({{Cl|RTRIM$}}(a3$))
| |
| {{Cl|IF}} idemode {{Cl|GOTO}} ideret4 {{Cl|ELSE}} {{Cl|GOTO}} skipide4
| |
| {{Cl|END IF}}
| |
|
| |
| layout = {{Text|<nowiki>""</nowiki>|#FFB100}}
| |
| layoutok = {{Text|1|#F580B1}}
| |
|
| |
| {{Cl|IF}} idemode = {{Text|0|#F580B1}} {{Cl|AND (boolean)|AND}} {{Cl|NOT}} QuietMode {{Cl|THEN}}
| |
| {{Text|<nowiki>'IF LEN(a3$) THEN</nowiki>|#919191}}
| |
| {{Text|<nowiki>' dotlinecount = dotlinecount + 1: IF dotlinecount >= 100 THEN dotlinecount = 0: PRINT ".";</nowiki>|#919191}}
| |
| {{Text|<nowiki>'END IF</nowiki>|#919191}}
| |
| maxprogresswidth = {{Text|50|#F580B1}} {{Text|<nowiki>'arbitrary</nowiki>|#919191}}
| |
| percentage = {{Cl|INT}}(reallinenumber / totallinenumber * {{Text|100|#F580B1}})
| |
| percentagechars = {{Cl|INT}}(maxprogresswidth * reallinenumber / totallinenumber)
| |
| {{Cl|IF}} percentage <> prevpercentage {{Cl|AND (boolean)|AND}} percentagechars <> prevpercentagechars {{Cl|THEN}}
| |
| prevpercentage = percentage
| |
| prevpercentagechars = percentagechars
| |
| {{Cl|IF}} ConsoleMode {{Cl|THEN}}
| |
| {{Cl|PRINT}} {{Text|<nowiki>"["</nowiki>|#FFB100}} + {{Cl|STRING$}}(percentagechars, {{Text|<nowiki>"."</nowiki>|#FFB100}}) + {{Cl|SPACE$}}(maxprogresswidth - percentagechars) + {{Text|<nowiki>"]"</nowiki>|#FFB100}} + {{Cl|STR$}}(percentage) + {{Text|<nowiki>"%"</nowiki>|#FFB100}};
| |
| {{Cl|IF}} os$ = {{Text|<nowiki>"LNX"</nowiki>|#FFB100}} {{Cl|THEN}}
| |
| {{Cl|PRINT}} {{Cl|CHR$}}({{Text|27|#F580B1}}) + {{Text|<nowiki>"[A"</nowiki>|#FFB100}}
| |
| {{Cl|ELSE}}
| |
| {{Cl|PRINT}} {{Cl|CHR$}}({{Text|13|#F580B1}});
| |
| {{Cl|END IF}}
| |
| {{Cl|ELSE}}
| |
| {{Cl|LOCATE}} , {{Text|1|#F580B1}}
| |
| {{Cl|PRINT}} {{Cl|STRING$}}(percentagechars, {{Text|219|#F580B1}}) + {{Cl|STRING$}}(maxprogresswidth - percentagechars, {{Text|176|#F580B1}}) + {{Cl|STR$}}(percentage) + {{Text|<nowiki>"%"</nowiki>|#FFB100}};
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}}
| |
|
| |
| a3$ = {{Cl|LTRIM$}}({{Cl|RTRIM$}}(a3$))
| |
| wholeline = a3$
| |
|
| |
| layoutoriginal$ = a3$
| |
| layoutcomment$ = {{Text|<nowiki>""</nowiki>|#FFB100}} {{Text|<nowiki>'clear any previous layout comment</nowiki>|#919191}}
| |
| lhscontrollevel = controllevel
| |
|
| |
| linefragment = {{Text|<nowiki>"[INFORMATION UNAVAILABLE]"</nowiki>|#FFB100}}
| |
| {{Cl|IF}} {{Cl|LEN}}(a3$) = {{Text|0|#F580B1}} {{Cl|THEN}} {{Cl|GOTO}} finishednonexec
| |
| {{Cl|IF}} Debug {{Cl|THEN}} {{Cl|PRINT (file statement)|PRINT}} #9, {{Text|<nowiki>"########"</nowiki>|#FFB100}} + a3$ + {{Text|<nowiki>"########"</nowiki>|#FFB100}}
| |
|
| |
| layoutdone = {{Text|1|#F580B1}} {{Text|<nowiki>'validates layout of any following goto finishednonexec/finishedline</nowiki>|#919191}}
| |
|
| |
| {{Text|<nowiki>'We've already figured out in the prepass which lines are invalidated by the precompiler</nowiki>|#919191}}
| |
| {{Text|<nowiki>'No need to go over those lines again.</nowiki>|#919191}}
| |
| {{Text|<nowiki>'IF InValidLine(linenumber) THEN goto skipide4 'layoutdone = 0: GOTO finishednonexec</nowiki>|#919191}}
| |
|
| |
| a3u$ = {{Cl|UCASE$}}(a3$)
| |
|
| |
| {{Text|<nowiki>'QB64 Metacommands</nowiki>|#919191}}
| |
| {{Cl|IF}} {{Cl|ASC (function)|ASC}}(a3$) = {{Text|36|#F580B1}} {{Cl|THEN}} {{Text|<nowiki>'$</nowiki>|#919191}}
| |
|
| |
| {{Text|<nowiki>'precompiler commands should always be executed FIRST.</nowiki>|#919191}}
| |
| {{Cl|IF}} a3u$ = {{Text|<nowiki>"$END IF"</nowiki>|#FFB100}} {{Cl|OR (boolean)|OR}} a3u$ = {{Text|<nowiki>"$ENDIF"</nowiki>|#FFB100}} {{Cl|THEN}}
| |
| {{Cl|IF}} DefineElse(ExecCounter) = {{Text|0|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"$END IF without $IF"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
| |
| DefineElse(ExecCounter) = {{Text|0|#F580B1}} {{Text|<nowiki>'We no longer have an $IF block at this level</nowiki>|#919191}}
| |
| ExecCounter = ExecCounter - {{Text|1|#F580B1}}
| |
| layout$ = {{Text|SCase$|#55FF55}}({{Text|<nowiki>"$End If"</nowiki>|#FFB100}})
| |
| controltype(controllevel) = {{Text|0|#F580B1}}
| |
| controllevel = controllevel - {{Text|1|#F580B1}}
| |
| {{Cl|GOTO}} finishednonexec
| |
| {{Cl|END IF}}
| |
|
| |
| {{Cl|IF}} {{Cl|LEFT$}}(a3u$, {{Text|4|#F580B1}}) = {{Text|<nowiki>"$IF "</nowiki>|#FFB100}} {{Cl|THEN}}
| |
| {{Text|<nowiki>'prevents code from being placed before 'CASE condition' in a SELECT CASE block</nowiki>|#919191}}
| |
| {{Cl|IF}} SelectCaseCounter > {{Text|0|#F580B1}} {{Cl|AND (boolean)|AND}} SelectCaseHasCaseBlock(SelectCaseCounter) = {{Text|0|#F580B1}} {{Cl|THEN}}
| |
| a$ = {{Text|<nowiki>"Expected CASE expression"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
| |
| {{Cl|END IF}}
| |
|
| |
| temp$ = {{Cl|LTRIM$}}({{Cl|MID$ (function)|MID$}}(a3u$, {{Text|4|#F580B1}})) {{Text|<nowiki>'strip off the $IF and extra spaces</nowiki>|#919191}}
| |
| temp$ = {{Cl|RTRIM$}}({{Cl|LEFT$}}(temp$, {{Cl|LEN}}(temp$) - {{Text|4|#F580B1}})) {{Text|<nowiki>'and strip off the THEN and extra spaces</nowiki>|#919191}}
| |
| temp = {{Text|0|#F580B1}}
| |
| {{Cl|IF}} temp = {{Text|0|#F580B1}} {{Cl|THEN}} tempOp$ = {{Text|<nowiki>"<="</nowiki>|#FFB100}}: temp = {{Cl|INSTR}}(temp$, tempOp$)
| |
| {{Cl|IF}} temp = {{Text|0|#F580B1}} {{Cl|THEN}} tempOp$ = {{Text|<nowiki>"=<"</nowiki>|#FFB100}}: temp = {{Cl|INSTR}}(temp$, tempOp$): tempOp$ = {{Text|<nowiki>"<="</nowiki>|#FFB100}}
| |
| {{Cl|IF}} temp = {{Text|0|#F580B1}} {{Cl|THEN}} tempOp$ = {{Text|<nowiki>">="</nowiki>|#FFB100}}: temp = {{Cl|INSTR}}(temp$, tempOp$)
| |
| {{Cl|IF}} temp = {{Text|0|#F580B1}} {{Cl|THEN}} tempOp$ = {{Text|<nowiki>"=>"</nowiki>|#FFB100}}: temp = {{Cl|INSTR}}(temp$, tempOp$): tempOp$ = {{Text|<nowiki>">="</nowiki>|#FFB100}}
| |
| {{Cl|IF}} temp = {{Text|0|#F580B1}} {{Cl|THEN}} tempOp$ = {{Text|<nowiki>"<>"</nowiki>|#FFB100}}: temp = {{Cl|INSTR}}(temp$, tempOp$)
| |
| {{Cl|IF}} temp = {{Text|0|#F580B1}} {{Cl|THEN}} tempOp$ = {{Text|<nowiki>"><"</nowiki>|#FFB100}}: temp = {{Cl|INSTR}}(temp$, tempOp$): tempOp$ = {{Text|<nowiki>"<>"</nowiki>|#FFB100}}
| |
| {{Cl|IF}} temp = {{Text|0|#F580B1}} {{Cl|THEN}} tempOp$ = {{Text|<nowiki>"="</nowiki>|#FFB100}}: temp = {{Cl|INSTR}}(temp$, tempOp$)
| |
| {{Cl|IF}} temp = {{Text|0|#F580B1}} {{Cl|THEN}} tempOp$ = {{Text|<nowiki>">"</nowiki>|#FFB100}}: temp = {{Cl|INSTR}}(temp$, tempOp$)
| |
| {{Cl|IF}} temp = {{Text|0|#F580B1}} {{Cl|THEN}} tempOp$ = {{Text|<nowiki>"<"</nowiki>|#FFB100}}: temp = {{Cl|INSTR}}(temp$, tempOp$)
| |
|
| |
| ExecCounter = ExecCounter + {{Text|1|#F580B1}}
| |
| ExecLevel(ExecCounter) = {{Text|-1|#F580B1}} {{Text|<nowiki>'default to a skip value</nowiki>|#919191}}
| |
| DefineElse(ExecCounter) = {{Text|1|#F580B1}} {{Text|<nowiki>'1 says we have an $IF statement at this level</nowiki>|#919191}}
| |
| result = {{Text|EvalPreIF|#55FF55}}(temp$, a$)
| |
| {{Cl|IF}} a$ <> {{Text|<nowiki>""</nowiki>|#FFB100}} {{Cl|THEN}} {{Cl|GOTO}} errmes
| |
| {{Cl|IF}} result <> {{Text|0|#F580B1}} {{Cl|THEN}}
| |
| ExecLevel(ExecCounter) = ExecLevel(ExecCounter - {{Text|1|#F580B1}}) {{Text|<nowiki>'So we inherit the execlevel from above</nowiki>|#919191}}
| |
| {{Cl|IF}} ExecLevel(ExecCounter) = {{Text|0|#F580B1}} {{Cl|THEN}} DefineElse(ExecCounter) = DefineElse(ExecCounter) {{Cl|OR}} {{Text|4|#F580B1}} {{Text|<nowiki>'Else if used and conditon found</nowiki>|#919191}}
| |
| {{Cl|END IF}}
| |
|
| |
| controllevel = controllevel + {{Text|1|#F580B1}}
| |
| controltype(controllevel) = {{Text|6|#F580B1}}
| |
| {{Cl|IF}} temp = {{Text|0|#F580B1}} {{Cl|THEN}} layout$ = {{Text|SCase$|#55FF55}}({{Text|<nowiki>"$If "</nowiki>|#FFB100}}) + temp$ + {{Text|SCase$|#55FF55}}({{Text|<nowiki>" Then"</nowiki>|#FFB100}}): {{Cl|GOTO}} finishednonexec {{Text|<nowiki>'no = sign in the $IF statement, so we're going to assume the user is doing something like $IF flag</nowiki>|#919191}}
| |
| l$ = {{Cl|RTRIM$}}({{Cl|LEFT$}}(temp$, temp - {{Text|1|#F580B1}})): r$ = {{Cl|LTRIM$}}({{Cl|MID$ (function)|MID$}}(temp$, temp + {{Cl|LEN}}(tempOp$)))
| |
| layout$ = {{Text|SCase$|#55FF55}}({{Text|<nowiki>"$If "</nowiki>|#FFB100}}) + l$ + {{Text|<nowiki>" "</nowiki>|#FFB100}} + tempOp$ + {{Text|<nowiki>" "</nowiki>|#FFB100}} + r$ + {{Text|SCase$|#55FF55}}({{Text|<nowiki>" Then"</nowiki>|#FFB100}})
| |
| {{Cl|GOTO}} finishednonexec
| |
| {{Cl|END IF}}
| |
|
| |
| {{Cl|IF}} a3u$ = {{Text|<nowiki>"$ELSE"</nowiki>|#FFB100}} {{Cl|THEN}}
| |
| {{Cl|IF}} DefineElse(ExecCounter) = {{Text|0|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"$ELSE without $IF"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
| |
| {{Cl|IF}} DefineElse(ExecCounter) {{Cl|AND (boolean)|AND}} {{Text|2|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"$IF block already has $ELSE statement in it"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
| |
| DefineElse(ExecCounter) = DefineElse(ExecCounter) {{Cl|OR}} {{Text|2|#F580B1}} {{Text|<nowiki>'set the flag to declare an $ELSE already in this block</nowiki>|#919191}}
| |
| {{Cl|IF}} DefineElse(ExecCounter) {{Cl|AND (boolean)|AND}} {{Text|4|#F580B1}} {{Cl|THEN}} {{Text|<nowiki>'If we executed code in a previous IF or ELSE IF statement, we can't do it here</nowiki>|#919191}}
| |
| ExecLevel(ExecCounter) = {{Text|-1|#F580B1}} {{Text|<nowiki>'So we inherit the execlevel from above</nowiki>|#919191}}
| |
| {{Cl|ELSE}}
| |
| ExecLevel(ExecCounter) = ExecLevel(ExecCounter - {{Text|1|#F580B1}}) {{Text|<nowiki>'If we were processing code before, code after this segment is going to be SKIPPED</nowiki>|#919191}}
| |
| {{Cl|END IF}}
| |
| layout$ = {{Text|SCase$|#55FF55}}({{Text|<nowiki>"$Else"</nowiki>|#FFB100}})
| |
| lhscontrollevel = lhscontrollevel - {{Text|1|#F580B1}}
| |
| {{Cl|GOTO}} finishednonexec
| |
| {{Cl|END IF}}
| |
|
| |
| {{Cl|IF}} {{Cl|LEFT$}}(a3u$, {{Text|5|#F580B1}}) = {{Text|<nowiki>"$ELSE"</nowiki>|#FFB100}} {{Cl|THEN}}
| |
| temp$ = {{Cl|LTRIM$}}({{Cl|MID$ (function)|MID$}}(a3u$, {{Text|6|#F580B1}}))
| |
| {{Cl|IF}} {{Cl|LEFT$}}(temp$, {{Text|3|#F580B1}}) = {{Text|<nowiki>"IF "</nowiki>|#FFB100}} {{Cl|THEN}}
| |
| {{Cl|IF}} DefineElse(ExecCounter) = {{Text|0|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"$ELSE IF without $IF"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
| |
| {{Cl|IF}} DefineElse(ExecCounter) {{Cl|AND (boolean)|AND}} {{Text|2|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"$ELSE IF cannot follow $ELSE"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
| |
| {{Cl|IF}} {{Cl|RIGHT$}}(temp$, {{Text|5|#F580B1}}) <> {{Text|<nowiki>" THEN"</nowiki>|#FFB100}} {{Cl|THEN}} a$ = {{Text|<nowiki>"$ELSE IF without THEN"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
| |
| temp$ = {{Cl|LTRIM$}}({{Cl|MID$ (function)|MID$}}(temp$, {{Text|3|#F580B1}})) {{Text|<nowiki>'strip off the IF and extra spaces</nowiki>|#919191}}
| |
| temp$ = {{Cl|RTRIM$}}({{Cl|LEFT$}}(temp$, {{Cl|LEN}}(temp$) - {{Text|4|#F580B1}})) {{Text|<nowiki>'and strip off the THEN and extra spaces</nowiki>|#919191}}
| |
| {{Cl|IF}} DefineElse(ExecCounter) {{Cl|AND (boolean)|AND}} {{Text|4|#F580B1}} {{Cl|THEN}} {{Text|<nowiki>'If we executed code in a previous IF or ELSE IF statement, we can't do it here</nowiki>|#919191}}
| |
| ExecLevel(ExecCounter) = {{Text|-1|#F580B1}}
| |
| {{Cl|ELSE}}
| |
| result = {{Text|EvalPreIF|#55FF55}}(temp$, a$)
| |
| {{Cl|IF}} a$ <> {{Text|<nowiki>""</nowiki>|#FFB100}} {{Cl|THEN}} {{Cl|GOTO}} errmes
| |
| {{Cl|IF}} result <> {{Text|0|#F580B1}} {{Cl|THEN}}
| |
| ExecLevel(ExecCounter) = ExecLevel(ExecCounter - {{Text|1|#F580B1}}) {{Text|<nowiki>'So we inherit the execlevel from above</nowiki>|#919191}}
| |
| {{Cl|IF}} ExecLevel(ExecCounter) = {{Text|0|#F580B1}} {{Cl|THEN}} DefineElse(ExecCounter) = DefineElse(ExecCounter) {{Cl|OR}} {{Text|4|#F580B1}} {{Text|<nowiki>'Else if used and conditon found</nowiki>|#919191}}
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}}
| |
|
| |
|
| |
| lhscontrollevel = lhscontrollevel - {{Text|1|#F580B1}}
| |
| temp = {{Cl|INSTR}}(temp$, {{Text|<nowiki>"="</nowiki>|#FFB100}})
| |
| {{Cl|IF}} temp = {{Text|0|#F580B1}} {{Cl|THEN}} layout$ = {{Text|SCase$|#55FF55}}({{Text|<nowiki>"$ElseIf "</nowiki>|#FFB100}}) + temp$ + {{Text|SCase$|#55FF55}}({{Text|<nowiki>" Then"</nowiki>|#FFB100}}): {{Cl|GOTO}} finishednonexec {{Text|<nowiki>'no = sign in the $IF statement, so we're going to assume the user is doing something like $IF flag</nowiki>|#919191}}
| |
| l$ = {{Cl|RTRIM$}}({{Cl|LEFT$}}(temp$, temp - {{Text|1|#F580B1}})): r$ = {{Cl|LTRIM$}}({{Cl|MID$ (function)|MID$}}(temp$, temp + {{Text|1|#F580B1}}))
| |
| layout$ = {{Text|SCase$|#55FF55}}({{Text|<nowiki>"$ElseIf "</nowiki>|#FFB100}}) + l$ + {{Text|<nowiki>" = "</nowiki>|#FFB100}} + r$ + {{Text|SCase$|#55FF55}}({{Text|<nowiki>" Then"</nowiki>|#FFB100}})
| |
| {{Cl|GOTO}} finishednonexec
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}}
| |
|
| |
| {{Cl|IF}} ExecLevel(ExecCounter) {{Cl|THEN}} {{Text|<nowiki>'don't check for any more metacommands except the one's which worth with the precompiler</nowiki>|#919191}}
| |
| layoutdone = {{Text|0|#F580B1}}
| |
| {{Cl|GOTO}} finishednonexec {{Text|<nowiki>'we don't check for anything inside lines that we've marked for skipping</nowiki>|#919191}}
| |
| {{Cl|END IF}}
| |
|
| |
| {{Cl|IF}} {{Cl|LEFT$}}(a3u$, {{Text|5|#F580B1}}) = {{Text|<nowiki>"$LET "</nowiki>|#FFB100}} {{Cl|THEN}}
| |
| temp$ = a3u$
| |
| temp$ = {{Cl|LTRIM$}}({{Cl|MID$ (function)|MID$}}(temp$, {{Text|5|#F580B1}})) {{Text|<nowiki>'simply shorten our string to parse</nowiki>|#919191}}
| |
| {{Text|<nowiki>'For starters, let's make certain that we have 3 elements to deal with</nowiki>|#919191}}
| |
| temp = {{Cl|INSTR}}(temp$, {{Text|<nowiki>"="</nowiki>|#FFB100}}) {{Text|<nowiki>'without an = in there, we can't get a value from the left and right side</nowiki>|#919191}}
| |
| l$ = {{Cl|RTRIM$}}({{Cl|LEFT$}}(temp$, temp - {{Text|1|#F580B1}})): r$ = {{Cl|LTRIM$}}({{Cl|MID$ (function)|MID$}}(temp$, temp + {{Text|1|#F580B1}}))
| |
| layout$ = {{Text|SCase$|#55FF55}}({{Text|<nowiki>"$Let "</nowiki>|#FFB100}}) + l$ + {{Text|<nowiki>" = "</nowiki>|#FFB100}} + r$
| |
| {{Text|<nowiki>'First look to see if we have an existing setting like this and if so, update it</nowiki>|#919191}}
| |
| {{Cl|FOR}} i = {{Text|7|#F580B1}} {{Cl|TO}} UserDefineCount {{Text|<nowiki>'UserDefineCount 1-7 are reserved for automatic OS/BIT detection & version</nowiki>|#919191}}
| |
| {{Cl|IF}} UserDefine({{Text|0|#F580B1}}, i) = l$ {{Cl|THEN}} UserDefine({{Text|1|#F580B1}}, i) = r$: {{Cl|GOTO}} finishednonexec
| |
| {{Cl|NEXT}}
| |
| {{Text|<nowiki>'Otherwise create a new setting and set the initial value for it</nowiki>|#919191}}
| |
| UserDefineCount = UserDefineCount + {{Text|1|#F580B1}}
| |
| {{Cl|IF}} UserDefineCount > {{Cl|UBOUND}}(UserDefine, {{Text|2|#F580B1}}) {{Cl|THEN}}
| |
| {{Cl|REDIM}} {{Cl|_PRESERVE}} UserDefine({{Text|1|#F580B1}}, {{Cl|UBOUND}}(UserDefine, {{Text|2|#F580B1}}) + {{Text|10|#F580B1}}) {{Text|<nowiki>'Add another 10 elements to the array so it'll expand as the user adds to it</nowiki>|#919191}}
| |
| {{Cl|END IF}}
| |
| UserDefine({{Text|0|#F580B1}}, UserDefineCount) = l$
| |
| UserDefine({{Text|1|#F580B1}}, UserDefineCount) = r$
| |
| {{Cl|GOTO}} finishednonexec
| |
| {{Cl|END IF}}
| |
|
| |
| {{Cl|IF}} a3u$ = {{Text|<nowiki>"$COLOR:0"</nowiki>|#FFB100}} {{Cl|THEN}}
| |
| layout$ = {{Text|SCase$|#55FF55}}({{Text|<nowiki>"$Color:0"</nowiki>|#FFB100}})
| |
| {{Cl|IF}} qb64prefix_set {{Cl|THEN}}
| |
| addmetainclude$ = {{Text|getfilepath$|#55FF55}}({{Cl|COMMAND$}}({{Text|0|#F580B1}})) + {{Text|<nowiki>"internal"</nowiki>|#FFB100}} + pathsep$ + {{Text|<nowiki>"support"</nowiki>|#FFB100}} + pathsep$ + {{Text|<nowiki>"color"</nowiki>|#FFB100}} + pathsep$ + {{Text|<nowiki>"color0_noprefix.bi"</nowiki>|#FFB100}}
| |
| {{Cl|ELSE}}
| |
| addmetainclude$ = {{Text|getfilepath$|#55FF55}}({{Cl|COMMAND$}}({{Text|0|#F580B1}})) + {{Text|<nowiki>"internal"</nowiki>|#FFB100}} + pathsep$ + {{Text|<nowiki>"support"</nowiki>|#FFB100}} + pathsep$ + {{Text|<nowiki>"color"</nowiki>|#FFB100}} + pathsep$ + {{Text|<nowiki>"color0.bi"</nowiki>|#FFB100}}
| |
| {{Cl|END IF}}
| |
| layoutdone = {{Text|1|#F580B1}}
| |
| {{Cl|GOTO}} finishednonexec
| |
| {{Cl|END IF}}
| |
|
| |
| {{Cl|IF}} a3u$ = {{Text|<nowiki>"$COLOR:32"</nowiki>|#FFB100}} {{Cl|THEN}}
| |
| layout$ = {{Text|SCase$|#55FF55}}({{Text|<nowiki>"$Color:32"</nowiki>|#FFB100}})
| |
| {{Cl|IF}} qb64prefix_set {{Cl|THEN}}
| |
| addmetainclude$ = {{Text|getfilepath$|#55FF55}}({{Cl|COMMAND$}}({{Text|0|#F580B1}})) + {{Text|<nowiki>"internal"</nowiki>|#FFB100}} + pathsep$ + {{Text|<nowiki>"support"</nowiki>|#FFB100}} + pathsep$ + {{Text|<nowiki>"color"</nowiki>|#FFB100}} + pathsep$ + {{Text|<nowiki>"color32_noprefix.bi"</nowiki>|#FFB100}}
| |
| {{Cl|ELSE}}
| |
| addmetainclude$ = {{Text|getfilepath$|#55FF55}}({{Cl|COMMAND$}}({{Text|0|#F580B1}})) + {{Text|<nowiki>"internal"</nowiki>|#FFB100}} + pathsep$ + {{Text|<nowiki>"support"</nowiki>|#FFB100}} + pathsep$ + {{Text|<nowiki>"color"</nowiki>|#FFB100}} + pathsep$ + {{Text|<nowiki>"color32.bi"</nowiki>|#FFB100}}
| |
| {{Cl|END IF}}
| |
| layoutdone = {{Text|1|#F580B1}}
| |
| {{Cl|GOTO}} finishednonexec
| |
| {{Cl|END IF}}
| |
|
| |
| {{Cl|IF}} a3u$ = {{Text|<nowiki>"$NOPREFIX"</nowiki>|#FFB100}} {{Cl|THEN}}
| |
| {{Text|<nowiki>'already set in prepass</nowiki>|#919191}}
| |
| layout$ = {{Text|SCase$|#55FF55}}({{Text|<nowiki>"$NoPrefix"</nowiki>|#FFB100}})
| |
| {{Cl|GOTO}} finishednonexec
| |
| {{Cl|END IF}}
| |
|
| |
| {{Cl|IF}} a3u$ = {{Text|<nowiki>"$VIRTUALKEYBOARD:ON"</nowiki>|#FFB100}} {{Cl|THEN}}
| |
| {{Text|<nowiki>'Deprecated; does nothing.</nowiki>|#919191}}
| |
| layout$ = {{Text|SCase$|#55FF55}}({{Text|<nowiki>"$VirtualKeyboard:On"</nowiki>|#FFB100}})
| |
| {{Text|addWarning|#55FF55}} linenumber, inclevel, inclinenumber(inclevel), incname$(inclevel), {{Text|<nowiki>"Deprecated feature"</nowiki>|#FFB100}}, {{Text|<nowiki>"$VirtualKeyboard"</nowiki>|#FFB100}}
| |
| {{Cl|GOTO}} finishednonexec
| |
| {{Cl|END IF}}
| |
|
| |
| {{Cl|IF}} a3u$ = {{Text|<nowiki>"$VIRTUALKEYBOARD:OFF"</nowiki>|#FFB100}} {{Cl|THEN}}
| |
| {{Text|<nowiki>'Deprecated; does nothing.</nowiki>|#919191}}
| |
| layout$ = {{Text|SCase$|#55FF55}}({{Text|<nowiki>"$VirtualKeyboard:Off"</nowiki>|#FFB100}})
| |
| {{Text|addWarning|#55FF55}} linenumber, inclevel, inclinenumber(inclevel), incname$(inclevel), {{Text|<nowiki>"Deprecated feature"</nowiki>|#FFB100}}, {{Text|<nowiki>"$VirtualKeyboard"</nowiki>|#FFB100}}
| |
| {{Cl|GOTO}} finishednonexec
| |
| {{Cl|END IF}}
| |
|
| |
| {{Cl|IF}} a3u$ = {{Text|<nowiki>"$DEBUG"</nowiki>|#FFB100}} {{Cl|THEN}}
| |
| layout$ = {{Text|SCase$|#55FF55}}({{Text|<nowiki>"$Debug"</nowiki>|#FFB100}})
| |
| {{Cl|IF}} NoIDEMode {{Cl|THEN}}
| |
| {{Text|addWarning|#55FF55}} linenumber, inclevel, inclinenumber(inclevel), incname$(inclevel), {{Text|<nowiki>"$Debug"</nowiki>|#FFB100}}, {{Text|<nowiki>"$Debug features only work from the IDE"</nowiki>|#FFB100}}
| |
| {{Cl|END IF}}
| |
| {{Cl|GOTO}} finishednonexec
| |
| {{Cl|END IF}}
| |
|
| |
| {{Cl|IF}} a3u$ = {{Text|<nowiki>"$CHECKING:OFF"</nowiki>|#FFB100}} {{Cl|THEN}}
| |
| layout$ = {{Text|SCase$|#55FF55}}({{Text|<nowiki>"$Checking:Off"</nowiki>|#FFB100}})
| |
| NoChecks = {{Text|1|#F580B1}}
| |
| {{Cl|IF}} vWatchOn <> {{Text|0|#F580B1}} {{Cl|AND (boolean)|AND}} NoIDEMode = {{Text|0|#F580B1}} {{Cl|AND (boolean)|AND}} inclevel = {{Text|0|#F580B1}} {{Cl|THEN}}
| |
| {{Text|addWarning|#55FF55}} linenumber, inclevel, inclinenumber(inclevel), incname$(inclevel), {{Text|<nowiki>"$Debug"</nowiki>|#FFB100}}, {{Text|<nowiki>"$Debug features won't work in $Checking:Off blocks"</nowiki>|#FFB100}}
| |
| {{Cl|END IF}}
| |
| {{Cl|GOTO}} finishednonexec
| |
| {{Cl|END IF}}
| |
|
| |
| {{Cl|IF}} a3u$ = {{Text|<nowiki>"$CHECKING:ON"</nowiki>|#FFB100}} {{Cl|THEN}}
| |
| layout$ = {{Text|SCase$|#55FF55}}({{Text|<nowiki>"$Checking:On"</nowiki>|#FFB100}})
| |
| NoChecks = {{Text|0|#F580B1}}
| |
| {{Cl|GOTO}} finishednonexec
| |
| {{Cl|END IF}}
| |
|
| |
| {{Cl|IF}} a3u$ = {{Text|<nowiki>"$CONSOLE"</nowiki>|#FFB100}} {{Cl|THEN}}
| |
| layout$ = {{Text|SCase$|#55FF55}}({{Text|<nowiki>"$Console"</nowiki>|#FFB100}})
| |
| Console = {{Text|1|#F580B1}}
| |
| {{Cl|GOTO}} finishednonexec
| |
| {{Cl|END IF}}
| |
|
| |
| {{Cl|IF}} a3u$ = {{Text|<nowiki>"$CONSOLE:ONLY"</nowiki>|#FFB100}} {{Cl|THEN}}
| |
| layout$ = {{Text|SCase$|#55FF55}}({{Text|<nowiki>"$Console:Only"</nowiki>|#FFB100}})
| |
| DEPENDENCY(DEPENDENCY_CONSOLE_ONLY) = DEPENDENCY(DEPENDENCY_CONSOLE_ONLY) {{Cl|OR}} {{Text|1|#F580B1}}
| |
| Console = {{Text|1|#F580B1}}
| |
| {{Cl|IF}} prepass = {{Text|0|#F580B1}} {{Cl|THEN}}
| |
| {{Cl|IF}} NoChecks = {{Text|0|#F580B1}} {{Cl|THEN}} {{Text|WriteBufLine|#55FF55}} MainTxtBuf, {{Text|<nowiki>"do{"</nowiki>|#FFB100}}
| |
| {{Text|WriteBufLine|#55FF55}} MainTxtBuf, {{Text|<nowiki>"sub__dest(func__console());"</nowiki>|#FFB100}}
| |
| {{Text|WriteBufLine|#55FF55}} MainTxtBuf, {{Text|<nowiki>"sub__source(func__console());"</nowiki>|#FFB100}}
| |
| {{Cl|GOTO}} finishedline2
| |
| {{Cl|ELSE}}
| |
| {{Cl|GOTO}} finishednonexec
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}}
| |
|
| |
| {{Cl|IF}} a3u$ = {{Text|<nowiki>"$ASSERTS"</nowiki>|#FFB100}} {{Cl|THEN}}
| |
| layout$ = {{Text|SCase$|#55FF55}}({{Text|<nowiki>"$Asserts"</nowiki>|#FFB100}})
| |
| Asserts = {{Text|1|#F580B1}}
| |
| {{Cl|GOTO}} finishednonexec
| |
| {{Cl|END IF}}
| |
|
| |
| {{Cl|IF}} a3u$ = {{Text|<nowiki>"$ASSERTS:CONSOLE"</nowiki>|#FFB100}} {{Cl|THEN}}
| |
| layout$ = {{Text|SCase$|#55FF55}}({{Text|<nowiki>"$Asserts:Console"</nowiki>|#FFB100}})
| |
| Asserts = {{Text|1|#F580B1}}
| |
| Console = {{Text|1|#F580B1}}
| |
| {{Cl|GOTO}} finishednonexec
| |
| {{Cl|END IF}}
| |
|
| |
| {{Cl|IF}} a3u$ = {{Text|<nowiki>"$SCREENHIDE"</nowiki>|#FFB100}} {{Cl|THEN}}
| |
| layout$ = {{Text|SCase$|#55FF55}}({{Text|<nowiki>"$ScreenHide"</nowiki>|#FFB100}})
| |
| ScreenHide = {{Text|1|#F580B1}}
| |
| {{Cl|GOTO}} finishednonexec
| |
| {{Cl|END IF}}
| |
| {{Cl|IF}} a3u$ = {{Text|<nowiki>"$SCREENSHOW"</nowiki>|#FFB100}} {{Cl|THEN}}
| |
| layout$ = {{Text|SCase$|#55FF55}}({{Text|<nowiki>"$ScreenShow"</nowiki>|#FFB100}})
| |
| ScreenHide = {{Text|0|#F580B1}}
| |
| {{Cl|GOTO}} finishednonexec
| |
| {{Cl|END IF}}
| |
|
| |
| {{Cl|IF}} a3u$ = {{Text|<nowiki>"$RESIZE:OFF"</nowiki>|#FFB100}} {{Cl|THEN}}
| |
| layout$ = {{Text|SCase$|#55FF55}}({{Text|<nowiki>"$Resize:Off"</nowiki>|#FFB100}})
| |
| Resize = {{Text|0|#F580B1}}: Resize_Scale = {{Text|0|#F580B1}}
| |
| {{Cl|GOTO}} finishednonexec
| |
| {{Cl|END IF}}
| |
| {{Cl|IF}} a3u$ = {{Text|<nowiki>"$RESIZE:ON"</nowiki>|#FFB100}} {{Cl|THEN}}
| |
| layout$ = {{Text|SCase$|#55FF55}}({{Text|<nowiki>"$Resize:On"</nowiki>|#FFB100}})
| |
| Resize = {{Text|1|#F580B1}}: Resize_Scale = {{Text|0|#F580B1}}
| |
| {{Cl|GOTO}} finishednonexec
| |
| {{Cl|END IF}}
| |
|
| |
| {{Cl|IF}} a3u$ = {{Text|<nowiki>"$RESIZE:STRETCH"</nowiki>|#FFB100}} {{Cl|THEN}}
| |
| layout$ = {{Text|SCase$|#55FF55}}({{Text|<nowiki>"$Resize:Stretch"</nowiki>|#FFB100}})
| |
| Resize = {{Text|1|#F580B1}}: Resize_Scale = {{Text|1|#F580B1}}
| |
| {{Cl|GOTO}} finishednonexec
| |
| {{Cl|END IF}}
| |
| {{Cl|IF}} a3u$ = {{Text|<nowiki>"$RESIZE:SMOOTH"</nowiki>|#FFB100}} {{Cl|THEN}}
| |
| layout$ = {{Text|SCase$|#55FF55}}({{Text|<nowiki>"$Resize:Smooth"</nowiki>|#FFB100}})
| |
| Resize = {{Text|1|#F580B1}}: Resize_Scale = {{Text|2|#F580B1}}
| |
| {{Cl|GOTO}} finishednonexec
| |
| {{Cl|END IF}}
| |
|
| |
| {{Cl|IF}} {{Cl|LEFT$}}(a3u$, {{Text|12|#F580B1}}) = {{Text|<nowiki>"$VERSIONINFO"</nowiki>|#FFB100}} {{Cl|THEN}}
| |
| {{Text|<nowiki>'Embed version info into the final binary (Windows only)</nowiki>|#919191}}
| |
| FirstDelimiter = {{Cl|INSTR}}(a3u$, {{Text|<nowiki>":"</nowiki>|#FFB100}})
| |
| SecondDelimiter = {{Cl|INSTR}}(FirstDelimiter + {{Text|1|#F580B1}}, a3u$, {{Text|<nowiki>"="</nowiki>|#FFB100}})
| |
| {{Cl|IF}} FirstDelimiter = {{Text|0|#F580B1}} {{Cl|OR (boolean)|OR}} SecondDelimiter = {{Text|0|#F580B1}} {{Cl|OR (boolean)|OR}} SecondDelimiter = FirstDelimiter + {{Text|1|#F580B1}} {{Cl|THEN}}
| |
| a$ = {{Text|<nowiki>"Expected $VERSIONINFO:key=value"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
| |
| {{Cl|END IF}}
| |
|
| |
| VersionInfoKey$ = {{Cl|LTRIM$}}({{Cl|RTRIM$}}({{Cl|MID$ (function)|MID$}}(a3u$, FirstDelimiter + {{Text|1|#F580B1}}, SecondDelimiter - FirstDelimiter - {{Text|1|#F580B1}})))
| |
| VersionInfoValue$ = {{Text|StrReplace$|#55FF55}}({{Cl|LTRIM$}}({{Cl|RTRIM$}}({{Cl|MID$ (function)|MID$}}(a3$, SecondDelimiter + {{Text|1|#F580B1}}))), {{Cl|CHR$}}({{Text|34|#F580B1}}), {{Text|<nowiki>"'"</nowiki>|#FFB100}})
| |
|
| |
| {{Cl|SELECT CASE}} VersionInfoKey$
| |
| {{Cl|CASE}} {{Text|<nowiki>"FILEVERSION#"</nowiki>|#FFB100}}
| |
| {{Cl|GOSUB}} ValidateVersion
| |
| viFileVersionNum$ = VersionInfoValue$
| |
| {{Cl|IF}} viFileVersion$ = {{Text|<nowiki>""</nowiki>|#FFB100}} {{Cl|THEN}} viFileVersion$ = viFileVersionNum$
| |
| layout$ = {{Text|SCase$|#55FF55}}({{Text|<nowiki>"$VersionInfo:FILEVERSION#="</nowiki>|#FFB100}}) + VersionInfoValue$
| |
| {{Cl|CASE}} {{Text|<nowiki>"PRODUCTVERSION#"</nowiki>|#FFB100}}
| |
| {{Cl|GOSUB}} ValidateVersion
| |
| viProductVersionNum$ = VersionInfoValue$
| |
| {{Cl|IF}} viProductVersion$ = {{Text|<nowiki>""</nowiki>|#FFB100}} {{Cl|THEN}} viProductVersion$ = viProductVersionNum$
| |
| layout$ = {{Text|SCase$|#55FF55}}({{Text|<nowiki>"$VersionInfo:PRODUCTVERSION#="</nowiki>|#FFB100}}) + VersionInfoValue$
| |
| {{Cl|CASE}} {{Text|<nowiki>"COMPANYNAME"</nowiki>|#FFB100}}
| |
| viCompanyName$ = VersionInfoValue$
| |
| layout$ = {{Text|SCase$|#55FF55}}({{Text|<nowiki>"$VersionInfo:"</nowiki>|#FFB100}}) + {{Text|<nowiki>"CompanyName="</nowiki>|#FFB100}} + VersionInfoValue$
| |
| {{Cl|CASE}} {{Text|<nowiki>"FILEDESCRIPTION"</nowiki>|#FFB100}}
| |
| viFileDescription$ = VersionInfoValue$
| |
| layout$ = {{Text|SCase$|#55FF55}}({{Text|<nowiki>"$VersionInfo:"</nowiki>|#FFB100}}) + {{Text|<nowiki>"FileDescription="</nowiki>|#FFB100}} + VersionInfoValue$
| |
| {{Cl|CASE}} {{Text|<nowiki>"FILEVERSION"</nowiki>|#FFB100}}
| |
| viFileVersion$ = VersionInfoValue$
| |
| layout$ = {{Text|SCase$|#55FF55}}({{Text|<nowiki>"$VersionInfo:"</nowiki>|#FFB100}}) + {{Text|<nowiki>"FileVersion="</nowiki>|#FFB100}} + VersionInfoValue$
| |
| {{Cl|CASE}} {{Text|<nowiki>"INTERNALNAME"</nowiki>|#FFB100}}
| |
| viInternalName$ = VersionInfoValue$
| |
| layout$ = {{Text|SCase$|#55FF55}}({{Text|<nowiki>"$VersionInfo:"</nowiki>|#FFB100}}) + {{Text|<nowiki>"InternalName="</nowiki>|#FFB100}} + VersionInfoValue$
| |
| {{Cl|CASE}} {{Text|<nowiki>"LEGALCOPYRIGHT"</nowiki>|#FFB100}}
| |
| viLegalCopyright$ = VersionInfoValue$
| |
| layout$ = {{Text|SCase$|#55FF55}}({{Text|<nowiki>"$VersionInfo:"</nowiki>|#FFB100}}) + {{Text|<nowiki>"LegalCopyright="</nowiki>|#FFB100}} + VersionInfoValue$
| |
| {{Cl|CASE}} {{Text|<nowiki>"LEGALTRADEMARKS"</nowiki>|#FFB100}}
| |
| viLegalTrademarks$ = VersionInfoValue$
| |
| layout$ = {{Text|SCase$|#55FF55}}({{Text|<nowiki>"$VersionInfo:"</nowiki>|#FFB100}}) + {{Text|<nowiki>"LegalTrademarks="</nowiki>|#FFB100}} + VersionInfoValue$
| |
| {{Cl|CASE}} {{Text|<nowiki>"ORIGINALFILENAME"</nowiki>|#FFB100}}
| |
| viOriginalFilename$ = VersionInfoValue$
| |
| layout$ = {{Text|SCase$|#55FF55}}({{Text|<nowiki>"$VersionInfo:"</nowiki>|#FFB100}}) + {{Text|<nowiki>"OriginalFilename="</nowiki>|#FFB100}} + VersionInfoValue$
| |
| {{Cl|CASE}} {{Text|<nowiki>"PRODUCTNAME"</nowiki>|#FFB100}}
| |
| viProductName$ = VersionInfoValue$
| |
| layout$ = {{Text|SCase$|#55FF55}}({{Text|<nowiki>"$VersionInfo:"</nowiki>|#FFB100}}) + {{Text|<nowiki>"ProductName="</nowiki>|#FFB100}} + VersionInfoValue$
| |
| {{Cl|CASE}} {{Text|<nowiki>"PRODUCTVERSION"</nowiki>|#FFB100}}
| |
| viProductVersion$ = VersionInfoValue$
| |
| layout$ = {{Text|SCase$|#55FF55}}({{Text|<nowiki>"$VersionInfo:"</nowiki>|#FFB100}}) + {{Text|<nowiki>"ProductVersion="</nowiki>|#FFB100}} + VersionInfoValue$
| |
| {{Cl|CASE}} {{Text|<nowiki>"COMMENTS"</nowiki>|#FFB100}}
| |
| viComments$ = VersionInfoValue$
| |
| layout$ = {{Text|SCase$|#55FF55}}({{Text|<nowiki>"$VersionInfo:"</nowiki>|#FFB100}}) + {{Text|<nowiki>"Comments="</nowiki>|#FFB100}} + VersionInfoValue$
| |
| {{Cl|CASE}} {{Text|<nowiki>"WEB"</nowiki>|#FFB100}}
| |
| viWeb$ = VersionInfoValue$
| |
| layout$ = {{Text|SCase$|#55FF55}}({{Text|<nowiki>"$VersionInfo:"</nowiki>|#FFB100}}) + {{Text|<nowiki>"Web="</nowiki>|#FFB100}} + VersionInfoValue$
| |
| {{Cl|CASE}} {{Cl|ELSE}}
| |
| a$ = {{Text|<nowiki>"Invalid key. (Use FILEVERSION#, PRODUCTVERSION#, CompanyName, FileDescription, FileVersion, InternalName, LegalCopyright, LegalTrademarks, OriginalFilename, ProductName, ProductVersion, Comments or Web)"</nowiki>|#FFB100}}
| |
| {{Cl|GOTO}} errmes
| |
| {{Cl|END SELECT}}
| |
|
| |
| VersionInfoSet = {{Text|-1|#F580B1}}
| |
|
| |
| {{Cl|GOTO}} finishednonexec
| |
|
| |
| ValidateVersion:
| |
| {{Text|<nowiki>'Check if only numbers and commas (4 comma-separated values)</nowiki>|#919191}}
| |
| {{Cl|IF}} {{Cl|LEN}}(VersionInfoValue$) = {{Text|0|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Expected $VERSIONINFO:"</nowiki>|#FFB100}} + VersionInfoKey$ + {{Text|<nowiki>"=#,#,#,# (4 comma-separated numeric values: major, minor, revision and build)"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
| |
| viCommas = {{Text|0|#F580B1}}
| |
| {{Cl|FOR}} i = {{Text|1|#F580B1}} {{Cl|TO}} {{Cl|LEN}}(VersionInfoValue$)
| |
| {{Cl|IF}} {{Cl|ASC (function)|ASC}}(VersionInfoValue$, i) = {{Text|44|#F580B1}} {{Cl|THEN}} viCommas = viCommas + {{Text|1|#F580B1}}
| |
| {{Cl|IF}} {{Cl|INSTR}}({{Text|<nowiki>"0123456789,"</nowiki>|#FFB100}}, {{Cl|MID$ (function)|MID$}}(VersionInfoValue$, i, {{Text|1|#F580B1}})) = {{Text|0|#F580B1}} {{Cl|OR (boolean)|OR}} (i = {{Cl|LEN}}(VersionInfoValue$) {{Cl|AND (boolean)|AND}} viCommas <> {{Text|3|#F580B1}}) {{Cl|OR (boolean)|OR}} {{Cl|RIGHT$}}(VersionInfoValue$, {{Text|1|#F580B1}}) = {{Text|<nowiki>","</nowiki>|#FFB100}} {{Cl|THEN}}
| |
| a$ = {{Text|<nowiki>"Expected $VERSIONINFO:"</nowiki>|#FFB100}} + VersionInfoKey$ + {{Text|<nowiki>"=#,#,#,# (4 comma-separated numeric values: major, minor, revision and build)"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
| |
| {{Cl|END IF}}
| |
| {{Cl|NEXT}}
| |
| {{Cl|RETURN}}
| |
| {{Cl|END IF}}
| |
|
| |
| {{Cl|IF}} {{Cl|LEFT$}}(a3u$, {{Text|8|#F580B1}}) = {{Text|<nowiki>"$EXEICON"</nowiki>|#FFB100}} {{Cl|THEN}}
| |
| {{Text|<nowiki>'Basic syntax check. Multi-platform.</nowiki>|#919191}}
| |
| {{Cl|IF}} ExeIconSet {{Cl|THEN}} a$ = {{Text|<nowiki>"$EXEICON already defined"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
| |
| FirstDelimiter = {{Cl|INSTR}}(a3u$, {{Text|<nowiki>"'"</nowiki>|#FFB100}})
| |
| {{Cl|IF}} FirstDelimiter = {{Text|0|#F580B1}} {{Cl|THEN}}
| |
| a$ = {{Text|<nowiki>"Expected $EXEICON:'filename'"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
| |
| {{Cl|ELSE}}
| |
| SecondDelimiter = {{Cl|INSTR}}(FirstDelimiter + {{Text|1|#F580B1}}, a3u$, {{Text|<nowiki>"'"</nowiki>|#FFB100}})
| |
| {{Cl|IF}} SecondDelimiter = {{Text|0|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Expected $EXEICON:'filename'"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
| |
| {{Cl|END IF}}
| |
| ExeIconFile$ = {{Cl|RTRIM$}}({{Cl|LTRIM$}}({{Cl|MID$ (function)|MID$}}(a3$, FirstDelimiter + {{Text|1|#F580B1}}, SecondDelimiter - FirstDelimiter - {{Text|1|#F580B1}})))
| |
| {{Cl|IF}} {{Cl|LEN}}(ExeIconFile$) = {{Text|0|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Expected $EXEICON:'filename'"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
| |
| layout$ = {{Text|SCase$|#55FF55}}({{Text|<nowiki>"$ExeIcon:'"</nowiki>|#FFB100}}) + ExeIconFile$ + {{Text|<nowiki>"'"</nowiki>|#FFB100}} + {{Cl|MID$ (function)|MID$}}(a3$, SecondDelimiter + {{Text|1|#F580B1}})
| |
|
| |
| IconPath$ = {{Text|<nowiki>""</nowiki>|#FFB100}}
| |
| {{Cl|IF}} {{Cl|LEFT$}}(ExeIconFile$, {{Text|2|#F580B1}}) = {{Text|<nowiki>"./"</nowiki>|#FFB100}} {{Cl|OR (boolean)|OR}} {{Cl|LEFT$}}(ExeIconFile$, {{Text|2|#F580B1}}) = {{Text|<nowiki>".\"</nowiki>|#FFB100}} {{Cl|THEN}}
| |
| {{Text|<nowiki>'Relative to source file's folder</nowiki>|#919191}}
| |
| {{Cl|IF}} NoIDEMode {{Cl|THEN}}
| |
| IconPath$ = path.source$
| |
| {{Cl|IF}} {{Cl|LEN}}(IconPath$) > {{Text|0|#F580B1}} {{Cl|AND (boolean)|AND}} {{Cl|RIGHT$}}(IconPath$, {{Text|1|#F580B1}}) <> pathsep$ {{Cl|THEN}} IconPath$ = IconPath$ + pathsep$
| |
| {{Cl|ELSE}}
| |
| {{Cl|IF}} {{Cl|LEN}}(ideprogname) {{Cl|THEN}} IconPath$ = idepath$ + pathsep$
| |
| {{Cl|END IF}}
| |
|
| |
| ExeIconFile$ = IconPath$ + {{Cl|MID$ (function)|MID$}}(ExeIconFile$, {{Text|3|#F580B1}})
| |
| {{Cl|ELSEIF}} {{Cl|INSTR}}(ExeIconFile$, {{Text|<nowiki>"/"</nowiki>|#FFB100}}) {{Cl|OR (boolean)|OR}} {{Cl|INSTR}}(ExeIconFile$, {{Text|<nowiki>"\"</nowiki>|#FFB100}}) {{Cl|THEN}}
| |
| {{Cl|FOR}} i = {{Cl|LEN}}(ExeIconFile$) {{Cl|TO}} {{Text|1|#F580B1}} {{Cl|STEP}} {{Text|-1|#F580B1}}
| |
| {{Cl|IF}} {{Cl|MID$ (function)|MID$}}(ExeIconFile$, i, {{Text|1|#F580B1}}) = {{Text|<nowiki>"/"</nowiki>|#FFB100}} {{Cl|OR (boolean)|OR}} {{Cl|MID$ (function)|MID$}}(ExeIconFile$, i, {{Text|1|#F580B1}}) = {{Text|<nowiki>"\"</nowiki>|#FFB100}} {{Cl|THEN}}
| |
| IconPath$ = {{Cl|LEFT$}}(ExeIconFile$, i)
| |
| ExeIconFileOnly$ = {{Cl|MID$ (function)|MID$}}(ExeIconFile$, i + {{Text|1|#F580B1}})
| |
|
| |
| {{Cl|IF}} {{Cl|_DIREXISTS}}(IconPath$) = {{Text|0|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"File '"</nowiki>|#FFB100}} + ExeIconFileOnly$ + {{Text|<nowiki>"' not found"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
| |
|
| |
| currentdir$ = {{Cl|_CWD$}}
| |
| {{Cl|CHDIR}} IconPath$
| |
| IconPath$ = {{Cl|_CWD$}}
| |
| {{Cl|CHDIR}} currentdir$
| |
|
| |
| ExeIconFile$ = IconPath$ + pathsep$ + ExeIconFileOnly$
| |
| {{Cl|EXIT FOR}}
| |
| {{Cl|END IF}}
| |
| {{Cl|NEXT}}
| |
| {{Cl|END IF}}
| |
|
| |
| {{Cl|IF}} {{Cl|_FILEEXISTS}}(ExeIconFile$) = {{Text|0|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"File '"</nowiki>|#FFB100}} + ExeIconFile$ + {{Text|<nowiki>"' not found"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
| |
|
| |
| ExeIconSet = linenumber
| |
| {{Text|SetDependency|#55FF55}} DEPENDENCY_ICON
| |
| {{Cl|IF}} NoChecks = {{Text|0|#F580B1}} {{Cl|THEN}} {{Text|WriteBufLine|#55FF55}} MainTxtBuf, {{Text|<nowiki>"do{"</nowiki>|#FFB100}}
| |
| {{Text|WriteBufLine|#55FF55}} MainTxtBuf, {{Text|<nowiki>"sub__icon(NULL,NULL,0);"</nowiki>|#FFB100}}
| |
| {{Cl|GOTO}} finishedline2
| |
| {{Cl|END IF}}
| |
|
| |
| {{Cl|IF}} {{Cl|LEFT$}}(a3u$, {{Text|10|#F580B1}}) = {{Text|<nowiki>"$UNSTABLE:"</nowiki>|#FFB100}} {{Cl|THEN}}
| |
| layout$ = {{Text|SCase|#55FF55}}({{Text|<nowiki>"$Unstable:"</nowiki>|#FFB100}})
| |
|
| |
| token$ = {{Cl|LTRIM$}}({{Cl|RTRIM$}}({{Cl|MID$ (function)|MID$}}(a3u$, {{Text|11|#F580B1}})))
| |
|
| |
| {{Cl|SELECT CASE}} token$
| |
| {{Cl|CASE}} {{Text|<nowiki>"MIDI"</nowiki>|#FFB100}}
| |
| layout$ = layout$ + {{Text|SCase$|#55FF55}}({{Text|<nowiki>"Midi"</nowiki>|#FFB100}})
| |
| {{Cl|CASE}} {{Text|<nowiki>"HTTP"</nowiki>|#FFB100}}
| |
| layout$ = layout$ + {{Text|SCase$|#55FF55}}({{Text|<nowiki>"Http"</nowiki>|#FFB100}})
| |
| {{Cl|END SELECT}}
| |
|
| |
| {{Cl|GOTO}} finishednonexec
| |
| {{Cl|END IF}}
| |
|
| |
| {{Cl|IF}} unstableFlags(UNSTABLE_MIDI) {{Cl|THEN}}
| |
| {{Cl|IF}} {{Cl|LEFT$}}(a3u$, {{Text|15|#F580B1}}) = {{Text|<nowiki>"$MIDISOUNDFONT:"</nowiki>|#FFB100}} {{Cl|THEN}}
| |
| {{Cl|IF}} MidiSoundFontSet {{Cl|THEN}}
| |
| a$ = {{Text|<nowiki>"$MIDISOUNDFONT already defined"</nowiki>|#FFB100}}
| |
| {{Cl|GOTO}} errmes
| |
| {{Cl|END IF}}
| |
|
| |
| layout$ = {{Text|SCase$|#55FF55}}({{Text|<nowiki>"$MidiSoundFont:"</nowiki>|#FFB100}})
| |
|
| |
| MidiSoundFont$ = {{Cl|LTRIM$}}({{Cl|RTRIM$}}({{Cl|MID$ (function)|MID$}}(a3$, {{Text|16|#F580B1}})))
| |
|
| |
| {{Cl|IF}} {{Cl|MID$ (function)|MID$}}(MidiSoundFont$, {{Text|1|#F580B1}}, {{Text|1|#F580B1}}) = {{Cl|CHR$}}({{Text|34|#F580B1}}) {{Cl|THEN}}
| |
| {{Text|<nowiki>' We have a quoted filename, verify it is valid</nowiki>|#919191}}
| |
|
| |
| {{Text|<nowiki>' We don't touch the filename in the formatting</nowiki>|#919191}}
| |
| layout$ = layout$ + MidiSoundFont$
| |
|
| |
| {{Text|<nowiki>' Strip the leading quote</nowiki>|#919191}}
| |
| MidiSoundFont$ = {{Cl|MID$ (function)|MID$}}(MidiSoundFont$, {{Text|2|#F580B1}})
| |
|
| |
| {{Text|<nowiki>' Verify that there is a quote character at the end</nowiki>|#919191}}
| |
| {{Cl|IF}} {{Cl|INSTR}}(MidiSoundFont$, {{Cl|CHR$}}({{Text|34|#F580B1}})) = {{Text|0|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Expected "</nowiki>|#FFB100}} + {{Cl|CHR$}}({{Text|34|#F580B1}}) + {{Text|<nowiki>" character at the end of the file name"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
| |
|
| |
| {{Text|<nowiki>' Verify there are no extra characters after end quote</nowiki>|#919191}}
| |
| {{Cl|IF}} {{Cl|INSTR}}(MidiSoundFont$, {{Cl|CHR$}}({{Text|34|#F580B1}})) <> {{Cl|LEN}}(MidiSoundFont$) {{Cl|THEN}} a$ = {{Text|<nowiki>"Unexpected characters after the quoted file name"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
| |
|
| |
| MidiSoundFont$ = {{Cl|MID$ (function)|MID$}}(MidiSoundFont$, {{Text|1|#F580B1}}, {{Cl|LEN}}(MidiSoundFont$) - {{Text|1|#F580B1}})
| |
|
| |
| {{Cl|IF}} {{Cl|NOT}} {{Cl|_FILEEXISTS}}(MidiSoundFont$) {{Cl|THEN}}
| |
| a$ = {{Text|<nowiki>"Soundfont file "</nowiki>|#FFB100}} + {{Text|AddQuotes$|#55FF55}}(MidiSoundFont$) + {{Text|<nowiki>" could not be found!"</nowiki>|#FFB100}}
| |
| {{Cl|GOTO}} errmes
| |
| {{Cl|END IF}}
| |
| {{Cl|ELSE}}
| |
| {{Text|<nowiki>' Constant values, only one for now</nowiki>|#919191}}
| |
| {{Cl|SELECT CASE}} {{Cl|UCASE$}}(MidiSoundFont$)
| |
| {{Cl|CASE}} {{Text|<nowiki>"DEFAULT"</nowiki>|#FFB100}}
| |
| layout$ = layout$ + {{Text|SCase$|#55FF55}}({{Text|<nowiki>"Default"</nowiki>|#FFB100}})
| |
|
| |
| {{Text|<nowiki>' Clear MidiSoundFont$ to indicate the default should be used</nowiki>|#919191}}
| |
| MidiSoundFont$ = {{Text|<nowiki>""</nowiki>|#FFB100}}
| |
|
| |
| {{Cl|CASE}} {{Cl|ELSE}}
| |
| a$ = {{Text|<nowiki>"Unrecognized Soundfont option "</nowiki>|#FFB100}} + {{Text|AddQuotes$|#55FF55}}(MidiSoundFont$)
| |
| {{Cl|GOTO}} errmes
| |
| {{Cl|END SELECT}}
| |
| {{Cl|END IF}}
| |
|
| |
| MidiSoundFontSet = linenumber
| |
| MidiSoundFontLine$ = layout$
| |
| {{Cl|GOTO}} finishednonexec
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}}
| |
|
| |
| {{Cl|END IF}} {{Text|<nowiki>'QB64 Metacommands</nowiki>|#919191}}
| |
|
| |
| {{Cl|IF}} ExecLevel(ExecCounter) {{Cl|THEN}}
| |
| layoutdone = {{Text|0|#F580B1}}
| |
| {{Cl|GOTO}} finishednonexec {{Text|<nowiki>'we don't check for anything inside lines that we've marked for skipping</nowiki>|#919191}}
| |
| {{Cl|END IF}}
| |
|
| |
|
| |
| linedataoffset = DataOffset
| |
|
| |
| entireline$ = {{Text|lineformat|#55FF55}}(a3$): {{Cl|IF}} {{Cl|LEN}}(entireline$) = {{Text|0|#F580B1}} {{Cl|THEN}} {{Cl|GOTO}} finishednonexec
| |
| {{Cl|IF}} Error_Happened {{Cl|THEN}} {{Cl|GOTO}} errmes
| |
| u$ = {{Cl|UCASE$}}(entireline$)
| |
|
| |
| newif = {{Text|0|#F580B1}}
| |
|
| |
| {{Text|<nowiki>'Convert "CASE ELSE" to "CASE C-EL" to avoid confusing compiler</nowiki>|#919191}}
| |
| {{Text|<nowiki>'note: CASE does not have to begin on a new line</nowiki>|#919191}}
| |
| s = {{Text|1|#F580B1}}
| |
| i = {{Cl|INSTR}}(s, u$, {{Text|<nowiki>"CASE"</nowiki>|#FFB100}} + sp + {{Text|<nowiki>"ELSE"</nowiki>|#FFB100}})
| |
| {{Cl|DO...LOOP|DO WHILE}} i
| |
| skip = {{Text|0|#F580B1}}
| |
| {{Cl|IF}} i <> {{Text|1|#F580B1}} {{Cl|THEN}}
| |
| {{Cl|IF}} {{Cl|MID$ (function)|MID$}}(u$, i - {{Text|1|#F580B1}}, {{Text|1|#F580B1}}) <> sp {{Cl|THEN}} skip = {{Text|1|#F580B1}}
| |
| {{Cl|END IF}}
| |
| {{Cl|IF}} i <> {{Cl|LEN}}(u$) - {{Text|8|#F580B1}} {{Cl|THEN}}
| |
| {{Cl|IF}} {{Cl|MID$ (function)|MID$}}(u$, i + {{Text|9|#F580B1}}, {{Text|1|#F580B1}}) <> sp {{Cl|THEN}} skip = {{Text|1|#F580B1}}
| |
| {{Cl|END IF}}
| |
| {{Cl|IF}} skip = {{Text|0|#F580B1}} {{Cl|THEN}}
| |
| {{Cl|MID$}}(entireline$, i) = {{Text|<nowiki>"CASE"</nowiki>|#FFB100}} + sp + {{Text|<nowiki>"C-EL"</nowiki>|#FFB100}}
| |
| u$ = {{Cl|UCASE$}}(entireline$)
| |
| {{Cl|END IF}}
| |
| s = i + {{Text|9|#F580B1}}
| |
| i = {{Cl|INSTR}}(s, u$, {{Text|<nowiki>"CASE"</nowiki>|#FFB100}} + sp + {{Text|<nowiki>"ELSE"</nowiki>|#FFB100}})
| |
| {{Cl|LOOP}}
| |
|
| |
| n = {{Text|numelements|#55FF55}}(entireline$)
| |
|
| |
| {{Text|<nowiki>'line number?</nowiki>|#919191}}
| |
| a = {{Cl|ASC (function)|ASC}}(entireline$)
| |
| {{Cl|IF}} (a >= {{Text|48|#F580B1}} {{Cl|AND (boolean)|AND}} a <= {{Text|57|#F580B1}}) {{Cl|OR (boolean)|OR}} a = {{Text|46|#F580B1}} {{Cl|THEN}} {{Text|<nowiki>'numeric</nowiki>|#919191}}
| |
| label$ = {{Text|getelement|#55FF55}}(entireline$, {{Text|1|#F580B1}})
| |
| {{Cl|IF}} {{Text|validlabel|#55FF55}}(label$) {{Cl|THEN}}
| |
|
| |
| {{Cl|IF}} closedmain <> {{Text|0|#F580B1}} {{Cl|AND (boolean)|AND}} subfunc = {{Text|<nowiki>""</nowiki>|#FFB100}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Labels cannot be placed between SUB/FUNCTIONs"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
| |
|
| |
| v = {{Text|HashFind|#55FF55}}(label$, HASHFLAG_LABEL, ignore, r)
| |
| addlabchk100:
| |
| {{Cl|IF}} v {{Cl|THEN}}
| |
| s = Labels(r).{{Text|Scope|#55FF55}}
| |
| {{Cl|IF}} s = subfuncn {{Cl|OR (boolean)|OR}} s = {{Text|-1|#F580B1}} {{Cl|THEN}} {{Text|<nowiki>'same scope?</nowiki>|#919191}}
| |
| {{Cl|IF}} s = {{Text|-1|#F580B1}} {{Cl|THEN}} Labels(r).{{Text|Scope|#55FF55}} = subfuncn {{Text|<nowiki>'acquire scope</nowiki>|#919191}}
| |
| {{Cl|IF}} Labels(r).State = {{Text|1|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Duplicate label ("</nowiki>|#FFB100}} + {{Cl|RTRIM$}}(Labels(r).cn) + {{Text|<nowiki>")"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
| |
| {{Text|<nowiki>'aquire state 0 types</nowiki>|#919191}}
| |
| tlayout$ = {{Cl|RTRIM$}}(Labels(r).cn)
| |
| {{Cl|GOTO}} addlabaq100
| |
| {{Cl|END IF}} {{Text|<nowiki>'same scope</nowiki>|#919191}}
| |
| {{Cl|IF}} v = {{Text|2|#F580B1}} {{Cl|THEN}} v = {{Text|HashFindCont|#55FF55}}(ignore, r): {{Cl|GOTO}} addlabchk100
| |
| {{Cl|END IF}}
| |
|
| |
| {{Text|<nowiki>'does not exist</nowiki>|#919191}}
| |
| nLabels = nLabels + {{Text|1|#F580B1}}: {{Cl|IF}} nLabels > Labels_Ubound {{Cl|THEN}} Labels_Ubound = Labels_Ubound * {{Text|2|#F580B1}}: {{Cl|REDIM}} {{Cl|_PRESERVE}} Labels({{Text|1|#F580B1}} {{Cl|TO}} Labels_Ubound) {{Cl|AS}} Label_Type
| |
| Labels(nLabels) = Empty_Label
| |
| {{Text|HashAdd|#55FF55}} label$, HASHFLAG_LABEL, nLabels
| |
| r = nLabels
| |
| Labels(r).cn = tlayout$
| |
| Labels(r).{{Text|Scope|#55FF55}} = subfuncn
| |
| addlabaq100:
| |
| Labels(r).State = {{Text|1|#F580B1}}
| |
| Labels(r).Data_Offset = linedataoffset
| |
|
| |
| layout$ = tlayout$
| |
| {{Text|WriteBufLine|#55FF55}} MainTxtBuf, {{Text|<nowiki>"LABEL_"</nowiki>|#FFB100}} + label$ + {{Text|<nowiki>":;"</nowiki>|#FFB100}}
| |
|
| |
|
| |
| {{Cl|IF}} {{Cl|INSTR}}(label$, {{Text|<nowiki>"p"</nowiki>|#FFB100}}) {{Cl|THEN}} {{Cl|MID$}}(label$, {{Cl|INSTR}}(label$, {{Text|<nowiki>"p"</nowiki>|#FFB100}}), {{Text|1|#F580B1}}) = {{Text|<nowiki>"."</nowiki>|#FFB100}}
| |
| {{Cl|IF}} {{Cl|RIGHT$}}(label$, {{Text|1|#F580B1}}) = {{Text|<nowiki>"d"</nowiki>|#FFB100}} {{Cl|OR (boolean)|OR}} {{Cl|RIGHT$}}(label$, {{Text|1|#F580B1}}) = {{Text|<nowiki>"s"</nowiki>|#FFB100}} {{Cl|THEN}} label$ = {{Cl|LEFT$}}(label$, {{Cl|LEN}}(label$) - {{Text|1|#F580B1}})
| |
| {{Text|WriteBufLine|#55FF55}} MainTxtBuf, {{Text|<nowiki>"last_line="</nowiki>|#FFB100}} + label$ + {{Text|<nowiki>";"</nowiki>|#FFB100}}
| |
| inclinenump$ = {{Text|<nowiki>""</nowiki>|#FFB100}}
| |
| {{Cl|IF}} inclinenumber(inclevel) {{Cl|THEN}}
| |
| inclinenump$ = {{Text|<nowiki>","</nowiki>|#FFB100}} + {{Text|str2$|#55FF55}}(inclinenumber(inclevel))
| |
| thisincname$ = {{Text|getfilepath$|#55FF55}}(incname$(inclevel))
| |
| thisincname$ = {{Cl|MID$ (function)|MID$}}(incname$(inclevel), {{Cl|LEN}}(thisincname$) + {{Text|1|#F580B1}})
| |
| inclinenump$ = inclinenump$ + {{Text|<nowiki>","</nowiki>|#FFB100}} + {{Cl|CHR$}}({{Text|34|#F580B1}}) + thisincname$ + {{Cl|CHR$}}({{Text|34|#F580B1}})
| |
| {{Cl|END IF}}
| |
| {{Cl|IF}} NoChecks = {{Text|0|#F580B1}} {{Cl|THEN}}
| |
| {{Cl|IF}} vWatchOn {{Cl|AND (boolean)|AND}} inclinenumber(inclevel) = {{Text|0|#F580B1}} {{Cl|THEN}} temp$ = vWatchErrorCall$ {{Cl|ELSE}} temp$ = {{Text|<nowiki>""</nowiki>|#FFB100}}
| |
| {{Text|WriteBufLine|#55FF55}} MainTxtBuf, {{Text|<nowiki>"if(qbevent){"</nowiki>|#FFB100}} + temp$ + {{Text|<nowiki>"evnt("</nowiki>|#FFB100}} + {{Text|str2$|#55FF55}}(linenumber) + inclinenump$ + {{Text|<nowiki>");r=0;}"</nowiki>|#FFB100}}
| |
| {{Cl|END IF}}
| |
| {{Cl|IF}} n = {{Text|1|#F580B1}} {{Cl|THEN}} {{Cl|GOTO}} finishednonexec
| |
| entireline$ = {{Text|getelements|#55FF55}}(entireline$, {{Text|2|#F580B1}}, n): u$ = {{Cl|UCASE$}}(entireline$): n = n - {{Text|1|#F580B1}}
| |
| {{Text|<nowiki>'note: fall through, numeric labels can be followed by alphanumeric label</nowiki>|#919191}}
| |
| {{Cl|END IF}} {{Text|<nowiki>'validlabel</nowiki>|#919191}}
| |
| {{Cl|END IF}} {{Text|<nowiki>'numeric</nowiki>|#919191}}
| |
| {{Text|<nowiki>'it wasn't a line number</nowiki>|#919191}}
| |
|
| |
| {{Text|<nowiki>'label?</nowiki>|#919191}}
| |
| {{Text|<nowiki>'note: ignores possibility that this could be a single command SUB/FUNCTION (as in QBASIC?)</nowiki>|#919191}}
| |
| {{Cl|IF}} n >= {{Text|2|#F580B1}} {{Cl|THEN}}
| |
| x2 = {{Cl|INSTR}}(entireline$, sp + {{Text|<nowiki>":"</nowiki>|#FFB100}})
| |
| {{Cl|IF}} x2 {{Cl|THEN}}
| |
| {{Cl|IF}} x2 = {{Cl|LEN}}(entireline$) - {{Text|1|#F580B1}} {{Cl|THEN}} x3 = x2 + {{Text|1|#F580B1}} {{Cl|ELSE}} x3 = x2 + {{Text|2|#F580B1}}
| |
| a$ = {{Cl|LEFT$}}(entireline$, x2 - {{Text|1|#F580B1}})
| |
|
| |
| CreatingLabel = {{Text|1|#F580B1}}
| |
| {{Cl|IF}} {{Text|validlabel|#55FF55}}(a$) {{Cl|THEN}}
| |
|
| |
| {{Cl|IF}} {{Text|validname|#55FF55}}(a$) = {{Text|0|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Invalid name"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
| |
|
| |
| {{Cl|IF}} closedmain <> {{Text|0|#F580B1}} {{Cl|AND (boolean)|AND}} subfunc = {{Text|<nowiki>""</nowiki>|#FFB100}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Labels cannot be placed between SUB/FUNCTIONs"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
| |
|
| |
| v = {{Text|HashFind|#55FF55}}(a$, HASHFLAG_LABEL, ignore, r)
| |
| addlabchk:
| |
| {{Cl|IF}} v {{Cl|THEN}}
| |
| s = Labels(r).{{Text|Scope|#55FF55}}
| |
| {{Cl|IF}} s = subfuncn {{Cl|OR (boolean)|OR}} s = {{Text|-1|#F580B1}} {{Cl|THEN}} {{Text|<nowiki>'same scope?</nowiki>|#919191}}
| |
| {{Cl|IF}} s = {{Text|-1|#F580B1}} {{Cl|THEN}} Labels(r).{{Text|Scope|#55FF55}} = subfuncn {{Text|<nowiki>'acquire scope</nowiki>|#919191}}
| |
| {{Cl|IF}} Labels(r).State = {{Text|1|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Duplicate label ("</nowiki>|#FFB100}} + {{Cl|RTRIM$}}(Labels(r).cn) + {{Text|<nowiki>")"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
| |
| {{Text|<nowiki>'aquire state 0 types</nowiki>|#919191}}
| |
| tlayout$ = {{Cl|RTRIM$}}(Labels(r).cn)
| |
| {{Cl|GOTO}} addlabaq
| |
| {{Cl|END IF}} {{Text|<nowiki>'same scope</nowiki>|#919191}}
| |
| {{Cl|IF}} v = {{Text|2|#F580B1}} {{Cl|THEN}} v = {{Text|HashFindCont|#55FF55}}(ignore, r): {{Cl|GOTO}} addlabchk
| |
| {{Cl|END IF}}
| |
| {{Text|<nowiki>'does not exist</nowiki>|#919191}}
| |
| nLabels = nLabels + {{Text|1|#F580B1}}: {{Cl|IF}} nLabels > Labels_Ubound {{Cl|THEN}} Labels_Ubound = Labels_Ubound * {{Text|2|#F580B1}}: {{Cl|REDIM}} {{Cl|_PRESERVE}} Labels({{Text|1|#F580B1}} {{Cl|TO}} Labels_Ubound) {{Cl|AS}} Label_Type
| |
| Labels(nLabels) = Empty_Label
| |
| {{Text|HashAdd|#55FF55}} a$, HASHFLAG_LABEL, nLabels
| |
| r = nLabels
| |
| Labels(r).cn = tlayout$
| |
| Labels(r).{{Text|Scope|#55FF55}} = subfuncn
| |
| addlabaq:
| |
| Labels(r).State = {{Text|1|#F580B1}}
| |
| Labels(r).Data_Offset = linedataoffset
| |
| Labels(r).SourceLineNumber = linenumber
| |
|
| |
| {{Cl|IF}} {{Cl|LEN}}(layout$) {{Cl|THEN}} layout$ = layout$ + sp + tlayout$ + {{Text|<nowiki>":"</nowiki>|#FFB100}} {{Cl|ELSE}} layout$ = tlayout$ + {{Text|<nowiki>":"</nowiki>|#FFB100}}
| |
|
| |
| {{Text|WriteBufLine|#55FF55}} MainTxtBuf, {{Text|<nowiki>"LABEL_"</nowiki>|#FFB100}} + a$ + {{Text|<nowiki>":;"</nowiki>|#FFB100}}
| |
| inclinenump$ = {{Text|<nowiki>""</nowiki>|#FFB100}}
| |
| {{Cl|IF}} inclinenumber(inclevel) {{Cl|THEN}}
| |
| inclinenump$ = {{Text|<nowiki>","</nowiki>|#FFB100}} + {{Text|str2$|#55FF55}}(inclinenumber(inclevel))
| |
| thisincname$ = {{Text|getfilepath$|#55FF55}}(incname$(inclevel))
| |
| thisincname$ = {{Cl|MID$ (function)|MID$}}(incname$(inclevel), {{Cl|LEN}}(thisincname$) + {{Text|1|#F580B1}})
| |
| inclinenump$ = inclinenump$ + {{Text|<nowiki>","</nowiki>|#FFB100}} + {{Cl|CHR$}}({{Text|34|#F580B1}}) + thisincname$ + {{Cl|CHR$}}({{Text|34|#F580B1}})
| |
| {{Cl|END IF}}
| |
| {{Cl|IF}} NoChecks = {{Text|0|#F580B1}} {{Cl|THEN}}
| |
| {{Cl|IF}} vWatchOn {{Cl|AND (boolean)|AND}} inclinenumber(inclevel) = {{Text|0|#F580B1}} {{Cl|THEN}} temp$ = vWatchErrorCall$ {{Cl|ELSE}} temp$ = {{Text|<nowiki>""</nowiki>|#FFB100}}
| |
| {{Text|WriteBufLine|#55FF55}} MainTxtBuf, {{Text|<nowiki>"if(qbevent){"</nowiki>|#FFB100}} + temp$ + {{Text|<nowiki>"evnt("</nowiki>|#FFB100}} + {{Text|str2$|#55FF55}}(linenumber) + inclinenump$ + {{Text|<nowiki>");r=0;}"</nowiki>|#FFB100}}
| |
| {{Cl|END IF}}
| |
| entireline$ = {{Cl|RIGHT$}}(entireline$, {{Cl|LEN}}(entireline$) - x3): u$ = {{Cl|UCASE$}}(entireline$)
| |
| n = {{Text|numelements|#55FF55}}(entireline$): {{Cl|IF}} n = {{Text|0|#F580B1}} {{Cl|THEN}} {{Cl|GOTO}} finishednonexec
| |
| {{Cl|END IF}} {{Text|<nowiki>'valid</nowiki>|#919191}}
| |
| {{Cl|END IF}} {{Text|<nowiki>'includes sp+":"</nowiki>|#919191}}
| |
| {{Cl|END IF}} {{Text|<nowiki>'n>=2</nowiki>|#919191}}
| |
|
| |
| {{Text|<nowiki>'remove leading ":"</nowiki>|#919191}}
| |
| {{Cl|DO...LOOP|DO WHILE}} {{Cl|ASC (function)|ASC}}(u$) = {{Text|58|#F580B1}} {{Text|<nowiki>'":"</nowiki>|#919191}}
| |
| {{Cl|IF}} {{Cl|LEN}}(layout$) {{Cl|THEN}} layout$ = layout$ + sp2 + {{Text|<nowiki>":"</nowiki>|#FFB100}} {{Cl|ELSE}} layout$ = {{Text|<nowiki>":"</nowiki>|#FFB100}}
| |
| {{Cl|IF}} {{Cl|LEN}}(u$) = {{Text|1|#F580B1}} {{Cl|THEN}} {{Cl|GOTO}} finishednonexec
| |
| entireline$ = {{Text|getelements|#55FF55}}(entireline$, {{Text|2|#F580B1}}, n): u$ = {{Cl|UCASE$}}(entireline$): n = n - {{Text|1|#F580B1}}
| |
| {{Cl|LOOP}}
| |
|
| |
| {{Text|<nowiki>'ELSE at the beginning of a line</nowiki>|#919191}}
| |
| {{Cl|IF}} {{Cl|ASC (function)|ASC}}(u$) = {{Text|69|#F580B1}} {{Cl|THEN}} {{Text|<nowiki>'"E"</nowiki>|#919191}}
| |
|
| |
| e1$ = {{Text|getelement|#55FF55}}(u$, {{Text|1|#F580B1}})
| |
|
| |
| {{Cl|IF}} e1$ = {{Text|<nowiki>"ELSE"</nowiki>|#FFB100}} {{Cl|THEN}}
| |
| a$ = {{Text|<nowiki>"ELSE"</nowiki>|#FFB100}}
| |
| {{Cl|IF}} n > {{Text|1|#F580B1}} {{Cl|THEN}} continuelinefrom = {{Text|2|#F580B1}}
| |
| {{Cl|GOTO}} gotcommand
| |
| {{Cl|END IF}}
| |
|
| |
| {{Cl|IF}} e1$ = {{Text|<nowiki>"ELSEIF"</nowiki>|#FFB100}} {{Cl|THEN}}
| |
| {{Cl|IF}} n < {{Text|3|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Expected ... THEN"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
| |
| {{Cl|IF}} {{Text|getelement|#55FF55}}(u$, n) = {{Text|<nowiki>"THEN"</nowiki>|#FFB100}} {{Cl|THEN}} a$ = entireline$: {{Cl|GOTO}} gotcommand
| |
| {{Cl|FOR}} i = {{Text|3|#F580B1}} {{Cl|TO}} n - {{Text|1|#F580B1}}
| |
| {{Cl|IF}} {{Text|getelement|#55FF55}}(u$, i) = {{Text|<nowiki>"THEN"</nowiki>|#FFB100}} {{Cl|THEN}}
| |
| a$ = {{Text|getelements|#55FF55}}(entireline$, {{Text|1|#F580B1}}, i)
| |
| continuelinefrom = i + {{Text|1|#F580B1}}
| |
| {{Cl|GOTO}} gotcommand
| |
| {{Cl|END IF}}
| |
| {{Cl|NEXT}}
| |
| a$ = {{Text|<nowiki>"Expected THEN"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
| |
| {{Cl|END IF}}
| |
|
| |
| {{Cl|END IF}} {{Text|<nowiki>'"E"</nowiki>|#919191}}
| |
|
| |
| start = {{Text|1|#F580B1}}
| |
|
| |
| {{Cl|GOTO}} skipcontinit
| |
|
| |
| contline:
| |
|
| |
| n = {{Text|numelements|#55FF55}}(entireline$)
| |
| u$ = {{Cl|UCASE$}}(entireline$)
| |
|
| |
| skipcontinit:
| |
|
| |
| {{Text|<nowiki>'jargon:</nowiki>|#919191}}
| |
| {{Text|<nowiki>'lineelseused - counts how many line ELSEs can POSSIBLY follow</nowiki>|#919191}}
| |
| {{Text|<nowiki>'endifs - how many C++ endifs "}" need to be added at the end of the line</nowiki>|#919191}}
| |
| {{Text|<nowiki>'lineelseused - counts the number of indwelling ELSE statements on a line</nowiki>|#919191}}
| |
| {{Text|<nowiki>'impliedendif - stops autoformat from adding "END IF"</nowiki>|#919191}}
| |
|
| |
| a$ = {{Text|<nowiki>""</nowiki>|#FFB100}}
| |
|
| |
| {{Cl|FOR}} i = start {{Cl|TO}} n
| |
| e$ = {{Text|getelement|#55FF55}}(u$, i)
| |
|
| |
|
| |
| {{Cl|IF}} e$ = {{Text|<nowiki>":"</nowiki>|#FFB100}} {{Cl|THEN}}
| |
| {{Cl|IF}} i = start {{Cl|THEN}}
| |
| layoutdone = {{Text|1|#F580B1}}: {{Cl|IF}} {{Cl|LEN}}(layout$) {{Cl|THEN}} layout$ = layout$ + sp2 + {{Text|<nowiki>":"</nowiki>|#FFB100}} {{Cl|ELSE}} layout$ = {{Text|<nowiki>":"</nowiki>|#FFB100}}
| |
| {{Cl|IF}} i <> n {{Cl|THEN}} continuelinefrom = i + {{Text|1|#F580B1}}
| |
| {{Cl|GOTO}} finishednonexec
| |
| {{Cl|END IF}}
| |
| {{Cl|IF}} i <> n {{Cl|THEN}} continuelinefrom = i
| |
| {{Cl|GOTO}} gotcommand
| |
| {{Cl|END IF}}
| |
|
| |
|
| |
| {{Text|<nowiki>'begin scanning an 'IF' statement</nowiki>|#919191}}
| |
| {{Cl|IF}} e$ = {{Text|<nowiki>"IF"</nowiki>|#FFB100}} {{Cl|AND (boolean)|AND}} a$ = {{Text|<nowiki>""</nowiki>|#FFB100}} {{Cl|THEN}} newif = {{Text|1|#F580B1}}
| |
|
| |
|
| |
| {{Cl|IF}} e$ = {{Text|<nowiki>"THEN"</nowiki>|#FFB100}} {{Cl|OR (boolean)|OR}} (e$ = {{Text|<nowiki>"GOTO"</nowiki>|#FFB100}} {{Cl|AND (boolean)|AND}} newif = {{Text|1|#F580B1}}) {{Cl|THEN}}
| |
| {{Cl|IF}} newif = {{Text|0|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"THEN without IF"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
| |
| newif = {{Text|0|#F580B1}}
| |
| {{Cl|IF}} lineelseused > {{Text|0|#F580B1}} {{Cl|THEN}} lineelseused = lineelseused - {{Text|1|#F580B1}}
| |
| {{Cl|IF}} e$ = {{Text|<nowiki>"GOTO"</nowiki>|#FFB100}} {{Cl|THEN}}
| |
| {{Cl|IF}} i = n {{Cl|THEN}} a$ = {{Text|<nowiki>"Expected IF expression GOTO label"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
| |
| i = i - {{Text|1|#F580B1}}
| |
| {{Cl|END IF}}
| |
| a$ = a$ + sp + e$ {{Text|<nowiki>'+"THEN"/"GOTO"</nowiki>|#919191}}
| |
| {{Cl|IF}} i <> n {{Cl|THEN}} continuelinefrom = i + {{Text|1|#F580B1}}: endifs = endifs + {{Text|1|#F580B1}}
| |
| {{Cl|GOTO}} gotcommand
| |
| {{Cl|END IF}}
| |
|
| |
|
| |
| {{Cl|IF}} e$ = {{Text|<nowiki>"ELSE"</nowiki>|#FFB100}} {{Cl|THEN}}
| |
|
| |
| {{Cl|IF}} start = i {{Cl|THEN}}
| |
| {{Cl|IF}} lineelseused >= {{Text|1|#F580B1}} {{Cl|THEN}}
| |
| {{Text|<nowiki>'note: more than one else used (in a row) on this line, so close first if with an 'END IF' first</nowiki>|#919191}}
| |
| {{Text|<nowiki>'note: parses 'END IF' then (after continuelinefrom) parses 'ELSE'</nowiki>|#919191}}
| |
| {{Text|<nowiki>'consider the following: (square brackets make reading easier)</nowiki>|#919191}}
| |
| {{Text|<nowiki>'eg. if a=1 then [if b=2 then c=2 else d=2] else e=3</nowiki>|#919191}}
| |
| impliedendif = {{Text|1|#F580B1}}: a$ = {{Text|<nowiki>"END"</nowiki>|#FFB100}} + sp + {{Text|<nowiki>"IF"</nowiki>|#FFB100}}
| |
| endifs = endifs - {{Text|1|#F580B1}}
| |
| continuelinefrom = i
| |
| lineelseused = lineelseused - {{Text|1|#F580B1}}
| |
| {{Cl|GOTO}} gotcommand
| |
| {{Cl|END IF}}
| |
| {{Text|<nowiki>'follow up previously encountered 'ELSE' by applying 'ELSE'</nowiki>|#919191}}
| |
| a$ = {{Text|<nowiki>"ELSE"</nowiki>|#FFB100}}: continuelinefrom = i + {{Text|1|#F580B1}}
| |
| lineelseused = lineelseused + {{Text|1|#F580B1}}
| |
| {{Cl|GOTO}} gotcommand
| |
| {{Cl|END IF}} {{Text|<nowiki>'start=i</nowiki>|#919191}}
| |
|
| |
| {{Text|<nowiki>'apply everything up to (but not including) 'ELSE'</nowiki>|#919191}}
| |
| continuelinefrom = i
| |
| {{Cl|GOTO}} gotcommand
| |
| {{Cl|END IF}} {{Text|<nowiki>'"ELSE"</nowiki>|#919191}}
| |
|
| |
|
| |
| e$ = {{Text|getelement|#55FF55}}(entireline$, i): {{Cl|IF}} a$ = {{Text|<nowiki>""</nowiki>|#FFB100}} {{Cl|THEN}} a$ = e$ {{Cl|ELSE}} a$ = a$ + sp + e$
| |
| {{Cl|NEXT}}
| |
|
| |
|
| |
| {{Text|<nowiki>'we're reached the end of the line</nowiki>|#919191}}
| |
| {{Cl|IF}} endifs > {{Text|0|#F580B1}} {{Cl|THEN}}
| |
| endifs = endifs - {{Text|1|#F580B1}}
| |
| impliedendif = {{Text|1|#F580B1}}: entireline$ = entireline$ + sp + {{Text|<nowiki>":"</nowiki>|#FFB100}} + sp + {{Text|<nowiki>"END"</nowiki>|#FFB100}} + sp + {{Text|<nowiki>"IF"</nowiki>|#FFB100}}: n = n + {{Text|3|#F580B1}}
| |
| i = i + {{Text|1|#F580B1}} {{Text|<nowiki>'skip the ":" (i is now equal to n+2)</nowiki>|#919191}}
| |
| continuelinefrom = i
| |
| {{Cl|GOTO}} gotcommand
| |
| {{Cl|END IF}}
| |
|
| |
|
| |
| gotcommand:
| |
|
| |
| dynscope = {{Text|0|#F580B1}}
| |
|
| |
| ca$ = a$
| |
| a$ = {{Text|eleucase$|#55FF55}}(ca$) {{Text|<nowiki>'***REVISE THIS SECTION LATER***</nowiki>|#919191}}
| |
|
| |
|
| |
| layoutdone = {{Text|0|#F580B1}}
| |
|
| |
| linefragment = a$
| |
| {{Cl|IF}} Debug {{Cl|THEN}} {{Cl|PRINT (file statement)|PRINT}} #9, a$
| |
| n = {{Text|numelements|#55FF55}}(a$)
| |
| {{Cl|IF}} n = {{Text|0|#F580B1}} {{Cl|THEN}} {{Cl|GOTO}} finishednonexec
| |
|
| |
| {{Text|<nowiki>'convert non-UDT dimensioned periods to _046_</nowiki>|#919191}}
| |
| {{Cl|IF}} {{Cl|INSTR}}(ca$, sp + {{Text|<nowiki>"."</nowiki>|#FFB100}} + sp) {{Cl|THEN}}
| |
| a3$ = {{Text|getelement|#55FF55}}(ca$, {{Text|1|#F580B1}})
| |
| except = {{Text|0|#F580B1}}
| |
| aa$ = a3$ + sp {{Text|<nowiki>'rebuilt a$ (always has a trailing spacer)</nowiki>|#919191}}
| |
| lastfuse = {{Text|-1|#F580B1}}
| |
| {{Cl|FOR}} x = {{Text|2|#F580B1}} {{Cl|TO}} n
| |
| a2$ = {{Text|getelement|#55FF55}}(ca$, x)
| |
| {{Cl|IF}} except = {{Text|1|#F580B1}} {{Cl|THEN}} except = {{Text|2|#F580B1}}: {{Cl|GOTO}} udtperiod {{Text|<nowiki>'skip element name</nowiki>|#919191}}
| |
| {{Cl|IF}} a2$ = {{Text|<nowiki>"."</nowiki>|#FFB100}} {{Cl|AND (boolean)|AND}} x <> n {{Cl|THEN}}
| |
| {{Cl|IF}} except = {{Text|2|#F580B1}} {{Cl|THEN}} except = {{Text|1|#F580B1}}: {{Cl|GOTO}} udtperiod {{Text|<nowiki>'sub-element of UDT</nowiki>|#919191}}
| |
|
| |
| {{Cl|IF}} a3$ = {{Text|<nowiki>")"</nowiki>|#FFB100}} {{Cl|THEN}}
| |
| {{Text|<nowiki>'assume it was something like typevar(???).x and treat as a UDT</nowiki>|#919191}}
| |
| except = {{Text|1|#F580B1}}
| |
| {{Cl|GOTO}} udtperiod
| |
| {{Cl|END IF}}
| |
|
| |
| {{Text|<nowiki>'find an ID of that type</nowiki>|#919191}}
| |
| try = {{Text|findid|#55FF55}}({{Cl|UCASE$}}(a3$))
| |
| {{Cl|IF}} Error_Happened {{Cl|THEN}} {{Cl|GOTO}} errmes
| |
| {{Cl|DO...LOOP|DO WHILE}} try
| |
| {{Cl|IF}} ((id.t {{Cl|AND (boolean)|AND}} ISUDT) <> {{Text|0|#F580B1}}) {{Cl|OR (boolean)|OR}} ((id.arraytype {{Cl|AND (boolean)|AND}} ISUDT) <> {{Text|0|#F580B1}}) {{Cl|THEN}}
| |
| except = {{Text|1|#F580B1}}
| |
| {{Cl|GOTO}} udtperiod
| |
| {{Cl|END IF}}
| |
| {{Cl|IF}} try = {{Text|2|#F580B1}} {{Cl|THEN}} findanotherid = {{Text|1|#F580B1}}: try = {{Text|findid|#55FF55}}({{Cl|UCASE$}}(a3$)) {{Cl|ELSE}} try = {{Text|0|#F580B1}}
| |
| {{Cl|IF}} Error_Happened {{Cl|THEN}} {{Cl|GOTO}} errmes
| |
| {{Cl|LOOP}}
| |
| {{Text|<nowiki>'not a udt; fuse lhs & rhs with _046_</nowiki>|#919191}}
| |
| {{Cl|IF}} isalpha({{Cl|ASC (function)|ASC}}(a3$)) = {{Text|0|#F580B1}} {{Cl|AND (boolean)|AND}} lastfuse <> x - {{Text|2|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Invalid '.'"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
| |
| aa$ = {{Cl|LEFT$}}(aa$, {{Cl|LEN}}(aa$) - {{Text|1|#F580B1}}) + fix046$
| |
| lastfuse = x
| |
| {{Cl|GOTO}} periodfused
| |
| {{Cl|END IF}} {{Text|<nowiki>'"."</nowiki>|#919191}}
| |
| except = {{Text|0|#F580B1}}
| |
| udtperiod:
| |
| aa$ = aa$ + a2$ + sp
| |
| periodfused:
| |
| a3$ = a2$
| |
| {{Cl|NEXT}}
| |
| a$ = {{Cl|LEFT$}}(aa$, {{Cl|LEN}}(aa$) - {{Text|1|#F580B1}})
| |
| ca$ = a$
| |
| a$ = {{Text|eleucase$|#55FF55}}(ca$)
| |
| n = {{Text|numelements|#55FF55}}(a$)
| |
| {{Cl|END IF}}
| |
|
| |
| arrayprocessinghappened = {{Text|0|#F580B1}}
| |
|
| |
| firstelement$ = {{Text|getelement|#55FF55}}(a$, {{Text|1|#F580B1}})
| |
| secondelement$ = {{Text|getelement|#55FF55}}(a$, {{Text|2|#F580B1}})
| |
| thirdelement$ = {{Text|getelement|#55FF55}}(a$, {{Text|3|#F580B1}})
| |
|
| |
| {{Text|<nowiki>'non-executable section</nowiki>|#919191}}
| |
|
| |
| {{Cl|IF}} n = {{Text|1|#F580B1}} {{Cl|THEN}}
| |
| {{Cl|IF}} firstelement$ = {{Text|<nowiki>"'"</nowiki>|#FFB100}} {{Cl|THEN}} layoutdone = {{Text|1|#F580B1}}: {{Cl|GOTO}} finishednonexec {{Text|<nowiki>'nop</nowiki>|#919191}}
| |
| {{Cl|END IF}}
| |
|
| |
| {{Cl|IF}} n <= {{Text|2|#F580B1}} {{Cl|THEN}}
| |
| {{Cl|IF}} firstelement$ = {{Text|<nowiki>"DATA"</nowiki>|#FFB100}} {{Cl|THEN}}
| |
| l$ = {{Text|SCase$|#55FF55}}({{Text|<nowiki>"Data"</nowiki>|#FFB100}})
| |
| {{Cl|IF}} n = {{Text|2|#F580B1}} {{Cl|THEN}}
| |
|
| |
| e$ = {{Cl|SPACE$}}(({{Cl|LEN}}(secondelement$) - {{Text|1|#F580B1}}) \ {{Text|2|#F580B1}})
| |
| {{Cl|FOR}} x = {{Text|1|#F580B1}} {{Cl|TO}} {{Cl|LEN}}(e$)
| |
| v1 = {{Cl|ASC (function)|ASC}}(secondelement$, x * {{Text|2|#F580B1}})
| |
| v2 = {{Cl|ASC (function)|ASC}}(secondelement$, x * {{Text|2|#F580B1}} + {{Text|1|#F580B1}})
| |
| {{Cl|IF}} v1 < {{Text|65|#F580B1}} {{Cl|THEN}} v1 = v1 - {{Text|48|#F580B1}} {{Cl|ELSE}} v1 = v1 - {{Text|55|#F580B1}}
| |
| {{Cl|IF}} v2 < {{Text|65|#F580B1}} {{Cl|THEN}} v2 = v2 - {{Text|48|#F580B1}} {{Cl|ELSE}} v2 = v2 - {{Text|55|#F580B1}}
| |
| {{Cl|ASC}}(e$, x) = v1 + v2 * {{Text|16|#F580B1}}
| |
| {{Cl|NEXT}}
| |
| l$ = l$ + sp + e$
| |
| {{Cl|END IF}} {{Text|<nowiki>'n=2</nowiki>|#919191}}
| |
|
| |
| layoutdone = {{Text|1|#F580B1}}: {{Cl|IF}} {{Cl|LEN}}(layout$) {{Cl|THEN}} layout$ = layout$ + sp + l$ {{Cl|ELSE}} layout$ = l$
| |
|
| |
| {{Cl|GOTO}} finishednonexec
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}}
| |
|
| |
|
| |
|
| |
| {{Text|<nowiki>'declare library</nowiki>|#919191}}
| |
| {{Cl|IF}} declaringlibrary {{Cl|THEN}}
| |
|
| |
| {{Cl|IF}} firstelement$ = {{Text|<nowiki>"END"</nowiki>|#FFB100}} {{Cl|THEN}}
| |
| {{Cl|IF}} n <> {{Text|2|#F580B1}} {{Cl|OR (boolean)|OR}} secondelement$ <> {{Text|<nowiki>"DECLARE"</nowiki>|#FFB100}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Expected END DECLARE"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
| |
| declaringlibrary = {{Text|0|#F580B1}}
| |
| l$ = {{Text|SCase$|#55FF55}}({{Text|<nowiki>"End"</nowiki>|#FFB100}} + sp + {{Text|<nowiki>"Declare"</nowiki>|#FFB100}})
| |
| layoutdone = {{Text|1|#F580B1}}: {{Cl|IF}} {{Cl|LEN}}(layout$) {{Cl|THEN}} layout$ = layout$ + sp + l$ {{Cl|ELSE}} layout$ = l$
| |
| {{Cl|GOTO}} finishednonexec
| |
| {{Cl|END IF}} {{Text|<nowiki>'end declare</nowiki>|#919191}}
| |
|
| |
| declaringlibrary = {{Text|2|#F580B1}}
| |
|
| |
| {{Cl|IF}} firstelement$ = {{Text|<nowiki>"SUB"</nowiki>|#FFB100}} {{Cl|OR (boolean)|OR}} firstelement$ = {{Text|<nowiki>"FUNCTION"</nowiki>|#FFB100}} {{Cl|THEN}}
| |
| {{Cl|GOTO}} declaresubfunc2
| |
| {{Cl|END IF}}
| |
|
| |
| a$ = {{Text|<nowiki>"Expected SUB/FUNCTION definition or END DECLARE"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
| |
| {{Cl|END IF}} {{Text|<nowiki>'declaringlibrary</nowiki>|#919191}}
| |
|
| |
| {{Text|<nowiki>'check TYPE declarations (created on prepass)</nowiki>|#919191}}
| |
| {{Cl|IF}} definingtype {{Cl|THEN}}
| |
|
| |
| {{Cl|IF}} firstelement$ = {{Text|<nowiki>"END"</nowiki>|#FFB100}} {{Cl|THEN}}
| |
| {{Cl|IF}} n <> {{Text|2|#F580B1}} {{Cl|OR (boolean)|OR}} secondelement$ <> {{Text|<nowiki>"TYPE"</nowiki>|#FFB100}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Expected END TYPE"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
| |
| definingtype = {{Text|0|#F580B1}}
| |
| l$ = {{Text|SCase$|#55FF55}}({{Text|<nowiki>"End"</nowiki>|#FFB100}} + sp + {{Text|<nowiki>"Type"</nowiki>|#FFB100}})
| |
| layoutdone = {{Text|1|#F580B1}}: {{Cl|IF}} {{Cl|LEN}}(layout$) {{Cl|THEN}} layout$ = layout$ + sp + l$ {{Cl|ELSE}} layout$ = l$
| |
| {{Cl|GOTO}} finishednonexec
| |
| {{Cl|END IF}}
| |
|
| |
| {{Text|<nowiki>'IF n < 3 THEN definingtypeerror = linenumber: a$ = "Expected element-name AS type or AS type element-list": GOTO errmes</nowiki>|#919191}}
| |
| {{Cl|IF}} n < {{Text|3|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Expected element-name AS type or AS type element-list"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
| |
| definingtype = {{Text|2|#F580B1}}
| |
| {{Cl|IF}} firstelement$ = {{Text|<nowiki>"AS"</nowiki>|#FFB100}} {{Cl|THEN}}
| |
| l$ = {{Text|SCase$|#55FF55}}({{Text|<nowiki>"As"</nowiki>|#FFB100}})
| |
| t$ = {{Text|<nowiki>""</nowiki>|#FFB100}}
| |
| wordsInTypeName = {{Text|0|#F580B1}}
| |
| {{Cl|DO}}
| |
| nextElement$ = {{Text|getelement$|#55FF55}}(a$, {{Text|2|#F580B1}} + wordsInTypeName)
| |
| {{Cl|IF}} nextElement$ = {{Text|<nowiki>","</nowiki>|#FFB100}} {{Cl|THEN}}
| |
| {{Text|<nowiki>'element-list</nowiki>|#919191}}
| |
| wordsInTypeName = wordsInTypeName - {{Text|2|#F580B1}}
| |
| {{Cl|EXIT DO}}
| |
| {{Cl|END IF}}
| |
|
| |
| wordsInTypeName = wordsInTypeName + {{Text|1|#F580B1}}
| |
| {{Cl|IF}} wordsInTypeName = n - {{Text|2|#F580B1}} {{Cl|THEN}}
| |
| {{Text|<nowiki>'single element in line</nowiki>|#919191}}
| |
| wordsInTypeName = wordsInTypeName - {{Text|1|#F580B1}}
| |
| {{Cl|EXIT DO}}
| |
| {{Cl|END IF}}
| |
| {{Cl|LOOP}}
| |
|
| |
| t$ = {{Text|getelements$|#55FF55}}(a$, {{Text|2|#F580B1}}, {{Text|2|#F580B1}} + wordsInTypeName)
| |
| typ = {{Text|typname2typ|#55FF55}}(t$)
| |
| {{Cl|IF}} Error_Happened {{Cl|THEN}} {{Cl|GOTO}} errmes
| |
| {{Cl|IF}} typ = {{Text|0|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Undefined type"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
| |
| {{Cl|IF}} typ {{Cl|AND (boolean)|AND}} ISUDT {{Cl|THEN}}
| |
| {{Cl|IF}} {{Cl|UCASE$}}({{Cl|RTRIM$}}(t$)) = {{Text|<nowiki>"MEM"</nowiki>|#FFB100}} {{Cl|AND (boolean)|AND}} {{Cl|RTRIM$}}(udtxcname(typ {{Cl|AND (boolean)|AND}} {{Text|511|#F580B1}})) = {{Text|<nowiki>"_MEM"</nowiki>|#FFB100}} {{Cl|AND (boolean)|AND}} qb64prefix_set = {{Text|1|#F580B1}} {{Cl|THEN}}
| |
| t$ = {{Cl|MID$ (function)|MID$}}({{Cl|RTRIM$}}(udtxcname(typ {{Cl|AND}} {{Text|511|#F580B1}})), {{Text|2|#F580B1}})
| |
| {{Cl|ELSE}}
| |
| t$ = {{Cl|RTRIM$}}(udtxcname(typ {{Cl|AND}} {{Text|511|#F580B1}}))
| |
| {{Cl|END IF}}
| |
| l$ = l$ + sp + t$
| |
| {{Cl|ELSE}}
| |
| l$ = l$ + sp + {{Text|SCase2$|#55FF55}}(t$)
| |
| {{Cl|END IF}}
| |
|
| |
| {{Text|<nowiki>'Now add each variable:</nowiki>|#919191}}
| |
| {{Cl|FOR}} i = {{Text|3|#F580B1}} + wordsInTypeName {{Cl|TO}} n
| |
| thisElement$ = {{Text|getelement$|#55FF55}}(ca$, i)
| |
| {{Cl|IF}} thisElement$ = {{Text|<nowiki>","</nowiki>|#FFB100}} {{Cl|THEN}}
| |
| l$ = l$ + thisElement$
| |
| {{Cl|ELSE}}
| |
| l$ = l$ + sp + thisElement$
| |
| {{Cl|END IF}}
| |
| {{Cl|NEXT}}
| |
| layoutdone = {{Text|1|#F580B1}}: {{Cl|IF}} {{Cl|LEN}}(layout$) {{Cl|THEN}} layout$ = layout$ + sp + l$ {{Cl|ELSE}} layout$ = l$
| |
| {{Cl|ELSE}}
| |
| l$ = {{Text|getelement|#55FF55}}(ca$, {{Text|1|#F580B1}}) + sp + {{Text|SCase$|#55FF55}}({{Text|<nowiki>"As"</nowiki>|#FFB100}})
| |
| t$ = {{Text|getelements$|#55FF55}}(a$, {{Text|3|#F580B1}}, n)
| |
| typ = {{Text|typname2typ|#55FF55}}(t$)
| |
| {{Cl|IF}} Error_Happened {{Cl|THEN}} {{Cl|GOTO}} errmes
| |
| {{Cl|IF}} typ = {{Text|0|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Undefined type"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
| |
| {{Cl|IF}} typ {{Cl|AND (boolean)|AND}} ISUDT {{Cl|THEN}}
| |
| {{Cl|IF}} {{Cl|UCASE$}}({{Cl|RTRIM$}}(t$)) = {{Text|<nowiki>"MEM"</nowiki>|#FFB100}} {{Cl|AND (boolean)|AND}} {{Cl|RTRIM$}}(udtxcname(typ {{Cl|AND (boolean)|AND}} {{Text|511|#F580B1}})) = {{Text|<nowiki>"_MEM"</nowiki>|#FFB100}} {{Cl|AND (boolean)|AND}} qb64prefix_set = {{Text|1|#F580B1}} {{Cl|THEN}}
| |
| t$ = {{Cl|MID$ (function)|MID$}}({{Cl|RTRIM$}}(udtxcname(typ {{Cl|AND}} {{Text|511|#F580B1}})), {{Text|2|#F580B1}})
| |
| {{Cl|ELSE}}
| |
| t$ = {{Cl|RTRIM$}}(udtxcname(typ {{Cl|AND}} {{Text|511|#F580B1}}))
| |
| {{Cl|END IF}}
| |
| l$ = l$ + sp + t$
| |
| {{Cl|ELSE}}
| |
| l$ = l$ + sp + {{Text|SCase2$|#55FF55}}(t$)
| |
| {{Cl|END IF}}
| |
| layoutdone = {{Text|1|#F580B1}}: {{Cl|IF}} {{Cl|LEN}}(layout$) {{Cl|THEN}} layout$ = layout$ + sp + l$ {{Cl|ELSE}} layout$ = l$
| |
| {{Cl|END IF}}
| |
| {{Cl|GOTO}} finishednonexec
| |
|
| |
| {{Cl|END IF}} {{Text|<nowiki>'defining type</nowiki>|#919191}}
| |
|
| |
| {{Cl|IF}} firstelement$ = {{Text|<nowiki>"TYPE"</nowiki>|#FFB100}} {{Cl|THEN}}
| |
| {{Cl|IF}} n <> {{Text|2|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Expected TYPE type-name"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
| |
| l$ = {{Text|SCase$|#55FF55}}({{Text|<nowiki>"Type"</nowiki>|#FFB100}}) + sp + {{Text|getelement|#55FF55}}(ca$, {{Text|2|#F580B1}})
| |
| layoutdone = {{Text|1|#F580B1}}: {{Cl|IF}} {{Cl|LEN}}(layout$) {{Cl|THEN}} layout$ = layout$ + sp + l$ {{Cl|ELSE}} layout$ = l$
| |
| definingtype = {{Text|1|#F580B1}}
| |
| definingtypeerror = linenumber
| |
| {{Cl|GOTO}} finishednonexec
| |
| {{Cl|END IF}}
| |
|
| |
| {{Text|<nowiki>'skip DECLARE SUB/FUNCTION</nowiki>|#919191}}
| |
| {{Cl|IF}} n >= {{Text|1|#F580B1}} {{Cl|THEN}}
| |
| {{Cl|IF}} firstelement$ = {{Text|<nowiki>"DECLARE"</nowiki>|#FFB100}} {{Cl|THEN}}
| |
|
| |
| {{Cl|IF}} secondelement$ = {{Text|<nowiki>"LIBRARY"</nowiki>|#FFB100}} {{Cl|OR (boolean)|OR}} secondelement$ = {{Text|<nowiki>"DYNAMIC"</nowiki>|#FFB100}} {{Cl|OR (boolean)|OR}} secondelement$ = {{Text|<nowiki>"CUSTOMTYPE"</nowiki>|#FFB100}} {{Cl|OR (boolean)|OR}} secondelement$ = {{Text|<nowiki>"STATIC"</nowiki>|#FFB100}} {{Cl|THEN}}
| |
|
| |
| declaringlibrary = {{Text|1|#F580B1}}
| |
| dynamiclibrary = {{Text|0|#F580B1}}
| |
| customtypelibrary = {{Text|0|#F580B1}}
| |
| indirectlibrary = {{Text|0|#F580B1}}
| |
| staticlinkedlibrary = {{Text|0|#F580B1}}
| |
|
| |
| x = {{Text|3|#F580B1}}
| |
| l$ = {{Text|SCase$|#55FF55}}({{Text|<nowiki>"Declare"</nowiki>|#FFB100}} + sp + {{Text|<nowiki>"Library"</nowiki>|#FFB100}})
| |
|
| |
| {{Cl|IF}} secondelement$ = {{Text|<nowiki>"DYNAMIC"</nowiki>|#FFB100}} {{Cl|THEN}}
| |
| e$ = {{Text|getelement$|#55FF55}}(a$, {{Text|3|#F580B1}}): {{Cl|IF}} e$ <> {{Text|<nowiki>"LIBRARY"</nowiki>|#FFB100}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Expected DYNAMIC LIBRARY "</nowiki>|#FFB100}} + {{Cl|CHR$}}({{Text|34|#F580B1}}) + {{Text|<nowiki>"..."</nowiki>|#FFB100}} + {{Cl|CHR$}}({{Text|34|#F580B1}}): {{Cl|GOTO}} errmes
| |
| dynamiclibrary = {{Text|1|#F580B1}}
| |
| x = {{Text|4|#F580B1}}
| |
| l$ = {{Text|SCase$|#55FF55}}({{Text|<nowiki>"Declare"</nowiki>|#FFB100}} + sp + {{Text|<nowiki>"Dynamic"</nowiki>|#FFB100}} + sp + {{Text|<nowiki>"Library"</nowiki>|#FFB100}})
| |
| {{Cl|IF}} n = {{Text|3|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Expected DECLARE DYNAMIC LIBRARY "</nowiki>|#FFB100}} + {{Cl|CHR$}}({{Text|34|#F580B1}}) + {{Text|<nowiki>"..."</nowiki>|#FFB100}} + {{Cl|CHR$}}({{Text|34|#F580B1}}): {{Cl|GOTO}} errmes
| |
| indirectlibrary = {{Text|1|#F580B1}}
| |
| {{Cl|END IF}}
| |
|
| |
| {{Cl|IF}} secondelement$ = {{Text|<nowiki>"CUSTOMTYPE"</nowiki>|#FFB100}} {{Cl|THEN}}
| |
| e$ = {{Text|getelement$|#55FF55}}(a$, {{Text|3|#F580B1}}): {{Cl|IF}} e$ <> {{Text|<nowiki>"LIBRARY"</nowiki>|#FFB100}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Expected CUSTOMTYPE LIBRARY"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
| |
| customtypelibrary = {{Text|1|#F580B1}}
| |
| x = {{Text|4|#F580B1}}
| |
| l$ = {{Text|SCase$|#55FF55}}({{Text|<nowiki>"Declare"</nowiki>|#FFB100}} + sp + {{Text|<nowiki>"CustomType"</nowiki>|#FFB100}} + sp + {{Text|<nowiki>"Library"</nowiki>|#FFB100}})
| |
| indirectlibrary = {{Text|1|#F580B1}}
| |
| {{Cl|END IF}}
| |
|
| |
| {{Cl|IF}} secondelement$ = {{Text|<nowiki>"STATIC"</nowiki>|#FFB100}} {{Cl|THEN}}
| |
| e$ = {{Text|getelement$|#55FF55}}(a$, {{Text|3|#F580B1}}): {{Cl|IF}} e$ <> {{Text|<nowiki>"LIBRARY"</nowiki>|#FFB100}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Expected STATIC LIBRARY"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
| |
| x = {{Text|4|#F580B1}}
| |
| l$ = {{Text|SCase$|#55FF55}}({{Text|<nowiki>"Declare"</nowiki>|#FFB100}} + sp + {{Text|<nowiki>"Static"</nowiki>|#FFB100}} + sp + {{Text|<nowiki>"Library"</nowiki>|#FFB100}})
| |
| staticlinkedlibrary = {{Text|1|#F580B1}}
| |
| {{Cl|END IF}}
| |
|
| |
| sfdeclare = {{Text|0|#F580B1}}: sfheader = {{Text|0|#F580B1}}
| |
|
| |
| {{Cl|IF}} n >= x {{Cl|THEN}}
| |
|
| |
| sfdeclare = {{Text|1|#F580B1}}
| |
|
| |
| addlibrary:
| |
|
| |
| libname$ = {{Text|<nowiki>""</nowiki>|#FFB100}}
| |
| headername$ = {{Text|<nowiki>""</nowiki>|#FFB100}}
| |
|
| |
|
| |
| {{Text|<nowiki>'assume library name in double quotes follows</nowiki>|#919191}}
| |
| {{Text|<nowiki>'assume library is in main qb64pe folder</nowiki>|#919191}}
| |
| x$ = {{Text|getelement$|#55FF55}}(ca$, x)
| |
| {{Cl|IF}} {{Cl|ASC (function)|ASC}}(x$) <> {{Text|34|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Expected LIBRARY "</nowiki>|#FFB100}} + {{Cl|CHR$}}({{Text|34|#F580B1}}) + {{Text|<nowiki>"..."</nowiki>|#FFB100}} + {{Cl|CHR$}}({{Text|34|#F580B1}}): {{Cl|GOTO}} errmes
| |
| x$ = {{Cl|RIGHT$}}(x$, {{Cl|LEN}}(x$) - {{Text|1|#F580B1}})
| |
| z = {{Cl|INSTR}}(x$, {{Cl|CHR$}}({{Text|34|#F580B1}}))
| |
| {{Cl|IF}} z = {{Text|0|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Expected LIBRARY "</nowiki>|#FFB100}} + {{Cl|CHR$}}({{Text|34|#F580B1}}) + {{Text|<nowiki>"..."</nowiki>|#FFB100}} + {{Cl|CHR$}}({{Text|34|#F580B1}}): {{Cl|GOTO}} errmes
| |
| x$ = {{Cl|LEFT$}}(x$, z - {{Text|1|#F580B1}})
| |
|
| |
| {{Cl|IF}} dynamiclibrary <> {{Text|0|#F580B1}} {{Cl|AND (boolean)|AND}} {{Cl|LEN}}(x$) = {{Text|0|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Expected DECLARE DYNAMIC LIBRARY "</nowiki>|#FFB100}} + {{Cl|CHR$}}({{Text|34|#F580B1}}) + {{Text|<nowiki>"..."</nowiki>|#FFB100}} + {{Cl|CHR$}}({{Text|34|#F580B1}}): {{Cl|GOTO}} errmes
| |
| {{Cl|IF}} customtypelibrary <> {{Text|0|#F580B1}} {{Cl|AND (boolean)|AND}} {{Cl|LEN}}(x$) = {{Text|0|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Expected DECLARE CUSTOMTYPE LIBRARY "</nowiki>|#FFB100}} + {{Cl|CHR$}}({{Text|34|#F580B1}}) + {{Text|<nowiki>"..."</nowiki>|#FFB100}} + {{Cl|CHR$}}({{Text|34|#F580B1}}): {{Cl|GOTO}} errmes
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
| {{Text|<nowiki>'convert '\\' to '\'</nowiki>|#919191}}
| |
| {{Cl|WHILE}} {{Cl|INSTR}}(x$, {{Text|<nowiki>"\\"</nowiki>|#FFB100}})
| |
| z = {{Cl|INSTR}}(x$, {{Text|<nowiki>"\\"</nowiki>|#FFB100}})
| |
| x$ = {{Cl|LEFT$}}(x$, z - {{Text|1|#F580B1}}) + {{Cl|RIGHT$}}(x$, {{Cl|LEN}}(x$) - z)
| |
| {{Cl|WEND}}
| |
|
| |
| autoformat_x$ = x$ {{Text|<nowiki>'used for autolayout purposes</nowiki>|#919191}}
| |
|
| |
| {{Text|<nowiki>'Remove version number from library name</nowiki>|#919191}}
| |
| {{Text|<nowiki>'Eg. libname:1.0 becomes libname <-> 1.0 which later becomes libname.so.1.0</nowiki>|#919191}}
| |
| v$ = {{Text|<nowiki>""</nowiki>|#FFB100}}
| |
| striplibver:
| |
| {{Cl|FOR}} z = {{Cl|LEN}}(x$) {{Cl|TO}} {{Text|1|#F580B1}} {{Cl|STEP}} {{Text|-1|#F580B1}}
| |
| a = {{Cl|ASC (function)|ASC}}(x$, z)
| |
| {{Cl|IF}} a = ASC_BACKSLASH {{Cl|OR (boolean)|OR}} a = ASC_FORWARDSLASH {{Cl|THEN}} {{Cl|EXIT FOR}}
| |
| {{Cl|IF}} a = ASC_FULLSTOP {{Cl|OR (boolean)|OR}} a = ASC_COLON {{Cl|THEN}}
| |
| {{Cl|IF}} {{Text|isuinteger|#55FF55}}({{Cl|RIGHT$}}(x$, {{Cl|LEN}}(x$) - z)) {{Cl|THEN}}
| |
| {{Cl|IF}} {{Cl|LEN}}(v$) {{Cl|THEN}} v$ = {{Cl|RIGHT$}}(x$, {{Cl|LEN}}(x$) - z) + {{Text|<nowiki>"."</nowiki>|#FFB100}} + v$ {{Cl|ELSE}} v$ = {{Cl|RIGHT$}}(x$, {{Cl|LEN}}(x$) - z)
| |
| x$ = {{Cl|LEFT$}}(x$, z - {{Text|1|#F580B1}})
| |
| {{Cl|IF}} a = ASC_COLON {{Cl|THEN}} {{Cl|EXIT FOR}}
| |
| {{Cl|GOTO}} striplibver
| |
| {{Cl|ELSE}}
| |
| {{Cl|EXIT FOR}}
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}}
| |
| {{Cl|NEXT}}
| |
| libver$ = v$
| |
|
| |
|
| |
| {{Cl|IF}} os$ = {{Text|<nowiki>"WIN"</nowiki>|#FFB100}} {{Cl|THEN}}
| |
| {{Text|<nowiki>'convert forward-slashes to back-slashes</nowiki>|#919191}}
| |
| {{Cl|DO...LOOP|DO WHILE}} {{Cl|INSTR}}(x$, {{Text|<nowiki>"/"</nowiki>|#FFB100}})
| |
| z = {{Cl|INSTR}}(x$, {{Text|<nowiki>"/"</nowiki>|#FFB100}})
| |
| x$ = {{Cl|LEFT$}}(x$, z - {{Text|1|#F580B1}}) + {{Text|<nowiki>"\"</nowiki>|#FFB100}} + {{Cl|RIGHT$}}(x$, {{Cl|LEN}}(x$) - z)
| |
| {{Cl|LOOP}}
| |
| {{Cl|END IF}}
| |
|
| |
| {{Cl|IF}} os$ = {{Text|<nowiki>"LNX"</nowiki>|#FFB100}} {{Cl|THEN}}
| |
| {{Text|<nowiki>'convert any back-slashes to forward-slashes</nowiki>|#919191}}
| |
| {{Cl|DO...LOOP|DO WHILE}} {{Cl|INSTR}}(x$, {{Text|<nowiki>"\"</nowiki>|#FFB100}})
| |
| z = {{Cl|INSTR}}(x$, {{Text|<nowiki>"\"</nowiki>|#FFB100}})
| |
| x$ = {{Cl|LEFT$}}(x$, z - {{Text|1|#F580B1}}) + {{Text|<nowiki>"/"</nowiki>|#FFB100}} + {{Cl|RIGHT$}}(x$, {{Cl|LEN}}(x$) - z)
| |
| {{Cl|LOOP}}
| |
| {{Cl|END IF}}
| |
|
| |
| {{Text|<nowiki>'Separate path from name</nowiki>|#919191}}
| |
| libpath$ = {{Text|<nowiki>""</nowiki>|#FFB100}}
| |
| {{Cl|FOR}} z = {{Cl|LEN}}(x$) {{Cl|TO}} {{Text|1|#F580B1}} {{Cl|STEP}} {{Text|-1|#F580B1}}
| |
| a = {{Cl|ASC (function)|ASC}}(x$, z)
| |
| {{Cl|IF}} a = {{Text|47|#F580B1}} {{Cl|OR (boolean)|OR}} a = {{Text|92|#F580B1}} {{Cl|THEN}} {{Text|<nowiki>'\ or /</nowiki>|#919191}}
| |
| libpath$ = {{Cl|LEFT$}}(x$, z)
| |
| x$ = {{Cl|RIGHT$}}(x$, {{Cl|LEN}}(x$) - z)
| |
| {{Cl|EXIT FOR}}
| |
| {{Cl|END IF}}
| |
| {{Cl|NEXT}}
| |
|
| |
| {{Text|<nowiki>'Accept ./ and .\ as a reference to the source file</nowiki>|#919191}}
| |
| {{Text|<nowiki>'folder, replacing it with the actual full path, if available</nowiki>|#919191}}
| |
| {{Cl|IF}} libpath$ = {{Text|<nowiki>"./"</nowiki>|#FFB100}} {{Cl|OR (boolean)|OR}} libpath$ = {{Text|<nowiki>".\"</nowiki>|#FFB100}} {{Cl|THEN}}
| |
| libpath$ = {{Text|<nowiki>""</nowiki>|#FFB100}}
| |
| {{Cl|IF}} NoIDEMode {{Cl|THEN}}
| |
| libpath$ = path.source$
| |
| {{Cl|IF}} {{Cl|LEN}}(libpath$) > {{Text|0|#F580B1}} {{Cl|AND (boolean)|AND}} {{Cl|RIGHT$}}(libpath$, {{Text|1|#F580B1}}) <> pathsep$ {{Cl|THEN}} libpath$ = libpath$ + pathsep$
| |
| {{Cl|ELSE}}
| |
| {{Cl|IF}} {{Cl|LEN}}(ideprogname) {{Cl|THEN}} libpath$ = idepath$ + pathsep$
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}}
| |
|
| |
| {{Text|<nowiki>'Create a path which can be used for inline code (uses \\ instead of \)</nowiki>|#919191}}
| |
| libpath_inline$ = {{Text|<nowiki>""</nowiki>|#FFB100}}
| |
| {{Cl|FOR}} z = {{Text|1|#F580B1}} {{Cl|TO}} {{Cl|LEN}}(libpath$)
| |
| a = {{Cl|ASC (function)|ASC}}(libpath$, z)
| |
| libpath_inline$ = libpath_inline$ + {{Cl|CHR$}}(a)
| |
| {{Cl|IF}} a = {{Text|92|#F580B1}} {{Cl|THEN}} libpath_inline$ = libpath_inline$ + {{Text|<nowiki>"\"</nowiki>|#FFB100}}
| |
| {{Cl|NEXT}}
| |
|
| |
| {{Cl|IF}} {{Cl|LEN}}(x$) {{Cl|THEN}}
| |
| {{Cl|IF}} dynamiclibrary = {{Text|0|#F580B1}} {{Cl|THEN}}
| |
| {{Text|<nowiki>'Static library</nowiki>|#919191}}
| |
|
| |
| {{Cl|IF}} os$ = {{Text|<nowiki>"WIN"</nowiki>|#FFB100}} {{Cl|THEN}}
| |
| {{Text|<nowiki>'check for .lib</nowiki>|#919191}}
| |
| {{Cl|IF}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|THEN}}
| |
| {{Cl|IF}} {{Cl|_FILEEXISTS}}(libpath$ + x$ + {{Text|<nowiki>".lib"</nowiki>|#FFB100}}) {{Cl|THEN}}
| |
| libname$ = libpath$ + x$ + {{Text|<nowiki>".lib"</nowiki>|#FFB100}}
| |
| inlinelibname$ = libpath_inline$ + x$ + {{Text|<nowiki>".lib"</nowiki>|#FFB100}}
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}}
| |
| {{Text|<nowiki>'check for .a</nowiki>|#919191}}
| |
| {{Cl|IF}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|THEN}}
| |
| {{Cl|IF}} {{Cl|_FILEEXISTS}}(libpath$ + x$ + {{Text|<nowiki>".a"</nowiki>|#FFB100}}) {{Cl|THEN}}
| |
| libname$ = libpath$ + x$ + {{Text|<nowiki>".a"</nowiki>|#FFB100}}
| |
| inlinelibname$ = libpath_inline$ + x$ + {{Text|<nowiki>".a"</nowiki>|#FFB100}}
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}}
| |
| {{Text|<nowiki>'check for .o</nowiki>|#919191}}
| |
| {{Cl|IF}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|THEN}}
| |
| {{Cl|IF}} {{Cl|_FILEEXISTS}}(libpath$ + x$ + {{Text|<nowiki>".o"</nowiki>|#FFB100}}) {{Cl|THEN}}
| |
| libname$ = libpath$ + x$ + {{Text|<nowiki>".o"</nowiki>|#FFB100}}
| |
| inlinelibname$ = libpath_inline$ + x$ + {{Text|<nowiki>".o"</nowiki>|#FFB100}}
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}}
| |
| {{Text|<nowiki>'check for .lib</nowiki>|#919191}}
| |
| {{Cl|IF}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|THEN}}
| |
| {{Cl|IF}} {{Cl|_FILEEXISTS}}(x$ + {{Text|<nowiki>".lib"</nowiki>|#FFB100}}) {{Cl|THEN}}
| |
| libname$ = x$ + {{Text|<nowiki>".lib"</nowiki>|#FFB100}}
| |
| inlinelibname$ = x$ + {{Text|<nowiki>".lib"</nowiki>|#FFB100}}
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}}
| |
| {{Text|<nowiki>'check for .a</nowiki>|#919191}}
| |
| {{Cl|IF}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|THEN}}
| |
| {{Cl|IF}} {{Cl|_FILEEXISTS}}(x$ + {{Text|<nowiki>".a"</nowiki>|#FFB100}}) {{Cl|THEN}}
| |
| libname$ = x$ + {{Text|<nowiki>".a"</nowiki>|#FFB100}}
| |
| inlinelibname$ = x$ + {{Text|<nowiki>".a"</nowiki>|#FFB100}}
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}}
| |
| {{Text|<nowiki>'check for .o</nowiki>|#919191}}
| |
| {{Cl|IF}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|THEN}}
| |
| {{Cl|IF}} {{Cl|_FILEEXISTS}}(x$ + {{Text|<nowiki>".o"</nowiki>|#FFB100}}) {{Cl|THEN}}
| |
| libname$ = x$ + {{Text|<nowiki>".o"</nowiki>|#FFB100}}
| |
| inlinelibname$ = x$ + {{Text|<nowiki>".o"</nowiki>|#FFB100}}
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}} {{Text|<nowiki>'Windows</nowiki>|#919191}}
| |
|
| |
| {{Cl|IF}} os$ = {{Text|<nowiki>"LNX"</nowiki>|#FFB100}} {{Cl|THEN}}
| |
| {{Cl|IF}} staticlinkedlibrary = {{Text|0|#F580B1}} {{Cl|THEN}}
| |
|
| |
| {{Cl|IF}} MacOSX {{Cl|THEN}} {{Text|<nowiki>'dylib support</nowiki>|#919191}}
| |
| {{Text|<nowiki>'check for .dylib (direct)</nowiki>|#919191}}
| |
| {{Cl|IF}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|THEN}}
| |
| {{Cl|IF}} {{Cl|_FILEEXISTS}}(libpath$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>"."</nowiki>|#FFB100}} + libver$ + {{Text|<nowiki>".dylib"</nowiki>|#FFB100}}) {{Cl|THEN}}
| |
| libname$ = libpath$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>"."</nowiki>|#FFB100}} + libver$ + {{Text|<nowiki>".dylib"</nowiki>|#FFB100}}
| |
| inlinelibname$ = libpath_inline$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>"."</nowiki>|#FFB100}} + libver$ + {{Text|<nowiki>".dylib"</nowiki>|#FFB100}}
| |
| {{Cl|IF}} {{Cl|LEN}}(libpath$) {{Cl|THEN}} mylibopt$ = mylibopt$ + {{Text|<nowiki>" -Wl,-rpath "</nowiki>|#FFB100}} + libpath$ + {{Text|<nowiki>" "</nowiki>|#FFB100}} {{Cl|ELSE}} mylibopt$ = mylibopt$ + {{Text|<nowiki>" -Wl,-rpath ./ "</nowiki>|#FFB100}}
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}}
| |
| {{Cl|IF}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|THEN}}
| |
| {{Cl|IF}} {{Cl|_FILEEXISTS}}(libpath$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".dylib"</nowiki>|#FFB100}}) {{Cl|THEN}}
| |
| libname$ = libpath$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".dylib"</nowiki>|#FFB100}}
| |
| inlinelibname$ = libpath_inline$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".dylib"</nowiki>|#FFB100}}
| |
| {{Cl|IF}} {{Cl|LEN}}(libpath$) {{Cl|THEN}} mylibopt$ = mylibopt$ + {{Text|<nowiki>" -Wl,-rpath "</nowiki>|#FFB100}} + libpath$ + {{Text|<nowiki>" "</nowiki>|#FFB100}} {{Cl|ELSE}} mylibopt$ = mylibopt$ + {{Text|<nowiki>" -Wl,-rpath ./ "</nowiki>|#FFB100}}
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}}
| |
|
| |
| {{Text|<nowiki>'check for .so (direct)</nowiki>|#919191}}
| |
| {{Cl|IF}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|THEN}}
| |
| {{Cl|IF}} {{Cl|_FILEEXISTS}}(libpath$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so."</nowiki>|#FFB100}} + libver$) {{Cl|THEN}}
| |
| libname$ = libpath$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so."</nowiki>|#FFB100}} + libver$
| |
| inlinelibname$ = libpath_inline$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so."</nowiki>|#FFB100}} + libver$
| |
| {{Cl|IF}} {{Cl|LEN}}(libpath$) {{Cl|THEN}} mylibopt$ = mylibopt$ + {{Text|<nowiki>" -Wl,-rpath "</nowiki>|#FFB100}} + libpath$ + {{Text|<nowiki>" "</nowiki>|#FFB100}} {{Cl|ELSE}} mylibopt$ = mylibopt$ + {{Text|<nowiki>" -Wl,-rpath ./ "</nowiki>|#FFB100}}
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}}
| |
| {{Cl|IF}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|THEN}}
| |
| {{Cl|IF}} {{Cl|_FILEEXISTS}}(libpath$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so"</nowiki>|#FFB100}}) {{Cl|THEN}}
| |
| libname$ = libpath$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so"</nowiki>|#FFB100}}
| |
| inlinelibname$ = libpath_inline$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so"</nowiki>|#FFB100}}
| |
| {{Cl|IF}} {{Cl|LEN}}(libpath$) {{Cl|THEN}} mylibopt$ = mylibopt$ + {{Text|<nowiki>" -Wl,-rpath "</nowiki>|#FFB100}} + libpath$ + {{Text|<nowiki>" "</nowiki>|#FFB100}} {{Cl|ELSE}} mylibopt$ = mylibopt$ + {{Text|<nowiki>" -Wl,-rpath ./ "</nowiki>|#FFB100}}
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}}
| |
| {{Text|<nowiki>'check for .a (direct)</nowiki>|#919191}}
| |
| {{Cl|IF}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|THEN}}
| |
| {{Cl|IF}} {{Cl|_FILEEXISTS}}(libpath$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".a"</nowiki>|#FFB100}}) {{Cl|THEN}}
| |
| libname$ = libpath$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".a"</nowiki>|#FFB100}}
| |
| inlinelibname$ = libpath_inline$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".a"</nowiki>|#FFB100}}
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}}
| |
| {{Text|<nowiki>'check for .o (direct)</nowiki>|#919191}}
| |
| {{Cl|IF}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|THEN}}
| |
| {{Cl|IF}} {{Cl|_FILEEXISTS}}(libpath$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".o"</nowiki>|#FFB100}}) {{Cl|THEN}}
| |
| libname$ = libpath$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".o"</nowiki>|#FFB100}}
| |
| inlinelibname$ = libpath_inline$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".o"</nowiki>|#FFB100}}
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}}
| |
| {{Cl|IF}} staticlinkedlibrary = {{Text|0|#F580B1}} {{Cl|THEN}}
| |
| {{Text|<nowiki>'check for .so (usr/lib64)</nowiki>|#919191}}
| |
| {{Cl|IF}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|THEN}}
| |
| {{Cl|IF}} {{Cl|_FILEEXISTS}}({{Text|<nowiki>"/usr/lib64/"</nowiki>|#FFB100}} + libpath$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so."</nowiki>|#FFB100}} + libver$) {{Cl|THEN}}
| |
| libname$ = {{Text|<nowiki>"/usr/lib64/"</nowiki>|#FFB100}} + libpath$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so."</nowiki>|#FFB100}} + libver$
| |
| inlinelibname$ = {{Text|<nowiki>"/usr/lib64/"</nowiki>|#FFB100}} + libpath_inline$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so."</nowiki>|#FFB100}} + libver$
| |
| {{Cl|IF}} {{Cl|LEN}}(libpath$) {{Cl|THEN}} mylibopt$ = mylibopt$ + {{Text|<nowiki>" -Wl,-rpath /usr/lib64/"</nowiki>|#FFB100}} + libpath$ + {{Text|<nowiki>" "</nowiki>|#FFB100}} {{Cl|ELSE}} mylibopt$ = mylibopt$ + {{Text|<nowiki>" -Wl,-rpath /usr/lib64/ "</nowiki>|#FFB100}}
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}}
| |
| {{Cl|IF}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|THEN}}
| |
| {{Cl|IF}} {{Cl|_FILEEXISTS}}({{Text|<nowiki>"/usr/lib64/"</nowiki>|#FFB100}} + libpath$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so"</nowiki>|#FFB100}}) {{Cl|THEN}}
| |
| libname$ = {{Text|<nowiki>"/usr/lib64/"</nowiki>|#FFB100}} + libpath$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so"</nowiki>|#FFB100}}
| |
| inlinelibname$ = {{Text|<nowiki>"/usr/lib64/"</nowiki>|#FFB100}} + libpath_inline$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so"</nowiki>|#FFB100}}
| |
| {{Cl|IF}} {{Cl|LEN}}(libpath$) {{Cl|THEN}} mylibopt$ = mylibopt$ + {{Text|<nowiki>" -Wl,-rpath /usr/lib64/"</nowiki>|#FFB100}} + libpath$ + {{Text|<nowiki>" "</nowiki>|#FFB100}} {{Cl|ELSE}} mylibopt$ = mylibopt$ + {{Text|<nowiki>" -Wl,-rpath /usr/lib64/ "</nowiki>|#FFB100}}
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}}
| |
| {{Text|<nowiki>'check for .a (usr/lib64)</nowiki>|#919191}}
| |
| {{Cl|IF}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|THEN}}
| |
| {{Cl|IF}} {{Cl|_FILEEXISTS}}({{Text|<nowiki>"/usr/lib64/"</nowiki>|#FFB100}} + libpath$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".a"</nowiki>|#FFB100}}) {{Cl|THEN}}
| |
| libname$ = {{Text|<nowiki>"/usr/lib64/"</nowiki>|#FFB100}} + libpath$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".a"</nowiki>|#FFB100}}
| |
| inlinelibname$ = {{Text|<nowiki>"/usr/lib64/"</nowiki>|#FFB100}} + libpath_inline$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".a"</nowiki>|#FFB100}}
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}}
| |
| {{Cl|IF}} staticlinkedlibrary = {{Text|0|#F580B1}} {{Cl|THEN}}
| |
|
| |
| {{Cl|IF}} MacOSX {{Cl|THEN}} {{Text|<nowiki>'dylib support</nowiki>|#919191}}
| |
| {{Text|<nowiki>'check for .dylib (usr/lib)</nowiki>|#919191}}
| |
| {{Cl|IF}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|THEN}}
| |
| {{Cl|IF}} {{Cl|_FILEEXISTS}}({{Text|<nowiki>"/usr/lib/"</nowiki>|#FFB100}} + libpath$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>"."</nowiki>|#FFB100}} + libver$ + {{Text|<nowiki>".dylib"</nowiki>|#FFB100}}) {{Cl|THEN}}
| |
| libname$ = {{Text|<nowiki>"/usr/lib/"</nowiki>|#FFB100}} + libpath$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>"."</nowiki>|#FFB100}} + libver$ + {{Text|<nowiki>".dylib"</nowiki>|#FFB100}}
| |
| inlinelibname$ = {{Text|<nowiki>"/usr/lib/"</nowiki>|#FFB100}} + libpath_inline$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>"."</nowiki>|#FFB100}} + libver$ + {{Text|<nowiki>".dylib"</nowiki>|#FFB100}}
| |
| {{Cl|IF}} {{Cl|LEN}}(libpath$) {{Cl|THEN}} mylibopt$ = mylibopt$ + {{Text|<nowiki>" -Wl,-rpath /usr/lib/"</nowiki>|#FFB100}} + libpath$ + {{Text|<nowiki>" "</nowiki>|#FFB100}} {{Cl|ELSE}} mylibopt$ = mylibopt$ + {{Text|<nowiki>" -Wl,-rpath /usr/lib/ "</nowiki>|#FFB100}}
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}}
| |
| {{Cl|IF}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|THEN}}
| |
| {{Cl|IF}} {{Cl|_FILEEXISTS}}({{Text|<nowiki>"/usr/lib/"</nowiki>|#FFB100}} + libpath$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".dylib"</nowiki>|#FFB100}}) {{Cl|THEN}}
| |
| libname$ = {{Text|<nowiki>"/usr/lib/"</nowiki>|#FFB100}} + libpath$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".dylib"</nowiki>|#FFB100}}
| |
| inlinelibname$ = {{Text|<nowiki>"/usr/lib/"</nowiki>|#FFB100}} + libpath_inline$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".dylib"</nowiki>|#FFB100}}
| |
| {{Cl|IF}} {{Cl|LEN}}(libpath$) {{Cl|THEN}} mylibopt$ = mylibopt$ + {{Text|<nowiki>" -Wl,-rpath /usr/lib/"</nowiki>|#FFB100}} + libpath$ + {{Text|<nowiki>" "</nowiki>|#FFB100}} {{Cl|ELSE}} mylibopt$ = mylibopt$ + {{Text|<nowiki>" -Wl,-rpath /usr/lib/ "</nowiki>|#FFB100}}
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}}
| |
|
| |
| {{Text|<nowiki>'check for .so (usr/lib)</nowiki>|#919191}}
| |
| {{Cl|IF}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|THEN}}
| |
| {{Cl|IF}} {{Cl|_FILEEXISTS}}({{Text|<nowiki>"/usr/lib/"</nowiki>|#FFB100}} + libpath$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so."</nowiki>|#FFB100}} + libver$) {{Cl|THEN}}
| |
| libname$ = {{Text|<nowiki>"/usr/lib/"</nowiki>|#FFB100}} + libpath$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so."</nowiki>|#FFB100}} + libver$
| |
| inlinelibname$ = {{Text|<nowiki>"/usr/lib/"</nowiki>|#FFB100}} + libpath_inline$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so."</nowiki>|#FFB100}} + libver$
| |
| {{Cl|IF}} {{Cl|LEN}}(libpath$) {{Cl|THEN}} mylibopt$ = mylibopt$ + {{Text|<nowiki>" -Wl,-rpath /usr/lib/"</nowiki>|#FFB100}} + libpath$ + {{Text|<nowiki>" "</nowiki>|#FFB100}} {{Cl|ELSE}} mylibopt$ = mylibopt$ + {{Text|<nowiki>" -Wl,-rpath /usr/lib/ "</nowiki>|#FFB100}}
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}}
| |
| {{Cl|IF}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|THEN}}
| |
| {{Cl|IF}} {{Cl|_FILEEXISTS}}({{Text|<nowiki>"/usr/lib/"</nowiki>|#FFB100}} + libpath$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so"</nowiki>|#FFB100}}) {{Cl|THEN}}
| |
| libname$ = {{Text|<nowiki>"/usr/lib/"</nowiki>|#FFB100}} + libpath$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so"</nowiki>|#FFB100}}
| |
| inlinelibname$ = {{Text|<nowiki>"/usr/lib/"</nowiki>|#FFB100}} + libpath_inline$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so"</nowiki>|#FFB100}}
| |
| {{Cl|IF}} {{Cl|LEN}}(libpath$) {{Cl|THEN}} mylibopt$ = mylibopt$ + {{Text|<nowiki>" -Wl,-rpath /usr/lib/"</nowiki>|#FFB100}} + libpath$ + {{Text|<nowiki>" "</nowiki>|#FFB100}} {{Cl|ELSE}} mylibopt$ = mylibopt$ + {{Text|<nowiki>" -Wl,-rpath /usr/lib/ "</nowiki>|#FFB100}}
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}}
| |
| {{Text|<nowiki>'check for .a (usr/lib)</nowiki>|#919191}}
| |
| {{Cl|IF}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|THEN}}
| |
| {{Cl|IF}} {{Cl|_FILEEXISTS}}({{Text|<nowiki>"/usr/lib/"</nowiki>|#FFB100}} + libpath$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".a"</nowiki>|#FFB100}}) {{Cl|THEN}}
| |
| libname$ = {{Text|<nowiki>"/usr/lib/"</nowiki>|#FFB100}} + libpath$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".a"</nowiki>|#FFB100}}
| |
| inlinelibname$ = {{Text|<nowiki>"/usr/lib/"</nowiki>|#FFB100}} + libpath_inline$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".a"</nowiki>|#FFB100}}
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}}
| |
| {{Text|<nowiki>'--------------------------(without path)------------------------------</nowiki>|#919191}}
| |
| {{Cl|IF}} staticlinkedlibrary = {{Text|0|#F580B1}} {{Cl|THEN}}
| |
|
| |
| {{Cl|IF}} MacOSX {{Cl|THEN}} {{Text|<nowiki>'dylib support</nowiki>|#919191}}
| |
| {{Text|<nowiki>'check for .dylib (direct)</nowiki>|#919191}}
| |
| {{Cl|IF}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|THEN}}
| |
| {{Cl|IF}} {{Cl|_FILEEXISTS}}({{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>"."</nowiki>|#FFB100}} + libver$ + {{Text|<nowiki>".dylib"</nowiki>|#FFB100}}) {{Cl|THEN}}
| |
| libname$ = {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>"."</nowiki>|#FFB100}} + libver$ + {{Text|<nowiki>".dylib"</nowiki>|#FFB100}}
| |
| inlinelibname$ = {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>"."</nowiki>|#FFB100}} + libver$ + {{Text|<nowiki>".dylib"</nowiki>|#FFB100}}
| |
| mylibopt$ = mylibopt$ + {{Text|<nowiki>" -Wl,-rpath ./ "</nowiki>|#FFB100}}
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}}
| |
| {{Cl|IF}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|THEN}}
| |
| {{Cl|IF}} {{Cl|_FILEEXISTS}}({{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".dylib"</nowiki>|#FFB100}}) {{Cl|THEN}}
| |
| libname$ = {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".dylib"</nowiki>|#FFB100}}
| |
| inlinelibname$ = {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".dylib"</nowiki>|#FFB100}}
| |
| mylibopt$ = mylibopt$ + {{Text|<nowiki>" -Wl,-rpath ./ "</nowiki>|#FFB100}}
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}}
| |
|
| |
| {{Text|<nowiki>'check for .so (direct)</nowiki>|#919191}}
| |
| {{Cl|IF}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|THEN}}
| |
| {{Cl|IF}} {{Cl|_FILEEXISTS}}({{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so."</nowiki>|#FFB100}} + libver$) {{Cl|THEN}}
| |
| libname$ = {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so."</nowiki>|#FFB100}} + libver$
| |
| inlinelibname$ = {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so."</nowiki>|#FFB100}} + libver$
| |
| mylibopt$ = mylibopt$ + {{Text|<nowiki>" -Wl,-rpath ./ "</nowiki>|#FFB100}}
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}}
| |
| {{Cl|IF}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|THEN}}
| |
| {{Cl|IF}} {{Cl|_FILEEXISTS}}({{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so"</nowiki>|#FFB100}}) {{Cl|THEN}}
| |
| libname$ = {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so"</nowiki>|#FFB100}}
| |
| inlinelibname$ = {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so"</nowiki>|#FFB100}}
| |
| mylibopt$ = mylibopt$ + {{Text|<nowiki>" -Wl,-rpath ./ "</nowiki>|#FFB100}}
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}}
| |
| {{Text|<nowiki>'check for .a (direct)</nowiki>|#919191}}
| |
| {{Cl|IF}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|THEN}}
| |
| {{Cl|IF}} {{Cl|_FILEEXISTS}}({{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".a"</nowiki>|#FFB100}}) {{Cl|THEN}}
| |
| libname$ = {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".a"</nowiki>|#FFB100}}
| |
| inlinelibname$ = {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".a"</nowiki>|#FFB100}}
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}}
| |
| {{Text|<nowiki>'check for .o (direct)</nowiki>|#919191}}
| |
| {{Cl|IF}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|THEN}}
| |
| {{Cl|IF}} {{Cl|_FILEEXISTS}}({{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".o"</nowiki>|#FFB100}}) {{Cl|THEN}}
| |
| libname$ = {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".o"</nowiki>|#FFB100}}
| |
| inlinelibname$ = {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".o"</nowiki>|#FFB100}}
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}}
| |
| {{Cl|IF}} staticlinkedlibrary = {{Text|0|#F580B1}} {{Cl|THEN}}
| |
| {{Text|<nowiki>'check for .so (usr/lib64)</nowiki>|#919191}}
| |
| {{Cl|IF}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|THEN}}
| |
| {{Cl|IF}} {{Cl|_FILEEXISTS}}({{Text|<nowiki>"/usr/lib64/"</nowiki>|#FFB100}} + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so."</nowiki>|#FFB100}} + libver$) {{Cl|THEN}}
| |
| libname$ = {{Text|<nowiki>"/usr/lib64/"</nowiki>|#FFB100}} + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so."</nowiki>|#FFB100}} + libver$
| |
| inlinelibname$ = {{Text|<nowiki>"/usr/lib64/"</nowiki>|#FFB100}} + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so."</nowiki>|#FFB100}} + libver$
| |
| mylibopt$ = mylibopt$ + {{Text|<nowiki>" -Wl,-rpath /usr/lib64/ "</nowiki>|#FFB100}}
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}}
| |
| {{Cl|IF}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|THEN}}
| |
| {{Cl|IF}} {{Cl|_FILEEXISTS}}({{Text|<nowiki>"/usr/lib64/"</nowiki>|#FFB100}} + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so"</nowiki>|#FFB100}}) {{Cl|THEN}}
| |
| libname$ = {{Text|<nowiki>"/usr/lib64/"</nowiki>|#FFB100}} + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so"</nowiki>|#FFB100}}
| |
| inlinelibname$ = {{Text|<nowiki>"/usr/lib64/"</nowiki>|#FFB100}} + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so"</nowiki>|#FFB100}}
| |
| mylibopt$ = mylibopt$ + {{Text|<nowiki>" -Wl,-rpath /usr/lib64/ "</nowiki>|#FFB100}}
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}}
| |
| {{Text|<nowiki>'check for .a (usr/lib64)</nowiki>|#919191}}
| |
| {{Cl|IF}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|THEN}}
| |
| {{Cl|IF}} {{Cl|_FILEEXISTS}}({{Text|<nowiki>"/usr/lib64/"</nowiki>|#FFB100}} + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".a"</nowiki>|#FFB100}}) {{Cl|THEN}}
| |
| libname$ = {{Text|<nowiki>"/usr/lib64/"</nowiki>|#FFB100}} + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".a"</nowiki>|#FFB100}}
| |
| inlinelibname$ = {{Text|<nowiki>"/usr/lib64/"</nowiki>|#FFB100}} + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".a"</nowiki>|#FFB100}}
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}}
| |
| {{Cl|IF}} staticlinkedlibrary = {{Text|0|#F580B1}} {{Cl|THEN}}
| |
|
| |
| {{Cl|IF}} MacOSX {{Cl|THEN}} {{Text|<nowiki>'dylib support</nowiki>|#919191}}
| |
| {{Text|<nowiki>'check for .dylib (usr/lib)</nowiki>|#919191}}
| |
| {{Cl|IF}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|THEN}}
| |
| {{Cl|IF}} {{Cl|_FILEEXISTS}}({{Text|<nowiki>"/usr/lib/"</nowiki>|#FFB100}} + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>"."</nowiki>|#FFB100}} + libver$ + {{Text|<nowiki>".dylib"</nowiki>|#FFB100}}) {{Cl|THEN}}
| |
| libname$ = {{Text|<nowiki>"/usr/lib/"</nowiki>|#FFB100}} + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>"."</nowiki>|#FFB100}} + libver$ + {{Text|<nowiki>".dylib"</nowiki>|#FFB100}}
| |
| inlinelibname$ = {{Text|<nowiki>"/usr/lib/"</nowiki>|#FFB100}} + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>"."</nowiki>|#FFB100}} + libver$ + {{Text|<nowiki>".dylib"</nowiki>|#FFB100}}
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}}
| |
| {{Cl|IF}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|THEN}}
| |
| {{Cl|IF}} {{Cl|_FILEEXISTS}}({{Text|<nowiki>"/usr/lib/"</nowiki>|#FFB100}} + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".dylib"</nowiki>|#FFB100}}) {{Cl|THEN}}
| |
| libname$ = {{Text|<nowiki>"/usr/lib/"</nowiki>|#FFB100}} + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".dylib"</nowiki>|#FFB100}}
| |
| inlinelibname$ = {{Text|<nowiki>"/usr/lib/"</nowiki>|#FFB100}} + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".dylib"</nowiki>|#FFB100}}
| |
| mylibopt$ = mylibopt$ + {{Text|<nowiki>" -Wl,-rpath /usr/lib/ "</nowiki>|#FFB100}}
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}}
| |
|
| |
| {{Text|<nowiki>'check for .so (usr/lib)</nowiki>|#919191}}
| |
| {{Cl|IF}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|THEN}}
| |
| {{Cl|IF}} {{Cl|_FILEEXISTS}}({{Text|<nowiki>"/usr/lib/"</nowiki>|#FFB100}} + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so."</nowiki>|#FFB100}} + libver$) {{Cl|THEN}}
| |
| libname$ = {{Text|<nowiki>"/usr/lib/"</nowiki>|#FFB100}} + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so."</nowiki>|#FFB100}} + libver$
| |
| inlinelibname$ = {{Text|<nowiki>"/usr/lib/"</nowiki>|#FFB100}} + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so."</nowiki>|#FFB100}} + libver$
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}}
| |
| {{Cl|IF}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|THEN}}
| |
| {{Cl|IF}} {{Cl|_FILEEXISTS}}({{Text|<nowiki>"/usr/lib/"</nowiki>|#FFB100}} + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so"</nowiki>|#FFB100}}) {{Cl|THEN}}
| |
| libname$ = {{Text|<nowiki>"/usr/lib/"</nowiki>|#FFB100}} + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so"</nowiki>|#FFB100}}
| |
| inlinelibname$ = {{Text|<nowiki>"/usr/lib/"</nowiki>|#FFB100}} + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so"</nowiki>|#FFB100}}
| |
| mylibopt$ = mylibopt$ + {{Text|<nowiki>" -Wl,-rpath /usr/lib/ "</nowiki>|#FFB100}}
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}}
| |
| {{Text|<nowiki>'check for .a (usr/lib)</nowiki>|#919191}}
| |
| {{Cl|IF}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|THEN}}
| |
| {{Cl|IF}} {{Cl|_FILEEXISTS}}({{Text|<nowiki>"/usr/lib/"</nowiki>|#FFB100}} + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".a"</nowiki>|#FFB100}}) {{Cl|THEN}}
| |
| libname$ = {{Text|<nowiki>"/usr/lib/"</nowiki>|#FFB100}} + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".a"</nowiki>|#FFB100}}
| |
| inlinelibname$ = {{Text|<nowiki>"/usr/lib/"</nowiki>|#FFB100}} + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".a"</nowiki>|#FFB100}}
| |
| mylibopt$ = mylibopt$ + {{Text|<nowiki>" -Wl,-rpath /usr/lib/ "</nowiki>|#FFB100}}
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}} {{Text|<nowiki>'Linux</nowiki>|#919191}}
| |
|
| |
|
| |
| {{Text|<nowiki>'check for header</nowiki>|#919191}}
| |
| {{Cl|IF}} {{Cl|LEN}}(headername$) = {{Text|0|#F580B1}} {{Cl|THEN}}
| |
| {{Cl|IF}} os$ = {{Text|<nowiki>"WIN"</nowiki>|#FFB100}} {{Cl|THEN}}
| |
| {{Cl|IF}} {{Cl|_FILEEXISTS}}(libpath$ + x$ + {{Text|<nowiki>".h"</nowiki>|#FFB100}}) {{Cl|THEN}}
| |
| headername$ = libpath_inline$ + x$ + {{Text|<nowiki>".h"</nowiki>|#FFB100}}
| |
| {{Cl|IF}} customtypelibrary = {{Text|0|#F580B1}} {{Cl|THEN}} sfdeclare = {{Text|0|#F580B1}}
| |
| sfheader = {{Text|1|#F580B1}}
| |
| {{Cl|GOTO}} GotHeader
| |
| {{Cl|END IF}}
| |
| {{Cl|IF}} {{Cl|_FILEEXISTS}}(libpath$ + x$ + {{Text|<nowiki>".hpp"</nowiki>|#FFB100}}) {{Cl|THEN}}
| |
| headername$ = libpath_inline$ + x$ + {{Text|<nowiki>".hpp"</nowiki>|#FFB100}}
| |
| {{Cl|IF}} customtypelibrary = {{Text|0|#F580B1}} {{Cl|THEN}} sfdeclare = {{Text|0|#F580B1}}
| |
| sfheader = {{Text|1|#F580B1}}
| |
| {{Cl|GOTO}} GotHeader
| |
| {{Cl|END IF}}
| |
| {{Text|<nowiki>'--------------------------(without path)------------------------------</nowiki>|#919191}}
| |
| {{Cl|IF}} {{Cl|_FILEEXISTS}}(x$ + {{Text|<nowiki>".h"</nowiki>|#FFB100}}) {{Cl|THEN}}
| |
| headername$ = x$ + {{Text|<nowiki>".h"</nowiki>|#FFB100}}
| |
| {{Cl|IF}} customtypelibrary = {{Text|0|#F580B1}} {{Cl|THEN}} sfdeclare = {{Text|0|#F580B1}}
| |
| sfheader = {{Text|1|#F580B1}}
| |
| {{Cl|GOTO}} GotHeader
| |
| {{Cl|END IF}}
| |
| {{Cl|IF}} {{Cl|_FILEEXISTS}}(x$ + {{Text|<nowiki>".hpp"</nowiki>|#FFB100}}) {{Cl|THEN}}
| |
| headername$ = x$ + {{Text|<nowiki>".hpp"</nowiki>|#FFB100}}
| |
| {{Cl|IF}} customtypelibrary = {{Text|0|#F580B1}} {{Cl|THEN}} sfdeclare = {{Text|0|#F580B1}}
| |
| sfheader = {{Text|1|#F580B1}}
| |
| {{Cl|GOTO}} GotHeader
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}} {{Text|<nowiki>'Windows</nowiki>|#919191}}
| |
|
| |
| {{Cl|IF}} os$ = {{Text|<nowiki>"LNX"</nowiki>|#FFB100}} {{Cl|THEN}}
| |
| {{Cl|IF}} {{Cl|_FILEEXISTS}}(libpath$ + x$ + {{Text|<nowiki>".h"</nowiki>|#FFB100}}) {{Cl|THEN}}
| |
| headername$ = libpath_inline$ + x$ + {{Text|<nowiki>".h"</nowiki>|#FFB100}}
| |
| {{Cl|IF}} customtypelibrary = {{Text|0|#F580B1}} {{Cl|THEN}} sfdeclare = {{Text|0|#F580B1}}
| |
| sfheader = {{Text|1|#F580B1}}
| |
| {{Cl|GOTO}} GotHeader
| |
| {{Cl|END IF}}
| |
| {{Cl|IF}} {{Cl|_FILEEXISTS}}(libpath$ + x$ + {{Text|<nowiki>".hpp"</nowiki>|#FFB100}}) {{Cl|THEN}}
| |
| headername$ = libpath_inline$ + x$ + {{Text|<nowiki>".hpp"</nowiki>|#FFB100}}
| |
| {{Cl|IF}} customtypelibrary = {{Text|0|#F580B1}} {{Cl|THEN}} sfdeclare = {{Text|0|#F580B1}}
| |
| sfheader = {{Text|1|#F580B1}}
| |
| {{Cl|GOTO}} GotHeader
| |
| {{Cl|END IF}}
| |
| {{Cl|IF}} {{Cl|_FILEEXISTS}}({{Text|<nowiki>"/usr/include/"</nowiki>|#FFB100}} + libpath$ + x$ + {{Text|<nowiki>".h"</nowiki>|#FFB100}}) {{Cl|THEN}}
| |
| headername$ = {{Text|<nowiki>"/usr/include/"</nowiki>|#FFB100}} + libpath_inline$ + x$ + {{Text|<nowiki>".h"</nowiki>|#FFB100}}
| |
| {{Cl|IF}} customtypelibrary = {{Text|0|#F580B1}} {{Cl|THEN}} sfdeclare = {{Text|0|#F580B1}}
| |
| sfheader = {{Text|1|#F580B1}}
| |
| {{Cl|GOTO}} GotHeader
| |
| {{Cl|END IF}}
| |
| {{Cl|IF}} {{Cl|_FILEEXISTS}}({{Text|<nowiki>"/usr/include/"</nowiki>|#FFB100}} + libpath$ + x$ + {{Text|<nowiki>".hpp"</nowiki>|#FFB100}}) {{Cl|THEN}}
| |
| headername$ = {{Text|<nowiki>"/usr/include/"</nowiki>|#FFB100}} + libpath_inline$ + x$ + {{Text|<nowiki>".hpp"</nowiki>|#FFB100}}
| |
| {{Cl|IF}} customtypelibrary = {{Text|0|#F580B1}} {{Cl|THEN}} sfdeclare = {{Text|0|#F580B1}}
| |
| sfheader = {{Text|1|#F580B1}}
| |
| {{Cl|GOTO}} GotHeader
| |
| {{Cl|END IF}}
| |
| {{Text|<nowiki>'--------------------------(without path)------------------------------</nowiki>|#919191}}
| |
| {{Cl|IF}} {{Cl|_FILEEXISTS}}(x$ + {{Text|<nowiki>".h"</nowiki>|#FFB100}}) {{Cl|THEN}}
| |
| headername$ = x$ + {{Text|<nowiki>".h"</nowiki>|#FFB100}}
| |
| {{Cl|IF}} customtypelibrary = {{Text|0|#F580B1}} {{Cl|THEN}} sfdeclare = {{Text|0|#F580B1}}
| |
| sfheader = {{Text|1|#F580B1}}
| |
| {{Cl|GOTO}} GotHeader
| |
| {{Cl|END IF}}
| |
| {{Cl|IF}} {{Cl|_FILEEXISTS}}(x$ + {{Text|<nowiki>".hpp"</nowiki>|#FFB100}}) {{Cl|THEN}}
| |
| headername$ = x$ + {{Text|<nowiki>".hpp"</nowiki>|#FFB100}}
| |
| {{Cl|IF}} customtypelibrary = {{Text|0|#F580B1}} {{Cl|THEN}} sfdeclare = {{Text|0|#F580B1}}
| |
| sfheader = {{Text|1|#F580B1}}
| |
| {{Cl|GOTO}} GotHeader
| |
| {{Cl|END IF}}
| |
| {{Cl|IF}} {{Cl|_FILEEXISTS}}({{Text|<nowiki>"/usr/include/"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".h"</nowiki>|#FFB100}}) {{Cl|THEN}}
| |
| headername$ = {{Text|<nowiki>"/usr/include/"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".h"</nowiki>|#FFB100}}
| |
| {{Cl|IF}} customtypelibrary = {{Text|0|#F580B1}} {{Cl|THEN}} sfdeclare = {{Text|0|#F580B1}}
| |
| sfheader = {{Text|1|#F580B1}}
| |
| {{Cl|GOTO}} GotHeader
| |
| {{Cl|END IF}}
| |
| {{Cl|IF}} {{Cl|_FILEEXISTS}}({{Text|<nowiki>"/usr/include/"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".hpp"</nowiki>|#FFB100}}) {{Cl|THEN}}
| |
| headername$ = {{Text|<nowiki>"/usr/include/"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".hpp"</nowiki>|#FFB100}}
| |
| {{Cl|IF}} customtypelibrary = {{Text|0|#F580B1}} {{Cl|THEN}} sfdeclare = {{Text|0|#F580B1}}
| |
| sfheader = {{Text|1|#F580B1}}
| |
| {{Cl|GOTO}} GotHeader
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}} {{Text|<nowiki>'Linux</nowiki>|#919191}}
| |
|
| |
| GotHeader:
| |
| {{Cl|END IF}}
| |
|
| |
| {{Cl|ELSE}}
| |
| {{Text|<nowiki>'dynamic library</nowiki>|#919191}}
| |
|
| |
| {{Cl|IF}} os$ = {{Text|<nowiki>"WIN"</nowiki>|#FFB100}} {{Cl|THEN}}
| |
| {{Text|<nowiki>'check for .dll (direct)</nowiki>|#919191}}
| |
| {{Cl|IF}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|THEN}}
| |
| {{Cl|IF}} {{Cl|_FILEEXISTS}}(libpath$ + x$ + {{Text|<nowiki>".dll"</nowiki>|#FFB100}}) {{Cl|THEN}}
| |
| libname$ = libpath$ + x$ + {{Text|<nowiki>".dll"</nowiki>|#FFB100}}
| |
| inlinelibname$ = libpath_inline$ + x$ + {{Text|<nowiki>".dll"</nowiki>|#FFB100}}
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}}
| |
| {{Text|<nowiki>'check for .dll (system32)</nowiki>|#919191}}
| |
| {{Cl|IF}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|THEN}}
| |
| {{Cl|IF}} {{Cl|_FILEEXISTS}}({{Cl|ENVIRON$}}({{Text|<nowiki>"SYSTEMROOT"</nowiki>|#FFB100}}) + {{Text|<nowiki>"\System32\"</nowiki>|#FFB100}} + libpath$ + x$ + {{Text|<nowiki>".dll"</nowiki>|#FFB100}}) {{Cl|THEN}}
| |
| libname$ = libpath$ + x$ + {{Text|<nowiki>".dll"</nowiki>|#FFB100}}
| |
| inlinelibname$ = libpath_inline$ + x$ + {{Text|<nowiki>".dll"</nowiki>|#FFB100}}
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}}
| |
| {{Text|<nowiki>'--------------------------(without path)------------------------------</nowiki>|#919191}}
| |
| {{Text|<nowiki>'check for .dll (direct)</nowiki>|#919191}}
| |
| {{Cl|IF}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|THEN}}
| |
| {{Cl|IF}} {{Cl|_FILEEXISTS}}(x$ + {{Text|<nowiki>".dll"</nowiki>|#FFB100}}) {{Cl|THEN}}
| |
| libname$ = x$ + {{Text|<nowiki>".dll"</nowiki>|#FFB100}}
| |
| inlinelibname$ = x$ + {{Text|<nowiki>".dll"</nowiki>|#FFB100}}
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}}
| |
| {{Text|<nowiki>'check for .dll (system32)</nowiki>|#919191}}
| |
| {{Cl|IF}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|THEN}}
| |
| {{Cl|IF}} {{Cl|_FILEEXISTS}}({{Cl|ENVIRON$}}({{Text|<nowiki>"SYSTEMROOT"</nowiki>|#FFB100}}) + {{Text|<nowiki>"\System32\"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".dll"</nowiki>|#FFB100}}) {{Cl|THEN}}
| |
| libname$ = x$ + {{Text|<nowiki>".dll"</nowiki>|#FFB100}}
| |
| inlinelibname$ = x$ + {{Text|<nowiki>".dll"</nowiki>|#FFB100}}
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}} {{Text|<nowiki>'Windows</nowiki>|#919191}}
| |
|
| |
| {{Cl|IF}} os$ = {{Text|<nowiki>"LNX"</nowiki>|#FFB100}} {{Cl|THEN}}
| |
| {{Text|<nowiki>'Note: STATIC libraries (.a/.o) cannot be loaded as dynamic objects</nowiki>|#919191}}
| |
|
| |
|
| |
| {{Cl|IF}} MacOSX {{Cl|THEN}} {{Text|<nowiki>'dylib support</nowiki>|#919191}}
| |
| {{Text|<nowiki>'check for .dylib (direct)</nowiki>|#919191}}
| |
| {{Cl|IF}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|THEN}}
| |
| {{Cl|IF}} {{Cl|_FILEEXISTS}}(libpath$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>"."</nowiki>|#FFB100}} + libver$ + {{Text|<nowiki>".dylib"</nowiki>|#FFB100}}) {{Cl|THEN}}
| |
| libname$ = libpath$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>"."</nowiki>|#FFB100}} + libver$ + {{Text|<nowiki>".dylib"</nowiki>|#FFB100}}
| |
| inlinelibname$ = libpath_inline$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>"."</nowiki>|#FFB100}} + libver$ + {{Text|<nowiki>".dylib"</nowiki>|#FFB100}}
| |
| {{Cl|IF}} {{Cl|LEFT$}}(libpath$, {{Text|1|#F580B1}}) <> {{Text|<nowiki>"/"</nowiki>|#FFB100}} {{Cl|THEN}} libname$ = {{Text|<nowiki>"./"</nowiki>|#FFB100}} + libname$: inlinelibname$ = {{Text|<nowiki>"./"</nowiki>|#FFB100}} + inlinelibname$
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}}
| |
| {{Cl|IF}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|THEN}}
| |
| {{Cl|IF}} {{Cl|_FILEEXISTS}}(libpath$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".dylib"</nowiki>|#FFB100}}) {{Cl|THEN}}
| |
| libname$ = libpath$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".dylib"</nowiki>|#FFB100}}
| |
| inlinelibname$ = libpath_inline$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".dylib"</nowiki>|#FFB100}}
| |
| {{Cl|IF}} {{Cl|LEFT$}}(libpath$, {{Text|1|#F580B1}}) <> {{Text|<nowiki>"/"</nowiki>|#FFB100}} {{Cl|THEN}} libname$ = {{Text|<nowiki>"./"</nowiki>|#FFB100}} + libname$: inlinelibname$ = {{Text|<nowiki>"./"</nowiki>|#FFB100}} + inlinelibname$
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}}
| |
|
| |
| {{Text|<nowiki>'check for .so (direct)</nowiki>|#919191}}
| |
| {{Cl|IF}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|THEN}}
| |
| {{Cl|IF}} {{Cl|_FILEEXISTS}}(libpath$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so."</nowiki>|#FFB100}} + libver$) {{Cl|THEN}}
| |
| libname$ = libpath$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so."</nowiki>|#FFB100}} + libver$
| |
| inlinelibname$ = libpath_inline$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so."</nowiki>|#FFB100}} + libver$
| |
| {{Cl|IF}} {{Cl|LEFT$}}(libpath$, {{Text|1|#F580B1}}) <> {{Text|<nowiki>"/"</nowiki>|#FFB100}} {{Cl|THEN}} libname$ = {{Text|<nowiki>"./"</nowiki>|#FFB100}} + libname$: inlinelibname$ = {{Text|<nowiki>"./"</nowiki>|#FFB100}} + inlinelibname$
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}}
| |
| {{Cl|IF}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|THEN}}
| |
| {{Cl|IF}} {{Cl|_FILEEXISTS}}(libpath$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so"</nowiki>|#FFB100}}) {{Cl|THEN}}
| |
| libname$ = libpath$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so"</nowiki>|#FFB100}}
| |
| inlinelibname$ = libpath_inline$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so"</nowiki>|#FFB100}}
| |
| {{Cl|IF}} {{Cl|LEFT$}}(libpath$, {{Text|1|#F580B1}}) <> {{Text|<nowiki>"/"</nowiki>|#FFB100}} {{Cl|THEN}} libname$ = {{Text|<nowiki>"./"</nowiki>|#FFB100}} + libname$: inlinelibname$ = {{Text|<nowiki>"./"</nowiki>|#FFB100}} + inlinelibname$
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}}
| |
| {{Text|<nowiki>'check for .so (usr/lib64)</nowiki>|#919191}}
| |
| {{Cl|IF}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|THEN}}
| |
| {{Cl|IF}} {{Cl|_FILEEXISTS}}({{Text|<nowiki>"/usr/lib64/"</nowiki>|#FFB100}} + libpath$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so."</nowiki>|#FFB100}} + libver$) {{Cl|THEN}}
| |
| libname$ = {{Text|<nowiki>"/usr/lib64/"</nowiki>|#FFB100}} + libpath$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so."</nowiki>|#FFB100}} + libver$
| |
| inlinelibname$ = {{Text|<nowiki>"/usr/lib64/"</nowiki>|#FFB100}} + libpath_inline$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so."</nowiki>|#FFB100}} + libver$
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}}
| |
| {{Cl|IF}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|THEN}}
| |
| {{Cl|IF}} {{Cl|_FILEEXISTS}}({{Text|<nowiki>"/usr/lib64/"</nowiki>|#FFB100}} + libpath$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so"</nowiki>|#FFB100}}) {{Cl|THEN}}
| |
| libname$ = {{Text|<nowiki>"/usr/lib64/"</nowiki>|#FFB100}} + libpath$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so"</nowiki>|#FFB100}}
| |
| inlinelibname$ = {{Text|<nowiki>"/usr/lib64/"</nowiki>|#FFB100}} + libpath_inline$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so"</nowiki>|#FFB100}}
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}}
| |
|
| |
| {{Cl|IF}} MacOSX {{Cl|THEN}} {{Text|<nowiki>'dylib support</nowiki>|#919191}}
| |
| {{Text|<nowiki>'check for .dylib (usr/lib)</nowiki>|#919191}}
| |
| {{Cl|IF}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|THEN}}
| |
| {{Cl|IF}} {{Cl|_FILEEXISTS}}({{Text|<nowiki>"/usr/lib/"</nowiki>|#FFB100}} + libpath$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>"."</nowiki>|#FFB100}} + libver$ + {{Text|<nowiki>".dylib"</nowiki>|#FFB100}}) {{Cl|THEN}}
| |
| libname$ = {{Text|<nowiki>"/usr/lib/"</nowiki>|#FFB100}} + libpath$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>"."</nowiki>|#FFB100}} + libver$ + {{Text|<nowiki>".dylib"</nowiki>|#FFB100}}
| |
| inlinelibname$ = {{Text|<nowiki>"/usr/lib/"</nowiki>|#FFB100}} + libpath_inline$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>"."</nowiki>|#FFB100}} + libver$ + {{Text|<nowiki>".dylib"</nowiki>|#FFB100}}
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}}
| |
| {{Cl|IF}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|THEN}}
| |
| {{Cl|IF}} {{Cl|_FILEEXISTS}}({{Text|<nowiki>"/usr/lib/"</nowiki>|#FFB100}} + libpath$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".dylib"</nowiki>|#FFB100}}) {{Cl|THEN}}
| |
| libname$ = {{Text|<nowiki>"/usr/lib/"</nowiki>|#FFB100}} + libpath$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".dylib"</nowiki>|#FFB100}}
| |
| inlinelibname$ = {{Text|<nowiki>"/usr/lib/"</nowiki>|#FFB100}} + libpath_inline$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".dylib"</nowiki>|#FFB100}}
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}}
| |
|
| |
| {{Text|<nowiki>'check for .so (usr/lib)</nowiki>|#919191}}
| |
| {{Cl|IF}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|THEN}}
| |
| {{Cl|IF}} {{Cl|_FILEEXISTS}}({{Text|<nowiki>"/usr/lib/"</nowiki>|#FFB100}} + libpath$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so."</nowiki>|#FFB100}} + libver$) {{Cl|THEN}}
| |
| libname$ = {{Text|<nowiki>"/usr/lib/"</nowiki>|#FFB100}} + libpath$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so."</nowiki>|#FFB100}} + libver$
| |
| inlinelibname$ = {{Text|<nowiki>"/usr/lib/"</nowiki>|#FFB100}} + libpath_inline$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so."</nowiki>|#FFB100}} + libver$
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}}
| |
| {{Cl|IF}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|THEN}}
| |
| {{Cl|IF}} {{Cl|_FILEEXISTS}}({{Text|<nowiki>"/usr/lib/"</nowiki>|#FFB100}} + libpath$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so"</nowiki>|#FFB100}}) {{Cl|THEN}}
| |
| libname$ = {{Text|<nowiki>"/usr/lib/"</nowiki>|#FFB100}} + libpath$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so"</nowiki>|#FFB100}}
| |
| inlinelibname$ = {{Text|<nowiki>"/usr/lib/"</nowiki>|#FFB100}} + libpath_inline$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so"</nowiki>|#FFB100}}
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}}
| |
| {{Text|<nowiki>'--------------------------(without path)------------------------------</nowiki>|#919191}}
| |
| {{Cl|IF}} MacOSX {{Cl|THEN}} {{Text|<nowiki>'dylib support</nowiki>|#919191}}
| |
| {{Text|<nowiki>'check for .dylib (direct)</nowiki>|#919191}}
| |
| {{Cl|IF}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|THEN}}
| |
| {{Cl|IF}} {{Cl|_FILEEXISTS}}({{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>"."</nowiki>|#FFB100}} + libver$ + {{Text|<nowiki>".dylib"</nowiki>|#FFB100}}) {{Cl|THEN}}
| |
| libname$ = {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>"."</nowiki>|#FFB100}} + libver$ + {{Text|<nowiki>".dylib"</nowiki>|#FFB100}}
| |
| inlinelibname$ = {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>"."</nowiki>|#FFB100}} + libver$ + {{Text|<nowiki>".dylib"</nowiki>|#FFB100}}
| |
| libname$ = {{Text|<nowiki>"./"</nowiki>|#FFB100}} + libname$: inlinelibname$ = {{Text|<nowiki>"./"</nowiki>|#FFB100}} + inlinelibname$
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}}
| |
| {{Cl|IF}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|THEN}}
| |
| {{Cl|IF}} {{Cl|_FILEEXISTS}}({{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".dylib"</nowiki>|#FFB100}}) {{Cl|THEN}}
| |
| libname$ = {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".dylib"</nowiki>|#FFB100}}
| |
| inlinelibname$ = {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".dylib"</nowiki>|#FFB100}}
| |
| libname$ = {{Text|<nowiki>"./"</nowiki>|#FFB100}} + libname$: inlinelibname$ = {{Text|<nowiki>"./"</nowiki>|#FFB100}} + inlinelibname$
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}}
| |
|
| |
| {{Text|<nowiki>'check for .so (direct)</nowiki>|#919191}}
| |
| {{Cl|IF}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|THEN}}
| |
| {{Cl|IF}} {{Cl|_FILEEXISTS}}({{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so."</nowiki>|#FFB100}} + libver$) {{Cl|THEN}}
| |
| libname$ = {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so."</nowiki>|#FFB100}} + libver$
| |
| inlinelibname$ = {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so."</nowiki>|#FFB100}} + libver$
| |
| libname$ = {{Text|<nowiki>"./"</nowiki>|#FFB100}} + libname$: inlinelibname$ = {{Text|<nowiki>"./"</nowiki>|#FFB100}} + inlinelibname$
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}}
| |
| {{Cl|IF}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|THEN}}
| |
| {{Cl|IF}} {{Cl|_FILEEXISTS}}({{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so"</nowiki>|#FFB100}}) {{Cl|THEN}}
| |
| libname$ = {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so"</nowiki>|#FFB100}}
| |
| inlinelibname$ = {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so"</nowiki>|#FFB100}}
| |
| libname$ = {{Text|<nowiki>"./"</nowiki>|#FFB100}} + libname$: inlinelibname$ = {{Text|<nowiki>"./"</nowiki>|#FFB100}} + inlinelibname$
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}}
| |
| {{Text|<nowiki>'check for .so (usr/lib64)</nowiki>|#919191}}
| |
| {{Cl|IF}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|THEN}}
| |
| {{Cl|IF}} {{Cl|_FILEEXISTS}}({{Text|<nowiki>"/usr/lib64/"</nowiki>|#FFB100}} + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so."</nowiki>|#FFB100}} + libver$) {{Cl|THEN}}
| |
| libname$ = {{Text|<nowiki>"/usr/lib64/"</nowiki>|#FFB100}} + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so."</nowiki>|#FFB100}} + libver$
| |
| inlinelibname$ = {{Text|<nowiki>"/usr/lib64/"</nowiki>|#FFB100}} + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so."</nowiki>|#FFB100}} + libver$
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}}
| |
| {{Cl|IF}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|THEN}}
| |
| {{Cl|IF}} {{Cl|_FILEEXISTS}}({{Text|<nowiki>"/usr/lib64/"</nowiki>|#FFB100}} + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so"</nowiki>|#FFB100}}) {{Cl|THEN}}
| |
| libname$ = {{Text|<nowiki>"/usr/lib64/"</nowiki>|#FFB100}} + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so"</nowiki>|#FFB100}}
| |
| inlinelibname$ = {{Text|<nowiki>"/usr/lib64/"</nowiki>|#FFB100}} + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so"</nowiki>|#FFB100}}
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}}
| |
|
| |
| {{Cl|IF}} MacOSX {{Cl|THEN}} {{Text|<nowiki>'dylib support</nowiki>|#919191}}
| |
| {{Text|<nowiki>'check for .dylib (usr/lib)</nowiki>|#919191}}
| |
| {{Cl|IF}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|THEN}}
| |
| {{Cl|IF}} {{Cl|_FILEEXISTS}}({{Text|<nowiki>"/usr/lib/"</nowiki>|#FFB100}} + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>"."</nowiki>|#FFB100}} + libver$ + {{Text|<nowiki>".dylib"</nowiki>|#FFB100}}) {{Cl|THEN}}
| |
| libname$ = {{Text|<nowiki>"/usr/lib/"</nowiki>|#FFB100}} + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>"."</nowiki>|#FFB100}} + libver$ + {{Text|<nowiki>".dylib"</nowiki>|#FFB100}}
| |
| inlinelibname$ = {{Text|<nowiki>"/usr/lib/"</nowiki>|#FFB100}} + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>"."</nowiki>|#FFB100}} + libver$ + {{Text|<nowiki>".dylib"</nowiki>|#FFB100}}
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}}
| |
| {{Cl|IF}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|THEN}}
| |
| {{Cl|IF}} {{Cl|_FILEEXISTS}}({{Text|<nowiki>"/usr/lib/"</nowiki>|#FFB100}} + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".dylib"</nowiki>|#FFB100}}) {{Cl|THEN}}
| |
| libname$ = {{Text|<nowiki>"/usr/lib/"</nowiki>|#FFB100}} + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".dylib"</nowiki>|#FFB100}}
| |
| inlinelibname$ = {{Text|<nowiki>"/usr/lib/"</nowiki>|#FFB100}} + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".dylib"</nowiki>|#FFB100}}
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}}
| |
|
| |
| {{Text|<nowiki>'check for .so (usr/lib)</nowiki>|#919191}}
| |
| {{Cl|IF}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|THEN}}
| |
| {{Cl|IF}} {{Cl|_FILEEXISTS}}({{Text|<nowiki>"/usr/lib/"</nowiki>|#FFB100}} + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so."</nowiki>|#FFB100}} + libver$) {{Cl|THEN}}
| |
| libname$ = {{Text|<nowiki>"/usr/lib/"</nowiki>|#FFB100}} + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so."</nowiki>|#FFB100}} + libver$
| |
| inlinelibname$ = {{Text|<nowiki>"/usr/lib/"</nowiki>|#FFB100}} + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so."</nowiki>|#FFB100}} + libver$
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}}
| |
| {{Cl|IF}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|THEN}}
| |
| {{Cl|IF}} {{Cl|_FILEEXISTS}}({{Text|<nowiki>"/usr/lib/"</nowiki>|#FFB100}} + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so"</nowiki>|#FFB100}}) {{Cl|THEN}}
| |
| libname$ = {{Text|<nowiki>"/usr/lib/"</nowiki>|#FFB100}} + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so"</nowiki>|#FFB100}}
| |
| inlinelibname$ = {{Text|<nowiki>"/usr/lib/"</nowiki>|#FFB100}} + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so"</nowiki>|#FFB100}}
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}} {{Text|<nowiki>'Linux</nowiki>|#919191}}
| |
|
| |
| {{Cl|END IF}} {{Text|<nowiki>'Dynamic</nowiki>|#919191}}
| |
|
| |
| {{Text|<nowiki>'library found?</nowiki>|#919191}}
| |
| {{Cl|IF}} dynamiclibrary <> {{Text|0|#F580B1}} {{Cl|AND (boolean)|AND}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"DYNAMIC LIBRARY not found"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
| |
| {{Cl|IF}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|AND (boolean)|AND}} {{Cl|LEN}}(headername$) = {{Text|0|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"LIBRARY not found"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
| |
|
| |
| {{Text|<nowiki>'***actual method should cull redundant header and library entries***</nowiki>|#919191}}
| |
|
| |
| {{Cl|IF}} dynamiclibrary = {{Text|0|#F580B1}} {{Cl|THEN}}
| |
|
| |
| {{Text|<nowiki>'static</nowiki>|#919191}}
| |
| {{Cl|IF}} {{Cl|LEN}}(libname$) {{Cl|THEN}}
| |
| {{Cl|IF}} os$ = {{Text|<nowiki>"WIN"</nowiki>|#FFB100}} {{Cl|THEN}}
| |
| {{Cl|IF}} {{Cl|MID$ (function)|MID$}}(libname$, {{Text|2|#F580B1}}, {{Text|1|#F580B1}}) = {{Text|<nowiki>":"</nowiki>|#FFB100}} {{Cl|OR (boolean)|OR}} {{Cl|LEFT$}}(libname$, {{Text|1|#F580B1}}) = {{Text|<nowiki>"\"</nowiki>|#FFB100}} {{Cl|THEN}}
| |
| mylib$ = mylib$ + {{Text|<nowiki>" "</nowiki>|#FFB100}} + libname$ + {{Text|<nowiki>" "</nowiki>|#FFB100}}
| |
| {{Cl|ELSE}}
| |
| mylib$ = mylib$ + {{Text|<nowiki>" ..\..\"</nowiki>|#FFB100}} + libname$ + {{Text|<nowiki>" "</nowiki>|#FFB100}}
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}}
| |
| {{Cl|IF}} os$ = {{Text|<nowiki>"LNX"</nowiki>|#FFB100}} {{Cl|THEN}}
| |
| {{Cl|IF}} {{Cl|LEFT$}}(libname$, {{Text|1|#F580B1}}) = {{Text|<nowiki>"/"</nowiki>|#FFB100}} {{Cl|THEN}}
| |
| mylib$ = mylib$ + {{Text|<nowiki>" "</nowiki>|#FFB100}} + libname$ + {{Text|<nowiki>" "</nowiki>|#FFB100}}
| |
| {{Cl|ELSE}}
| |
| mylib$ = mylib$ + {{Text|<nowiki>" ../../"</nowiki>|#FFB100}} + libname$ + {{Text|<nowiki>" "</nowiki>|#FFB100}}
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}}
| |
|
| |
| {{Cl|END IF}}
| |
|
| |
| {{Cl|ELSE}}
| |
|
| |
| {{Text|<nowiki>'dynamic</nowiki>|#919191}}
| |
| {{Cl|IF}} {{Cl|LEN}}(headername$) = {{Text|0|#F580B1}} {{Cl|THEN}} {{Text|<nowiki>'no header</nowiki>|#919191}}
| |
|
| |
| {{Cl|IF}} subfuncn {{Cl|THEN}}
| |
| f = {{Text|OpenBuffer%|#55FF55}}({{Text|<nowiki>"A"</nowiki>|#FFB100}}, tmpdir$ + {{Text|<nowiki>"maindata.txt"</nowiki>|#FFB100}})
| |
| {{Cl|ELSE}}
| |
| f = DataTxtBuf
| |
| {{Cl|END IF}}
| |
|
| |
| {{Text|<nowiki>'make name a C-appropriate variable name</nowiki>|#919191}}
| |
| {{Text|<nowiki>'by converting everything except numbers and</nowiki>|#919191}}
| |
| {{Text|<nowiki>'letters to underscores</nowiki>|#919191}}
| |
| x2$ = x$
| |
| {{Cl|FOR}} x2 = {{Text|1|#F580B1}} {{Cl|TO}} {{Cl|LEN}}(x2$)
| |
| {{Cl|IF}} {{Cl|ASC (function)|ASC}}(x2$, x2) < {{Text|48|#F580B1}} {{Cl|THEN}} {{Cl|ASC}}(x2$, x2) = {{Text|95|#F580B1}}
| |
| {{Cl|IF}} {{Cl|ASC (function)|ASC}}(x2$, x2) > {{Text|57|#F580B1}} {{Cl|AND (boolean)|AND}} {{Cl|ASC (function)|ASC}}(x2$, x2) < {{Text|65|#F580B1}} {{Cl|THEN}} {{Cl|ASC}}(x2$, x2) = {{Text|95|#F580B1}}
| |
| {{Cl|IF}} {{Cl|ASC (function)|ASC}}(x2$, x2) > {{Text|90|#F580B1}} {{Cl|AND (boolean)|AND}} {{Cl|ASC (function)|ASC}}(x2$, x2) < {{Text|97|#F580B1}} {{Cl|THEN}} {{Cl|ASC}}(x2$, x2) = {{Text|95|#F580B1}}
| |
| {{Cl|IF}} {{Cl|ASC (function)|ASC}}(x2$, x2) > {{Text|122|#F580B1}} {{Cl|THEN}} {{Cl|ASC}}(x2$, x2) = {{Text|95|#F580B1}}
| |
| {{Cl|NEXT}}
| |
| DLLname$ = x2$
| |
|
| |
| {{Cl|IF}} sfdeclare {{Cl|THEN}}
| |
|
| |
| {{Cl|IF}} os$ = {{Text|<nowiki>"WIN"</nowiki>|#FFB100}} {{Cl|THEN}}
| |
| {{Text|WriteBufLine|#55FF55}} RegTxtBuf, {{Text|<nowiki>"HINSTANCE DLL_"</nowiki>|#FFB100}} + x2$ + {{Text|<nowiki>"=NULL;"</nowiki>|#FFB100}}
| |
| {{Text|WriteBufLine|#55FF55}} f, {{Text|<nowiki>"if (!DLL_"</nowiki>|#FFB100}} + x2$ + {{Text|<nowiki>"){"</nowiki>|#FFB100}}
| |
| {{Text|WriteBufLine|#55FF55}} f, {{Text|<nowiki>"DLL_"</nowiki>|#FFB100}} + x2$ + {{Text|<nowiki>"=LoadLibrary("</nowiki>|#FFB100}} + {{Cl|CHR$}}({{Text|34|#F580B1}}) + inlinelibname$ + {{Cl|CHR$}}({{Text|34|#F580B1}}) + {{Text|<nowiki>");"</nowiki>|#FFB100}}
| |
| {{Text|WriteBufLine|#55FF55}} f, {{Text|<nowiki>"if (!DLL_"</nowiki>|#FFB100}} + x2$ + {{Text|<nowiki>") error(259);"</nowiki>|#FFB100}}
| |
| {{Text|WriteBufLine|#55FF55}} f, {{Text|<nowiki>"}"</nowiki>|#FFB100}}
| |
| {{Cl|END IF}}
| |
|
| |
| {{Cl|IF}} os$ = {{Text|<nowiki>"LNX"</nowiki>|#FFB100}} {{Cl|THEN}}
| |
| {{Text|WriteBufLine|#55FF55}} RegTxtBuf, {{Text|<nowiki>"void *DLL_"</nowiki>|#FFB100}} + x2$ + {{Text|<nowiki>"=NULL;"</nowiki>|#FFB100}}
| |
| {{Text|WriteBufLine|#55FF55}} f, {{Text|<nowiki>"if (!DLL_"</nowiki>|#FFB100}} + x2$ + {{Text|<nowiki>"){"</nowiki>|#FFB100}}
| |
| {{Text|WriteBufLine|#55FF55}} f, {{Text|<nowiki>"DLL_"</nowiki>|#FFB100}} + x2$ + {{Text|<nowiki>"=dlopen("</nowiki>|#FFB100}} + {{Cl|CHR$}}({{Text|34|#F580B1}}) + inlinelibname$ + {{Cl|CHR$}}({{Text|34|#F580B1}}) + {{Text|<nowiki>",RTLD_LAZY);"</nowiki>|#FFB100}}
| |
| {{Text|WriteBufLine|#55FF55}} f, {{Text|<nowiki>"if (!DLL_"</nowiki>|#FFB100}} + x2$ + {{Text|<nowiki>") error(259);"</nowiki>|#FFB100}}
| |
| {{Text|WriteBufLine|#55FF55}} f, {{Text|<nowiki>"}"</nowiki>|#FFB100}}
| |
| {{Cl|END IF}}
| |
|
| |
|
| |
| {{Cl|END IF}}
| |
|
| |
| {{Cl|END IF}} {{Text|<nowiki>'no header</nowiki>|#919191}}
| |
|
| |
| {{Cl|END IF}} {{Text|<nowiki>'dynamiclibrary</nowiki>|#919191}}
| |
|
| |
| {{Cl|IF}} {{Cl|LEN}}(headername$) {{Cl|THEN}}
| |
| {{Cl|IF}} (os$ = {{Text|<nowiki>"WIN"</nowiki>|#FFB100}} {{Cl|AND (boolean)|AND}} ({{Cl|MID$ (function)|MID$}}(headername$, {{Text|2|#F580B1}}, {{Text|1|#F580B1}}) = {{Text|<nowiki>":"</nowiki>|#FFB100}} {{Cl|OR (boolean)|OR}} {{Cl|LEFT$}}(headername$, {{Text|1|#F580B1}}) = {{Text|<nowiki>"\"</nowiki>|#FFB100}})) _
| |
| {{Cl|OR (boolean)|OR}} (os$ = {{Text|<nowiki>"LNX"</nowiki>|#FFB100}} {{Cl|AND (boolean)|AND}} ({{Cl|LEFT$}}(headername$, {{Text|1|#F580B1}}) = {{Text|<nowiki>"/"</nowiki>|#FFB100}})) {{Cl|THEN}}
| |
| {{Text|WriteBufLine|#55FF55}} RegTxtBuf, {{Text|<nowiki>"#include "</nowiki>|#FFB100}} + {{Cl|CHR$}}({{Text|34|#F580B1}}) + headername$ + {{Cl|CHR$}}({{Text|34|#F580B1}})
| |
| {{Cl|ELSE}}
| |
| {{Text|WriteBufLine|#55FF55}} RegTxtBuf, {{Text|<nowiki>"#include "</nowiki>|#FFB100}} + {{Cl|CHR$}}({{Text|34|#F580B1}}) + {{Text|<nowiki>"../../"</nowiki>|#FFB100}} + headername$ + {{Cl|CHR$}}({{Text|34|#F580B1}})
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}}
| |
|
| |
| {{Cl|END IF}}
| |
|
| |
| l$ = l$ + sp + {{Cl|CHR$}}({{Text|34|#F580B1}}) + autoformat_x$ + {{Cl|CHR$}}({{Text|34|#F580B1}})
| |
|
| |
| {{Cl|IF}} n > x {{Cl|THEN}}
| |
| {{Cl|IF}} dynamiclibrary {{Cl|THEN}} a$ = {{Text|<nowiki>"Cannot specify multiple DYNAMIC LIBRARY names in a single DECLARE statement"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
| |
| x = x + {{Text|1|#F580B1}}: x2$ = {{Text|getelement$|#55FF55}}(a$, x): {{Cl|IF}} x2$ <> {{Text|<nowiki>","</nowiki>|#FFB100}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Expected ,"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
| |
| l$ = l$ + sp2 + {{Text|<nowiki>","</nowiki>|#FFB100}}
| |
| x = x + {{Text|1|#F580B1}}: {{Cl|IF}} x > n {{Cl|THEN}} a$ = {{Text|<nowiki>"Expected , ..."</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
| |
| {{Cl|GOTO}} addlibrary
| |
| {{Cl|END IF}}
| |
|
| |
| {{Cl|END IF}} {{Text|<nowiki>'n>=x</nowiki>|#919191}}
| |
|
| |
| layoutdone = {{Text|1|#F580B1}}: {{Cl|IF}} {{Cl|LEN}}(layout$) {{Cl|THEN}} layout$ = layout$ + sp + l$ {{Cl|ELSE}} layout$ = l$
| |
| {{Cl|GOTO}} finishednonexec
| |
| {{Cl|END IF}}
| |
|
| |
| {{Cl|GOTO}} finishednonexec {{Text|<nowiki>'note: no layout required</nowiki>|#919191}}
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}}
| |
|
| |
| {{Text|<nowiki>'begin SUB/FUNCTION</nowiki>|#919191}}
| |
| {{Cl|IF}} n >= {{Text|1|#F580B1}} {{Cl|THEN}}
| |
| dynamiclibrary = {{Text|0|#F580B1}}
| |
| declaresubfunc2:
| |
| sf = {{Text|0|#F580B1}}
| |
| {{Cl|IF}} firstelement$ = {{Text|<nowiki>"FUNCTION"</nowiki>|#FFB100}} {{Cl|THEN}} sf = {{Text|1|#F580B1}}
| |
| {{Cl|IF}} firstelement$ = {{Text|<nowiki>"SUB"</nowiki>|#FFB100}} {{Cl|THEN}} sf = {{Text|2|#F580B1}}
| |
| {{Cl|IF}} sf {{Cl|THEN}}
| |
|
| |
| {{Cl|IF}} declaringlibrary = {{Text|0|#F580B1}} {{Cl|THEN}}
| |
| {{Cl|IF}} {{Cl|LEN}}(subfunc) {{Cl|THEN}} a$ = {{Text|<nowiki>"Expected END SUB/FUNCTION before "</nowiki>|#FFB100}} + firstelement$: {{Cl|GOTO}} errmes
| |
| {{Cl|END IF}}
| |
|
| |
| {{Cl|IF}} n = {{Text|1|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Expected name after SUB/FUNCTION"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
| |
| e$ = {{Text|getelement$|#55FF55}}(ca$, {{Text|2|#F580B1}})
| |
| symbol$ = {{Text|removesymbol$|#55FF55}}(e$) {{Text|<nowiki>'$,%,etc.</nowiki>|#919191}}
| |
| {{Cl|IF}} Error_Happened {{Cl|THEN}} {{Cl|GOTO}} errmes
| |
| {{Cl|IF}} sf = {{Text|2|#F580B1}} {{Cl|AND (boolean)|AND}} symbol$ <> {{Text|<nowiki>""</nowiki>|#FFB100}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Type symbols after a SUB name are invalid"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
| |
| try = {{Text|findid|#55FF55}}(e$)
| |
| {{Cl|IF}} Error_Happened {{Cl|THEN}} {{Cl|GOTO}} errmes
| |
| {{Cl|DO...LOOP|DO WHILE}} try
| |
| {{Cl|IF}} id.subfunc = sf {{Cl|THEN}} {{Cl|GOTO}} createsf
| |
| {{Cl|IF}} try = {{Text|2|#F580B1}} {{Cl|THEN}} findanotherid = {{Text|1|#F580B1}}: try = {{Text|findid|#55FF55}}(e$) {{Cl|ELSE}} try = {{Text|0|#F580B1}}
| |
| {{Cl|IF}} Error_Happened {{Cl|THEN}} {{Cl|GOTO}} errmes
| |
| {{Cl|LOOP}}
| |
| a$ = {{Text|<nowiki>"Unregistered SUB/FUNCTION encountered"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
| |
| createsf:
| |
| {{Cl|IF}} {{Cl|UCASE$}}(e$) = {{Text|<nowiki>"_GL"</nowiki>|#FFB100}} {{Cl|THEN}} e$ = {{Text|<nowiki>"_GL"</nowiki>|#FFB100}}
| |
| {{Cl|IF}} firstelement$ = {{Text|<nowiki>"SUB"</nowiki>|#FFB100}} {{Cl|THEN}}
| |
| l$ = {{Text|SCase$|#55FF55}}({{Text|<nowiki>"Sub"</nowiki>|#FFB100}}) + sp + e$ + symbol$
| |
| {{Cl|ELSE}}
| |
| l$ = {{Text|SCase$|#55FF55}}({{Text|<nowiki>"Function"</nowiki>|#FFB100}}) + sp + e$ + symbol$
| |
| {{Cl|END IF}}
| |
| id2 = id
| |
| targetid = currentid
| |
|
| |
| {{Text|<nowiki>'check for ALIAS</nowiki>|#919191}}
| |
| aliasname$ = {{Cl|RTRIM$}}(id.cn)
| |
| {{Cl|IF}} n > {{Text|2|#F580B1}} {{Cl|THEN}}
| |
| ee$ = {{Text|getelement$|#55FF55}}(a$, {{Text|3|#F580B1}})
| |
| {{Cl|IF}} ee$ = {{Text|<nowiki>"ALIAS"</nowiki>|#FFB100}} {{Cl|THEN}}
| |
| {{Cl|IF}} declaringlibrary = {{Text|0|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"ALIAS can only be used with DECLARE LIBRARY"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
| |
| {{Cl|IF}} n = {{Text|3|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Expected ALIAS name-in-library"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
| |
| ee$ = {{Text|getelement$|#55FF55}}(ca$, {{Text|4|#F580B1}})
| |
|
| |
| {{Text|<nowiki>'strip string content (optional)</nowiki>|#919191}}
| |
| {{Cl|IF}} {{Cl|LEFT$}}(ee$, {{Text|1|#F580B1}}) = {{Cl|CHR$}}({{Text|34|#F580B1}}) {{Cl|THEN}}
| |
| ee$ = {{Cl|RIGHT$}}(ee$, {{Cl|LEN}}(ee$) - {{Text|1|#F580B1}})
| |
| x = {{Cl|INSTR}}(ee$, {{Cl|CHR$}}({{Text|34|#F580B1}})): {{Cl|IF}} x = {{Text|0|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Expected "</nowiki>|#FFB100}} + {{Cl|CHR$}}({{Text|34|#F580B1}}): {{Cl|GOTO}} errmes
| |
| ee$ = {{Cl|LEFT$}}(ee$, x - {{Text|1|#F580B1}})
| |
| l$ = l$ + sp + {{Text|SCase$|#55FF55}}({{Text|<nowiki>"Alias"</nowiki>|#FFB100}}) + sp + CHR_QUOTE + ee$ + CHR_QUOTE
| |
| {{Cl|ELSE}}
| |
| l$ = l$ + sp + {{Text|SCase$|#55FF55}}({{Text|<nowiki>"Alias"</nowiki>|#FFB100}}) + sp + ee$
| |
| {{Cl|END IF}}
| |
|
| |
| {{Text|<nowiki>'strip fix046$ (created by unquoted periods)</nowiki>|#919191}}
| |
| {{Cl|DO...LOOP|DO WHILE}} {{Cl|INSTR}}(ee$, fix046$)
| |
| x = {{Cl|INSTR}}(ee$, fix046$): ee$ = {{Cl|LEFT$}}(ee$, x - {{Text|1|#F580B1}}) + {{Text|<nowiki>"."</nowiki>|#FFB100}} + {{Cl|RIGHT$}}(ee$, {{Cl|LEN}}(ee$) - x + {{Text|1|#F580B1}} - {{Cl|LEN}}(fix046$))
| |
| {{Cl|LOOP}}
| |
| aliasname$ = ee$
| |
| {{Text|<nowiki>'remove ALIAS section from line</nowiki>|#919191}}
| |
| {{Cl|IF}} n <= {{Text|4|#F580B1}} {{Cl|THEN}} a$ = {{Text|getelements|#55FF55}}(a$, {{Text|1|#F580B1}}, {{Text|2|#F580B1}})
| |
| {{Cl|IF}} n >= {{Text|5|#F580B1}} {{Cl|THEN}} a$ = {{Text|getelements|#55FF55}}(a$, {{Text|1|#F580B1}}, {{Text|2|#F580B1}}) + sp + {{Text|getelements|#55FF55}}(a$, {{Text|5|#F580B1}}, n)
| |
| {{Cl|IF}} n <= {{Text|4|#F580B1}} {{Cl|THEN}} ca$ = {{Text|getelements|#55FF55}}(ca$, {{Text|1|#F580B1}}, {{Text|2|#F580B1}})
| |
| {{Cl|IF}} n >= {{Text|5|#F580B1}} {{Cl|THEN}} ca$ = {{Text|getelements|#55FF55}}(ca$, {{Text|1|#F580B1}}, {{Text|2|#F580B1}}) + sp + {{Text|getelements|#55FF55}}(ca$, {{Text|5|#F580B1}}, n)
| |
| n = n - {{Text|2|#F580B1}}
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}}
| |
|
| |
| {{Cl|IF}} declaringlibrary {{Cl|THEN}} {{Cl|GOTO}} declibjmp1
| |
|
| |
|
| |
| {{Cl|IF}} closedmain = {{Text|0|#F580B1}} {{Cl|THEN}} {{Text|closemain|#55FF55}}
| |
|
| |
| {{Text|<nowiki>'check for open controls (copy #2)</nowiki>|#919191}}
| |
| {{Cl|IF}} controllevel <> {{Text|0|#F580B1}} {{Cl|AND (boolean)|AND}} controltype(controllevel) <> {{Text|6|#F580B1}} {{Cl|THEN}} {{Text|<nowiki>'It's OK for subs to be inside $IF blocks</nowiki>|#919191}}
| |
| a$ = {{Text|<nowiki>"Unidentified open control block"</nowiki>|#FFB100}}
| |
| {{Cl|SELECT CASE}} controltype(controllevel)
| |
| {{Cl|CASE}} {{Text|1|#F580B1}}: a$ = {{Text|<nowiki>"IF without END IF"</nowiki>|#FFB100}}
| |
| {{Cl|CASE}} {{Text|2|#F580B1}}: a$ = {{Text|<nowiki>"FOR without NEXT"</nowiki>|#FFB100}}
| |
| {{Cl|CASE}} {{Text|3|#F580B1}}, {{Text|4|#F580B1}}: a$ = {{Text|<nowiki>"DO without LOOP"</nowiki>|#FFB100}}
| |
| {{Cl|CASE}} {{Text|5|#F580B1}}: a$ = {{Text|<nowiki>"WHILE without WEND"</nowiki>|#FFB100}}
| |
| {{Cl|CASE}} {{Text|10|#F580B1}} {{Cl|TO}} {{Text|19|#F580B1}}: a$ = {{Text|<nowiki>"SELECT CASE without END SELECT"</nowiki>|#FFB100}}
| |
| {{Cl|END SELECT}}
| |
| linenumber = controlref(controllevel)
| |
| {{Cl|GOTO}} errmes
| |
| {{Cl|END IF}}
| |
|
| |
| {{Cl|IF}} ideindentsubs {{Cl|THEN}}
| |
| controllevel = controllevel + {{Text|1|#F580B1}}
| |
| controltype(controllevel) = {{Text|32|#F580B1}}
| |
| controlref(controllevel) = linenumber
| |
| {{Cl|END IF}}
| |
|
| |
| subfunc = {{Cl|RTRIM$}}(id.callname) {{Text|<nowiki>'SUB_..."</nowiki>|#919191}}
| |
| {{Cl|IF}} id.subfunc = {{Text|1|#F580B1}} {{Cl|THEN}} subfuncoriginalname$ = {{Text|<nowiki>"FUNCTION "</nowiki>|#FFB100}} {{Cl|ELSE}} subfuncoriginalname$ = {{Text|<nowiki>"SUB "</nowiki>|#FFB100}}
| |
| subfuncoriginalname$ = subfuncoriginalname$ + {{Cl|RTRIM$}}(id.cn)
| |
| subfuncn = subfuncn + {{Text|1|#F580B1}}
| |
| closedsubfunc = {{Text|0|#F580B1}}
| |
| subfuncid = targetid
| |
|
| |
| subfuncret$ = {{Text|<nowiki>""</nowiki>|#FFB100}}
| |
|
| |
| DataTxtBuf = {{Text|OpenBuffer%|#55FF55}}({{Text|<nowiki>"O"</nowiki>|#FFB100}}, tmpdir$ + {{Text|<nowiki>"data"</nowiki>|#FFB100}} + {{Text|str2$|#55FF55}}(subfuncn) + {{Text|<nowiki>".txt"</nowiki>|#FFB100}})
| |
| FreeTxtBuf = {{Text|OpenBuffer%|#55FF55}}({{Text|<nowiki>"O"</nowiki>|#FFB100}}, tmpdir$ + {{Text|<nowiki>"free"</nowiki>|#FFB100}} + {{Text|str2$|#55FF55}}(subfuncn) + {{Text|<nowiki>".txt"</nowiki>|#FFB100}})
| |
| RetTxtBuf = {{Text|OpenBuffer%|#55FF55}}({{Text|<nowiki>"O"</nowiki>|#FFB100}}, tmpdir$ + {{Text|<nowiki>"ret"</nowiki>|#FFB100}} + {{Text|str2$|#55FF55}}(subfuncn) + {{Text|<nowiki>".txt"</nowiki>|#FFB100}})
| |
| defdatahandle = DataTxtBuf
| |
| {{Text|WriteBufLine|#55FF55}} RetTxtBuf, {{Text|<nowiki>"if (next_return_point){"</nowiki>|#FFB100}}
| |
| {{Text|WriteBufLine|#55FF55}} RetTxtBuf, {{Text|<nowiki>"next_return_point--;"</nowiki>|#FFB100}}
| |
| {{Text|WriteBufLine|#55FF55}} RetTxtBuf, {{Text|<nowiki>"switch(return_point[next_return_point]){"</nowiki>|#FFB100}}
| |
| {{Text|WriteBufLine|#55FF55}} RetTxtBuf, {{Text|<nowiki>"case 0:"</nowiki>|#FFB100}}
| |
| {{Text|WriteBufLine|#55FF55}} RetTxtBuf, {{Text|<nowiki>"error(3);"</nowiki>|#FFB100}} {{Text|<nowiki>'return without gosub!</nowiki>|#919191}}
| |
| {{Text|WriteBufLine|#55FF55}} RetTxtBuf, {{Text|<nowiki>"break;"</nowiki>|#FFB100}}
| |
|
| |
| declibjmp1:
| |
|
| |
| {{Cl|IF}} declaringlibrary {{Cl|THEN}}
| |
| {{Cl|IF}} sfdeclare = {{Text|0|#F580B1}} {{Cl|AND (boolean)|AND}} indirectlibrary = {{Text|0|#F580B1}} {{Cl|THEN}}
| |
| RegTxtBuf = {{Text|OpenBuffer%|#55FF55}}({{Text|<nowiki>"O"</nowiki>|#FFB100}}, tmpdir$ + {{Text|<nowiki>"regsf_ignore.txt"</nowiki>|#FFB100}})
| |
| {{Cl|END IF}}
| |
| {{Cl|IF}} sfdeclare = {{Text|1|#F580B1}} {{Cl|AND (boolean)|AND}} customtypelibrary = {{Text|0|#F580B1}} {{Cl|AND (boolean)|AND}} dynamiclibrary = {{Text|0|#F580B1}} {{Cl|AND (boolean)|AND}} indirectlibrary = {{Text|0|#F580B1}} {{Cl|THEN}}
| |
| {{Text|WriteBufLine|#55FF55}} RegTxtBuf, {{Text|<nowiki>"#include "</nowiki>|#FFB100}} + {{Cl|CHR$}}({{Text|34|#F580B1}}) + {{Text|<nowiki>"externtype"</nowiki>|#FFB100}} + {{Text|str2|#55FF55}}(ResolveStaticFunctions + {{Text|1|#F580B1}}) + {{Text|<nowiki>".txt"</nowiki>|#FFB100}} + {{Cl|CHR$}}({{Text|34|#F580B1}})
| |
| fh = {{Cl|FREEFILE}}: {{Cl|OPEN}} tmpdir$ + {{Text|<nowiki>"externtype"</nowiki>|#FFB100}} + {{Text|str2|#55FF55}}(ResolveStaticFunctions + {{Text|1|#F580B1}}) + {{Text|<nowiki>".txt"</nowiki>|#FFB100}} {{Cl|OPEN#File_Access_Modes|FOR}} {{Cl|OPEN#File_Access_Modes|OUTPUT}} {{Cl|OPEN|AS}} #fh: {{Cl|CLOSE}} #fh
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}}
| |
|
| |
|
| |
|
| |
|
| |
| {{Cl|IF}} sf = {{Text|1|#F580B1}} {{Cl|THEN}}
| |
| rettyp = id.ret
| |
| t$ = {{Text|typ2ctyp$|#55FF55}}(id.ret, {{Text|<nowiki>""</nowiki>|#FFB100}})
| |
| {{Cl|IF}} Error_Happened {{Cl|THEN}} {{Cl|GOTO}} errmes
| |
| {{Cl|IF}} t$ = {{Text|<nowiki>"qbs"</nowiki>|#FFB100}} {{Cl|THEN}} t$ = {{Text|<nowiki>"qbs*"</nowiki>|#FFB100}}
| |
|
| |
| {{Cl|IF}} declaringlibrary {{Cl|THEN}}
| |
| {{Cl|IF}} rettyp {{Cl|AND (boolean)|AND}} ISSTRING {{Cl|THEN}}
| |
| t$ = {{Text|<nowiki>"char*"</nowiki>|#FFB100}}
| |
| {{Cl|END IF}}
| |
| {{Cl|END IF}}
| |
|
| |
| {{Cl|IF}} declaringlibrary <> {{Text|0|#F580B1}} {{Cl|AND (boolean)|AND}} dynamiclibrary <> {{Text|0|#F580B1}} {{Cl|THEN}}
| |
| {{Cl|IF}} os$ = {{Text|<nowiki>"WIN"</nowiki>|#FFB100}} {{Cl|THEN}}
| |
| {{Text|WriteBufRawData|#55FF55}} RegTxtBuf, {{Text|<nowiki>"typedef "</nowiki>|#FFB100}} + t$ + {{Text|<nowiki>" (CALLBACK* DLLCALL_"</nowiki>|#FFB100}} + {{Text|removecast$|#55FF55}}({{Cl|RTRIM$}}(id.callname)) + {{Text|<nowiki>")("</nowiki>|#FFB100}}
| |
| {{Cl|END IF}}
| |
| {{Cl|IF}} os$ = {{Text|<nowiki>"LNX"</nowiki>|#FFB100}} {{Cl|THEN}}
| |
| {{Text|WriteBufRawData|#55FF55}} RegTxtBuf, {{Text|<nowiki>"typedef "</nowiki>|#FFB100}} + t$ + {{Text|<nowiki>" (*DLLCALL_"</nowiki>|#FFB100}} + {{Text|removecast$|#55FF55}}({{Cl|RTRIM$}}(id.callname)) + {{Text|<nowiki>")("</nowiki>|#FFB100}}
| |
| {{Cl|END IF}}
| |
| {{Cl|ELSEIF}} declaringlibrary <> {{Text|0|#F580B1}} {{Cl|AND (boolean)|AND}} customtypelibrary <> {{Text|0|#F580B1}} {{Cl|THEN}}
| |
| {{Text|WriteBufRawData|#55FF55}} RegTxtBuf, {{Text|<nowiki>"typedef "</nowiki>|#FFB100}} + t$ + {{Text|<nowiki>" CUSTOMCALL_"</nowiki>|#FFB100}} + {{Text|removecast$|#55FF55}}({{Cl|RTRIM$}}(id.callname)) + {{Text|<nowiki>"("</nowiki>|#FFB100}}
| |
| {{Cl|ELSE}}
| |
| {{Text|WriteBufRawData|#55FF55}} RegTxtBuf, t$ + {{Text|<nowiki>" "</nowiki>|#FFB100}} + {{Text|removecast$|#55FF55}}({{Cl|RTRIM$}}(id.callname)) + {{Text|<nowiki>"("</nowiki>|#FFB100}}
| |
| {{Cl|END IF}}
| |
| {{Cl|IF}} declaringlibrary {{Cl|THEN}} {{Cl|GOTO}} declibjmp2
| |
| {{Text|WriteBufRawData|#55FF55}} MainTxtBuf, t$ + {{Text|<nowiki>" "</nowiki>|#FFB100}} + {{Text|removecast$|#55FF55}}({{Cl|RTRIM$}}(id.callname)) + {{Text|<nowiki>"("</nowiki>|#FFB100}}
| |
|
| |
| {{Text|<nowiki>'create variable to return result</nowiki>|#919191}}
| |
| {{Text|<nowiki>'if type wasn't specified, define it</nowiki>|#919191}}
| |
| {{Cl|IF}} symbol$ = {{Text|<nowiki>""</nowiki>|#FFB100}} {{Cl|THEN}}
| |
| a = {{Cl|ASC (function)|ASC}}({{Cl|UCASE$}}(e$)): {{Cl|IF}} a = {{Text|95|#F580B1}} {{Cl|THEN}} a = {{Text|91|#F580B1}}
| |
| a = a - {{Text|64|#F580B1}} {{Text|<nowiki>'so A=1, Z=27 and _=28</nowiki>|#919191}}
| |
| symbol$ = defineextaz(a)
| |
| {{Cl|END IF}}
| |
| {{CodeEnd}}
| |