2022-03-04 22:28:32 +00:00
async function _QBCompiler ( ) {
2022-02-16 17:40:03 +00:00
// Option _Explicit
// $Console
// Only
2022-06-23 20:16:25 +00:00
const FILE = 1 ;
const TEXT = 2 ;
const False = 0 ;
const True = ! False ;
2022-09-17 16:50:08 +00:00
const PrintDataTypes = True ;
2022-06-23 20:16:25 +00:00
const PrintLineMapping = False ;
const PrintTokenizedLine = False ;
2022-02-16 17:40:03 +00:00
2022-06-10 20:35:28 +00:00
2022-09-17 16:50:08 +00:00
var lines = QB . initArray ( [ { l : 0 , u : 0 } ] , { line : 0 , text : '' } ) ; /* CODELINE */
var jsLines = QB . initArray ( [ { l : 0 , u : 0 } ] , { line : 0 , text : '' } ) ; /* CODELINE */
var methods = QB . initArray ( [ { l : 0 , u : 0 } ] , { line : 0 , type : '' , returnType : '' , name : '' , uname : '' , argc : 0 , args : '' , jsname : '' , sync : 0 } ) ; /* METHOD */
var types = QB . initArray ( [ { l : 0 , u : 0 } ] , { line : 0 , name : '' , argc : 0 , args : '' } ) ; /* QBTYPE */
var typeVars = QB . initArray ( [ { l : 0 , u : 0 } ] , { type : '' , name : '' , jsname : '' , isConst : 0 , isArray : 0 , arraySize : 0 , typeId : 0 } ) ; /* VARIABLE */
var globalVars = QB . initArray ( [ { l : 0 , u : 0 } ] , { type : '' , name : '' , jsname : '' , isConst : 0 , isArray : 0 , arraySize : 0 , typeId : 0 } ) ; /* VARIABLE */
var localVars = QB . initArray ( [ { l : 0 , u : 0 } ] , { type : '' , name : '' , jsname : '' , isConst : 0 , isArray : 0 , arraySize : 0 , typeId : 0 } ) ; /* VARIABLE */
var warnings = QB . initArray ( [ { l : 0 , u : 0 } ] , { line : 0 , text : '' } ) ; /* CODELINE */
var exportLines = QB . initArray ( [ { l : 0 , u : 0 } ] , '' ) ; /* STRING */
var exportConsts = QB . initArray ( [ { l : 0 , u : 0 } ] , { type : '' , name : '' , jsname : '' , isConst : 0 , isArray : 0 , arraySize : 0 , typeId : 0 } ) ; /* VARIABLE */
var exportMethods = QB . initArray ( [ { l : 0 , u : 0 } ] , { line : 0 , type : '' , returnType : '' , name : '' , uname : '' , argc : 0 , args : '' , jsname : '' , sync : 0 } ) ; /* METHOD */
var dataArray = QB . initArray ( [ { l : 0 , u : 0 } ] , '' ) ; /* STRING */
var dataLabels = QB . initArray ( [ { l : 0 , u : 0 } ] , { text : '' , index : 0 } ) ; /* LABEL */
2022-06-23 20:16:25 +00:00
var modLevel = 0 ; /* INTEGER */
var currentMethod = '' ; /* STRING */
var currentModule = '' ; /* STRING */
var programMethods = 0 ; /* INTEGER */
2022-06-23 13:43:19 +00:00
if ( QB . func _Command ( ) != "" ) {
await sub _QBToJS ( QB . func _Command ( ) , FILE , "" ) ;
2022-03-04 22:28:32 +00:00
await sub _PrintJS ( ) ;
2022-02-16 17:40:03 +00:00
QB . halt ( ) ; return ;
}
2022-04-18 16:27:23 +00:00
async function sub _QBToJS ( source /*STRING*/ , sourceType /*INTEGER*/ , moduleName /*STRING*/ ) {
2022-02-16 17:40:03 +00:00
if ( QB . halted ( ) ) { return ; }
2022-06-23 13:43:19 +00:00
currentModule = moduleName ;
2022-04-18 16:27:23 +00:00
await sub _ResetDataStructures ( ) ;
2022-06-23 13:43:19 +00:00
if ( moduleName == "" ) {
2022-09-17 16:50:08 +00:00
QB . resizeArray ( jsLines , [ { l : 0 , u : 0 } ] , { line : 0 , text : '' } , false ) ; /* CODELINE */
2022-04-18 16:27:23 +00:00
}
2022-06-23 13:43:19 +00:00
if ( sourceType == FILE ) {
2022-03-30 22:37:36 +00:00
await sub _ReadLinesFromFile ( source ) ;
2022-02-16 17:40:03 +00:00
} else {
2022-03-30 22:37:36 +00:00
await sub _ReadLinesFromText ( source ) ;
2022-02-16 17:40:03 +00:00
}
2022-03-04 22:28:32 +00:00
await sub _FindMethods ( ) ;
2022-06-23 13:43:19 +00:00
programMethods = ( QB . func _UBound ( methods ) ) ;
2022-03-04 22:28:32 +00:00
await sub _InitGX ( ) ;
await sub _InitQBMethods ( ) ;
2022-06-23 20:16:25 +00:00
var selfConvert = 0 ; /* INTEGER */
var isGX = 0 ; /* INTEGER */
2022-06-23 13:43:19 +00:00
isGX = False ;
if ( sourceType == FILE ) {
selfConvert = ( await func _EndsWith ( source , "qb2js.bas" ) ) ;
2022-02-16 17:40:03 +00:00
}
if ( selfConvert ) {
2022-06-23 13:43:19 +00:00
await sub _AddJSLine ( 0 , "async function _QBCompiler() {" ) ;
} else if ( moduleName != "" ) {
await sub _AddJSLine ( 0 , "async function _" + moduleName + "() {" ) ;
} else if ( sourceType == FILE ) {
await sub _AddJSLine ( 0 , "async function init() {" ) ;
2022-02-16 17:40:03 +00:00
}
2022-06-23 13:43:19 +00:00
if ( ! selfConvert && moduleName == "" ) {
await sub _AddJSLine ( 0 , "QB.start();" ) ;
2022-02-16 17:40:03 +00:00
}
2022-06-23 13:43:19 +00:00
if ( ! selfConvert && moduleName == "" ) {
2022-06-23 20:16:25 +00:00
var mtest = { line : 0 , type : '' , returnType : '' , name : '' , uname : '' , argc : 0 , args : '' , jsname : '' , sync : 0 } ; /* METHOD */
2022-06-23 13:43:19 +00:00
if ( ( await func _FindMethod ( "GXOnGameEvent" , mtest , "SUB" ) ) ) {
await sub _AddJSLine ( 0 , " await GX.registerGameEvents(sub_GXOnGameEvent);" ) ;
isGX = True ;
2022-02-16 17:40:03 +00:00
} else {
2022-06-23 13:43:19 +00:00
await sub _AddJSLine ( 0 , " await GX.registerGameEvents(function(e){});" ) ;
await sub _AddJSLine ( 0 , " QB.sub_Screen(0);" ) ;
2022-02-16 17:40:03 +00:00
}
}
2022-06-23 13:43:19 +00:00
await sub _AddJSLine ( 0 , "" ) ;
2022-06-10 20:35:28 +00:00
await sub _InitData ( ) ;
2022-06-23 13:43:19 +00:00
await sub _ConvertLines ( 1 , await func _MainEnd ( ) , "" ) ;
if ( ! selfConvert && ! isGX && moduleName == "" ) {
await sub _AddJSLine ( 0 , "QB.end();" ) ;
2022-02-16 17:40:03 +00:00
}
2022-03-04 22:28:32 +00:00
await sub _ConvertMethods ( ) ;
2022-09-17 16:50:08 +00:00
if ( ! selfConvert && moduleName == "" ) {
await sub _InitTypes ( ) ;
}
2022-02-16 17:40:03 +00:00
if ( selfConvert ) {
2022-06-23 13:43:19 +00:00
await sub _AddJSLine ( 0 , "this.compile = async function(src) {" ) ;
await sub _AddJSLine ( 0 , " await sub_QBToJS(src, TEXT, '');" ) ;
await sub _AddJSLine ( 0 , " var js = '';" ) ;
await sub _AddJSLine ( 0 , " for (var i=1; i<= QB.func_UBound(jsLines); i++) {" ) ;
if ( PrintLineMapping ) {
await sub _AddJSLine ( 0 , " js += '/* ' + i + ':' + this.getSourceLine(i) + ' */ ' + QB.arrayValue(jsLines, [i]).value.text + '\\n';" ) ;
} else {
await sub _AddJSLine ( 0 , " js += QB.arrayValue(jsLines, [i]).value.text + '\\n';" ) ;
}
await sub _AddJSLine ( 0 , " }" ) ;
await sub _AddJSLine ( 0 , " return js;" ) ;
await sub _AddJSLine ( 0 , "};" ) ;
await sub _AddJSLine ( 0 , "this.getWarnings = function() {" ) ;
await sub _AddJSLine ( 0 , " var w = [];" ) ;
await sub _AddJSLine ( 0 , " for (var i=1; i <= QB.func_UBound(warnings); i++) {" ) ;
await sub _AddJSLine ( 0 , " w.push({" ) ;
await sub _AddJSLine ( 0 , " line: QB.arrayValue(warnings, [i]).value.line," ) ;
await sub _AddJSLine ( 0 , " text: QB.arrayValue(warnings, [i]).value.text" ) ;
await sub _AddJSLine ( 0 , " });" ) ;
await sub _AddJSLine ( 0 , " }" ) ;
await sub _AddJSLine ( 0 , " return w;" ) ;
await sub _AddJSLine ( 0 , "};" ) ;
await sub _AddJSLine ( 0 , "this.getSourceLine = function(jsLine) {" ) ;
await sub _AddJSLine ( 0 , " if (jsLine == 0) { return 0; }" ) ;
await sub _AddJSLine ( 0 , " var line = QB.arrayValue(jsLines, [jsLine]).value.line;" ) ;
await sub _AddJSLine ( 0 , " line = QB.arrayValue(lines, [line]).value.line;" ) ;
await sub _AddJSLine ( 0 , " return line;" ) ;
await sub _AddJSLine ( 0 , "};" ) ;
await sub _AddJSLine ( 0 , "" ) ;
await sub _AddJSLine ( 0 , "return this;" ) ;
await sub _AddJSLine ( 0 , "}" ) ;
} else if ( moduleName != "" ) {
await sub _AddJSLine ( 0 , "return this;" ) ;
await sub _AddJSLine ( 0 , "}" ) ;
await sub _AddJSLine ( 0 , "const " + moduleName + " = await _" + moduleName + "();" ) ;
} else if ( sourceType == FILE ) {
await sub _AddJSLine ( 0 , "};" ) ;
2022-02-16 17:40:03 +00:00
}
}
2022-09-17 16:50:08 +00:00
async function sub _InitTypes ( ) {
if ( QB . halted ( ) ) { return ; }
var i = 0 ; /* INTEGER */ var j = 0 ; /* INTEGER */ var jsidx = 0 ; /* INTEGER */
var typestr = '' ; /* STRING */
typestr = "{ " ;
var _ _ _v7055475 = 0 ; for ( i = 1 ; i <= ( QB . func _UBound ( jsLines ) ) ; i = i + 1 ) { if ( QB . halted ( ) ) { return ; } _ _ _v7055475 ++ ; if ( _ _ _v7055475 % 100 == 0 ) { await QB . autoLimit ( ) ; }
if ( QB . arrayValue ( jsLines , [ i ] ) . value . text == "QB.start();" ) {
jsidx = i ;
break ;
}
}
var _ _ _v5334240 = 0 ; for ( i = 1 ; i <= ( QB . func _UBound ( types ) ) ; i = i + 1 ) { if ( QB . halted ( ) ) { return ; } _ _ _v5334240 ++ ; if ( _ _ _v5334240 % 100 == 0 ) { await QB . autoLimit ( ) ; }
typestr = typestr + QB . arrayValue ( types , [ i ] ) . value . name + ":[" ;
var idx = 0 ; /* INTEGER */
idx = 0 ;
var _ _ _v5795186 = 0 ; for ( j = 1 ; j <= ( QB . func _UBound ( typeVars ) ) ; j = j + 1 ) { if ( QB . halted ( ) ) { return ; } _ _ _v5795186 ++ ; if ( _ _ _v5795186 % 100 == 0 ) { await QB . autoLimit ( ) ; }
if ( QB . arrayValue ( typeVars , [ j ] ) . value . typeId == i ) {
if ( idx > 0 ) {
typestr = typestr + ", " ;
}
typestr = typestr + "{ name: '" + QB . arrayValue ( typeVars , [ j ] ) . value . name + "', type: '" + QB . arrayValue ( typeVars , [ j ] ) . value . type + "' }" ;
idx = idx + 1 ;
}
}
typestr = typestr + "]" ;
if ( i < ( QB . func _UBound ( types ) ) ) {
typestr = typestr + ", " ;
}
}
typestr = typestr + "}" ;
QB . arrayValue ( jsLines , [ jsidx ] ) . value . text = QB . arrayValue ( jsLines , [ jsidx ] ) . value . text + " QB.setTypeMap(" + typestr + ");" ;
}
2022-04-18 16:27:23 +00:00
async function sub _ResetDataStructures ( ) {
if ( QB . halted ( ) ) { return ; }
2022-09-17 16:50:08 +00:00
QB . resizeArray ( lines , [ { l : 0 , u : 0 } ] , { line : 0 , text : '' } , false ) ; /* CODELINE */
QB . resizeArray ( methods , [ { l : 0 , u : 0 } ] , { line : 0 , type : '' , returnType : '' , name : '' , uname : '' , argc : 0 , args : '' , jsname : '' , sync : 0 } , false ) ; /* METHOD */
QB . resizeArray ( types , [ { l : 0 , u : 0 } ] , { line : 0 , name : '' , argc : 0 , args : '' } , false ) ; /* QBTYPE */
QB . resizeArray ( typeVars , [ { l : 0 , u : 0 } ] , { type : '' , name : '' , jsname : '' , isConst : 0 , isArray : 0 , arraySize : 0 , typeId : 0 } , false ) ; /* VARIABLE */
QB . resizeArray ( globalVars , [ { l : 0 , u : 0 } ] , { type : '' , name : '' , jsname : '' , isConst : 0 , isArray : 0 , arraySize : 0 , typeId : 0 } , false ) ; /* VARIABLE */
QB . resizeArray ( localVars , [ { l : 0 , u : 0 } ] , { type : '' , name : '' , jsname : '' , isConst : 0 , isArray : 0 , arraySize : 0 , typeId : 0 } , false ) ; /* VARIABLE */
QB . resizeArray ( warnings , [ { l : 0 , u : 0 } ] , { line : 0 , text : '' } , false ) ; /* CODELINE */
QB . resizeArray ( dataArray , [ { l : 0 , u : 0 } ] , '' , false ) ; /* STRING */
QB . resizeArray ( dataLabels , [ { l : 0 , u : 0 } ] , { text : '' , index : 0 } , false ) ; /* LABEL */
2022-06-23 13:43:19 +00:00
if ( modLevel == 0 ) {
2022-09-17 16:50:08 +00:00
QB . resizeArray ( exportMethods , [ { l : 0 , u : 0 } ] , { line : 0 , type : '' , returnType : '' , name : '' , uname : '' , argc : 0 , args : '' , jsname : '' , sync : 0 } , false ) ; /* METHOD */
QB . resizeArray ( exportConsts , [ { l : 0 , u : 0 } ] , { type : '' , name : '' , jsname : '' , isConst : 0 , isArray : 0 , arraySize : 0 , typeId : 0 } , false ) ; /* VARIABLE */
2022-04-18 16:27:23 +00:00
}
2022-06-23 13:43:19 +00:00
currentMethod = "" ;
programMethods = 0 ;
2022-04-18 16:27:23 +00:00
}
2022-06-10 20:35:28 +00:00
async function sub _InitData ( ) {
if ( QB . halted ( ) ) { return ; }
2022-06-23 13:43:19 +00:00
if ( ( QB . func _UBound ( dataArray ) ) < 1 ) {
2022-06-10 20:35:28 +00:00
return ;
}
2022-06-23 20:16:25 +00:00
var ds = '' ; /* STRING */
2022-06-23 13:43:19 +00:00
ds = "[" + ( await func _Join ( dataArray , 1 , - 1 , "," ) ) + "]" ;
await sub _AddJSLine ( 0 , "QB.setData(" + ds + ");" ) ;
2022-06-23 20:16:25 +00:00
var i = 0 ; /* INTEGER */
2022-09-17 16:50:08 +00:00
var _ _ _v2895625 = 0 ; for ( i = 1 ; i <= ( QB . func _UBound ( dataLabels ) ) ; i = i + 1 ) { if ( QB . halted ( ) ) { return ; } _ _ _v2895625 ++ ; if ( _ _ _v2895625 % 100 == 0 ) { await QB . autoLimit ( ) ; }
2022-06-23 13:43:19 +00:00
await sub _AddJSLine ( 0 , "QB.setDataLabel('" + QB . arrayValue ( dataLabels , [ i ] ) . value . text + "', " + ( QB . func _Str ( QB . arrayValue ( dataLabels , [ i ] ) . value . index ) ) + ");" ) ;
2022-06-24 15:26:19 +00:00
}
2022-06-10 20:35:28 +00:00
}
2022-02-16 17:40:03 +00:00
async function sub _PrintJS ( ) {
if ( QB . halted ( ) ) { return ; }
2022-06-23 20:16:25 +00:00
var i = 0 ; /* INTEGER */
2022-09-17 16:50:08 +00:00
var _ _ _v3019480 = 0 ; for ( i = 1 ; i <= ( QB . func _UBound ( jsLines ) ) ; i = i + 1 ) { if ( QB . halted ( ) ) { return ; } _ _ _v3019480 ++ ; if ( _ _ _v3019480 % 100 == 0 ) { await QB . autoLimit ( ) ; }
2022-02-16 17:40:03 +00:00
await QB . sub _Print ( [ QB . arrayValue ( jsLines , [ i ] ) . value . text ] ) ;
2022-06-24 15:26:19 +00:00
}
2022-02-16 17:40:03 +00:00
}
async function sub _ConvertLines ( firstLine /*INTEGER*/ , lastLine /*INTEGER*/ , functionName /*STRING*/ ) {
if ( QB . halted ( ) ) { return ; }
2022-06-23 20:16:25 +00:00
var typeMode = 0 ; /* INTEGER */
2022-06-23 13:43:19 +00:00
typeMode = False ;
2022-06-23 20:16:25 +00:00
var jsMode = 0 ; /* INTEGER */
2022-06-23 13:43:19 +00:00
jsMode = False ;
2022-06-23 20:16:25 +00:00
var i = 0 ; /* INTEGER */
var indent = 0 ; /* INTEGER */
var tempIndent = 0 ; /* INTEGER */
var m = { line : 0 , type : '' , returnType : '' , name : '' , uname : '' , argc : 0 , args : '' , jsname : '' , sync : 0 } ; /* METHOD */
var totalIndent = 0 ; /* INTEGER */
2022-06-23 13:43:19 +00:00
totalIndent = 1 ;
2022-06-23 20:16:25 +00:00
var caseCount = 0 ; /* INTEGER */
2022-09-17 16:50:08 +00:00
var loopMode = QB . initArray ( [ { l : 0 , u : 100 } ] , 0 ) ; /* INTEGER */
2022-06-23 20:16:25 +00:00
var loopLevel = 0 ; /* INTEGER */
var caseVar = '' ; /* STRING */
var currType = 0 ; /* INTEGER */
2022-07-06 11:37:23 +00:00
var loopIndex = '' ; /* STRING */
2022-09-17 16:50:08 +00:00
var _ _ _v7747401 = 0 ; for ( i = firstLine ; i <= lastLine ; i = i + 1 ) { if ( QB . halted ( ) ) { return ; } _ _ _v7747401 ++ ; if ( _ _ _v7747401 % 100 == 0 ) { await QB . autoLimit ( ) ; }
2022-06-23 13:43:19 +00:00
indent = 0 ;
tempIndent = 0 ;
2022-06-23 20:16:25 +00:00
var l = '' ; /* STRING */
2022-06-23 13:43:19 +00:00
l = ( QB . func _ _Trim ( QB . arrayValue ( lines , [ i ] ) . value . text ) ) ;
2022-09-17 16:50:08 +00:00
var parts = QB . initArray ( [ { l : 0 , u : 0 } ] , '' ) ; /* STRING */
2022-06-23 20:16:25 +00:00
var c = 0 ; /* INTEGER */
2022-06-23 13:43:19 +00:00
c = ( await func _SLSplit ( l , parts , True ) ) ;
if ( c < 1 ) {
2022-06-17 21:06:58 +00:00
continue ;
}
2022-06-23 13:43:19 +00:00
if ( PrintTokenizedLine ) {
await sub _AddJSLine ( 0 , "//// " + ( await func _Join ( parts , 1 , - 1 , "|" ) ) ) ;
}
2022-06-23 20:16:25 +00:00
var js = '' ; /* STRING */
2022-06-23 13:43:19 +00:00
js = "" ;
2022-06-23 20:16:25 +00:00
var first = '' ; /* STRING */
2022-06-23 13:43:19 +00:00
first = ( QB . func _UCase ( QB . arrayValue ( parts , [ 1 ] ) . value ) ) ;
if ( jsMode == True ) {
if ( first == "$END" ) {
jsMode = False ;
await sub _AddJSLine ( 0 , "//-------- END JS native code block --------" ) ;
2022-02-16 17:40:03 +00:00
} else {
2022-06-23 13:43:19 +00:00
await sub _AddJSLine ( i , QB . arrayValue ( lines , [ i ] ) . value . text ) ;
2022-02-16 17:40:03 +00:00
}
2022-06-23 13:43:19 +00:00
} else if ( typeMode == True ) {
if ( first == "END" ) {
2022-06-23 20:16:25 +00:00
var second = '' ; /* STRING */
2022-06-23 13:43:19 +00:00
second = ( QB . func _UCase ( QB . arrayValue ( parts , [ 2 ] ) . value ) ) ;
if ( second == "TYPE" ) {
typeMode = False ;
2022-02-16 17:40:03 +00:00
}
} else {
2022-06-23 20:16:25 +00:00
var tvar = { type : '' , name : '' , jsname : '' , isConst : 0 , isArray : 0 , arraySize : 0 , typeId : 0 } ; /* VARIABLE */
2022-06-23 13:43:19 +00:00
tvar . typeId = currType ;
tvar . name = QB . arrayValue ( parts , [ 1 ] ) . value ;
tvar . type = ( QB . func _UCase ( QB . arrayValue ( parts , [ 3 ] ) . value ) ) ;
if ( tvar . type == "_UNSIGNED" ) {
tvar . type = tvar . type + " " + ( QB . func _UCase ( QB . arrayValue ( parts , [ 4 ] ) . value ) ) ;
2022-02-16 17:40:03 +00:00
}
2022-06-23 13:43:19 +00:00
await sub _AddVariable ( tvar , typeVars ) ;
2022-02-16 17:40:03 +00:00
}
} else {
2022-06-23 13:43:19 +00:00
if ( first == "CONST" ) {
2022-09-17 16:50:08 +00:00
var constParts = QB . initArray ( [ { l : 0 , u : 0 } ] , '' ) ; /* STRING */
2022-06-23 20:16:25 +00:00
var constCount = 0 ; /* INTEGER */
2022-06-23 13:43:19 +00:00
constCount = ( await func _ListSplit ( ( await func _Join ( parts , 2 , - 1 , " " ) ) , constParts ) ) ;
2022-06-23 20:16:25 +00:00
var constIdx = 0 ; /* INTEGER */
2022-09-17 16:50:08 +00:00
var _ _ _v140176 = 0 ; for ( constIdx = 1 ; constIdx <= constCount ; constIdx = constIdx + 1 ) { if ( QB . halted ( ) ) { return ; } _ _ _v140176 ++ ; if ( _ _ _v140176 % 100 == 0 ) { await QB . autoLimit ( ) ; }
2022-06-23 20:16:25 +00:00
var eqi = 0 ; /* INTEGER */
2022-06-23 13:43:19 +00:00
eqi = ( QB . func _InStr ( QB . arrayValue ( constParts , [ constIdx ] ) . value , "=" ) ) ;
if ( eqi < 1 ) {
await sub _AddWarning ( i , "Invalid Const syntax: [" + QB . arrayValue ( constParts , [ constIdx ] ) . value + "]" ) ;
} else {
2022-06-23 20:16:25 +00:00
var cleft = '' ; /* STRING */ var cright = '' ; /* STRING */
2022-06-23 13:43:19 +00:00
cleft = ( QB . func _Left ( QB . arrayValue ( constParts , [ constIdx ] ) . value , eqi - 1 ) ) ;
cright = ( QB . func _Mid ( QB . arrayValue ( constParts , [ constIdx ] ) . value , eqi + 1 ) ) ;
2022-06-23 20:16:25 +00:00
js = js + "const " + cleft + " = " + ( await func _ConvertExpression ( cright , i ) ) + "; " ;
2022-06-23 13:43:19 +00:00
await sub _AddConst ( cleft ) ;
}
2022-06-24 15:26:19 +00:00
}
2022-06-23 13:43:19 +00:00
} else if ( first == "DIM" || first == "REDIM" || first == "STATIC" ) {
js = ( await func _DeclareVar ( parts , i ) ) ;
} else if ( first == "SELECT" ) {
caseVar = await func _GenJSVar ( ) ;
2022-06-23 20:16:25 +00:00
js = "var " + caseVar + " = " + ( await func _ConvertExpression ( ( await func _Join ( parts , 3 , - 1 , " " ) ) , i ) ) + "; " ;
2022-06-23 13:43:19 +00:00
js = js + "switch (" + caseVar + ") {" ;
indent = 1 ;
caseCount = 0 ;
} else if ( first == "CASE" ) {
if ( caseCount > 0 ) {
2022-06-23 20:16:25 +00:00
js = "break; " ;
2022-02-16 17:40:03 +00:00
}
2022-06-23 13:43:19 +00:00
if ( ( QB . func _UCase ( QB . arrayValue ( parts , [ 2 ] ) . value ) ) == "ELSE" ) {
js = js + "default:" ;
} else if ( ( QB . func _UCase ( QB . arrayValue ( parts , [ 2 ] ) . value ) ) == "IS" ) {
js = js + "case " + caseVar + " " + ( await func _ConvertExpression ( ( await func _Join ( parts , 3 , - 1 , " " ) ) , i ) ) + ":" ;
2022-02-16 17:40:03 +00:00
} else {
2022-09-17 16:50:08 +00:00
var caseParts = QB . initArray ( [ { l : 0 , u : 0 } ] , '' ) ; /* STRING */
2022-06-23 20:16:25 +00:00
var cscount = 0 ; /* INTEGER */
2022-06-23 13:43:19 +00:00
cscount = ( await func _ListSplit ( ( await func _Join ( parts , 2 , - 1 , " " ) ) , caseParts ) ) ;
2022-06-23 20:16:25 +00:00
var ci = 0 ; /* INTEGER */
2022-09-17 16:50:08 +00:00
var _ _ _v7607236 = 0 ; for ( ci = 1 ; ci <= cscount ; ci = ci + 1 ) { if ( QB . halted ( ) ) { return ; } _ _ _v7607236 ++ ; if ( _ _ _v7607236 % 100 == 0 ) { await QB . autoLimit ( ) ; }
2022-06-23 20:16:25 +00:00
js = js + "case " + ( await func _ConvertExpression ( QB . arrayValue ( caseParts , [ ci ] ) . value , i ) ) + ": " ;
2022-06-24 15:26:19 +00:00
}
2022-02-16 17:40:03 +00:00
}
2022-06-23 13:43:19 +00:00
caseCount = caseCount + 1 ;
} else if ( first == "FOR" ) {
2022-06-23 20:16:25 +00:00
var fstep = '' ; /* STRING */
2022-06-23 13:43:19 +00:00
fstep = "1" ;
2022-06-23 20:16:25 +00:00
var eqIdx = 0 ; /* INTEGER */
var toIdx = 0 ; /* INTEGER */
var stepIdx = 0 ; /* INTEGER */
var fcond = '' ; /* STRING */
2022-06-23 13:43:19 +00:00
fcond = " <= " ;
stepIdx = 0 ;
2022-06-23 20:16:25 +00:00
var fi = 0 ; /* INTEGER */
2022-09-17 16:50:08 +00:00
var _ _ _v8144900 = 0 ; for ( fi = 2 ; fi <= ( QB . func _UBound ( parts ) ) ; fi = fi + 1 ) { if ( QB . halted ( ) ) { return ; } _ _ _v8144900 ++ ; if ( _ _ _v8144900 % 100 == 0 ) { await QB . autoLimit ( ) ; }
2022-06-23 20:16:25 +00:00
var fword = '' ; /* STRING */
2022-06-23 13:43:19 +00:00
fword = ( QB . func _UCase ( QB . arrayValue ( parts , [ fi ] ) . value ) ) ;
if ( fword == "=" ) {
eqIdx = fi ;
} else if ( fword == "TO" ) {
toIdx = fi ;
} else if ( fword == "STEP" ) {
stepIdx = fi ;
fstep = ( await func _ConvertExpression ( ( await func _Join ( parts , fi + 1 , - 1 , " " ) ) , i ) ) ;
2022-02-16 17:40:03 +00:00
}
2022-06-24 15:26:19 +00:00
}
2022-06-23 20:16:25 +00:00
var fvar = '' ; /* STRING */
2022-06-23 13:43:19 +00:00
fvar = ( await func _ConvertExpression ( ( await func _Join ( parts , 2 , eqIdx - 1 , " " ) ) , i ) ) ;
2022-06-23 20:16:25 +00:00
var sval = '' ; /* STRING */
2022-06-23 13:43:19 +00:00
sval = ( await func _ConvertExpression ( ( await func _Join ( parts , eqIdx + 1 , toIdx - 1 , " " ) ) , i ) ) ;
2022-06-23 20:16:25 +00:00
var uval = '' ; /* STRING */
2022-06-23 13:43:19 +00:00
uval = ( await func _ConvertExpression ( ( await func _Join ( parts , toIdx + 1 , stepIdx - 1 , " " ) ) , i ) ) ;
if ( ( QB . func _Left ( ( QB . func _ _Trim ( fstep ) ) , 1 ) ) == "-" ) {
fcond = " >= " ;
2022-02-16 17:40:03 +00:00
}
2022-07-06 11:37:23 +00:00
loopIndex = await func _GenJSVar ( ) ;
js = "var " + loopIndex + " = 0;" ;
js = js + " for (" + fvar + "=" + sval + "; " + fvar + fcond + uval + "; " + fvar + "=" + fvar + " + " + fstep + ") {" ;
js = js + " if (QB.halted()) { return; } " ;
js = js + loopIndex + "++; " ;
2022-07-06 15:14:06 +00:00
js = js + " if (" + loopIndex + " % 100 == 0) { await QB.autoLimit(); }" ;
2022-06-23 13:43:19 +00:00
indent = 1 ;
} else if ( first == "IF" ) {
2022-06-23 20:16:25 +00:00
var thenIndex = 0 ; /* INTEGER */
2022-09-17 16:50:08 +00:00
var _ _ _v7090379 = 0 ; for ( thenIndex = 2 ; thenIndex <= ( QB . func _UBound ( parts ) ) ; thenIndex = thenIndex + 1 ) { if ( QB . halted ( ) ) { return ; } _ _ _v7090379 ++ ; if ( _ _ _v7090379 % 100 == 0 ) { await QB . autoLimit ( ) ; }
2022-06-23 13:43:19 +00:00
if ( ( QB . func _UCase ( QB . arrayValue ( parts , [ thenIndex ] ) . value ) ) == "THEN" ) {
2022-02-16 17:40:03 +00:00
break ;
}
2022-06-24 15:26:19 +00:00
}
2022-06-23 13:43:19 +00:00
js = "if (" + ( await func _ConvertExpression ( ( await func _Join ( parts , 2 , thenIndex - 1 , " " ) ) , i ) ) + ") {" ;
indent = 1 ;
} else if ( first == "ELSEIF" ) {
js = "} else if (" + ( await func _ConvertExpression ( ( await func _Join ( parts , 2 , ( QB . func _UBound ( parts ) ) - 1 , " " ) ) , i ) ) + ") {" ;
tempIndent = - 1 ;
} else if ( first == "ELSE" ) {
js = "} else {" ;
tempIndent = - 1 ;
} else if ( first == "NEXT" ) {
2022-06-24 15:26:19 +00:00
if ( c > 1 ) {
2022-09-17 16:50:08 +00:00
var nparts = QB . initArray ( [ { l : 0 , u : 0 } ] , '' ) ; /* STRING */
2022-06-24 15:26:19 +00:00
var npcount = 0 ; /* INTEGER */
var npi = 0 ; /* INTEGER */
npcount = ( await func _ListSplit ( ( await func _Join ( parts , 2 , - 1 , " " ) ) , nparts ) ) ;
2022-09-17 16:50:08 +00:00
var _ _ _v453528 = 0 ; for ( npi = 1 ; npi <= npcount ; npi = npi + 1 ) { if ( QB . halted ( ) ) { return ; } _ _ _v453528 ++ ; if ( _ _ _v453528 % 100 == 0 ) { await QB . autoLimit ( ) ; }
2022-06-24 15:26:19 +00:00
js = js + "} " ;
indent = indent - 1 ;
}
} else {
js = js + "}" ;
indent = - 1 ;
}
2022-06-23 13:43:19 +00:00
} else if ( first == "END" ) {
if ( ( QB . func _UBound ( parts ) ) == 1 ) {
js = "QB.halt(); return;" ;
2022-02-16 17:40:03 +00:00
} else {
2022-06-23 13:43:19 +00:00
if ( ( QB . func _UCase ( QB . arrayValue ( parts , [ 2 ] ) . value ) ) == "SELECT" ) {
js = "break;" ;
2022-02-16 17:40:03 +00:00
}
2022-06-23 13:43:19 +00:00
js = js + "}" ;
indent = - 1 ;
2022-02-16 17:40:03 +00:00
}
2022-06-23 13:43:19 +00:00
} else if ( first == "SYSTEM" ) {
js = "QB.halt(); return;" ;
} else if ( first == "$IF" ) {
if ( ( QB . func _UBound ( parts ) ) > 1 ) {
if ( ( QB . func _UCase ( QB . arrayValue ( parts , [ 2 ] ) . value ) ) == "JAVASCRIPT" ) {
jsMode = True ;
js = "//-------- BEGIN JS native code block --------" ;
2022-02-16 17:40:03 +00:00
}
}
2022-06-23 13:43:19 +00:00
} else if ( first == "DO" ) {
loopLevel = loopLevel + 1 ;
2022-07-06 11:37:23 +00:00
loopIndex = await func _GenJSVar ( ) ;
js = "var " + loopIndex + " = 0;" ;
2022-06-23 13:43:19 +00:00
if ( ( QB . func _UBound ( parts ) ) > 1 ) {
if ( ( QB . func _UCase ( QB . arrayValue ( parts , [ 2 ] ) . value ) ) == "WHILE" ) {
2022-07-06 11:37:23 +00:00
js = js + " while (" + ( await func _ConvertExpression ( ( await func _Join ( parts , 3 , - 1 , " " ) ) , i ) ) + ") {" ;
2022-02-16 17:40:03 +00:00
} else {
2022-07-06 11:37:23 +00:00
js = js + " while (!(" + ( await func _ConvertExpression ( ( await func _Join ( parts , 3 , - 1 , " " ) ) , i ) ) + ")) {" ;
2022-02-16 17:40:03 +00:00
}
2022-06-23 13:43:19 +00:00
QB . arrayValue ( loopMode , [ loopLevel ] ) . value = 1 ;
2022-02-16 17:40:03 +00:00
} else {
2022-07-06 11:37:23 +00:00
js = js + " do {" ;
2022-06-23 13:43:19 +00:00
QB . arrayValue ( loopMode , [ loopLevel ] ) . value = 2 ;
2022-02-16 17:40:03 +00:00
}
2022-06-23 13:43:19 +00:00
indent = 1 ;
2022-07-06 11:37:23 +00:00
js = js + " if (QB.halted()) { return; }" ;
js = js + loopIndex + "++; " ;
2022-07-06 15:14:06 +00:00
js = js + " if (" + loopIndex + " % 100 == 0) { await QB.autoLimit(); }" ;
2022-06-23 13:43:19 +00:00
} else if ( first == "WHILE" ) {
loopLevel = loopLevel + 1 ;
2022-07-06 11:37:23 +00:00
loopIndex = await func _GenJSVar ( ) ;
js = "var " + loopIndex + " = 0;" ;
js = js + " while (" + ( await func _ConvertExpression ( ( await func _Join ( parts , 2 , - 1 , " " ) ) , i ) ) + ") {" ;
js = js + " if (QB.halted()) { return; }" ;
js = js + loopIndex + "++; " ;
2022-07-08 20:01:39 +00:00
js = js + " if (" + loopIndex + " % 100 == 0) { await QB.autoLimit(); }" ;
2022-06-23 13:43:19 +00:00
indent = 1 ;
} else if ( first == "WEND" ) {
js = "}" ;
loopLevel = loopLevel - 1 ;
indent = - 1 ;
} else if ( first == "LOOP" ) {
if ( QB . arrayValue ( loopMode , [ loopLevel ] ) . value == 1 ) {
js = "}" ;
2022-02-16 17:40:03 +00:00
} else {
2022-06-23 13:43:19 +00:00
js = "} while ((" ;
if ( ( QB . func _UBound ( parts ) ) < 2 ) {
js = js + "1));" ;
2022-02-16 17:40:03 +00:00
} else {
2022-06-23 13:43:19 +00:00
if ( ( QB . func _UCase ( QB . arrayValue ( parts , [ 2 ] ) . value ) ) == "UNTIL" ) {
js = "} while (!(" ;
2022-02-16 17:40:03 +00:00
}
2022-06-23 13:43:19 +00:00
js = js + ( await func _ConvertExpression ( ( await func _Join ( parts , 3 , ( QB . func _UBound ( parts ) ) , " " ) ) , i ) ) + "))" ;
2022-02-16 17:40:03 +00:00
}
}
2022-06-23 13:43:19 +00:00
loopLevel = loopLevel - 1 ;
indent = - 1 ;
} else if ( first == "_CONTINUE" ) {
js = "continue;" ;
} else if ( ( QB . func _UCase ( l ) ) == "EXIT FUNCTION" ) {
2022-09-17 16:50:08 +00:00
js = "return " + ( await func _RemoveSuffix ( functionName ) ) + ";" ;
2022-06-23 13:43:19 +00:00
} else if ( ( QB . func _UCase ( l ) ) == "EXIT SUB" ) {
js = "return;" ;
} else if ( first == "EXIT" ) {
js = "break;" ;
} else if ( first == "TYPE" ) {
typeMode = True ;
2022-06-23 20:16:25 +00:00
var qbtype = { line : 0 , name : '' , argc : 0 , args : '' } ; /* QBTYPE */
2022-06-23 13:43:19 +00:00
qbtype . line = i ;
qbtype . name = ( QB . func _UCase ( QB . arrayValue ( parts , [ 2 ] ) . value ) ) ;
2022-03-30 22:37:36 +00:00
await sub _AddType ( qbtype ) ;
2022-06-23 13:43:19 +00:00
currType = ( QB . func _UBound ( types ) ) ;
} else if ( first == "EXPORT" ) {
if ( c > 1 ) {
2022-09-17 16:50:08 +00:00
var exparts = QB . initArray ( [ { l : 0 , u : 0 } ] , '' ) ; /* STRING */
2022-06-23 20:16:25 +00:00
var excount = 0 ; /* INTEGER */
2022-06-23 13:43:19 +00:00
excount = ( await func _ListSplit ( ( await func _Join ( parts , 2 , - 1 , " " ) ) , exparts ) ) ;
2022-06-23 20:16:25 +00:00
var exi = 0 ; /* INTEGER */
2022-09-17 16:50:08 +00:00
var _ _ _v4140327 = 0 ; for ( exi = 1 ; exi <= excount ; exi = exi + 1 ) { if ( QB . halted ( ) ) { return ; } _ _ _v4140327 ++ ; if ( _ _ _v4140327 % 100 == 0 ) { await QB . autoLimit ( ) ; }
2022-06-23 13:43:19 +00:00
await sub _ParseExport ( QB . arrayValue ( exparts , [ exi ] ) . value , i ) ;
2022-06-24 15:26:19 +00:00
}
2022-04-18 16:27:23 +00:00
continue ;
} else {
}
2022-06-23 13:43:19 +00:00
} else if ( first == "CALL" ) {
2022-06-23 20:16:25 +00:00
var subline = '' ; /* STRING */
2022-06-23 13:43:19 +00:00
subline = ( QB . func _ _Trim ( ( await func _Join ( parts , 2 , - 1 , " " ) ) ) ) ;
2022-06-23 20:16:25 +00:00
var subend = 0 ; /* INTEGER */
2022-06-23 13:43:19 +00:00
subend = ( QB . func _InStr ( subline , "(" ) ) ;
2022-06-23 20:16:25 +00:00
var subname = '' ; /* STRING */
2022-06-23 13:43:19 +00:00
if ( subend == 0 ) {
subname = subline ;
2022-02-16 17:40:03 +00:00
} else {
2022-06-23 13:43:19 +00:00
subname = ( QB . func _Left ( subline , subend - 1 ) ) ;
2022-02-16 17:40:03 +00:00
}
2022-06-23 13:43:19 +00:00
if ( ( await func _FindMethod ( subname , m , "SUB" ) ) ) {
2022-06-23 20:16:25 +00:00
var subargs = '' ; /* STRING */
2022-06-23 13:43:19 +00:00
if ( subname == subline ) {
subargs = "" ;
2022-03-30 22:37:36 +00:00
} else {
2022-06-23 13:43:19 +00:00
subargs = ( QB . func _Mid ( subline , ( QB . func _Len ( subname ) ) + 2 , ( QB . func _Len ( subline ) ) - ( QB . func _Len ( subname ) ) - 2 ) ) ;
2022-03-30 22:37:36 +00:00
}
2022-06-23 13:43:19 +00:00
js = ( await func _ConvertSub ( m , subargs , i ) ) ;
2022-02-16 17:40:03 +00:00
} else {
2022-06-23 13:43:19 +00:00
await sub _AddWarning ( i , "Missing Sub [" + subname + "], ignoring Call command" ) ;
2022-02-16 17:40:03 +00:00
}
2022-06-24 14:44:55 +00:00
} else if ( c > 2 || first == "LET" ) {
2022-06-23 20:16:25 +00:00
var assignment = 0 ; /* INTEGER */
2022-06-23 13:43:19 +00:00
assignment = 0 ;
2022-06-23 20:16:25 +00:00
var j = 0 ; /* INTEGER */
2022-09-17 16:50:08 +00:00
var _ _ _v8626193 = 0 ; for ( j = 1 ; j <= ( QB . func _UBound ( parts ) ) ; j = j + 1 ) { if ( QB . halted ( ) ) { return ; } _ _ _v8626193 ++ ; if ( _ _ _v8626193 % 100 == 0 ) { await QB . autoLimit ( ) ; }
2022-06-23 13:43:19 +00:00
if ( QB . arrayValue ( parts , [ j ] ) . value == "=" ) {
assignment = j ;
2022-02-16 17:40:03 +00:00
break ;
}
2022-06-24 15:26:19 +00:00
}
2022-06-24 14:44:55 +00:00
var asnVarIndex = 0 ; /* SINGLE */
asnVarIndex = 1 ;
if ( first == "LET" ) {
asnVarIndex = 2 ;
}
2022-06-23 13:43:19 +00:00
if ( assignment > 0 ) {
2022-06-24 14:44:55 +00:00
js = ( await func _RemoveSuffix ( ( await func _ConvertExpression ( ( await func _Join ( parts , asnVarIndex , assignment - 1 , " " ) ) , i ) ) ) ) + " = " + ( await func _ConvertExpression ( ( await func _Join ( parts , assignment + 1 , - 1 , " " ) ) , i ) ) + ";" ;
2022-02-16 17:40:03 +00:00
} else {
2022-06-23 13:43:19 +00:00
if ( ( await func _FindMethod ( QB . arrayValue ( parts , [ 1 ] ) . value , m , "SUB" ) ) ) {
js = ( await func _ConvertSub ( m , ( await func _Join ( parts , 2 , - 1 , " " ) ) , i ) ) ;
2022-02-16 17:40:03 +00:00
} else {
2022-06-23 13:43:19 +00:00
js = "// " + l ;
await sub _AddWarning ( i , "Missing or unsupported method: '" + QB . arrayValue ( parts , [ 1 ] ) . value + "' - ignoring line" ) ;
2022-02-16 17:40:03 +00:00
}
}
} else {
2022-06-23 13:43:19 +00:00
if ( ( await func _FindMethod ( QB . arrayValue ( parts , [ 1 ] ) . value , m , "SUB" ) ) ) {
js = ( await func _ConvertSub ( m , ( await func _Join ( parts , 2 , - 1 , " " ) ) , i ) ) ;
2022-02-16 17:40:03 +00:00
} else {
2022-06-23 13:43:19 +00:00
js = "// " + l ;
2022-06-24 15:26:19 +00:00
if ( first == "GOTO" ) {
await sub _AddWarning ( i , "Missing or unsupported method: '<a href='https://xkcd.com/292/' target='_blank'>GOTO</a>'" ) ;
} else {
await sub _AddWarning ( i , "Missing or unsupported method: '" + QB . arrayValue ( parts , [ 1 ] ) . value + "' - ignoring line" ) ;
}
2022-02-16 17:40:03 +00:00
}
}
2022-06-23 13:43:19 +00:00
if ( ( indent < 0 ) ) {
totalIndent = totalIndent + indent ;
2022-02-16 17:40:03 +00:00
}
2022-06-23 13:43:19 +00:00
await sub _AddJSLine ( i , ( await func _LPad ( "" , " " , ( totalIndent + tempIndent ) * 3 ) ) + js ) ;
if ( ( indent > 0 ) ) {
totalIndent = totalIndent + indent ;
2022-02-16 17:40:03 +00:00
}
}
2022-06-24 15:26:19 +00:00
}
2022-02-16 17:40:03 +00:00
}
2022-04-30 03:24:36 +00:00
async function sub _ParseExport ( s /*STRING*/ , lineIndex /*INTEGER*/ ) {
2022-04-26 03:56:54 +00:00
if ( QB . halted ( ) ) { return ; }
2022-06-23 20:16:25 +00:00
var exportedItem = '' ; /* STRING */
var ef = { line : 0 , type : '' , returnType : '' , name : '' , uname : '' , argc : 0 , args : '' , jsname : '' , sync : 0 } ; /* METHOD */
var es = { line : 0 , type : '' , returnType : '' , name : '' , uname : '' , argc : 0 , args : '' , jsname : '' , sync : 0 } ; /* METHOD */
var ev = { type : '' , name : '' , jsname : '' , isConst : 0 , isArray : 0 , arraySize : 0 , typeId : 0 } ; /* VARIABLE */
var exportName = '' ; /* STRING */
2022-09-17 16:50:08 +00:00
var parts = QB . initArray ( [ { l : 0 , u : 0 } ] , '' ) ; /* STRING */
2022-06-23 20:16:25 +00:00
var found = 0 ; /* INTEGER */
2022-06-23 13:43:19 +00:00
found = False ;
2022-06-23 20:16:25 +00:00
var c = 0 ; /* INTEGER */
2022-06-23 13:43:19 +00:00
c = ( await func _SLSplit ( s , parts , False ) ) ;
if ( ( await func _FindMethod ( QB . arrayValue ( parts , [ 1 ] ) . value , es , "SUB" ) ) ) {
if ( c > 2 ) {
exportName = QB . arrayValue ( parts , [ 3 ] ) . value ;
2022-04-26 03:56:54 +00:00
} else {
2022-06-23 13:43:19 +00:00
exportName = QB . arrayValue ( parts , [ 1 ] ) . value ;
}
exportedItem = es . jsname ;
es . name = exportName ;
await sub _AddExportMethod ( es , currentModule + "." , True ) ;
exportName = "sub_" + exportName ;
await sub _RegisterExport ( exportName , exportedItem ) ;
found = True ;
}
if ( ( await func _FindMethod ( QB . arrayValue ( parts , [ 1 ] ) . value , ef , "FUNCTION" ) ) ) {
if ( c > 2 ) {
exportName = QB . arrayValue ( parts , [ 3 ] ) . value ;
2022-04-26 03:56:54 +00:00
} else {
2022-06-23 13:43:19 +00:00
exportName = QB . arrayValue ( parts , [ 1 ] ) . value ;
}
exportedItem = ef . jsname ;
ef . name = exportName ;
await sub _AddExportMethod ( ef , currentModule + "." , True ) ;
exportName = "func_" + exportName ;
await sub _RegisterExport ( exportName , exportedItem ) ;
found = True ;
}
if ( ( await func _FindVariable ( QB . arrayValue ( parts , [ 1 ] ) . value , ev , False ) ) ) {
if ( ev . isConst == True ) {
if ( c > 2 ) {
exportName = QB . arrayValue ( parts , [ 3 ] ) . value ;
2022-04-30 03:24:36 +00:00
} else {
2022-06-23 13:43:19 +00:00
exportName = QB . arrayValue ( parts , [ 1 ] ) . value ;
2022-04-30 03:24:36 +00:00
}
2022-06-23 13:43:19 +00:00
exportedItem = ev . jsname ;
ev . name = exportName ;
exportedItem = ev . jsname ;
if ( exportName == "" ) {
exportName = QB . arrayValue ( parts , [ 1 ] ) . value ;
2022-04-30 03:24:36 +00:00
}
2022-06-23 13:43:19 +00:00
ev . name = exportName ;
await sub _AddExportConst ( currentModule + "." + exportName ) ;
await sub _RegisterExport ( exportName , exportedItem ) ;
found = True ;
2022-04-30 03:24:36 +00:00
}
}
if ( ! found ) {
2022-06-23 13:43:19 +00:00
await sub _AddWarning ( lineIndex , "Invalid export [" + QB . arrayValue ( parts , [ 1 ] ) . value + "]. Exported items must be a Sub, Function or Const in the current module." ) ;
2022-04-26 03:56:54 +00:00
}
}
async function sub _RegisterExport ( exportName /*STRING*/ , exportedItem /*STRING*/ ) {
if ( QB . halted ( ) ) { return ; }
2022-06-23 20:16:25 +00:00
var esize = 0 ; /* SINGLE */
2022-06-23 13:43:19 +00:00
esize = ( QB . func _UBound ( exportLines ) ) + 1 ;
2022-09-17 16:50:08 +00:00
QB . resizeArray ( exportLines , [ { l : 0 , u : esize } ] , '' , true ) ; /* STRING */
2022-06-23 13:43:19 +00:00
QB . arrayValue ( exportLines , [ esize ] ) . value = "this." + exportName + " = " + exportedItem + ";" ;
2022-04-26 03:56:54 +00:00
}
2022-06-17 21:06:58 +00:00
async function func _ConvertSub ( m /*METHOD*/ , args /*STRING*/ , lineNumber /*INTEGER*/ ) {
2022-02-16 17:40:03 +00:00
if ( QB . halted ( ) ) { return ; }
var ConvertSub = null ;
2022-06-23 20:16:25 +00:00
var js = '' ; /* STRING */
2022-06-23 13:43:19 +00:00
if ( m . name == "Line" ) {
2022-09-17 16:50:08 +00:00
var parts = QB . initArray ( [ { l : 0 , u : 0 } ] , '' ) ; /* STRING */
2022-06-23 20:16:25 +00:00
var plen = 0 ; /* INTEGER */
2022-06-23 13:43:19 +00:00
plen = ( await func _SLSplit ( args , parts , False ) ) ;
if ( plen > 0 ) {
if ( ( QB . func _UCase ( QB . arrayValue ( parts , [ 1 ] ) . value ) ) == "INPUT" ) {
m . name = "Line Input" ;
m . jsname = "QB.sub_LineInput" ;
args = ( await func _Join ( parts , 2 , - 1 , " " ) ) ;
2022-09-17 16:50:08 +00:00
m . sync = True ;
2022-02-16 17:40:03 +00:00
}
}
}
2022-06-23 13:43:19 +00:00
if ( m . name == "Line" ) {
js = ( await func _CallMethod ( m ) ) + "(" + ( await func _ConvertLine ( args , lineNumber ) ) + ");" ;
} else if ( m . name == "Cls" ) {
js = ( await func _CallMethod ( m ) ) + "(" + ( await func _ConvertCls ( args , lineNumber ) ) + ");" ;
2022-09-17 16:50:08 +00:00
} else if ( m . name == "Open" ) {
js = ( await func _CallMethod ( m ) ) + "(" + ( await func _ConvertOpen ( args , lineNumber ) ) + ");" ;
} else if ( m . name == "Close" ) {
js = ( await func _CallMethod ( m ) ) + "(" + ( await func _Replace ( args , "#" , "" ) ) + ");" ;
} else if ( m . name == "Input" ) {
2022-10-27 14:04:15 +00:00
if ( ( await func _StartsWith ( ( QB . func _ _Trim ( args ) ) , "#" ) ) ) {
m . jsname = "QB.sub_InputFromFile" ;
js = ( await func _ConvertFileInput ( m , args , lineNumber ) ) ;
2022-09-17 16:50:08 +00:00
} else {
2022-10-27 14:04:15 +00:00
m . jsname = "QB.sub_Input" ;
2022-09-17 16:50:08 +00:00
js = ( await func _ConvertInput ( m , args , lineNumber ) ) ;
}
} else if ( m . name == "Line Input" ) {
if ( ( await func _StartsWith ( ( QB . func _ _Trim ( args ) ) , "#" ) ) ) {
m . jsname = "QB.sub_LineInputFromFile" ;
js = ( await func _ConvertFileLineInput ( m , args , lineNumber ) ) ;
2022-10-27 14:04:15 +00:00
m . name = "Line" ;
m . jsname = "QB.sub_Line" ;
2022-09-17 16:50:08 +00:00
} else {
js = ( await func _ConvertInput ( m , args , lineNumber ) ) ;
m . name = "Line" ;
m . jsname = "QB.sub_Line" ;
m . sync = False ;
}
2022-06-23 13:43:19 +00:00
} else if ( m . name == "PSet" || m . name == "Circle" || m . name == "PReset" || m . name == "Paint" ) {
js = ( await func _CallMethod ( m ) ) + "(" + ( await func _ConvertPSet ( args , lineNumber ) ) + ");" ;
} else if ( m . name == "Print" ) {
2022-09-17 16:50:08 +00:00
js = ( await func _ConvertPrint ( m , args , lineNumber ) ) ;
} else if ( m . name == "Put" || m . name == "Get" ) {
js = ( await func _ConvertPut ( m , args , lineNumber ) ) ;
2022-06-23 13:43:19 +00:00
} else if ( m . name == "Randomize" ) {
js = ( await func _ConvertRandomize ( m , args , lineNumber ) ) ;
} else if ( m . name == "Read" ) {
js = ( await func _ConvertRead ( m , args , lineNumber ) ) ;
} else if ( m . name == "Restore" ) {
js = ( await func _CallMethod ( m ) ) + "('" + ( QB . func _UCase ( args ) ) + "');" ;
} else if ( m . name == "Swap" ) {
js = ( await func _ConvertSwap ( m , args , lineNumber ) ) ;
} else if ( m . name == "Window" ) {
js = ( await func _CallMethod ( m ) ) + "(" + ( await func _ConvertWindow ( args , lineNumber ) ) + ");" ;
2022-10-27 14:04:15 +00:00
} else if ( m . name == "Write" ) {
js = ( await func _ConvertWrite ( m , args , lineNumber ) ) ;
2022-06-23 13:43:19 +00:00
} else if ( m . name == "_PrintString" ) {
js = ( await func _CallMethod ( m ) ) + "(" + ( await func _ConvertPrintString ( args , lineNumber ) ) + ");" ;
} else if ( m . name == "_PutImage" ) {
js = ( await func _CallMethod ( m ) ) + "(" + ( await func _ConvertPutImage ( args , lineNumber ) ) + ");" ;
} else if ( m . name == "_FullScreen" ) {
js = ( await func _CallMethod ( m ) ) + "(" + ( await func _ConvertFullScreen ( args ) ) + ");" ;
2022-02-16 17:40:03 +00:00
} else {
2022-06-23 13:43:19 +00:00
js = ( await func _CallMethod ( m ) ) + "(" + ( await func _ConvertMethodParams ( args , lineNumber ) ) + ");" ;
2022-02-16 17:40:03 +00:00
}
2022-06-23 13:43:19 +00:00
ConvertSub = js ;
2022-02-16 17:40:03 +00:00
return ConvertSub ;
}
2022-09-17 16:50:08 +00:00
async function func _ConvertPut ( m /*METHOD*/ , args /*STRING*/ , lineNumber /*INTEGER*/ ) {
if ( QB . halted ( ) ) { return ; }
var ConvertPut = null ;
var parts = QB . initArray ( [ { l : 0 , u : 0 } ] , '' ) ; /* STRING */
var argc = 0 ; /* INTEGER */
argc = ( await func _ListSplit ( args , parts ) ) ;
if ( argc < 3 ) {
await sub _AddWarning ( lineNumber , "Syntax error" ) ;
return ConvertPut ;
}
var fh = '' ; /* STRING */ var position = '' ; /* STRING */ var vname = '' ; /* STRING */
fh = ( QB . func _ _Trim ( QB . arrayValue ( parts , [ 1 ] ) . value ) ) ;
position = ( QB . func _ _Trim ( QB . arrayValue ( parts , [ 2 ] ) . value ) ) ;
vname = ( QB . func _ _Trim ( QB . arrayValue ( parts , [ 3 ] ) . value ) ) ;
vname = ( await func _Replace ( vname , "()" , "" ) ) ;
fh = ( await func _Replace ( fh , "#" , "" ) ) ;
if ( position == "" ) {
position = "undefined" ;
}
var v = { type : '' , name : '' , jsname : '' , isConst : 0 , isArray : 0 , arraySize : 0 , typeId : 0 } ; /* VARIABLE */
if ( ! ( await func _FindVariable ( vname , v , False ) ) ) {
if ( ! ( await func _FindVariable ( vname , v , True ) ) ) {
await sub _AddWarning ( lineNumber , "Invalid variable '" + vname + "'" ) ;
return ConvertPut ;
}
}
if ( m . name == "Put" ) {
ConvertPut = ( await func _CallMethod ( m ) ) + "(" + fh + ", " + position + ", '" + v . type + "', " + v . jsname + ");" ;
} else {
var js = '' ; /* STRING */ var varobj = '' ; /* STRING */
varobj = await func _GenJSVar ( ) ;
js = "var " + varobj + " = { value: " + v . jsname + " }; " ;
js = js + ( await func _CallMethod ( m ) ) + "(" + fh + ", " + position + ", '" + v . type + "', " + varobj + "); " ;
js = js + v . jsname + " = " + varobj + ".value;" ;
ConvertPut = js ;
}
return ConvertPut ;
}
2022-04-28 19:30:25 +00:00
async function func _ConvertFullScreen ( args /*STRING*/ ) {
if ( QB . halted ( ) ) { return ; }
var ConvertFullScreen = null ;
2022-09-17 16:50:08 +00:00
var parts = QB . initArray ( [ { l : 0 , u : 0 } ] , '' ) ; /* STRING */
2022-06-23 20:16:25 +00:00
var argc = 0 ; /* INTEGER */
var mode = '' ; /* STRING */
2022-06-23 13:43:19 +00:00
mode = "QB.STRETCH" ;
2022-06-23 20:16:25 +00:00
var doSmooth = '' ; /* STRING */
2022-06-23 13:43:19 +00:00
doSmooth = "false" ;
argc = ( await func _ListSplit ( args , parts ) ) ;
if ( argc > 0 ) {
2022-06-23 20:16:25 +00:00
var arg = '' ; /* STRING */
2022-06-23 13:43:19 +00:00
arg = ( QB . func _UCase ( QB . arrayValue ( parts , [ 1 ] ) . value ) ) ;
if ( arg == "_OFF" ) {
mode = "QB.OFF" ;
} else if ( arg == "_STRETCH" ) {
mode = "QB.STRETCH" ;
} else if ( arg == "_SQUAREPIXELS" ) {
mode = "QB.SQUAREPIXELS" ;
2022-04-28 19:30:25 +00:00
}
}
2022-06-23 13:43:19 +00:00
if ( argc > 1 ) {
if ( ( QB . func _UCase ( QB . arrayValue ( parts , [ 2 ] ) . value ) ) == "_SMOOTH" ) {
doSmooth = "true" ;
2022-04-28 19:30:25 +00:00
}
}
2022-06-23 13:43:19 +00:00
ConvertFullScreen = mode + ", " + doSmooth ;
2022-04-28 19:30:25 +00:00
return ConvertFullScreen ;
}
2022-09-17 16:50:08 +00:00
async function func _ConvertOpen ( args /*STRING*/ , lineNumber /*INTEGER*/ ) {
if ( QB . halted ( ) ) { return ; }
var ConvertOpen = null ;
var argc = 0 ; /* INTEGER */
var parts = QB . initArray ( [ { l : 0 , u : 0 } ] , '' ) ; /* STRING */
var filename = '' ; /* STRING */ var mode = '' ; /* STRING */ var handle = '' ; /* STRING */
argc = ( await func _SLSplit ( args , parts , False ) ) ;
if ( argc < 5 ) {
await sub _AddWarning ( lineNumber , "Syntax Error in Open statement" ) ;
return ConvertOpen ;
}
if ( ( QB . func _UCase ( QB . arrayValue ( parts , [ 2 ] ) . value ) ) != "FOR" ) {
await sub _AddWarning ( lineNumber , "Syntax Error in Open statement" ) ;
return ConvertOpen ;
}
if ( ( QB . func _UCase ( QB . arrayValue ( parts , [ 4 ] ) . value ) ) != "AS" ) {
await sub _AddWarning ( lineNumber , "Syntax Error in Open statement" ) ;
return ConvertOpen ;
}
filename = QB . arrayValue ( parts , [ 1 ] ) . value ;
mode = "QB." + ( QB . func _UCase ( QB . arrayValue ( parts , [ 3 ] ) . value ) ) ;
handle = ( await func _Replace ( QB . arrayValue ( parts , [ 5 ] ) . value , "#" , "" ) ) ;
ConvertOpen = filename + ", " + mode + ", " + handle ;
return ConvertOpen ;
}
2022-06-17 21:06:58 +00:00
async function func _ConvertLine ( args /*STRING*/ , lineNumber /*INTEGER*/ ) {
2022-02-16 17:40:03 +00:00
if ( QB . halted ( ) ) { return ; }
var ConvertLine = null ;
2022-06-23 20:16:25 +00:00
var argc = 0 ; /* INTEGER */
2022-09-17 16:50:08 +00:00
var parts = QB . initArray ( [ { l : 0 , u : 0 } ] , '' ) ; /* STRING */
2022-06-23 20:16:25 +00:00
var coord = '' ; /* STRING */ var lcolor = '' ; /* STRING */ var mode = '' ; /* STRING */ var style = '' ; /* STRING */
2022-06-23 13:43:19 +00:00
coord = ( await func _ConvertCoordParam ( "" , True , lineNumber ) ) ;
lcolor = "undefined" ;
mode = "undefined" ;
style = "undefined" ;
argc = ( await func _ListSplit ( args , parts ) ) ;
if ( argc >= 1 ) {
coord = ( await func _ConvertCoordParam ( QB . arrayValue ( parts , [ 1 ] ) . value , True , lineNumber ) ) ;
2022-02-16 17:40:03 +00:00
}
2022-10-27 14:04:15 +00:00
if ( argc >= 2 && ( QB . func _ _Trim ( QB . arrayValue ( parts , [ 2 ] ) . value ) ) != "" ) {
2022-06-23 13:43:19 +00:00
lcolor = ( await func _ConvertExpression ( QB . arrayValue ( parts , [ 2 ] ) . value , lineNumber ) ) ;
}
2022-10-27 14:04:15 +00:00
if ( argc >= 3 && ( QB . func _ _Trim ( QB . arrayValue ( parts , [ 3 ] ) . value ) ) != "" ) {
2022-06-23 13:43:19 +00:00
mode = "'" + ( QB . func _UCase ( ( QB . func _ _Trim ( QB . arrayValue ( parts , [ 3 ] ) . value ) ) ) ) + "'" ;
}
2022-10-27 14:04:15 +00:00
if ( argc >= 4 && ( QB . func _ _Trim ( QB . arrayValue ( parts , [ 4 ] ) . value ) ) != "" ) {
2022-06-23 13:43:19 +00:00
style = ( await func _ConvertExpression ( QB . arrayValue ( parts , [ 4 ] ) . value , lineNumber ) ) ;
}
ConvertLine = coord + ", " + lcolor + ", " + mode + ", " + style ;
2022-02-16 17:40:03 +00:00
return ConvertLine ;
}
2022-06-17 21:06:58 +00:00
async function func _ConvertPutImage ( args /*STRING*/ , lineNumber /*INTEGER*/ ) {
2022-03-04 22:28:32 +00:00
if ( QB . halted ( ) ) { return ; }
var ConvertPutImage = null ;
2022-06-23 20:16:25 +00:00
var argc = 0 ; /* INTEGER */
2022-09-17 16:50:08 +00:00
var parts = QB . initArray ( [ { l : 0 , u : 0 } ] , '' ) ; /* STRING */
2022-06-23 20:16:25 +00:00
var startCoord = '' ; /* STRING */ var sourceImage = '' ; /* STRING */ var destImage = '' ; /* STRING */ var destCoord = '' ; /* STRING */ var doSmooth = '' ; /* STRING */
2022-06-23 13:43:19 +00:00
startCoord = ( await func _ConvertCoordParam ( "" , True , lineNumber ) ) ;
destCoord = ( await func _ConvertCoordParam ( "" , True , lineNumber ) ) ;
sourceImage = "undefined" ;
destImage = "undefined" ;
doSmooth = "false" ;
if ( ( await func _EndsWith ( ( QB . func _ _Trim ( ( QB . func _UCase ( args ) ) ) ) , "_SMOOTH" ) ) ) {
doSmooth = "true" ;
args = ( QB . func _Left ( ( QB . func _ _Trim ( args ) ) , ( QB . func _Len ( ( QB . func _ _Trim ( args ) ) ) ) - 7 ) ) ;
}
argc = ( await func _ListSplit ( args , parts ) ) ;
2022-03-04 22:28:32 +00:00
if ( argc >= 1 ) {
2022-06-23 13:43:19 +00:00
startCoord = ( await func _ConvertCoordParam ( QB . arrayValue ( parts , [ 1 ] ) . value , True , lineNumber ) ) ;
2022-03-04 22:28:32 +00:00
}
if ( argc >= 2 ) {
2022-06-23 13:43:19 +00:00
sourceImage = ( await func _ConvertExpression ( QB . arrayValue ( parts , [ 2 ] ) . value , lineNumber ) ) ;
2022-03-04 22:28:32 +00:00
}
if ( argc >= 3 ) {
2022-06-23 13:43:19 +00:00
if ( ( QB . func _ _Trim ( QB . arrayValue ( parts , [ 3 ] ) . value ) ) != "" ) {
destImage = ( await func _ConvertExpression ( QB . arrayValue ( parts , [ 3 ] ) . value , lineNumber ) ) ;
2022-03-04 22:28:32 +00:00
}
}
if ( argc >= 4 ) {
2022-06-23 13:43:19 +00:00
destCoord = ( await func _ConvertCoordParam ( QB . arrayValue ( parts , [ 4 ] ) . value , True , lineNumber ) ) ;
2022-03-04 22:28:32 +00:00
}
if ( argc >= 5 ) {
2022-06-23 13:43:19 +00:00
if ( ( QB . func _ _Trim ( ( QB . func _UCase ( QB . arrayValue ( parts , [ 5 ] ) . value ) ) ) ) == "_SMOOTH" ) {
doSmooth = "true" ;
2022-03-04 22:28:32 +00:00
}
}
2022-06-23 13:43:19 +00:00
ConvertPutImage = startCoord + ", " + sourceImage + ", " + destImage + ", " + destCoord + ", " + doSmooth ;
2022-03-04 22:28:32 +00:00
return ConvertPutImage ;
}
2022-06-17 21:06:58 +00:00
async function func _ConvertWindow ( args /*STRING*/ , lineNumber /*INTEGER*/ ) {
2022-05-04 00:38:42 +00:00
if ( QB . halted ( ) ) { return ; }
var ConvertWindow = null ;
2022-06-23 20:16:25 +00:00
var invertFlag = '' ; /* STRING */
var firstParam = '' ; /* STRING */
var theRest = '' ; /* STRING */
var idx = 0 ; /* INTEGER */
var sstep = '' ; /* STRING */
var estep = '' ; /* STRING */
2022-06-23 13:43:19 +00:00
invertFlag = "false" ;
2022-06-23 20:16:25 +00:00
var kwd = '' ; /* STRING */
2022-06-23 13:43:19 +00:00
kwd = "SCREEN" ;
if ( ( ( QB . func _UCase ( ( QB . func _Left ( args , ( QB . func _Len ( kwd ) ) ) ) ) ) == kwd ) ) {
args = ( QB . func _Right ( args , ( QB . func _Len ( args ) ) - ( QB . func _Len ( kwd ) ) ) ) ;
invertFlag = "true" ;
}
args = ( QB . func _ _Trim ( args ) ) ;
sstep = "false" ;
estep = "false" ;
idx = ( await func _FindParamChar ( args , "," ) ) ;
if ( idx == - 1 ) {
firstParam = args ;
theRest = "" ;
2022-05-04 00:38:42 +00:00
} else {
2022-06-23 13:43:19 +00:00
firstParam = ( QB . func _Left ( args , idx - 1 ) ) ;
theRest = ( QB . func _Right ( args , ( QB . func _Len ( args ) ) - idx ) ) ;
2022-05-04 00:38:42 +00:00
}
2022-06-23 13:43:19 +00:00
idx = ( await func _FindParamChar ( firstParam , "-" ) ) ;
2022-06-23 20:16:25 +00:00
var startCord = '' ; /* STRING */
var endCord = '' ; /* STRING */
2022-06-23 13:43:19 +00:00
if ( idx == - 1 ) {
endCord = firstParam ;
2022-05-04 00:38:42 +00:00
} else {
2022-06-23 13:43:19 +00:00
startCord = ( QB . func _Left ( firstParam , idx - 1 ) ) ;
endCord = ( QB . func _Right ( firstParam , ( QB . func _Len ( firstParam ) ) - idx ) ) ;
}
idx = ( QB . func _InStr ( startCord , "(" ) ) ;
startCord = ( QB . func _Right ( startCord , ( QB . func _Len ( startCord ) ) - idx ) ) ;
idx = ( QB . func _ _InStrRev ( startCord , ")" ) ) ;
startCord = ( QB . func _Left ( startCord , idx - 1 ) ) ;
startCord = ( await func _ConvertExpression ( startCord , lineNumber ) ) ;
if ( ( ( QB . func _ _Trim ( startCord ) ) == "" ) ) {
startCord = "undefined, undefined" ;
}
idx = ( QB . func _InStr ( endCord , "(" ) ) ;
endCord = ( QB . func _Right ( endCord , ( QB . func _Len ( endCord ) ) - idx ) ) ;
idx = ( QB . func _ _InStrRev ( endCord , ")" ) ) ;
endCord = ( QB . func _Left ( endCord , idx - 1 ) ) ;
endCord = ( await func _ConvertExpression ( endCord , lineNumber ) ) ;
ConvertWindow = invertFlag + ", " + startCord + ", " + endCord ;
2022-05-04 00:38:42 +00:00
return ConvertWindow ;
}
2022-06-17 21:06:58 +00:00
async function func _ConvertCls ( args /*STRING*/ , lineNumber /*INTEGER*/ ) {
2022-03-15 14:42:33 +00:00
if ( QB . halted ( ) ) { return ; }
var ConvertCls = null ;
2022-06-23 20:16:25 +00:00
var argc = 0 ; /* INTEGER */
2022-09-17 16:50:08 +00:00
var parts = QB . initArray ( [ { l : 0 , u : 0 } ] , '' ) ; /* STRING */
2022-06-23 13:43:19 +00:00
argc = ( await func _ListSplit ( args , parts ) ) ;
2022-06-23 20:16:25 +00:00
var method = '' ; /* STRING */ var bgcolor = '' ; /* STRING */
2022-06-23 13:43:19 +00:00
method = "undefined" ;
bgcolor = "undefined" ;
2022-03-15 14:42:33 +00:00
if ( argc >= 1 ) {
2022-06-23 13:43:19 +00:00
if ( ( QB . func _ _Trim ( QB . arrayValue ( parts , [ 1 ] ) . value ) ) != "" ) {
method = ( await func _ConvertExpression ( QB . arrayValue ( parts , [ 1 ] ) . value , lineNumber ) ) ;
2022-03-15 14:42:33 +00:00
}
}
if ( argc >= 2 ) {
2022-06-23 13:43:19 +00:00
bgcolor = ( await func _ConvertExpression ( QB . arrayValue ( parts , [ 2 ] ) . value , lineNumber ) ) ;
2022-03-15 14:42:33 +00:00
}
2022-06-23 13:43:19 +00:00
ConvertCls = method + ", " + bgcolor ;
2022-03-15 14:42:33 +00:00
return ConvertCls ;
}
2022-06-17 21:06:58 +00:00
async function func _ConvertRandomize ( m /*METHOD*/ , args /*STRING*/ , lineNumber /*INTEGER*/ ) {
2022-05-29 06:06:31 +00:00
if ( QB . halted ( ) ) { return ; }
var ConvertRandomize = null ;
2022-06-23 20:16:25 +00:00
var uusing = '' ; /* STRING */
var theseed = '' ; /* STRING */
2022-06-23 13:43:19 +00:00
uusing = "false" ;
theseed = args ;
if ( ( QB . func _ _Trim ( args ) ) == "" ) {
theseed = "undefined" ;
2022-05-29 06:06:31 +00:00
} else {
2022-06-23 13:43:19 +00:00
if ( ( ( QB . func _UCase ( ( QB . func _ _Trim ( ( QB . func _Left ( args , 5 ) ) ) ) ) ) == "USING" ) ) {
uusing = "true" ;
theseed = ( QB . func _ _Trim ( ( QB . func _Right ( args , ( QB . func _Len ( args ) ) - 5 ) ) ) ) ;
2022-05-29 06:06:31 +00:00
}
2022-06-23 13:43:19 +00:00
theseed = ( await func _ConvertExpression ( theseed , lineNumber ) ) ;
2022-05-29 06:06:31 +00:00
}
2022-06-23 13:43:19 +00:00
ConvertRandomize = ( await func _CallMethod ( m ) ) + "(" + uusing + ", " + theseed + ")" ;
2022-05-29 06:06:31 +00:00
return ConvertRandomize ;
}
2022-06-17 21:06:58 +00:00
async function func _ConvertRead ( m /*METHOD*/ , args /*STRING*/ , lineNumber /*INTEGER*/ ) {
2022-05-21 07:05:30 +00:00
if ( QB . halted ( ) ) { return ; }
var ConvertRead = null ;
2022-06-23 20:16:25 +00:00
var js = '' ; /* STRING */
var vname = '' ; /* STRING */
var pcount = 0 ; /* INTEGER */
2022-09-17 16:50:08 +00:00
var parts = QB . initArray ( [ { l : 0 , u : 0 } ] , '' ) ; /* STRING */
var vars = QB . initArray ( [ { l : 0 , u : 0 } ] , '' ) ; /* STRING */
2022-06-23 20:16:25 +00:00
var vcount = 0 ; /* INTEGER */
var p = '' ; /* STRING */
2022-06-23 13:43:19 +00:00
pcount = ( await func _ListSplit ( args , parts ) ) ;
2022-06-23 20:16:25 +00:00
var i = 0 ; /* INTEGER */
2022-09-17 16:50:08 +00:00
var _ _ _v7904800 = 0 ; for ( i = 1 ; i <= pcount ; i = i + 1 ) { if ( QB . halted ( ) ) { return ; } _ _ _v7904800 ++ ; if ( _ _ _v7904800 % 100 == 0 ) { await QB . autoLimit ( ) ; }
2022-06-23 13:43:19 +00:00
p = ( QB . func _ _Trim ( QB . arrayValue ( parts , [ i ] ) . value ) ) ;
vcount = ( QB . func _UBound ( vars ) ) + 1 ;
2022-09-17 16:50:08 +00:00
QB . resizeArray ( vars , [ { l : 0 , u : vcount } ] , '' , true ) ; /* STRING */
2022-06-23 13:43:19 +00:00
QB . arrayValue ( vars , [ vcount ] ) . value = p ;
2022-06-24 15:26:19 +00:00
}
2022-06-23 13:43:19 +00:00
vname = await func _GenJSVar ( ) ;
2022-06-23 20:16:25 +00:00
js = "var " + vname + " = new Array(" + ( QB . func _Str ( ( QB . func _UBound ( vars ) ) ) ) + "); " ;
js = js + ( await func _CallMethod ( m ) ) + "(" + vname + "); " ;
2022-09-17 16:50:08 +00:00
var _ _ _v3735362 = 0 ; for ( i = 1 ; i <= ( QB . func _UBound ( vars ) ) ; i = i + 1 ) { if ( QB . halted ( ) ) { return ; } _ _ _v3735362 ++ ; if ( _ _ _v3735362 % 100 == 0 ) { await QB . autoLimit ( ) ; }
2022-06-23 20:16:25 +00:00
js = js + ( await func _ConvertExpression ( QB . arrayValue ( vars , [ i ] ) . value , lineNumber ) ) + " = " + vname + "[" + ( QB . func _Str ( i - 1 ) ) + "]; " ;
2022-06-24 15:26:19 +00:00
}
2022-06-23 13:43:19 +00:00
ConvertRead = js ;
2022-05-21 07:05:30 +00:00
return ConvertRead ;
}
2022-06-17 21:06:58 +00:00
async function func _ConvertCoordParam ( param /*STRING*/ , hasEndCoord /*INTEGER*/ , lineNumber /*INTEGER*/ ) {
2022-03-04 22:28:32 +00:00
if ( QB . halted ( ) ) { return ; }
var ConvertCoordParam = null ;
2022-06-23 13:43:19 +00:00
if ( ( QB . func _ _Trim ( param ) ) == "" ) {
2022-03-04 22:28:32 +00:00
if ( hasEndCoord ) {
2022-06-23 13:43:19 +00:00
ConvertCoordParam = "false, undefined, undefined, false, undefined, undefined" ;
2022-03-04 22:28:32 +00:00
} else {
2022-06-23 13:43:19 +00:00
ConvertCoordParam = "false, undefined, undefined" ;
2022-03-04 22:28:32 +00:00
}
} else {
2022-06-23 20:16:25 +00:00
var js = '' ; /* STRING */ var startCoord = '' ; /* STRING */ var endCoord = '' ; /* STRING */ var sstep = '' ; /* STRING */ var estep = '' ; /* STRING */
var idx = 0 ; /* INTEGER */
2022-06-23 13:43:19 +00:00
sstep = "false" ;
estep = "false" ;
idx = ( await func _FindParamChar ( param , "-" ) ) ;
if ( idx == - 1 ) {
startCoord = param ;
endCoord = "" ;
2022-03-04 22:28:32 +00:00
} else {
2022-06-23 13:43:19 +00:00
startCoord = ( QB . func _Left ( param , idx - 1 ) ) ;
endCoord = ( QB . func _Right ( param , ( QB . func _Len ( param ) ) - idx ) ) ;
2022-03-04 22:28:32 +00:00
}
2022-06-23 13:43:19 +00:00
if ( ( QB . func _UCase ( ( QB . func _Left ( ( QB . func _ _Trim ( startCoord ) ) , 4 ) ) ) ) == "STEP" ) {
sstep = "true" ;
2022-03-04 22:28:32 +00:00
}
2022-06-23 13:43:19 +00:00
if ( ( QB . func _UCase ( ( QB . func _Left ( ( QB . func _ _Trim ( endCoord ) ) , 4 ) ) ) ) == "STEP" ) {
estep = "true" ;
2022-03-04 22:28:32 +00:00
}
2022-06-23 13:43:19 +00:00
idx = ( QB . func _InStr ( startCoord , "(" ) ) ;
startCoord = ( QB . func _Right ( startCoord , ( QB . func _Len ( startCoord ) ) - idx ) ) ;
idx = ( QB . func _ _InStrRev ( startCoord , ")" ) ) ;
startCoord = ( QB . func _Left ( startCoord , idx - 1 ) ) ;
startCoord = ( await func _ConvertExpression ( startCoord , lineNumber ) ) ;
if ( ( ( QB . func _ _Trim ( startCoord ) ) == "" ) ) {
startCoord = "undefined, undefined" ;
2022-03-04 22:28:32 +00:00
}
if ( hasEndCoord ) {
2022-06-23 13:43:19 +00:00
idx = ( QB . func _InStr ( endCoord , "(" ) ) ;
endCoord = ( QB . func _Right ( endCoord , ( QB . func _Len ( endCoord ) ) - idx ) ) ;
idx = ( QB . func _ _InStrRev ( endCoord , ")" ) ) ;
endCoord = ( QB . func _Left ( endCoord , idx - 1 ) ) ;
endCoord = ( await func _ConvertExpression ( endCoord , lineNumber ) ) ;
if ( ( ( QB . func _ _Trim ( endCoord ) ) == "" ) ) {
endCoord = "undefined, undefined" ;
2022-03-04 22:28:32 +00:00
}
2022-06-23 13:43:19 +00:00
ConvertCoordParam = sstep + ", " + startCoord + ", " + estep + ", " + endCoord ;
2022-03-04 22:28:32 +00:00
} else {
2022-06-23 13:43:19 +00:00
ConvertCoordParam = sstep + ", " + startCoord ;
2022-03-04 22:28:32 +00:00
}
}
return ConvertCoordParam ;
}
2022-06-17 21:06:58 +00:00
async function func _ConvertPSet ( args /*STRING*/ , lineNumber /*INTEGER*/ ) {
2022-02-16 17:40:03 +00:00
if ( QB . halted ( ) ) { return ; }
var ConvertPSet = null ;
2022-06-23 20:16:25 +00:00
var firstParam = '' ; /* STRING */
var theRest = '' ; /* STRING */
var idx = 0 ; /* INTEGER */
var sstep = '' ; /* STRING */
2022-06-23 13:43:19 +00:00
sstep = "false" ;
idx = ( await func _FindParamChar ( args , "," ) ) ;
if ( idx == - 1 ) {
firstParam = args ;
theRest = "" ;
2022-02-16 17:40:03 +00:00
} else {
2022-06-23 13:43:19 +00:00
firstParam = ( QB . func _Left ( args , idx - 1 ) ) ;
theRest = ( QB . func _Right ( args , ( QB . func _Len ( args ) ) - idx ) ) ;
}
if ( ( QB . func _UCase ( ( QB . func _ _Trim ( ( QB . func _Left ( firstParam , 4 ) ) ) ) ) ) == "STEP" ) {
sstep = "true" ;
}
idx = ( QB . func _InStr ( firstParam , "(" ) ) ;
firstParam = ( QB . func _Right ( firstParam , ( QB . func _Len ( firstParam ) ) - idx ) ) ;
idx = ( QB . func _ _InStrRev ( firstParam , ")" ) ) ;
firstParam = ( QB . func _Left ( firstParam , idx - 1 ) ) ;
firstParam = ( await func _ConvertExpression ( firstParam , lineNumber ) ) ;
if ( ( ( QB . func _ _Trim ( firstParam ) ) == "" ) ) {
firstParam = "undefined, undefined" ;
}
theRest = ( await func _ConvertExpression ( theRest , lineNumber ) ) ;
ConvertPSet = sstep + ", " + firstParam + ", " + theRest ;
2022-02-16 17:40:03 +00:00
return ConvertPSet ;
}
2022-09-17 16:50:08 +00:00
async function func _ConvertPrint ( m /*METHOD*/ , args /*STRING*/ , lineNumber /*INTEGER*/ ) {
2022-02-16 17:40:03 +00:00
if ( QB . halted ( ) ) { return ; }
var ConvertPrint = null ;
2022-09-17 16:50:08 +00:00
var fh = '' ; /* STRING */
2022-06-23 20:16:25 +00:00
var pcount = 0 ; /* INTEGER */
2022-09-17 16:50:08 +00:00
var startIdx = 0 ; /* INTEGER */
var parts = QB . initArray ( [ { l : 0 , u : 0 } ] , '' ) ; /* STRING */
2022-06-23 13:43:19 +00:00
pcount = ( await func _PrintSplit ( args , parts ) ) ;
2022-09-17 16:50:08 +00:00
startIdx = 1 ;
m . jsname = "QB.sub_Print" ;
if ( pcount > 0 ) {
if ( ( await func _StartsWith ( ( QB . func _ _Trim ( QB . arrayValue ( parts , [ 1 ] ) . value ) ) , "#" ) ) ) {
fh = ( await func _Replace ( ( QB . func _ _Trim ( QB . arrayValue ( parts , [ 1 ] ) . value ) ) , "#" , "" ) ) ;
m . jsname = "QB.sub_PrintToFile" ;
startIdx = 3 ;
if ( ( QB . func _ _Trim ( QB . arrayValue ( parts , [ 2 ] ) . value ) ) != "," ) {
await sub _AddWarning ( lineNumber , "Syntax error, missing expected ','" ) ;
startIdx = 2 ;
}
}
}
2022-06-23 20:16:25 +00:00
var js = '' ; /* STRING */
2022-09-17 16:50:08 +00:00
js = ( await func _CallMethod ( m ) ) + "(" ;
if ( fh != "" ) {
js = js + fh + ", " ;
}
js = js + "[" ;
2022-06-23 20:16:25 +00:00
var i = 0 ; /* INTEGER */
2022-09-17 16:50:08 +00:00
var _ _ _v9619532 = 0 ; for ( i = startIdx ; i <= pcount ; i = i + 1 ) { if ( QB . halted ( ) ) { return ; } _ _ _v9619532 ++ ; if ( _ _ _v9619532 % 100 == 0 ) { await QB . autoLimit ( ) ; }
if ( i > startIdx ) {
2022-06-23 13:43:19 +00:00
js = js + "," ;
}
if ( QB . arrayValue ( parts , [ i ] ) . value == "," ) {
js = js + "QB.COLUMN_ADVANCE" ;
} else if ( QB . arrayValue ( parts , [ i ] ) . value == ";" ) {
js = js + "QB.PREVENT_NEWLINE" ;
2022-02-16 17:40:03 +00:00
} else {
2022-06-23 13:43:19 +00:00
js = js + ( await func _ConvertExpression ( QB . arrayValue ( parts , [ i ] ) . value , lineNumber ) ) ;
2022-02-16 17:40:03 +00:00
}
2022-06-24 15:26:19 +00:00
}
2022-09-17 16:50:08 +00:00
ConvertPrint = js + "]);" ;
2022-02-16 17:40:03 +00:00
return ConvertPrint ;
}
2022-10-27 14:04:15 +00:00
async function func _ConvertWrite ( m /*METHOD*/ , args /*STRING*/ , lineNumber /*INTEGER*/ ) {
if ( QB . halted ( ) ) { return ; }
var ConvertWrite = null ;
var fh = '' ; /* STRING */
var pcount = 0 ; /* INTEGER */
var startIdx = 0 ; /* INTEGER */
var parts = QB . initArray ( [ { l : 0 , u : 0 } ] , '' ) ; /* STRING */
pcount = ( await func _ListSplit ( args , parts ) ) ;
startIdx = 1 ;
m . jsname = "QB.sub_Write" ;
if ( pcount > 0 ) {
if ( ( await func _StartsWith ( ( QB . func _ _Trim ( QB . arrayValue ( parts , [ 1 ] ) . value ) ) , "#" ) ) ) {
fh = ( await func _Replace ( ( QB . func _ _Trim ( QB . arrayValue ( parts , [ 1 ] ) . value ) ) , "#" , "" ) ) ;
m . jsname = "QB.sub_WriteToFile" ;
startIdx = 2 ;
}
}
var js = '' ; /* STRING */
js = ( await func _CallMethod ( m ) ) + "(" ;
if ( fh != "" ) {
js = js + fh + ", " ;
}
js = js + "[" ;
var i = 0 ; /* INTEGER */
var _ _ _v8714458 = 0 ; for ( i = startIdx ; i <= pcount ; i = i + 1 ) { if ( QB . halted ( ) ) { return ; } _ _ _v8714458 ++ ; if ( _ _ _v8714458 % 100 == 0 ) { await QB . autoLimit ( ) ; }
if ( i > startIdx ) {
js = js + "," ;
}
var t = '' ; /* STRING */
t = "UNKNOWN" ;
var v = { type : '' , name : '' , jsname : '' , isConst : 0 , isArray : 0 , arraySize : 0 , typeId : 0 } ; /* VARIABLE */
var isVar = 0 ; /* INTEGER */
isVar = ( await func _FindVariable ( QB . arrayValue ( parts , [ i ] ) . value , v , False ) ) ;
if ( isVar ) {
t = v . type ;
} else if ( ( await func _StartsWith ( QB . arrayValue ( parts , [ i ] ) . value , ( QB . func _Chr ( 34 ) ) ) ) ) {
t = "STRING" ;
}
if ( isVar ) {
js = js + "{ type:'" + t + "', value:" + ( QB . func _ _Trim ( ( await func _ConvertExpression ( QB . arrayValue ( parts , [ i ] ) . value , lineNumber ) ) ) ) + "}" ;
} else {
js = js + "{ type:'" + t + "', value:'" + ( await func _Replace ( ( QB . func _ _Trim ( ( await func _ConvertExpression ( QB . arrayValue ( parts , [ i ] ) . value , lineNumber ) ) ) ) , "'" , "\\'" ) ) + "'}" ;
}
}
ConvertWrite = js + "]);" ;
return ConvertWrite ;
}
2022-06-17 21:06:58 +00:00
async function func _ConvertPrintString ( args /*STRING*/ , lineNumber /*INTEGER*/ ) {
2022-02-16 17:40:03 +00:00
if ( QB . halted ( ) ) { return ; }
var ConvertPrintString = null ;
2022-06-23 20:16:25 +00:00
var firstParam = '' ; /* STRING */
var theRest = '' ; /* STRING */
var idx = 0 ; /* INTEGER */
2022-06-23 13:43:19 +00:00
idx = ( await func _FindParamChar ( args , "," ) ) ;
if ( idx == - 1 ) {
firstParam = args ;
theRest = "" ;
2022-02-16 17:40:03 +00:00
} else {
2022-06-23 13:43:19 +00:00
firstParam = ( QB . func _Left ( args , idx - 1 ) ) ;
theRest = ( QB . func _Right ( args , ( QB . func _Len ( args ) ) - idx ) ) ;
}
idx = ( QB . func _InStr ( firstParam , "(" ) ) ;
firstParam = ( QB . func _Right ( firstParam , ( QB . func _Len ( firstParam ) ) - idx ) ) ;
idx = ( QB . func _ _InStrRev ( firstParam , ")" ) ) ;
firstParam = ( QB . func _Left ( firstParam , idx - 1 ) ) ;
ConvertPrintString = ( await func _ConvertExpression ( firstParam , lineNumber ) ) + ", " + ( await func _ConvertExpression ( theRest , lineNumber ) ) ;
2022-02-16 17:40:03 +00:00
return ConvertPrintString ;
}
2022-09-17 16:50:08 +00:00
async function func _ConvertFileLineInput ( m /*METHOD*/ , args /*STRING*/ , lineNumber /*INTEGER*/ ) {
if ( QB . halted ( ) ) { return ; }
var ConvertFileLineInput = null ;
var js = '' ; /* STRING */
var fh = '' ; /* STRING */
var vname = '' ; /* STRING */
var retvar = '' ; /* STRING */
var pcount = 0 ; /* INTEGER */
var parts = QB . initArray ( [ { l : 0 , u : 0 } ] , '' ) ; /* STRING */
pcount = ( await func _ListSplit ( args , parts ) ) ;
if ( pcount != 2 ) {
await sub _AddWarning ( lineNumber , "Syntax error" ) ;
ConvertFileLineInput = "" ;
return ConvertFileLineInput ;
}
fh = ( await func _Replace ( ( QB . func _ _Trim ( QB . arrayValue ( parts , [ 1 ] ) . value ) ) , "#" , "" ) ) ;
retvar = ( QB . func _ _Trim ( QB . arrayValue ( parts , [ 2 ] ) . value ) ) ;
vname = await func _GenJSVar ( ) ;
js = "var " + vname + " = new Array(1); " ;
js = js + ( await func _CallMethod ( m ) ) + "(" + fh + ", " + vname + "); " ;
js = js + ( await func _ConvertExpression ( retvar , lineNumber ) ) + " = " + vname + "[0]; " ;
ConvertFileLineInput = js ;
return ConvertFileLineInput ;
}
2022-06-17 21:06:58 +00:00
async function func _ConvertInput ( m /*METHOD*/ , args /*STRING*/ , lineNumber /*INTEGER*/ ) {
2022-02-16 17:40:03 +00:00
if ( QB . halted ( ) ) { return ; }
var ConvertInput = null ;
2022-06-23 20:16:25 +00:00
var js = '' ; /* STRING */
var vname = '' ; /* STRING */
var pcount = 0 ; /* INTEGER */
2022-09-17 16:50:08 +00:00
var parts = QB . initArray ( [ { l : 0 , u : 0 } ] , '' ) ; /* STRING */
var vars = QB . initArray ( [ { l : 0 , u : 0 } ] , '' ) ; /* STRING */
2022-06-23 20:16:25 +00:00
var varIndex = 0 ; /* INTEGER */
2022-06-23 13:43:19 +00:00
varIndex = 1 ;
2022-06-23 20:16:25 +00:00
var preventNewline = '' ; /* STRING */
2022-06-23 13:43:19 +00:00
preventNewline = "false" ;
2022-06-23 20:16:25 +00:00
var addQuestionPrompt = '' ; /* STRING */
2022-06-23 13:43:19 +00:00
addQuestionPrompt = "false" ;
2022-06-23 20:16:25 +00:00
var prompt = '' ; /* STRING */
2022-06-23 13:43:19 +00:00
prompt = "undefined" ;
2022-06-23 20:16:25 +00:00
var vcount = 0 ; /* INTEGER */
var p = '' ; /* STRING */
2022-06-23 13:43:19 +00:00
pcount = ( await func _PrintSplit ( args , parts ) ) ;
2022-06-23 20:16:25 +00:00
var i = 0 ; /* INTEGER */
2022-10-27 14:04:15 +00:00
var _ _ _v562369 = 0 ; for ( i = 1 ; i <= pcount ; i = i + 1 ) { if ( QB . halted ( ) ) { return ; } _ _ _v562369 ++ ; if ( _ _ _v562369 % 100 == 0 ) { await QB . autoLimit ( ) ; }
2022-06-23 13:43:19 +00:00
p = ( QB . func _ _Trim ( QB . arrayValue ( parts , [ i ] ) . value ) ) ;
if ( p == ";" ) {
if ( i == 1 ) {
preventNewline = "true" ;
2022-02-16 17:40:03 +00:00
} else {
2022-06-23 13:43:19 +00:00
addQuestionPrompt = "true" ;
2022-02-16 17:40:03 +00:00
}
2022-06-23 13:43:19 +00:00
} else if ( ( await func _StartsWith ( p , ( QB . func _Chr ( 34 ) ) ) ) ) {
prompt = p ;
} else if ( p != "," ) {
vcount = ( QB . func _UBound ( vars ) ) + 1 ;
2022-09-17 16:50:08 +00:00
QB . resizeArray ( vars , [ { l : 0 , u : vcount } ] , '' , true ) ; /* STRING */
2022-06-23 13:43:19 +00:00
QB . arrayValue ( vars , [ vcount ] ) . value = p ;
2022-02-16 17:40:03 +00:00
}
2022-06-24 15:26:19 +00:00
}
2022-06-23 13:43:19 +00:00
vname = await func _GenJSVar ( ) ;
2022-06-23 20:16:25 +00:00
js = "var " + vname + " = new Array(" + ( QB . func _Str ( ( QB . func _UBound ( vars ) ) ) ) + "); " ;
js = js + ( await func _CallMethod ( m ) ) + "(" + vname + ", " + preventNewline + ", " + addQuestionPrompt + ", " + prompt + "); " ;
2022-10-27 14:04:15 +00:00
var _ _ _v9495566 = 0 ; for ( i = 1 ; i <= ( QB . func _UBound ( vars ) ) ; i = i + 1 ) { if ( QB . halted ( ) ) { return ; } _ _ _v9495566 ++ ; if ( _ _ _v9495566 % 100 == 0 ) { await QB . autoLimit ( ) ; }
var vartype = '' ; /* STRING */
vartype = ( await func _GetVarType ( QB . arrayValue ( vars , [ i ] ) . value ) ) ;
if ( vartype == "_BIT" || vartype == "_BYTE" || vartype == "INTEGER" || vartype == "LONG" || vartype == "_INTEGER64" || vartype == "_OFFSET" || vartype == "_UNSIGNED _BIT" || vartype == "_UNSIGNED _BYTE" || vartype == "_UNSIGNED INTEGER" || vartype == "_UNSIGNED LONG" || vartype == "_UNSIGNED _INTEGER64" || vartype == "_UNSIGNED _OFFSET" ) {
js = js + ( await func _ConvertExpression ( QB . arrayValue ( vars , [ i ] ) . value , lineNumber ) ) + " = parseInt(" + vname + "[" + ( QB . func _Str ( i - 1 ) ) + "]); " ;
} else if ( vartype == "SINGLE" || vartype == "DOUBLE" || vartype == "_FLOAT" ) {
js = js + ( await func _ConvertExpression ( QB . arrayValue ( vars , [ i ] ) . value , lineNumber ) ) + " = parseFloat(" + vname + "[" + ( QB . func _Str ( i - 1 ) ) + "]); " ;
} else {
2022-06-23 20:16:25 +00:00
js = js + ( await func _ConvertExpression ( QB . arrayValue ( vars , [ i ] ) . value , lineNumber ) ) + " = " + vname + "[" + ( QB . func _Str ( i - 1 ) ) + "]; " ;
2022-04-18 16:27:23 +00:00
}
2022-06-24 15:26:19 +00:00
}
2022-06-23 13:43:19 +00:00
ConvertInput = js ;
2022-02-16 17:40:03 +00:00
return ConvertInput ;
}
2022-10-27 14:04:15 +00:00
async function func _ConvertFileInput ( m /*METHOD*/ , args /*STRING*/ , lineNumber /*INTEGER*/ ) {
if ( QB . halted ( ) ) { return ; }
var ConvertFileInput = null ;
var js = '' ; /* STRING */
var fh = '' ; /* STRING */
var vname = '' ; /* STRING */
var retvar = '' ; /* STRING */
var pcount = 0 ; /* INTEGER */
var parts = QB . initArray ( [ { l : 0 , u : 0 } ] , '' ) ; /* STRING */
pcount = ( await func _ListSplit ( args , parts ) ) ;
if ( pcount < 2 ) {
await sub _AddWarning ( lineNumber , "Syntax error" ) ;
ConvertFileInput = "" ;
return ConvertFileInput ;
}
fh = ( await func _Replace ( ( QB . func _ _Trim ( QB . arrayValue ( parts , [ 1 ] ) . value ) ) , "#" , "" ) ) ;
retvar = ( QB . func _ _Trim ( QB . arrayValue ( parts , [ 2 ] ) . value ) ) ;
vname = await func _GenJSVar ( ) ;
js = "var " + vname + " = new Array(" + ( QB . func _Str ( ( QB . func _UBound ( parts ) ) - 1 ) ) + "); " ;
js = js + ( await func _CallMethod ( m ) ) + "(" + fh + ", " + vname + "); " ;
var i = 0 ; /* INTEGER */
var _ _ _v3640187 = 0 ; for ( i = 2 ; i <= ( QB . func _UBound ( parts ) ) ; i = i + 1 ) { if ( QB . halted ( ) ) { return ; } _ _ _v3640187 ++ ; if ( _ _ _v3640187 % 100 == 0 ) { await QB . autoLimit ( ) ; }
var vartype = '' ; /* STRING */
vartype = ( await func _GetVarType ( QB . arrayValue ( parts , [ i ] ) . value ) ) ;
if ( vartype == "_BIT" || vartype == "_BYTE" || vartype == "INTEGER" || vartype == "LONG" || vartype == "_INTEGER64" || vartype == "_OFFSET" || vartype == "_UNSIGNED _BIT" || vartype == "_UNSIGNED _BYTE" || vartype == "_UNSIGNED INTEGER" || vartype == "_UNSIGNED LONG" || vartype == "_UNSIGNED _INTEGER64" || vartype == "_UNSIGNED _OFFSET" ) {
js = js + ( await func _ConvertExpression ( QB . arrayValue ( parts , [ i ] ) . value , lineNumber ) ) + " = parseInt(" + vname + "[" + ( QB . func _Str ( i - 2 ) ) + "]); " ;
} else if ( vartype == "SINGLE" || vartype == "DOUBLE" || vartype == "_FLOAT" ) {
js = js + ( await func _ConvertExpression ( QB . arrayValue ( parts , [ i ] ) . value , lineNumber ) ) + " = parseFloat(" + vname + "[" + ( QB . func _Str ( i - 2 ) ) + "]); " ;
} else {
js = js + ( await func _ConvertExpression ( QB . arrayValue ( parts , [ i ] ) . value , lineNumber ) ) + " = " + vname + "[" + ( QB . func _Str ( i - 2 ) ) + "]; " ;
}
}
ConvertFileInput = js ;
return ConvertFileInput ;
}
async function func _GetVarType ( vname /*STRING*/ ) {
if ( QB . halted ( ) ) { return ; }
var GetVarType = null ;
var vartype = '' ; /* STRING */
vartype = "UNKNOWN" ;
var parts = QB . initArray ( [ { l : 0 , u : 0 } ] , '' ) ; /* STRING */
var pcount = 0 ; /* INTEGER */
var found = 0 ; /* INTEGER */
var v = { type : '' , name : '' , jsname : '' , isConst : 0 , isArray : 0 , arraySize : 0 , typeId : 0 } ; /* VARIABLE */
var pidx = 0 ; /* INTEGER */
pcount = ( await func _Split ( vname , "." , parts ) ) ;
if ( pcount == 1 ) {
pidx = ( QB . func _InStr ( vname , "(" ) ) ;
if ( pidx ) {
vname = ( QB . func _Left ( vname , pidx - 1 ) ) ;
}
found = ( await func _FindVariable ( vname , v , False ) ) ;
if ( ! found ) {
found = ( await func _FindVariable ( vname , v , True ) ) ;
}
if ( found ) {
vartype = v . type ;
}
} else {
vname = QB . arrayValue ( parts , [ 1 ] ) . value ;
pidx = ( QB . func _InStr ( vname , "(" ) ) ;
if ( pidx ) {
vname = ( QB . func _Left ( vname , pidx - 1 ) ) ;
}
found = ( await func _FindVariable ( vname , v , False ) ) ;
if ( ! found ) {
found = ( await func _FindVariable ( vname , v , True ) ) ;
}
if ( found ) {
var typeId = 0 ; /* INTEGER */
typeId = ( await func _FindTypeId ( v . type ) ) ;
var i = 0 ; /* INTEGER */
var j = 0 ; /* INTEGER */
var _ _ _v5248684 = 0 ; for ( i = 2 ; i <= pcount ; i = i + 1 ) { if ( QB . halted ( ) ) { return ; } _ _ _v5248684 ++ ; if ( _ _ _v5248684 % 100 == 0 ) { await QB . autoLimit ( ) ; }
var _ _ _v7671116 = 0 ; for ( j = 1 ; j <= ( QB . func _UBound ( typeVars ) ) ; j = j + 1 ) { if ( QB . halted ( ) ) { return ; } _ _ _v7671116 ++ ; if ( _ _ _v7671116 % 100 == 0 ) { await QB . autoLimit ( ) ; }
if ( QB . arrayValue ( typeVars , [ j ] ) . value . typeId == typeId && QB . arrayValue ( typeVars , [ j ] ) . value . name == QB . arrayValue ( parts , [ i ] ) . value ) {
vartype = QB . arrayValue ( typeVars , [ j ] ) . value . type ;
typeId = ( await func _FindTypeId ( vartype ) ) ;
}
}
}
}
}
GetVarType = vartype ;
return GetVarType ;
}
2022-06-17 21:06:58 +00:00
async function func _ConvertSwap ( m /*METHOD*/ , args /*STRING*/ , lineNumber /*INTEGER*/ ) {
2022-02-16 17:40:03 +00:00
if ( QB . halted ( ) ) { return ; }
var ConvertSwap = null ;
2022-06-23 20:16:25 +00:00
var js = '' ; /* STRING */
var swapArray = '' ; /* STRING */
2022-06-23 13:43:19 +00:00
swapArray = await func _GenJSVar ( ) ;
2022-09-17 16:50:08 +00:00
var swapArgs = QB . initArray ( [ { l : 0 , u : 0 } ] , '' ) ; /* STRING */
2022-06-23 20:16:25 +00:00
var swapCount = 0 ; /* INTEGER */
2022-06-23 13:43:19 +00:00
swapCount = ( await func _ListSplit ( args , swapArgs ) ) ;
2022-06-23 20:16:25 +00:00
var var1 = '' ; /* STRING */
var var2 = '' ; /* STRING */
2022-06-23 13:43:19 +00:00
var1 = ( await func _ConvertExpression ( QB . arrayValue ( swapArgs , [ 1 ] ) . value , lineNumber ) ) ;
var2 = ( await func _ConvertExpression ( QB . arrayValue ( swapArgs , [ 2 ] ) . value , lineNumber ) ) ;
2022-06-23 20:16:25 +00:00
js = "var " + swapArray + " = [" + var1 + "," + var2 + "]; " ;
js = js + ( await func _CallMethod ( m ) ) + "(" + swapArray + "); " ;
js = js + var1 + " = " + swapArray + "[0]; " ;
2022-06-23 13:43:19 +00:00
js = js + var2 + " = " + swapArray + "[1];" ;
ConvertSwap = js ;
2022-02-16 17:40:03 +00:00
return ConvertSwap ;
}
2022-03-04 22:28:32 +00:00
async function func _GenJSVar ( ) {
2022-02-16 17:40:03 +00:00
if ( QB . halted ( ) ) { return ; }
var GenJSVar = null ;
2022-06-23 13:43:19 +00:00
GenJSVar = "___v" + ( QB . func _ _Trim ( ( QB . func _Str ( ( QB . func _ _Round ( QB . func _Rnd ( ) * 10000000 ) ) ) ) ) ) ;
2022-02-16 17:40:03 +00:00
return GenJSVar ;
}
2022-03-04 22:28:32 +00:00
async function func _FindParamChar ( s /*STRING*/ , char /*STRING*/ ) {
2022-02-16 17:40:03 +00:00
if ( QB . halted ( ) ) { return ; }
var FindParamChar = null ;
2022-06-23 20:16:25 +00:00
var idx = 0 ; /* INTEGER */
2022-06-23 13:43:19 +00:00
idx = - 1 ;
2022-06-23 20:16:25 +00:00
var c = '' ; /* STRING */
var quote = 0 ; /* INTEGER */
var paren = 0 ; /* INTEGER */
var i = 0 ; /* INTEGER */
2022-10-27 14:04:15 +00:00
var _ _ _v535045 = 0 ; for ( i = 1 ; i <= ( QB . func _Len ( s ) ) ; i = i + 1 ) { if ( QB . halted ( ) ) { return ; } _ _ _v535045 ++ ; if ( _ _ _v535045 % 100 == 0 ) { await QB . autoLimit ( ) ; }
2022-06-23 13:43:19 +00:00
c = ( QB . func _Mid ( s , i , 1 ) ) ;
if ( c == ( QB . func _Chr ( 34 ) ) ) {
quote = ! quote ;
} else if ( ! quote && c == "(" ) {
paren = paren + 1 ;
} else if ( ! quote && c == ")" ) {
paren = paren - 1 ;
} else if ( ! quote && paren == 0 && c == char ) {
idx = i ;
2022-02-16 17:40:03 +00:00
break ;
}
2022-06-24 15:26:19 +00:00
}
2022-06-23 13:43:19 +00:00
FindParamChar = idx ;
2022-02-16 17:40:03 +00:00
return FindParamChar ;
}
2022-06-17 21:06:58 +00:00
async function func _DeclareVar ( parts /*STRING*/ , lineNumber /*INTEGER*/ ) {
2022-02-16 17:40:03 +00:00
if ( QB . halted ( ) ) { return ; }
var DeclareVar = null ;
2022-06-23 20:16:25 +00:00
var vname = '' ; /* STRING */
var vtype = '' ; /* STRING */
2022-06-23 13:43:19 +00:00
vtype = "" ;
2022-06-23 20:16:25 +00:00
var vtypeIndex = 0 ; /* INTEGER */
2022-06-23 13:43:19 +00:00
vtypeIndex = 4 ;
2022-06-23 20:16:25 +00:00
var isGlobal = 0 ; /* INTEGER */
2022-06-23 13:43:19 +00:00
isGlobal = False ;
2022-06-23 20:16:25 +00:00
var isArray = 0 ; /* INTEGER */
2022-06-23 13:43:19 +00:00
isArray = False ;
2022-06-23 20:16:25 +00:00
var arraySize = '' ; /* STRING */
var pstart = 0 ; /* INTEGER */
var bvar = { type : '' , name : '' , jsname : '' , isConst : 0 , isArray : 0 , arraySize : 0 , typeId : 0 } ; /* VARIABLE */
2022-09-17 16:50:08 +00:00
var varnames = QB . initArray ( [ { l : 0 , u : 0 } ] , '' ) ; /* STRING */
2022-06-23 20:16:25 +00:00
var vnamecount = 0 ; /* INTEGER */
var findVar = { type : '' , name : '' , jsname : '' , isConst : 0 , isArray : 0 , arraySize : 0 , typeId : 0 } ; /* VARIABLE */
var asIdx = 0 ; /* INTEGER */
2022-06-23 13:43:19 +00:00
asIdx = 0 ;
2022-06-23 20:16:25 +00:00
var js = '' ; /* STRING */
2022-06-23 13:43:19 +00:00
js = "" ;
2022-06-23 20:16:25 +00:00
var preserve = '' ; /* STRING */
2022-06-23 13:43:19 +00:00
preserve = "false" ;
2022-06-23 20:16:25 +00:00
var i = 0 ; /* INTEGER */
2022-10-27 14:04:15 +00:00
var _ _ _v5924582 = 0 ; for ( i = 1 ; i <= ( QB . func _UBound ( parts ) ) ; i = i + 1 ) { if ( QB . halted ( ) ) { return ; } _ _ _v5924582 ++ ; if ( _ _ _v5924582 % 100 == 0 ) { await QB . autoLimit ( ) ; }
2022-06-23 13:43:19 +00:00
if ( ( QB . func _UCase ( QB . arrayValue ( parts , [ i ] ) . value ) ) == "AS" ) {
asIdx = i ;
2022-02-16 17:40:03 +00:00
}
2022-06-23 13:43:19 +00:00
if ( ( QB . func _UCase ( QB . arrayValue ( parts , [ i ] ) . value ) ) == "_PRESERVE" ) {
preserve = "true" ;
2022-02-16 17:40:03 +00:00
}
2022-06-23 13:43:19 +00:00
if ( ( QB . func _UCase ( QB . arrayValue ( parts , [ i ] ) . value ) ) == "SHARED" ) {
isGlobal = True ;
2022-02-16 17:40:03 +00:00
}
2022-06-24 15:26:19 +00:00
}
2022-06-23 13:43:19 +00:00
if ( asIdx == 2 || ( asIdx == 3 && ( isGlobal || preserve == "true" ) ) || ( asIdx == 4 && isGlobal && preserve == "true" ) ) {
bvar . type = ( QB . func _UCase ( QB . arrayValue ( parts , [ asIdx + 1 ] ) . value ) ) ;
2022-06-23 20:16:25 +00:00
var nextIdx = 0 ; /* INTEGER */
2022-06-23 13:43:19 +00:00
nextIdx = asIdx + 2 ;
if ( bvar . type == "_UNSIGNED" ) {
bvar . type = bvar . type + " " + ( QB . func _UCase ( QB . arrayValue ( parts , [ asIdx + 2 ] ) . value ) ) ;
nextIdx = asIdx + 3 ;
}
bvar . typeId = ( await func _FindTypeId ( bvar . type ) ) ;
vnamecount = ( await func _ListSplit ( ( await func _Join ( parts , nextIdx , - 1 , " " ) ) , varnames ) ) ;
2022-10-27 14:04:15 +00:00
var _ _ _v4687001 = 0 ; for ( i = 1 ; i <= vnamecount ; i = i + 1 ) { if ( QB . halted ( ) ) { return ; } _ _ _v4687001 ++ ; if ( _ _ _v4687001 % 100 == 0 ) { await QB . autoLimit ( ) ; }
2022-06-23 13:43:19 +00:00
vname = ( QB . func _ _Trim ( QB . arrayValue ( varnames , [ i ] ) . value ) ) ;
pstart = ( QB . func _InStr ( vname , "(" ) ) ;
if ( pstart > 0 ) {
bvar . isArray = True ;
arraySize = ( await func _ConvertExpression ( ( QB . func _Mid ( vname , pstart + 1 , ( QB . func _Len ( vname ) ) - pstart - 1 ) ) , lineNumber ) ) ;
bvar . name = ( await func _RemoveSuffix ( ( QB . func _Left ( vname , pstart - 1 ) ) ) ) ;
2022-02-16 17:40:03 +00:00
} else {
2022-06-23 13:43:19 +00:00
bvar . isArray = False ;
arraySize = "" ;
bvar . name = vname ;
2022-02-16 17:40:03 +00:00
}
2022-06-23 13:43:19 +00:00
bvar . jsname = "" ;
2022-02-16 17:40:03 +00:00
if ( ! bvar . isArray ) {
2022-06-23 20:16:25 +00:00
js = js + "var " + bvar . name + " = " + ( await func _InitTypeValue ( bvar . type ) ) + "; " ;
2022-02-16 17:40:03 +00:00
} else {
2022-06-23 13:43:19 +00:00
if ( ( await func _FindVariable ( bvar . name , findVar , True ) ) ) {
2022-06-23 20:16:25 +00:00
js = js + "QB.resizeArray(" + bvar . name + ", [" + ( await func _FormatArraySize ( arraySize ) ) + "], " + ( await func _InitTypeValue ( bvar . type ) ) + ", " + preserve + "); " ;
2022-02-16 17:40:03 +00:00
} else {
2022-06-23 20:16:25 +00:00
js = js + "var " + bvar . name + " = QB.initArray([" + ( await func _FormatArraySize ( arraySize ) ) + "], " + ( await func _InitTypeValue ( bvar . type ) ) + "); " ;
2022-02-16 17:40:03 +00:00
}
}
if ( isGlobal ) {
2022-06-23 13:43:19 +00:00
await sub _AddVariable ( bvar , globalVars ) ;
2022-02-16 17:40:03 +00:00
} else {
2022-06-23 13:43:19 +00:00
await sub _AddVariable ( bvar , localVars ) ;
2022-02-16 17:40:03 +00:00
}
2022-06-23 20:16:25 +00:00
if ( PrintDataTypes ) {
js = js + " /* " + bvar . type + " */ " ;
2022-02-16 17:40:03 +00:00
}
2022-06-24 15:26:19 +00:00
}
2022-02-16 17:40:03 +00:00
} else {
2022-06-23 20:16:25 +00:00
var vpartcount = 0 ; /* INTEGER */
2022-09-17 16:50:08 +00:00
var vparts = QB . initArray ( [ { l : 0 , u : 0 } ] , '' ) ; /* STRING */
2022-06-23 13:43:19 +00:00
nextIdx = 0 ;
2022-10-27 14:04:15 +00:00
var _ _ _v2981654 = 0 ; for ( i = 1 ; i <= ( QB . func _UBound ( parts ) ) ; i = i + 1 ) { if ( QB . halted ( ) ) { return ; } _ _ _v2981654 ++ ; if ( _ _ _v2981654 % 100 == 0 ) { await QB . autoLimit ( ) ; }
2022-06-23 20:16:25 +00:00
var p = '' ; /* STRING */
2022-06-23 13:43:19 +00:00
p = ( QB . func _UCase ( QB . arrayValue ( parts , [ i ] ) . value ) ) ;
if ( p == "DIM" || p == "REDIM" || p == "SHARED" || p == "_PRESERVE" ) {
nextIdx = i + 1 ;
2022-02-16 17:40:03 +00:00
}
2022-06-24 15:26:19 +00:00
}
2022-06-23 13:43:19 +00:00
vnamecount = ( await func _ListSplit ( ( await func _Join ( parts , nextIdx , - 1 , " " ) ) , varnames ) ) ;
2022-10-27 14:04:15 +00:00
var _ _ _v6226967 = 0 ; for ( i = 1 ; i <= vnamecount ; i = i + 1 ) { if ( QB . halted ( ) ) { return ; } _ _ _v6226967 ++ ; if ( _ _ _v6226967 % 100 == 0 ) { await QB . autoLimit ( ) ; }
2022-06-23 13:43:19 +00:00
vpartcount = ( await func _SLSplit2 ( QB . arrayValue ( varnames , [ i ] ) . value , vparts ) ) ;
if ( vpartcount == 1 ) {
2022-10-27 14:04:15 +00:00
bvar . type = ( await func _DataTypeFromName ( QB . arrayValue ( vparts , [ 1 ] ) . value ) ) ;
2022-06-23 13:43:19 +00:00
} else if ( vpartcount == 3 ) {
bvar . type = ( QB . func _UCase ( QB . arrayValue ( vparts , [ 3 ] ) . value ) ) ;
} else if ( vpartcount == 4 ) {
bvar . type = ( QB . func _UCase ( ( await func _Join ( vparts , 3 , - 1 , " " ) ) ) ) ;
2022-02-16 17:40:03 +00:00
} else {
}
2022-10-27 14:04:15 +00:00
bvar . name = ( await func _RemoveSuffix ( QB . arrayValue ( vparts , [ 1 ] ) . value ) ) ;
2022-06-23 13:43:19 +00:00
bvar . typeId = ( await func _FindTypeId ( bvar . type ) ) ;
pstart = ( QB . func _InStr ( bvar . name , "(" ) ) ;
if ( pstart > 0 ) {
bvar . isArray = True ;
arraySize = ( await func _ConvertExpression ( ( QB . func _Mid ( bvar . name , pstart + 1 , ( QB . func _Len ( bvar . name ) ) - pstart - 1 ) ) , lineNumber ) ) ;
bvar . name = ( await func _RemoveSuffix ( ( QB . func _Left ( bvar . name , pstart - 1 ) ) ) ) ;
2022-02-16 17:40:03 +00:00
} else {
2022-06-23 13:43:19 +00:00
bvar . isArray = False ;
arraySize = "" ;
2022-02-16 17:40:03 +00:00
}
2022-06-23 13:43:19 +00:00
bvar . jsname = "" ;
2022-02-16 17:40:03 +00:00
if ( ! bvar . isArray ) {
2022-06-23 20:16:25 +00:00
js = js + "var " + bvar . name + " = " + ( await func _InitTypeValue ( bvar . type ) ) + "; " ;
2022-02-16 17:40:03 +00:00
} else {
2022-06-23 13:43:19 +00:00
if ( ( await func _FindVariable ( bvar . name , findVar , True ) ) ) {
2022-06-23 20:16:25 +00:00
js = js + "QB.resizeArray(" + bvar . name + ", [" + ( await func _FormatArraySize ( arraySize ) ) + "], " + ( await func _InitTypeValue ( bvar . type ) ) + ", " + preserve + "); " ;
2022-02-16 17:40:03 +00:00
} else {
2022-06-23 20:16:25 +00:00
js = js + "var " + bvar . name + " = QB.initArray([" + ( await func _FormatArraySize ( arraySize ) ) + "], " + ( await func _InitTypeValue ( bvar . type ) ) + "); " ;
2022-02-16 17:40:03 +00:00
}
}
if ( isGlobal ) {
2022-06-23 13:43:19 +00:00
await sub _AddVariable ( bvar , globalVars ) ;
2022-02-16 17:40:03 +00:00
} else {
2022-06-23 13:43:19 +00:00
await sub _AddVariable ( bvar , localVars ) ;
2022-02-16 17:40:03 +00:00
}
2022-06-23 20:16:25 +00:00
if ( PrintDataTypes ) {
js = js + " /* " + bvar . type + " */ " ;
2022-02-16 17:40:03 +00:00
}
2022-06-24 15:26:19 +00:00
}
2022-02-16 17:40:03 +00:00
}
2022-06-23 13:43:19 +00:00
DeclareVar = js ;
2022-02-16 17:40:03 +00:00
return DeclareVar ;
}
2022-03-04 22:28:32 +00:00
async function func _FormatArraySize ( sizeString /*STRING*/ ) {
if ( QB . halted ( ) ) { return ; }
var FormatArraySize = null ;
2022-06-23 20:16:25 +00:00
var sizeParams = '' ; /* STRING */
2022-06-23 13:43:19 +00:00
sizeParams = "" ;
2022-09-17 16:50:08 +00:00
var parts = QB . initArray ( [ { l : 0 , u : 0 } ] , '' ) ; /* STRING */
2022-06-23 20:16:25 +00:00
var pcount = 0 ; /* INTEGER */
2022-06-23 13:43:19 +00:00
pcount = ( await func _ListSplit ( sizeString , parts ) ) ;
2022-06-23 20:16:25 +00:00
var i = 0 ; /* INTEGER */
2022-10-27 14:04:15 +00:00
var _ _ _v6478212 = 0 ; for ( i = 1 ; i <= pcount ; i = i + 1 ) { if ( QB . halted ( ) ) { return ; } _ _ _v6478212 ++ ; if ( _ _ _v6478212 % 100 == 0 ) { await QB . autoLimit ( ) ; }
2022-09-17 16:50:08 +00:00
var subparts = QB . initArray ( [ { l : 0 , u : 0 } ] , '' ) ; /* STRING */
2022-06-23 20:16:25 +00:00
var scount = 0 ; /* INTEGER */
2022-06-23 13:43:19 +00:00
scount = ( await func _SLSplit2 ( QB . arrayValue ( parts , [ i ] ) . value , subparts ) ) ;
if ( i > 1 ) {
sizeParams = sizeParams + "," ;
2022-03-04 22:28:32 +00:00
}
2022-06-23 13:43:19 +00:00
if ( scount == 1 ) {
2022-09-17 16:50:08 +00:00
sizeParams = sizeParams + "{l:0,u:" + QB . arrayValue ( subparts , [ 1 ] ) . value + "}" ;
2022-03-04 22:28:32 +00:00
} else {
2022-06-23 13:43:19 +00:00
sizeParams = sizeParams + "{l:" + QB . arrayValue ( subparts , [ 1 ] ) . value + ",u:" + QB . arrayValue ( subparts , [ 3 ] ) . value + "}" ;
2022-03-04 22:28:32 +00:00
}
2022-06-24 15:26:19 +00:00
}
2022-06-23 13:43:19 +00:00
FormatArraySize = sizeParams ;
2022-03-04 22:28:32 +00:00
return FormatArraySize ;
}
async function func _InitTypeValue ( vtype /*STRING*/ ) {
2022-02-16 17:40:03 +00:00
if ( QB . halted ( ) ) { return ; }
var InitTypeValue = null ;
2022-06-23 20:16:25 +00:00
var value = '' ; /* STRING */
2022-06-23 13:43:19 +00:00
if ( vtype == "STRING" ) {
value = "''" ;
} else if ( vtype == "OBJECT" ) {
value = "{}" ;
} else if ( vtype == "_BIT" || vtype == "_UNSIGNED _BIT" || vtype == "_BYTE" || vtype == "_UNSIGNED _BYTE" || vtype == "INTEGER" || vtype == "_UNSIGNED INTEGER" || vtype == "LONG" || vtype == "_UNSIGNED LONG" || vtype == "_INTEGER64" || vtype == "_UNSIGNED INTEGER64" || vtype == "SINGLE" || vtype == "DOUBLE" || vtype == "_FLOAT" || vtype == "_OFFSET" || vtype == "_UNSIGNED _OFFSET" ) {
value = "0" ;
2022-02-16 17:40:03 +00:00
} else {
2022-06-23 13:43:19 +00:00
value = "{" ;
2022-06-23 20:16:25 +00:00
var typeId = 0 ; /* INTEGER */
2022-06-23 13:43:19 +00:00
typeId = ( await func _FindTypeId ( vtype ) ) ;
2022-06-23 20:16:25 +00:00
var i = 0 ; /* INTEGER */
2022-10-27 14:04:15 +00:00
var _ _ _v2637929 = 0 ; for ( i = 1 ; i <= ( QB . func _UBound ( typeVars ) ) ; i = i + 1 ) { if ( QB . halted ( ) ) { return ; } _ _ _v2637929 ++ ; if ( _ _ _v2637929 % 100 == 0 ) { await QB . autoLimit ( ) ; }
2022-06-23 13:43:19 +00:00
if ( typeId == QB . arrayValue ( typeVars , [ i ] ) . value . typeId ) {
value = value + QB . arrayValue ( typeVars , [ i ] ) . value . name + ":" + ( await func _InitTypeValue ( QB . arrayValue ( typeVars , [ i ] ) . value . type ) ) + "," ;
2022-02-16 17:40:03 +00:00
}
2022-06-24 15:26:19 +00:00
}
2022-06-23 13:43:19 +00:00
value = ( QB . func _Left ( value , ( QB . func _Len ( value ) ) - 1 ) ) + "}" ;
2022-02-16 17:40:03 +00:00
}
2022-06-23 13:43:19 +00:00
InitTypeValue = value ;
2022-02-16 17:40:03 +00:00
return InitTypeValue ;
}
2022-03-04 22:28:32 +00:00
async function func _FindTypeId ( typeName /*STRING*/ ) {
2022-02-16 17:40:03 +00:00
if ( QB . halted ( ) ) { return ; }
var FindTypeId = null ;
2022-06-23 20:16:25 +00:00
var id = 0 ; /* INTEGER */
2022-06-23 13:43:19 +00:00
id = - 1 ;
2022-06-23 20:16:25 +00:00
var i = 0 ; /* INTEGER */
2022-10-27 14:04:15 +00:00
var _ _ _v2793420 = 0 ; for ( i = 1 ; i <= ( QB . func _UBound ( types ) ) ; i = i + 1 ) { if ( QB . halted ( ) ) { return ; } _ _ _v2793420 ++ ; if ( _ _ _v2793420 % 100 == 0 ) { await QB . autoLimit ( ) ; }
2022-06-23 13:43:19 +00:00
if ( QB . arrayValue ( types , [ i ] ) . value . name == typeName ) {
id = i ;
2022-02-16 17:40:03 +00:00
break ;
}
2022-06-24 15:26:19 +00:00
}
2022-06-23 13:43:19 +00:00
FindTypeId = id ;
2022-02-16 17:40:03 +00:00
return FindTypeId ;
}
2022-06-17 21:06:58 +00:00
async function func _ConvertExpression ( ex /*STRING*/ , lineNumber /*INTEGER*/ ) {
2022-02-16 17:40:03 +00:00
if ( QB . halted ( ) ) { return ; }
var ConvertExpression = null ;
2022-06-23 20:16:25 +00:00
var c = '' ; /* STRING */
var js = '' ; /* STRING */
2022-06-23 13:43:19 +00:00
js = "" ;
2022-06-23 20:16:25 +00:00
var word = '' ; /* STRING */
2022-06-23 13:43:19 +00:00
word = "" ;
2022-06-23 20:16:25 +00:00
var bvar = { type : '' , name : '' , jsname : '' , isConst : 0 , isArray : 0 , arraySize : 0 , typeId : 0 } ; /* VARIABLE */
var m = { line : 0 , type : '' , returnType : '' , name : '' , uname : '' , argc : 0 , args : '' , jsname : '' , sync : 0 } ; /* METHOD */
var stringLiteral = 0 ; /* INTEGER */
var i = 0 ; /* INTEGER */
2022-06-23 13:43:19 +00:00
i = 1 ;
2022-10-27 14:04:15 +00:00
var _ _ _v8298016 = 0 ; while ( i <= ( QB . func _Len ( ex ) ) ) { if ( QB . halted ( ) ) { return ; } _ _ _v8298016 ++ ; if ( _ _ _v8298016 % 100 == 0 ) { await QB . autoLimit ( ) ; }
2022-06-23 13:43:19 +00:00
c = ( QB . func _Mid ( ex , i , 1 ) ) ;
if ( c == ( QB . func _Chr ( 34 ) ) ) {
js = js + c ;
stringLiteral = ! stringLiteral ;
2022-02-16 17:40:03 +00:00
} else if ( stringLiteral ) {
2022-06-23 13:43:19 +00:00
js = js + c ;
2022-02-16 17:40:03 +00:00
} else {
2022-06-23 13:43:19 +00:00
if ( c == " " || c == "," || i == ( QB . func _Len ( ex ) ) ) {
if ( i == ( QB . func _Len ( ex ) ) ) {
word = word + c ;
2022-02-16 17:40:03 +00:00
}
2022-06-23 20:16:25 +00:00
var uword = '' ; /* STRING */
2022-06-23 13:43:19 +00:00
uword = ( QB . func _UCase ( ( QB . func _ _Trim ( word ) ) ) ) ;
if ( uword == "NOT" ) {
js = js + "!" ;
} else if ( uword == "AND" ) {
js = js + " && " ;
} else if ( uword == "OR" ) {
js = js + " || " ;
} else if ( uword == "MOD" ) {
js = js + " % " ;
2022-10-27 14:04:15 +00:00
} else if ( uword == "XOR" ) {
js = js + " ^ " ;
2022-06-23 13:43:19 +00:00
} else if ( uword == "=" ) {
js = js + " == " ;
} else if ( uword == "<>" ) {
js = js + " != " ;
} else if ( uword == "^" ) {
js = js + " ** " ;
} else if ( uword == "\\" ) {
js = js + " / " ;
} else if ( ( await func _StartsWith ( uword , "&H" ) ) || ( await func _StartsWith ( uword , "&O" ) ) || ( await func _StartsWith ( uword , "&B" ) ) ) {
js = js + " QB.func_Val('" + uword + "') " ;
2022-02-16 17:40:03 +00:00
} else {
2022-06-23 13:43:19 +00:00
if ( ( await func _FindVariable ( word , bvar , False ) ) ) {
js = js + " " + bvar . jsname ;
2022-02-16 17:40:03 +00:00
} else {
2022-06-23 13:43:19 +00:00
if ( ( await func _FindMethod ( word , m , "FUNCTION" ) ) ) {
if ( m . name != currentMethod ) {
js = js + ( await func _CallMethod ( m ) ) + "()" ;
2022-02-16 17:40:03 +00:00
} else {
2022-06-23 13:43:19 +00:00
js = js + " " + word ;
2022-02-16 17:40:03 +00:00
}
} else {
2022-06-23 13:43:19 +00:00
js = js + " " + word ;
2022-02-16 17:40:03 +00:00
}
}
}
2022-06-23 13:43:19 +00:00
if ( c == "," && i != ( QB . func _Len ( ex ) ) ) {
js = js + "," ;
2022-02-16 17:40:03 +00:00
}
2022-06-23 13:43:19 +00:00
word = "" ;
} else if ( c == "(" ) {
2022-06-23 20:16:25 +00:00
var done = 0 ; /* INTEGER */
2022-06-23 13:43:19 +00:00
done = False ;
2022-06-23 20:16:25 +00:00
var pcount = 0 ; /* INTEGER */
2022-06-23 13:43:19 +00:00
pcount = 0 ;
2022-06-23 20:16:25 +00:00
var c2 = '' ; /* STRING */
var ex2 = '' ; /* STRING */
2022-06-23 13:43:19 +00:00
ex2 = "" ;
2022-06-23 20:16:25 +00:00
var stringLiteral2 = 0 ; /* INTEGER */
2022-06-23 13:43:19 +00:00
stringLiteral2 = False ;
i = i + 1 ;
2022-10-27 14:04:15 +00:00
var _ _ _v8246022 = 0 ; while ( ! done && i <= ( QB . func _Len ( ex ) ) ) { if ( QB . halted ( ) ) { return ; } _ _ _v8246022 ++ ; if ( _ _ _v8246022 % 100 == 0 ) { await QB . autoLimit ( ) ; }
2022-06-23 13:43:19 +00:00
c2 = ( QB . func _Mid ( ex , i , 1 ) ) ;
if ( c2 == ( QB . func _Chr ( 34 ) ) ) {
stringLiteral2 = ! stringLiteral2 ;
} else if ( ! stringLiteral2 && c2 == "(" ) {
pcount = pcount + 1 ;
} else if ( ! stringLiteral2 && c2 == ")" ) {
if ( pcount == 0 ) {
done = True ;
2022-02-16 17:40:03 +00:00
} else {
2022-06-23 13:43:19 +00:00
pcount = pcount - 1 ;
2022-02-16 17:40:03 +00:00
}
}
if ( ! done ) {
2022-06-23 13:43:19 +00:00
ex2 = ex2 + c2 ;
i = i + 1 ;
2022-02-16 17:40:03 +00:00
}
}
2022-06-23 20:16:25 +00:00
var fneg = '' ; /* STRING */
2022-06-23 13:43:19 +00:00
fneg = "" ;
if ( ( QB . func _Len ( word ) ) > 0 ) {
if ( ( QB . func _Left ( word , 1 ) ) == "-" ) {
fneg = "-" ;
word = ( QB . func _Mid ( word , 2 ) ) ;
2022-02-16 17:40:03 +00:00
}
}
2022-06-23 13:43:19 +00:00
if ( ( await func _FindVariable ( word , bvar , True ) ) ) {
if ( ( QB . func _ _Trim ( ex2 ) ) == "" ) {
js = js + fneg + bvar . jsname ;
2022-02-16 17:40:03 +00:00
} else {
2022-06-23 13:43:19 +00:00
js = js + fneg + "QB.arrayValue(" + bvar . jsname + ", [" + ( await func _ConvertExpression ( ex2 , lineNumber ) ) + "]).value" ;
2022-02-16 17:40:03 +00:00
}
2022-06-23 13:43:19 +00:00
} else if ( ( await func _FindMethod ( word , m , "FUNCTION" ) ) ) {
js = js + fneg + "(" + ( await func _CallMethod ( m ) ) + "(" + ( await func _ConvertMethodParams ( ex2 , lineNumber ) ) + "))" ;
2022-02-16 17:40:03 +00:00
} else {
2022-06-23 13:43:19 +00:00
if ( ( QB . func _ _Trim ( word ) ) != "" ) {
await sub _AddWarning ( lineNumber , "Missing function or array [" + word + "]" ) ;
2022-02-16 17:40:03 +00:00
}
2022-06-23 13:43:19 +00:00
js = js + fneg + "(" + ( await func _ConvertExpression ( ex2 , lineNumber ) ) + ")" ;
2022-02-16 17:40:03 +00:00
}
2022-06-23 13:43:19 +00:00
word = "" ;
2022-02-16 17:40:03 +00:00
} else {
2022-06-23 13:43:19 +00:00
word = word + c ;
2022-02-16 17:40:03 +00:00
}
}
2022-06-23 13:43:19 +00:00
i = i + 1 ;
2022-02-16 17:40:03 +00:00
}
2022-06-23 13:43:19 +00:00
ConvertExpression = js ;
2022-02-16 17:40:03 +00:00
return ConvertExpression ;
}
2022-06-17 21:06:58 +00:00
async function func _ConvertMethodParams ( args /*STRING*/ , lineNumber /*INTEGER*/ ) {
2022-03-30 22:37:36 +00:00
if ( QB . halted ( ) ) { return ; }
var ConvertMethodParams = null ;
2022-06-23 20:16:25 +00:00
var js = '' ; /* STRING */
2022-09-17 16:50:08 +00:00
var params = QB . initArray ( [ { l : 0 , u : 0 } ] , '' ) ; /* STRING */
2022-06-23 20:16:25 +00:00
var argc = 0 ; /* INTEGER */
2022-06-23 13:43:19 +00:00
argc = ( await func _ListSplit ( args , params ) ) ;
2022-06-23 20:16:25 +00:00
var i = 0 ; /* INTEGER */
2022-10-27 14:04:15 +00:00
var _ _ _v5891630 = 0 ; for ( i = 1 ; i <= argc ; i = i + 1 ) { if ( QB . halted ( ) ) { return ; } _ _ _v5891630 ++ ; if ( _ _ _v5891630 % 100 == 0 ) { await QB . autoLimit ( ) ; }
2022-06-23 13:43:19 +00:00
if ( i > 1 ) {
js = js + "," ;
2022-03-30 22:37:36 +00:00
}
2022-06-23 13:43:19 +00:00
if ( ( QB . func _ _Trim ( QB . arrayValue ( params , [ i ] ) . value ) ) == "" ) {
js = js + " undefined" ;
2022-03-30 22:37:36 +00:00
} else {
2022-06-23 13:43:19 +00:00
js = js + " " + ( await func _ConvertExpression ( QB . arrayValue ( params , [ i ] ) . value , lineNumber ) ) ;
2022-03-30 22:37:36 +00:00
}
2022-06-24 15:26:19 +00:00
}
2022-06-23 13:43:19 +00:00
ConvertMethodParams = js ;
2022-03-30 22:37:36 +00:00
return ConvertMethodParams ;
}
2022-03-04 22:28:32 +00:00
async function func _CallMethod ( m /*METHOD*/ ) {
if ( QB . halted ( ) ) { return ; }
var CallMethod = null ;
2022-06-23 20:16:25 +00:00
var js = '' ; /* STRING */
2022-03-04 22:28:32 +00:00
if ( m . sync ) {
2022-06-23 13:43:19 +00:00
js = "await " ;
2022-03-04 22:28:32 +00:00
}
2022-06-23 13:43:19 +00:00
js = js + m . jsname ;
CallMethod = js ;
2022-03-04 22:28:32 +00:00
return CallMethod ;
}
async function func _FindVariable ( varname /*STRING*/ , bvar /*VARIABLE*/ , isArray /*INTEGER*/ ) {
2022-02-16 17:40:03 +00:00
if ( QB . halted ( ) ) { return ; }
var FindVariable = null ;
2022-06-23 20:16:25 +00:00
var found = 0 ; /* INTEGER */
2022-06-23 13:43:19 +00:00
found = False ;
2022-06-23 20:16:25 +00:00
var i = 0 ; /* INTEGER */
var fvarname = '' ; /* STRING */
2022-06-23 13:43:19 +00:00
fvarname = ( QB . func _ _Trim ( ( QB . func _UCase ( ( await func _RemoveSuffix ( varname ) ) ) ) ) ) ;
2022-10-27 14:04:15 +00:00
var _ _ _v9860932 = 0 ; for ( i = 1 ; i <= ( QB . func _UBound ( localVars ) ) ; i = i + 1 ) { if ( QB . halted ( ) ) { return ; } _ _ _v9860932 ++ ; if ( _ _ _v9860932 % 100 == 0 ) { await QB . autoLimit ( ) ; }
2022-06-23 13:43:19 +00:00
if ( QB . arrayValue ( localVars , [ i ] ) . value . isArray == isArray && ( QB . func _UCase ( QB . arrayValue ( localVars , [ i ] ) . value . name ) ) == fvarname ) {
found = True ;
bvar . type = QB . arrayValue ( localVars , [ i ] ) . value . type ;
bvar . name = QB . arrayValue ( localVars , [ i ] ) . value . name ;
bvar . jsname = QB . arrayValue ( localVars , [ i ] ) . value . jsname ;
bvar . isConst = QB . arrayValue ( localVars , [ i ] ) . value . isConst ;
bvar . isArray = QB . arrayValue ( localVars , [ i ] ) . value . isArray ;
bvar . arraySize = QB . arrayValue ( localVars , [ i ] ) . value . arraySize ;
bvar . typeId = QB . arrayValue ( localVars , [ i ] ) . value . typeId ;
2022-02-16 17:40:03 +00:00
break ;
}
2022-06-24 15:26:19 +00:00
}
2022-02-16 17:40:03 +00:00
if ( ! found ) {
2022-10-27 14:04:15 +00:00
var _ _ _v9109643 = 0 ; for ( i = 1 ; i <= ( QB . func _UBound ( globalVars ) ) ; i = i + 1 ) { if ( QB . halted ( ) ) { return ; } _ _ _v9109643 ++ ; if ( _ _ _v9109643 % 100 == 0 ) { await QB . autoLimit ( ) ; }
2022-06-23 13:43:19 +00:00
if ( QB . arrayValue ( globalVars , [ i ] ) . value . isArray == isArray && ( QB . func _UCase ( QB . arrayValue ( globalVars , [ i ] ) . value . name ) ) == fvarname ) {
found = True ;
bvar . type = QB . arrayValue ( globalVars , [ i ] ) . value . type ;
bvar . name = QB . arrayValue ( globalVars , [ i ] ) . value . name ;
bvar . jsname = QB . arrayValue ( globalVars , [ i ] ) . value . jsname ;
bvar . isConst = QB . arrayValue ( globalVars , [ i ] ) . value . isConst ;
bvar . isArray = QB . arrayValue ( globalVars , [ i ] ) . value . isArray ;
bvar . arraySize = QB . arrayValue ( globalVars , [ i ] ) . value . arraySize ;
bvar . typeId = QB . arrayValue ( globalVars , [ i ] ) . value . typeId ;
2022-02-16 17:40:03 +00:00
break ;
}
2022-06-24 15:26:19 +00:00
}
2022-02-16 17:40:03 +00:00
}
2022-06-23 13:43:19 +00:00
FindVariable = found ;
2022-02-16 17:40:03 +00:00
return FindVariable ;
}
2022-03-04 22:28:32 +00:00
async function func _FindMethod ( mname /*STRING*/ , m /*METHOD*/ , t /*STRING*/ ) {
2022-02-16 17:40:03 +00:00
if ( QB . halted ( ) ) { return ; }
var FindMethod = null ;
2022-06-23 20:16:25 +00:00
var found = 0 ; /* INTEGER */
2022-06-23 13:43:19 +00:00
found = False ;
2022-06-23 20:16:25 +00:00
var i = 0 ; /* INTEGER */
2022-10-27 14:04:15 +00:00
var _ _ _v2268660 = 0 ; for ( i = 1 ; i <= ( QB . func _UBound ( methods ) ) ; i = i + 1 ) { if ( QB . halted ( ) ) { return ; } _ _ _v2268660 ++ ; if ( _ _ _v2268660 % 100 == 0 ) { await QB . autoLimit ( ) ; }
2022-06-23 13:43:19 +00:00
if ( QB . arrayValue ( methods , [ i ] ) . value . uname == ( QB . func _ _Trim ( ( QB . func _UCase ( ( await func _RemoveSuffix ( mname ) ) ) ) ) ) && QB . arrayValue ( methods , [ i ] ) . value . type == t ) {
found = True ;
m . line = QB . arrayValue ( methods , [ i ] ) . value . line ;
m . type = QB . arrayValue ( methods , [ i ] ) . value . type ;
m . returnType = QB . arrayValue ( methods , [ i ] ) . value . returnType ;
m . name = QB . arrayValue ( methods , [ i ] ) . value . name ;
m . jsname = QB . arrayValue ( methods , [ i ] ) . value . jsname ;
m . uname = QB . arrayValue ( methods , [ i ] ) . value . uname ;
m . argc = QB . arrayValue ( methods , [ i ] ) . value . argc ;
m . args = QB . arrayValue ( methods , [ i ] ) . value . args ;
m . sync = QB . arrayValue ( methods , [ i ] ) . value . sync ;
2022-02-16 17:40:03 +00:00
break ;
}
2022-06-24 15:26:19 +00:00
}
2022-04-18 16:27:23 +00:00
if ( ! found ) {
2022-10-27 14:04:15 +00:00
var _ _ _v6951155 = 0 ; for ( i = 1 ; i <= ( QB . func _UBound ( exportMethods ) ) ; i = i + 1 ) { if ( QB . halted ( ) ) { return ; } _ _ _v6951155 ++ ; if ( _ _ _v6951155 % 100 == 0 ) { await QB . autoLimit ( ) ; }
2022-06-23 13:43:19 +00:00
if ( QB . arrayValue ( exportMethods , [ i ] ) . value . uname == ( QB . func _ _Trim ( ( QB . func _UCase ( ( await func _RemoveSuffix ( mname ) ) ) ) ) ) && QB . arrayValue ( exportMethods , [ i ] ) . value . type == t ) {
found = True ;
m . line = QB . arrayValue ( exportMethods , [ i ] ) . value . line ;
m . type = QB . arrayValue ( exportMethods , [ i ] ) . value . type ;
m . returnType = QB . arrayValue ( exportMethods , [ i ] ) . value . returnType ;
m . name = QB . arrayValue ( exportMethods , [ i ] ) . value . name ;
m . jsname = QB . arrayValue ( exportMethods , [ i ] ) . value . jsname ;
m . uname = QB . arrayValue ( exportMethods , [ i ] ) . value . uname ;
m . argc = QB . arrayValue ( exportMethods , [ i ] ) . value . argc ;
m . args = QB . arrayValue ( exportMethods , [ i ] ) . value . args ;
m . sync = QB . arrayValue ( exportMethods , [ i ] ) . value . sync ;
2022-04-18 16:27:23 +00:00
break ;
}
2022-06-24 15:26:19 +00:00
}
2022-04-18 16:27:23 +00:00
}
2022-06-23 13:43:19 +00:00
FindMethod = found ;
2022-02-16 17:40:03 +00:00
return FindMethod ;
}
async function sub _ConvertMethods ( ) {
if ( QB . halted ( ) ) { return ; }
2022-06-23 13:43:19 +00:00
await sub _AddJSLine ( 0 , "" ) ;
2022-06-23 20:16:25 +00:00
var i = 0 ; /* INTEGER */
2022-10-27 14:04:15 +00:00
var _ _ _v9800032 = 0 ; for ( i = 1 ; i <= ( QB . func _UBound ( methods ) ) ; i = i + 1 ) { if ( QB . halted ( ) ) { return ; } _ _ _v9800032 ++ ; if ( _ _ _v9800032 % 100 == 0 ) { await QB . autoLimit ( ) ; }
2022-06-23 13:43:19 +00:00
if ( ( QB . arrayValue ( methods , [ i ] ) . value . line != 0 ) ) {
2022-06-23 20:16:25 +00:00
var lastLine = 0 ; /* INTEGER */
2022-06-23 13:43:19 +00:00
lastLine = QB . arrayValue ( methods , [ i + 1 ] ) . value . line - 1 ;
if ( lastLine < 0 ) {
lastLine = ( QB . func _UBound ( lines ) ) ;
2022-02-16 17:40:03 +00:00
}
2022-09-17 16:50:08 +00:00
QB . resizeArray ( localVars , [ { l : 0 , u : 0 } ] , { type : '' , name : '' , jsname : '' , isConst : 0 , isArray : 0 , arraySize : 0 , typeId : 0 } , false ) ; /* VARIABLE */
2022-06-23 20:16:25 +00:00
var methodDec = '' ; /* STRING */
methodDec = "async function " + QB . arrayValue ( methods , [ i ] ) . value . jsname + "(" ;
2022-06-23 13:43:19 +00:00
if ( QB . arrayValue ( methods , [ i ] ) . value . argc > 0 ) {
2022-09-17 16:50:08 +00:00
var args = QB . initArray ( [ { l : 0 , u : 0 } ] , '' ) ; /* STRING */
2022-06-23 20:16:25 +00:00
var c = 0 ; /* INTEGER */
2022-06-23 13:43:19 +00:00
c = ( await func _Split ( QB . arrayValue ( methods , [ i ] ) . value . args , "," , args ) ) ;
2022-06-23 20:16:25 +00:00
var a = 0 ; /* INTEGER */
2022-10-27 14:04:15 +00:00
var _ _ _v2439314 = 0 ; for ( a = 1 ; a <= c ; a = a + 1 ) { if ( QB . halted ( ) ) { return ; } _ _ _v2439314 ++ ; if ( _ _ _v2439314 % 100 == 0 ) { await QB . autoLimit ( ) ; }
2022-06-23 20:16:25 +00:00
var v = 0 ; /* INTEGER */
2022-09-17 16:50:08 +00:00
var parts = QB . initArray ( [ { l : 0 , u : 0 } ] , '' ) ; /* STRING */
2022-06-23 13:43:19 +00:00
v = ( await func _Split ( QB . arrayValue ( args , [ a ] ) . value , ":" , parts ) ) ;
2022-10-27 14:04:15 +00:00
methodDec = methodDec + ( await func _RemoveSuffix ( QB . arrayValue ( parts , [ 1 ] ) . value ) ) + "/*" + QB . arrayValue ( parts , [ 2 ] ) . value + "*/" ;
2022-06-23 13:43:19 +00:00
if ( a < c ) {
methodDec = methodDec + "," ;
2022-02-16 17:40:03 +00:00
}
2022-06-23 20:16:25 +00:00
var bvar = { type : '' , name : '' , jsname : '' , isConst : 0 , isArray : 0 , arraySize : 0 , typeId : 0 } ; /* VARIABLE */
2022-10-27 14:04:15 +00:00
bvar . name = ( await func _RemoveSuffix ( QB . arrayValue ( parts , [ 1 ] ) . value ) ) ;
2022-06-23 13:43:19 +00:00
bvar . type = QB . arrayValue ( parts , [ 2 ] ) . value ;
bvar . typeId = ( await func _FindTypeId ( bvar . type ) ) ;
if ( QB . arrayValue ( parts , [ 3 ] ) . value == "true" ) {
bvar . isArray = True ;
2022-02-16 17:40:03 +00:00
}
2022-06-23 13:43:19 +00:00
bvar . jsname = "" ;
await sub _AddVariable ( bvar , localVars ) ;
2022-06-24 15:26:19 +00:00
}
2022-02-16 17:40:03 +00:00
}
2022-06-23 13:43:19 +00:00
methodDec = methodDec + ") {" ;
await sub _AddJSLine ( QB . arrayValue ( methods , [ i ] ) . value . line , methodDec ) ;
await sub _AddJSLine ( QB . arrayValue ( methods , [ i ] ) . value . line , "if (QB.halted()) { return; }" ) ;
if ( QB . arrayValue ( methods , [ i ] ) . value . type == "FUNCTION" ) {
await sub _AddJSLine ( QB . arrayValue ( methods , [ i ] ) . value . line , "var " + ( await func _RemoveSuffix ( QB . arrayValue ( methods , [ i ] ) . value . name ) ) + " = null;" ) ;
2022-02-16 17:40:03 +00:00
}
2022-06-23 13:43:19 +00:00
currentMethod = QB . arrayValue ( methods , [ i ] ) . value . name ;
await sub _ConvertLines ( QB . arrayValue ( methods , [ i ] ) . value . line + 1 , lastLine - 1 , QB . arrayValue ( methods , [ i ] ) . value . name ) ;
if ( QB . arrayValue ( methods , [ i ] ) . value . type == "FUNCTION" ) {
await sub _AddJSLine ( lastLine , "return " + ( await func _RemoveSuffix ( QB . arrayValue ( methods , [ i ] ) . value . name ) ) + ";" ) ;
2022-02-16 17:40:03 +00:00
}
2022-06-23 13:43:19 +00:00
await sub _AddJSLine ( lastLine , "}" ) ;
2022-02-16 17:40:03 +00:00
}
2022-06-24 15:26:19 +00:00
}
2022-10-27 14:04:15 +00:00
var _ _ _v5338731 = 0 ; for ( i = 1 ; i <= ( QB . func _UBound ( exportLines ) ) ; i = i + 1 ) { if ( QB . halted ( ) ) { return ; } _ _ _v5338731 ++ ; if ( _ _ _v5338731 % 100 == 0 ) { await QB . autoLimit ( ) ; }
2022-06-23 13:43:19 +00:00
await sub _AddJSLine ( i , QB . arrayValue ( exportLines , [ i ] ) . value ) ;
2022-06-24 15:26:19 +00:00
}
2022-09-17 16:50:08 +00:00
QB . resizeArray ( exportLines , [ { l : 0 , u : 0 } ] , '' , false ) ; /* STRING */
2022-02-16 17:40:03 +00:00
}
async function sub _ReadLinesFromFile ( filename /*STRING*/ ) {
if ( QB . halted ( ) ) { return ; }
2022-06-23 20:16:25 +00:00
var fline = '' ; /* STRING */
var lineIndex = 0 ; /* INTEGER */
var rawJS = 0 ; /* SINGLE */
2022-09-17 16:50:08 +00:00
QB . sub _Open ( filename , QB . INPUT , 1 ) ;
2022-10-27 14:04:15 +00:00
var _ _ _v1063697 = 0 ; while ( ! ( ( QB . func _EOF ( 1 ) ) ) ) { if ( QB . halted ( ) ) { return ; } _ _ _v1063697 ++ ; if ( _ _ _v1063697 % 100 == 0 ) { await QB . autoLimit ( ) ; }
var _ _ _v9994146 = new Array ( 1 ) ; await QB . sub _LineInputFromFile ( 1 , _ _ _v9994146 ) ; fline = _ _ _v9994146 [ 0 ] ;
2022-06-23 13:43:19 +00:00
lineIndex = lineIndex + 1 ;
if ( ( QB . func _ _Trim ( fline ) ) != "" ) {
2022-10-27 14:04:15 +00:00
var _ _ _v6761759 = 0 ; while ( ( await func _EndsWith ( fline , " _" ) ) ) { if ( QB . halted ( ) ) { return ; } _ _ _v6761759 ++ ; if ( _ _ _v6761759 % 100 == 0 ) { await QB . autoLimit ( ) ; }
2022-06-23 20:16:25 +00:00
var nextLine = '' ; /* STRING */
2022-10-27 14:04:15 +00:00
var _ _ _v157039 = new Array ( 1 ) ; await QB . sub _LineInputFromFile ( 1 , _ _ _v157039 ) ; nextLine = _ _ _v157039 [ 0 ] ;
2022-06-23 13:43:19 +00:00
fline = ( QB . func _Left ( fline , ( QB . func _Len ( fline ) ) - 1 ) ) + nextLine ;
2022-02-16 17:40:03 +00:00
}
2022-06-23 13:43:19 +00:00
rawJS = ( await func _ReadLine ( lineIndex , fline , rawJS ) ) ;
2022-02-16 17:40:03 +00:00
}
}
2022-09-17 16:50:08 +00:00
QB . sub _Close ( 1 ) ;
2022-02-16 17:40:03 +00:00
}
async function sub _ReadLinesFromText ( sourceText /*STRING*/ ) {
if ( QB . halted ( ) ) { return ; }
2022-09-17 16:50:08 +00:00
var sourceLines = QB . initArray ( [ { l : 0 , u : 0 } ] , '' ) ; /* STRING */
2022-06-23 20:16:25 +00:00
var rawJS = 0 ; /* SINGLE */
var lcount = 0 ; /* INTEGER */
var i = 0 ; /* INTEGER */
2022-06-23 13:43:19 +00:00
lcount = ( await func _Split ( sourceText , await func _LF ( ) , sourceLines ) ) ;
2022-10-27 14:04:15 +00:00
var _ _ _v5751838 = 0 ; for ( i = 1 ; i <= lcount ; i = i + 1 ) { if ( QB . halted ( ) ) { return ; } _ _ _v5751838 ++ ; if ( _ _ _v5751838 % 100 == 0 ) { await QB . autoLimit ( ) ; }
2022-06-23 20:16:25 +00:00
var fline = '' ; /* STRING */
2022-06-23 13:43:19 +00:00
fline = QB . arrayValue ( sourceLines , [ i ] ) . value ;
if ( ( QB . func _ _Trim ( fline ) ) != "" ) {
2022-06-23 20:16:25 +00:00
var lineIndex = 0 ; /* INTEGER */
2022-06-23 13:43:19 +00:00
lineIndex = i ;
if ( ( await func _StartsWith ( ( QB . func _UCase ( fline ) ) , "IMPORT" ) ) ) {
2022-09-17 16:50:08 +00:00
var parts = QB . initArray ( [ { l : 0 , u : 0 } ] , '' ) ; /* STRING */
2022-06-23 20:16:25 +00:00
var pcount = 0 ; /* INTEGER */
2022-06-23 13:43:19 +00:00
pcount = ( await func _SLSplit ( fline , parts , False ) ) ;
if ( pcount == 4 ) {
2022-06-23 20:16:25 +00:00
var moduleName = '' ; /* STRING */
var sourceUrl = '' ; /* STRING */
var importRes = { ok : 0 , status : 0 , statusText : '' , text : '' } ; /* FETCHRESPONSE */
2022-06-23 13:43:19 +00:00
moduleName = QB . arrayValue ( parts , [ 2 ] ) . value ;
sourceUrl = ( QB . func _Mid ( QB . arrayValue ( parts , [ 4 ] ) . value , 2 , ( QB . func _Len ( QB . arrayValue ( parts , [ 4 ] ) . value ) ) - 2 ) ) ;
await QB . sub _Fetch ( sourceUrl , importRes ) ;
modLevel = modLevel + 1 ;
await sub _QBToJS ( importRes . text , TEXT , moduleName ) ;
2022-04-18 16:27:23 +00:00
await sub _ResetDataStructures ( ) ;
2022-06-23 13:43:19 +00:00
modLevel = modLevel - 1 ;
2022-04-18 16:27:23 +00:00
continue ;
}
}
2022-10-27 14:04:15 +00:00
var _ _ _v1000522 = 0 ; while ( ( await func _EndsWith ( fline , "_" ) ) ) { if ( QB . halted ( ) ) { return ; } _ _ _v1000522 ++ ; if ( _ _ _v1000522 % 100 == 0 ) { await QB . autoLimit ( ) ; }
2022-06-23 13:43:19 +00:00
i = i + 1 ;
2022-06-23 20:16:25 +00:00
var nextLine = '' ; /* STRING */
2022-06-23 13:43:19 +00:00
nextLine = QB . arrayValue ( sourceLines , [ i ] ) . value ;
fline = ( QB . func _Left ( fline , ( QB . func _Len ( fline ) ) - 1 ) ) + nextLine ;
2022-02-16 17:40:03 +00:00
}
2022-06-23 13:43:19 +00:00
rawJS = ( await func _ReadLine ( i , fline , rawJS ) ) ;
2022-02-16 17:40:03 +00:00
}
2022-06-24 15:26:19 +00:00
}
2022-02-16 17:40:03 +00:00
}
2022-04-26 03:56:54 +00:00
async function func _ReadLine ( lineIndex /*INTEGER*/ , fline /*STRING*/ , rawJS /*INTEGER*/ ) {
2022-02-16 17:40:03 +00:00
if ( QB . halted ( ) ) { return ; }
2022-04-26 03:56:54 +00:00
var ReadLine = null ;
2022-06-23 20:16:25 +00:00
var quoteDepth = 0 ; /* INTEGER */
2022-06-23 13:43:19 +00:00
quoteDepth = 0 ;
2022-06-23 20:16:25 +00:00
var i = 0 ; /* INTEGER */
2022-10-27 14:04:15 +00:00
var _ _ _v1030226 = 0 ; for ( i = 1 ; i <= ( QB . func _Len ( fline ) ) ; i = i + 1 ) { if ( QB . halted ( ) ) { return ; } _ _ _v1030226 ++ ; if ( _ _ _v1030226 % 100 == 0 ) { await QB . autoLimit ( ) ; }
2022-06-24 14:44:55 +00:00
var c = '' ; /* STRING */ var c4 = '' ; /* STRING */
2022-06-23 13:43:19 +00:00
c = ( QB . func _Mid ( fline , i , 1 ) ) ;
2022-06-24 14:44:55 +00:00
c4 = ( QB . func _UCase ( ( QB . func _Mid ( fline , i , 4 ) ) ) ) ;
2022-06-23 13:43:19 +00:00
if ( c == ( QB . func _Chr ( 34 ) ) ) {
if ( quoteDepth == 0 ) {
quoteDepth = 1 ;
2022-02-16 17:40:03 +00:00
} else {
2022-06-23 13:43:19 +00:00
quoteDepth = 0 ;
2022-02-16 17:40:03 +00:00
}
}
2022-06-24 14:44:55 +00:00
if ( quoteDepth == 0 && ( c == "'" || c4 == "REM " ) ) {
2022-06-23 13:43:19 +00:00
fline = ( QB . func _Left ( fline , i - 1 ) ) ;
2022-02-16 17:40:03 +00:00
break ;
}
2022-06-24 15:26:19 +00:00
}
2022-06-23 13:43:19 +00:00
ReadLine = rawJS ;
if ( ( QB . func _ _Trim ( fline ) ) == "" ) {
2022-04-26 03:56:54 +00:00
return ReadLine ;
2022-03-14 20:49:12 +00:00
}
2022-06-23 20:16:25 +00:00
var word = '' ; /* STRING */
2022-09-17 16:50:08 +00:00
var words = QB . initArray ( [ { l : 0 , u : 0 } ] , '' ) ; /* STRING */
2022-06-23 20:16:25 +00:00
var wcount = 0 ; /* INTEGER */
2022-06-23 13:43:19 +00:00
wcount = ( await func _SLSplit ( fline , words , False ) ) ;
2022-04-26 03:56:54 +00:00
if ( rawJS ) {
2022-06-23 13:43:19 +00:00
await sub _AddLine ( lineIndex , fline ) ;
2022-04-26 03:56:54 +00:00
return ReadLine ;
}
2022-06-23 13:43:19 +00:00
if ( ( QB . func _UCase ( QB . arrayValue ( words , [ 1 ] ) . value ) ) == "$IF" && wcount > 1 ) {
if ( ( QB . func _UCase ( QB . arrayValue ( words , [ 2 ] ) . value ) ) == "JAVASCRIPT" ) {
rawJS = True ;
await sub _AddLine ( lineIndex , fline ) ;
ReadLine = rawJS ;
2022-04-26 03:56:54 +00:00
return ReadLine ;
}
}
2022-06-23 13:43:19 +00:00
if ( ( QB . func _UCase ( QB . arrayValue ( words , [ 1 ] ) . value ) ) == "$END" ) {
2022-04-26 03:56:54 +00:00
if ( rawJS ) {
2022-06-23 13:43:19 +00:00
rawJS = ! rawJS ;
2022-04-26 03:56:54 +00:00
}
2022-06-23 13:43:19 +00:00
await sub _AddLine ( lineIndex , fline ) ;
ReadLine = rawJS ;
2022-04-26 03:56:54 +00:00
return ReadLine ;
}
2022-06-23 20:16:25 +00:00
var index = 0 ; /* INTEGER */
2022-06-23 13:43:19 +00:00
if ( wcount == 1 ) {
if ( ( await func _EndsWith ( QB . arrayValue ( words , [ 1 ] ) . value , ":" ) ) ) {
index = ( QB . func _UBound ( dataLabels ) ) + 1 ;
2022-09-17 16:50:08 +00:00
QB . resizeArray ( dataLabels , [ { l : 0 , u : index } ] , { text : '' , index : 0 } , true ) ; /* LABEL */
2022-06-23 13:43:19 +00:00
QB . arrayValue ( dataLabels , [ index ] ) . value . text = ( QB . func _Left ( ( QB . func _UCase ( QB . arrayValue ( words , [ 1 ] ) . value ) ) , ( QB . func _Len ( QB . arrayValue ( words , [ 1 ] ) . value ) ) - 1 ) ) ;
QB . arrayValue ( dataLabels , [ index ] ) . value . index = ( QB . func _UBound ( dataArray ) ) ;
2022-06-10 20:35:28 +00:00
return ReadLine ;
}
}
2022-06-23 13:43:19 +00:00
if ( ( QB . func _UCase ( QB . arrayValue ( words , [ 1 ] ) . value ) ) == "DATA" ) {
2022-06-23 20:16:25 +00:00
var dstr = '' ; /* STRING */
2022-06-23 13:43:19 +00:00
dstr = ( await func _Join ( words , 2 , - 1 , " " ) ) ;
2022-06-23 20:16:25 +00:00
var dcount = 0 ; /* INTEGER */
2022-09-17 16:50:08 +00:00
var de = QB . initArray ( [ { l : 0 , u : 0 } ] , '' ) ; /* STRING */
2022-06-23 13:43:19 +00:00
dcount = ( await func _ListSplit ( dstr , de ) ) ;
2022-10-27 14:04:15 +00:00
var _ _ _v7988844 = 0 ; for ( i = 1 ; i <= dcount ; i = i + 1 ) { if ( QB . halted ( ) ) { return ; } _ _ _v7988844 ++ ; if ( _ _ _v7988844 % 100 == 0 ) { await QB . autoLimit ( ) ; }
2022-06-23 13:43:19 +00:00
index = ( QB . func _UBound ( dataArray ) ) + 1 ;
2022-09-17 16:50:08 +00:00
QB . resizeArray ( dataArray , [ { l : 0 , u : index } ] , '' , true ) ; /* STRING */
2022-06-23 13:43:19 +00:00
QB . arrayValue ( dataArray , [ index ] ) . value = QB . arrayValue ( de , [ i ] ) . value ;
2022-06-24 15:26:19 +00:00
}
2022-06-10 20:35:28 +00:00
return ReadLine ;
}
2022-06-23 20:16:25 +00:00
var ifIdx = 0 ; /* INTEGER */ var thenIdx = 0 ; /* INTEGER */ var elseIdx = 0 ; /* INTEGER */
2022-10-27 14:04:15 +00:00
var _ _ _v2844803 = 0 ; for ( i = 1 ; i <= wcount ; i = i + 1 ) { if ( QB . halted ( ) ) { return ; } _ _ _v2844803 ++ ; if ( _ _ _v2844803 % 100 == 0 ) { await QB . autoLimit ( ) ; }
2022-06-23 13:43:19 +00:00
word = ( QB . func _UCase ( QB . arrayValue ( words , [ i ] ) . value ) ) ;
if ( word == "IF" ) {
ifIdx = i ;
} else if ( word == "THEN" ) {
thenIdx = i ;
} else if ( word == "ELSE" ) {
elseIdx = i ;
}
2022-06-24 15:26:19 +00:00
}
2022-06-23 13:43:19 +00:00
if ( thenIdx > 0 && thenIdx < wcount ) {
await sub _AddLine ( lineIndex , ( await func _Join ( words , 1 , thenIdx , " " ) ) ) ;
if ( elseIdx > 0 ) {
await sub _AddSubLines ( lineIndex , ( await func _Join ( words , thenIdx + 1 , elseIdx - 1 , " " ) ) ) ;
await sub _AddLine ( lineIndex , "Else" ) ;
await sub _AddSubLines ( lineIndex , ( await func _Join ( words , elseIdx + 1 , - 1 , " " ) ) ) ;
2022-03-14 20:49:12 +00:00
} else {
2022-06-23 13:43:19 +00:00
await sub _AddSubLines ( lineIndex , ( await func _Join ( words , thenIdx + 1 , - 1 , " " ) ) ) ;
2022-03-14 20:49:12 +00:00
}
2022-06-23 13:43:19 +00:00
await sub _AddLine ( lineIndex , "End If" ) ;
2022-03-14 20:49:12 +00:00
} else {
2022-06-23 13:43:19 +00:00
await sub _AddSubLines ( lineIndex , fline ) ;
2022-03-14 20:49:12 +00:00
}
2022-04-26 03:56:54 +00:00
return ReadLine ;
2022-03-14 20:49:12 +00:00
}
async function sub _AddSubLines ( lineIndex /*INTEGER*/ , fline /*STRING*/ ) {
if ( QB . halted ( ) ) { return ; }
2022-06-23 20:16:25 +00:00
var quoteDepth = 0 ; /* INTEGER */
2022-06-23 13:43:19 +00:00
quoteDepth = 0 ;
2022-06-23 20:16:25 +00:00
var i = 0 ; /* INTEGER */
2022-10-27 14:04:15 +00:00
var _ _ _v456492 = 0 ; for ( i = 1 ; i <= ( QB . func _Len ( fline ) ) ; i = i + 1 ) { if ( QB . halted ( ) ) { return ; } _ _ _v456492 ++ ; if ( _ _ _v456492 % 100 == 0 ) { await QB . autoLimit ( ) ; }
2022-06-23 20:16:25 +00:00
var c = '' ; /* STRING */
2022-06-23 13:43:19 +00:00
c = ( QB . func _Mid ( fline , i , 1 ) ) ;
if ( c == ( QB . func _Chr ( 34 ) ) ) {
if ( quoteDepth == 0 ) {
quoteDepth = 1 ;
2022-03-14 20:49:12 +00:00
} else {
2022-06-23 13:43:19 +00:00
quoteDepth = 0 ;
2022-03-14 20:49:12 +00:00
}
}
2022-06-23 13:43:19 +00:00
if ( quoteDepth == 0 && c == ":" ) {
await sub _AddLine ( lineIndex , ( QB . func _Left ( fline , i - 1 ) ) ) ;
fline = ( QB . func _Right ( fline , ( QB . func _Len ( fline ) ) - i ) ) ;
i = 0 ;
2022-02-16 17:40:03 +00:00
}
2022-06-24 15:26:19 +00:00
}
2022-06-23 13:43:19 +00:00
await sub _AddLine ( lineIndex , fline ) ;
2022-02-16 17:40:03 +00:00
}
async function sub _FindMethods ( ) {
if ( QB . halted ( ) ) { return ; }
2022-06-23 20:16:25 +00:00
var i = 0 ; /* INTEGER */
var pcount = 0 ; /* INTEGER */
var rawJS = 0 ; /* INTEGER */
2022-09-17 16:50:08 +00:00
var parts = QB . initArray ( [ { l : 0 , u : 0 } ] , '' ) ; /* STRING */
2022-10-27 14:04:15 +00:00
var _ _ _v2957728 = 0 ; for ( i = 1 ; i <= ( QB . func _UBound ( lines ) ) ; i = i + 1 ) { if ( QB . halted ( ) ) { return ; } _ _ _v2957728 ++ ; if ( _ _ _v2957728 % 100 == 0 ) { await QB . autoLimit ( ) ; }
2022-06-23 13:43:19 +00:00
pcount = ( await func _Split ( QB . arrayValue ( lines , [ i ] ) . value . text , " " , parts ) ) ;
2022-06-23 20:16:25 +00:00
var word = '' ; /* STRING */
2022-06-23 13:43:19 +00:00
word = ( QB . func _UCase ( QB . arrayValue ( parts , [ 1 ] ) . value ) ) ;
if ( word == "$IF" && pcount > 1 ) {
if ( ( QB . func _UCase ( QB . arrayValue ( parts , [ 2 ] ) . value ) ) == "JAVASCRIPT" ) {
rawJS = True ;
2022-04-26 03:56:54 +00:00
}
}
2022-06-23 13:43:19 +00:00
if ( word == "$END" && rawJS ) {
rawJS = False ;
2022-04-26 03:56:54 +00:00
}
if ( rawJS ) {
continue ;
}
2022-06-23 13:43:19 +00:00
if ( word == "FUNCTION" || word == "SUB" ) {
2022-06-23 20:16:25 +00:00
var mstr = '' ; /* STRING */
var argstr = '' ; /* STRING */
var pstart = 0 ; /* INTEGER */
var mname = '' ; /* STRING */
var pend = 0 ; /* SINGLE */
2022-06-23 13:43:19 +00:00
mstr = ( await func _Join ( parts , 2 , - 1 , " " ) ) ;
pstart = ( QB . func _InStr ( mstr , "(" ) ) ;
if ( pstart == 0 ) {
argstr = "" ;
mname = mstr ;
2022-06-17 21:06:58 +00:00
} else {
2022-06-23 13:43:19 +00:00
mname = ( QB . func _ _Trim ( ( QB . func _Left ( mstr , pstart - 1 ) ) ) ) ;
mstr = ( QB . func _Mid ( mstr , pstart + 1 ) ) ;
pend = ( QB . func _ _InStrRev ( mstr , ")" ) ) ;
argstr = ( QB . func _Left ( mstr , pend - 1 ) ) ;
2022-06-17 21:06:58 +00:00
}
2022-09-17 16:50:08 +00:00
var arga = QB . initArray ( [ { l : 0 , u : 0 } ] , '' ) ; /* STRING */
2022-06-23 20:16:25 +00:00
var m = { line : 0 , type : '' , returnType : '' , name : '' , uname : '' , argc : 0 , args : '' , jsname : '' , sync : 0 } ; /* METHOD */
2022-06-23 13:43:19 +00:00
m . line = i ;
m . type = word ;
m . name = mname ;
m . argc = ( await func _ListSplit ( argstr , arga ) ) ;
m . args = "" ;
2022-09-17 16:50:08 +00:00
var args = QB . initArray ( [ { l : 0 , u : 0 } ] , { name : '' , type : '' } ) ; /* ARGUMENT */
2022-06-23 13:43:19 +00:00
if ( ( QB . func _UBound ( arga ) ) > 0 ) {
2022-06-23 20:16:25 +00:00
var a = 0 ; /* INTEGER */
var args = '' ; /* STRING */
2022-06-23 13:43:19 +00:00
args = "" ;
2022-10-27 14:04:15 +00:00
var _ _ _v3820107 = 0 ; for ( a = 1 ; a <= m . argc ; a = a + 1 ) { if ( QB . halted ( ) ) { return ; } _ _ _v3820107 ++ ; if ( _ _ _v3820107 % 100 == 0 ) { await QB . autoLimit ( ) ; }
2022-09-17 16:50:08 +00:00
var aparts = QB . initArray ( [ { l : 0 , u : 0 } ] , '' ) ; /* STRING */
2022-06-23 20:16:25 +00:00
var apcount = 0 ; /* INTEGER */
var argname = '' ; /* STRING */
var isArray = '' ; /* STRING */
2022-06-23 13:43:19 +00:00
isArray = "false" ;
apcount = ( await func _Split ( QB . arrayValue ( arga , [ a ] ) . value , " " , aparts ) ) ;
argname = QB . arrayValue ( aparts , [ 1 ] ) . value ;
if ( ( await func _EndsWith ( argname , "()" ) ) ) {
isArray = "true" ;
argname = ( QB . func _Left ( argname , ( QB . func _Len ( argname ) ) - 2 ) ) ;
2022-02-16 17:40:03 +00:00
}
2022-06-23 13:43:19 +00:00
if ( apcount == 3 ) {
args = args + argname + ":" + ( QB . func _UCase ( QB . arrayValue ( aparts , [ 3 ] ) . value ) ) + ":" + isArray ;
2022-02-16 17:40:03 +00:00
} else {
2022-06-23 13:43:19 +00:00
args = args + argname + ":" + ( await func _DataTypeFromName ( QB . arrayValue ( aparts , [ 1 ] ) . value ) ) + ":" + isArray ;
2022-02-16 17:40:03 +00:00
}
2022-06-23 13:43:19 +00:00
if ( a != m . argc ) {
args = args + "," ;
2022-02-16 17:40:03 +00:00
}
2022-06-24 15:26:19 +00:00
}
2022-06-23 13:43:19 +00:00
m . args = args ;
2022-02-16 17:40:03 +00:00
}
2022-06-23 13:43:19 +00:00
await sub _AddMethod ( m , "" , True ) ;
2022-02-16 17:40:03 +00:00
}
2022-06-24 15:26:19 +00:00
}
2022-02-16 17:40:03 +00:00
}
2022-03-04 22:28:32 +00:00
async function func _Split ( sourceString /*STRING*/ , delimiter /*STRING*/ , results /*STRING*/ ) {
2022-02-16 17:40:03 +00:00
if ( QB . halted ( ) ) { return ; }
var Split = null ;
2022-06-23 20:16:25 +00:00
var cstr = '' ; /* STRING */
var p = 0 ; /* LONG */ var curpos = 0 ; /* LONG */ var arrpos = 0 ; /* LONG */ var dpos = 0 ; /* LONG */
2022-06-23 13:43:19 +00:00
cstr = sourceString ;
if ( delimiter == " " ) {
cstr = ( QB . func _RTrim ( ( QB . func _LTrim ( cstr ) ) ) ) ;
p = ( QB . func _InStr ( cstr , " " ) ) ;
2022-10-27 14:04:15 +00:00
var _ _ _v3009705 = 0 ; while ( p > 0 ) { if ( QB . halted ( ) ) { return ; } _ _ _v3009705 ++ ; if ( _ _ _v3009705 % 100 == 0 ) { await QB . autoLimit ( ) ; }
2022-06-23 13:43:19 +00:00
cstr = ( QB . func _Mid ( cstr , 1 , p - 1 ) ) + ( QB . func _Mid ( cstr , p + 1 ) ) ;
p = ( QB . func _InStr ( cstr , " " ) ) ;
}
}
curpos = 1 ;
arrpos = 0 ;
dpos = ( QB . func _InStr ( curpos , cstr , delimiter ) ) ;
2022-10-27 14:04:15 +00:00
var _ _ _v9485711 = 0 ; while ( ! ( dpos == 0 ) ) { if ( QB . halted ( ) ) { return ; } _ _ _v9485711 ++ ; if ( _ _ _v9485711 % 100 == 0 ) { await QB . autoLimit ( ) ; }
2022-06-23 13:43:19 +00:00
arrpos = arrpos + 1 ;
2022-09-17 16:50:08 +00:00
QB . resizeArray ( results , [ { l : 0 , u : arrpos } ] , '' , true ) ; /* STRING */
2022-06-23 13:43:19 +00:00
QB . arrayValue ( results , [ arrpos ] ) . value = ( QB . func _Mid ( cstr , curpos , dpos - curpos ) ) ;
curpos = dpos + ( QB . func _Len ( delimiter ) ) ;
dpos = ( QB . func _InStr ( curpos , cstr , delimiter ) ) ;
2022-02-16 17:40:03 +00:00
}
2022-06-23 13:43:19 +00:00
arrpos = arrpos + 1 ;
2022-09-17 16:50:08 +00:00
QB . resizeArray ( results , [ { l : 0 , u : arrpos } ] , '' , true ) ; /* STRING */
2022-06-23 13:43:19 +00:00
QB . arrayValue ( results , [ arrpos ] ) . value = ( QB . func _Mid ( cstr , curpos ) ) ;
Split = arrpos ;
2022-02-16 17:40:03 +00:00
return Split ;
}
2022-03-14 20:49:12 +00:00
async function func _SLSplit ( sourceString /*STRING*/ , results /*STRING*/ , escapeStrings /*INTEGER*/ ) {
2022-02-16 17:40:03 +00:00
if ( QB . halted ( ) ) { return ; }
var SLSplit = null ;
2022-06-23 20:16:25 +00:00
var cstr = '' ; /* STRING */
var p = 0 ; /* LONG */ var curpos = 0 ; /* LONG */ var arrpos = 0 ; /* LONG */ var dpos = 0 ; /* LONG */
2022-06-23 13:43:19 +00:00
cstr = ( QB . func _ _Trim ( sourceString ) ) ;
2022-09-17 16:50:08 +00:00
QB . resizeArray ( results , [ { l : 0 , u : 0 } ] , '' , false ) ; /* STRING */
2022-06-23 20:16:25 +00:00
var lastChar = '' ; /* STRING */
var quoteMode = 0 ; /* INTEGER */
var result = '' ; /* STRING */
var count = 0 ; /* INTEGER */
var i = 0 ; /* INTEGER */
2022-10-27 14:04:15 +00:00
var _ _ _v9798294 = 0 ; for ( i = 1 ; i <= ( QB . func _Len ( cstr ) ) ; i = i + 1 ) { if ( QB . halted ( ) ) { return ; } _ _ _v9798294 ++ ; if ( _ _ _v9798294 % 100 == 0 ) { await QB . autoLimit ( ) ; }
2022-06-23 20:16:25 +00:00
var c = '' ; /* STRING */ var c2 = '' ; /* STRING */
2022-06-23 13:43:19 +00:00
c = ( QB . func _Mid ( cstr , i , 1 ) ) ;
c2 = ( QB . func _Mid ( cstr , i , 2 ) ) ;
2022-06-23 20:16:25 +00:00
var oplen = 0 ; /* INTEGER */
2022-06-23 13:43:19 +00:00
oplen = ( await func _FindOperator ( c , c2 ) ) ;
if ( c == ( QB . func _Chr ( 34 ) ) ) {
quoteMode = ! quoteMode ;
result = result + c ;
2022-03-14 20:49:12 +00:00
if ( ! quoteMode && escapeStrings ) {
2022-06-23 13:43:19 +00:00
result = ( await func _Replace ( result , "\\" , "\\\\" ) ) ;
}
} else if ( c == " " ) {
if ( quoteMode ) {
result = result + c ;
} else if ( lastChar == " " ) {
} else {
count = ( QB . func _UBound ( results ) ) + 1 ;
2022-09-17 16:50:08 +00:00
QB . resizeArray ( results , [ { l : 0 , u : count } ] , '' , true ) ; /* STRING */
2022-06-23 13:43:19 +00:00
QB . arrayValue ( results , [ count ] ) . value = result ;
result = "" ;
2022-02-16 17:40:03 +00:00
}
2022-06-23 13:43:19 +00:00
} else if ( oplen ) {
2022-02-16 17:40:03 +00:00
if ( quoteMode ) {
2022-06-23 13:43:19 +00:00
if ( oplen == 2 ) {
result = result + c2 ;
i = i + 1 ;
} else {
result = result + c ;
}
2022-02-16 17:40:03 +00:00
} else {
2022-06-23 13:43:19 +00:00
if ( result != "" ) {
count = ( QB . func _UBound ( results ) ) + 1 ;
2022-09-17 16:50:08 +00:00
QB . resizeArray ( results , [ { l : 0 , u : count } ] , '' , true ) ; /* STRING */
2022-06-23 13:43:19 +00:00
QB . arrayValue ( results , [ count ] ) . value = result ;
}
count = ( QB . func _UBound ( results ) ) + 1 ;
2022-09-17 16:50:08 +00:00
QB . resizeArray ( results , [ { l : 0 , u : count } ] , '' , true ) ; /* STRING */
2022-06-23 13:43:19 +00:00
if ( oplen == 2 ) {
QB . arrayValue ( results , [ count ] ) . value = c2 ;
i = i + 1 ;
} else {
QB . arrayValue ( results , [ count ] ) . value = c ;
}
result = "" ;
2022-02-16 17:40:03 +00:00
}
} else {
2022-06-23 13:43:19 +00:00
result = result + c ;
2022-02-16 17:40:03 +00:00
}
2022-06-23 13:43:19 +00:00
lastChar = c ;
2022-06-24 15:26:19 +00:00
}
2022-06-23 13:43:19 +00:00
if ( result != "" ) {
count = ( QB . func _UBound ( results ) ) + 1 ;
2022-09-17 16:50:08 +00:00
QB . resizeArray ( results , [ { l : 0 , u : count } ] , '' , true ) ; /* STRING */
2022-06-23 13:43:19 +00:00
QB . arrayValue ( results , [ count ] ) . value = result ;
2022-02-16 17:40:03 +00:00
}
2022-06-23 13:43:19 +00:00
SLSplit = ( QB . func _UBound ( results ) ) ;
2022-02-16 17:40:03 +00:00
return SLSplit ;
}
2022-06-23 13:43:19 +00:00
async function func _FindOperator ( c /*STRING*/ , c2 /*STRING*/ ) {
if ( QB . halted ( ) ) { return ; }
var FindOperator = null ;
if ( c2 == ">=" ) {
FindOperator = 2 ;
} else if ( c2 == "<=" ) {
FindOperator = 2 ;
} else if ( c2 == "<>" ) {
FindOperator = 2 ;
} else if ( c == "=" ) {
FindOperator = 1 ;
} else if ( c == "+" ) {
FindOperator = 1 ;
} else if ( c == "-" ) {
FindOperator = 1 ;
} else if ( c == "/" ) {
FindOperator = 1 ;
} else if ( c == "\\" ) {
FindOperator = 1 ;
} else if ( c == "*" ) {
FindOperator = 1 ;
} else if ( c == "^" ) {
FindOperator = 1 ;
} else if ( c == "," ) {
FindOperator = 1 ;
} else {
FindOperator = 0 ;
}
return FindOperator ;
}
2022-03-04 22:28:32 +00:00
async function func _SLSplit2 ( sourceString /*STRING*/ , results /*STRING*/ ) {
if ( QB . halted ( ) ) { return ; }
var SLSplit2 = null ;
2022-06-23 20:16:25 +00:00
var cstr = '' ; /* STRING */
var p = 0 ; /* LONG */ var curpos = 0 ; /* LONG */ var arrpos = 0 ; /* LONG */ var dpos = 0 ; /* LONG */
2022-06-23 13:43:19 +00:00
cstr = ( QB . func _ _Trim ( sourceString ) ) ;
2022-09-17 16:50:08 +00:00
QB . resizeArray ( results , [ { l : 0 , u : 0 } ] , '' , false ) ; /* STRING */
2022-06-23 20:16:25 +00:00
var lastChar = '' ; /* STRING */
var quoteMode = 0 ; /* INTEGER */
var result = '' ; /* STRING */
var paren = 0 ; /* INTEGER */
var count = 0 ; /* INTEGER */
var i = 0 ; /* INTEGER */
2022-10-27 14:04:15 +00:00
var _ _ _v4013744 = 0 ; for ( i = 1 ; i <= ( QB . func _Len ( cstr ) ) ; i = i + 1 ) { if ( QB . halted ( ) ) { return ; } _ _ _v4013744 ++ ; if ( _ _ _v4013744 % 100 == 0 ) { await QB . autoLimit ( ) ; }
2022-06-23 20:16:25 +00:00
var c = '' ; /* STRING */
2022-06-23 13:43:19 +00:00
c = ( QB . func _Mid ( cstr , i , 1 ) ) ;
if ( c == ( QB . func _Chr ( 34 ) ) ) {
quoteMode = ! quoteMode ;
result = result + c ;
2022-03-04 22:28:32 +00:00
} else if ( quoteMode ) {
2022-06-23 13:43:19 +00:00
result = result + c ;
} else if ( c == "(" ) {
paren = paren + 1 ;
result = result + c ;
} else if ( c == ")" ) {
paren = paren - 1 ;
result = result + c ;
} else if ( paren > 0 ) {
result = result + c ;
} else if ( c == " " ) {
if ( lastChar == " " ) {
2022-03-04 22:28:32 +00:00
} else {
2022-06-23 13:43:19 +00:00
count = ( QB . func _UBound ( results ) ) + 1 ;
2022-09-17 16:50:08 +00:00
QB . resizeArray ( results , [ { l : 0 , u : count } ] , '' , true ) ; /* STRING */
2022-06-23 13:43:19 +00:00
QB . arrayValue ( results , [ count ] ) . value = result ;
result = "" ;
2022-03-04 22:28:32 +00:00
}
} else {
2022-06-23 13:43:19 +00:00
result = result + c ;
2022-03-04 22:28:32 +00:00
}
2022-06-23 13:43:19 +00:00
lastChar = c ;
2022-06-24 15:26:19 +00:00
}
2022-06-23 13:43:19 +00:00
if ( result != "" ) {
count = ( QB . func _UBound ( results ) ) + 1 ;
2022-09-17 16:50:08 +00:00
QB . resizeArray ( results , [ { l : 0 , u : count } ] , '' , true ) ; /* STRING */
2022-06-23 13:43:19 +00:00
QB . arrayValue ( results , [ count ] ) . value = result ;
2022-03-04 22:28:32 +00:00
}
2022-06-23 13:43:19 +00:00
SLSplit2 = ( QB . func _UBound ( results ) ) ;
2022-03-04 22:28:32 +00:00
return SLSplit2 ;
}
async function func _ListSplit ( sourceString /*STRING*/ , results /*STRING*/ ) {
2022-02-16 17:40:03 +00:00
if ( QB . halted ( ) ) { return ; }
var ListSplit = null ;
2022-06-23 20:16:25 +00:00
var cstr = '' ; /* STRING */
var p = 0 ; /* LONG */ var curpos = 0 ; /* LONG */ var arrpos = 0 ; /* LONG */ var dpos = 0 ; /* LONG */
2022-06-23 13:43:19 +00:00
cstr = ( QB . func _ _Trim ( sourceString ) ) ;
2022-09-17 16:50:08 +00:00
QB . resizeArray ( results , [ { l : 0 , u : 0 } ] , '' , false ) ; /* STRING */
2022-06-23 20:16:25 +00:00
var quoteMode = 0 ; /* INTEGER */
var result = '' ; /* STRING */
var count = 0 ; /* INTEGER */
var paren = 0 ; /* INTEGER */
var i = 0 ; /* INTEGER */
2022-10-27 14:04:15 +00:00
var _ _ _v2782800 = 0 ; for ( i = 1 ; i <= ( QB . func _Len ( cstr ) ) ; i = i + 1 ) { if ( QB . halted ( ) ) { return ; } _ _ _v2782800 ++ ; if ( _ _ _v2782800 % 100 == 0 ) { await QB . autoLimit ( ) ; }
2022-06-23 20:16:25 +00:00
var c = '' ; /* STRING */
2022-06-23 13:43:19 +00:00
c = ( QB . func _Mid ( cstr , i , 1 ) ) ;
if ( c == ( QB . func _Chr ( 34 ) ) ) {
quoteMode = ! quoteMode ;
result = result + c ;
2022-02-16 17:40:03 +00:00
} else if ( quoteMode ) {
2022-06-23 13:43:19 +00:00
result = result + c ;
} else if ( c == "(" ) {
paren = paren + 1 ;
result = result + c ;
} else if ( c == ")" ) {
paren = paren - 1 ;
result = result + c ;
} else if ( paren > 0 ) {
result = result + c ;
} else if ( c == "," ) {
count = ( QB . func _UBound ( results ) ) + 1 ;
2022-09-17 16:50:08 +00:00
QB . resizeArray ( results , [ { l : 0 , u : count } ] , '' , true ) ; /* STRING */
2022-06-23 13:43:19 +00:00
QB . arrayValue ( results , [ count ] ) . value = result ;
result = "" ;
2022-02-16 17:40:03 +00:00
} else {
2022-06-23 13:43:19 +00:00
result = result + c ;
2022-02-16 17:40:03 +00:00
}
2022-06-24 15:26:19 +00:00
}
2022-06-23 13:43:19 +00:00
if ( result != "" ) {
count = ( QB . func _UBound ( results ) ) + 1 ;
2022-09-17 16:50:08 +00:00
QB . resizeArray ( results , [ { l : 0 , u : count } ] , '' , true ) ; /* STRING */
2022-06-23 13:43:19 +00:00
QB . arrayValue ( results , [ count ] ) . value = result ;
2022-02-16 17:40:03 +00:00
}
2022-06-23 13:43:19 +00:00
ListSplit = ( QB . func _UBound ( results ) ) ;
2022-02-16 17:40:03 +00:00
return ListSplit ;
}
2022-03-04 22:28:32 +00:00
async function func _PrintSplit ( sourceString /*STRING*/ , results /*STRING*/ ) {
2022-02-16 17:40:03 +00:00
if ( QB . halted ( ) ) { return ; }
var PrintSplit = null ;
2022-06-23 20:16:25 +00:00
var cstr = '' ; /* STRING */
var p = 0 ; /* LONG */ var curpos = 0 ; /* LONG */ var arrpos = 0 ; /* LONG */ var dpos = 0 ; /* LONG */
2022-06-23 13:43:19 +00:00
cstr = ( QB . func _ _Trim ( sourceString ) ) ;
2022-09-17 16:50:08 +00:00
QB . resizeArray ( results , [ { l : 0 , u : 0 } ] , '' , false ) ; /* STRING */
2022-06-23 20:16:25 +00:00
var quoteMode = 0 ; /* INTEGER */
var result = '' ; /* STRING */
var count = 0 ; /* INTEGER */
var paren = 0 ; /* INTEGER */
var i = 0 ; /* INTEGER */
2022-10-27 14:04:15 +00:00
var _ _ _v1604415 = 0 ; for ( i = 1 ; i <= ( QB . func _Len ( cstr ) ) ; i = i + 1 ) { if ( QB . halted ( ) ) { return ; } _ _ _v1604415 ++ ; if ( _ _ _v1604415 % 100 == 0 ) { await QB . autoLimit ( ) ; }
2022-06-23 20:16:25 +00:00
var c = '' ; /* STRING */
2022-06-23 13:43:19 +00:00
c = ( QB . func _Mid ( cstr , i , 1 ) ) ;
if ( c == ( QB . func _Chr ( 34 ) ) ) {
quoteMode = ! quoteMode ;
result = result + c ;
2022-02-16 17:40:03 +00:00
} else if ( quoteMode ) {
2022-06-23 13:43:19 +00:00
result = result + c ;
} else if ( c == "(" ) {
paren = paren + 1 ;
result = result + c ;
} else if ( c == ")" ) {
paren = paren - 1 ;
result = result + c ;
} else if ( paren > 0 ) {
result = result + c ;
} else if ( c == "," || c == ";" ) {
if ( result != "" ) {
count = ( QB . func _UBound ( results ) ) + 1 ;
2022-09-17 16:50:08 +00:00
QB . resizeArray ( results , [ { l : 0 , u : count } ] , '' , true ) ; /* STRING */
2022-06-23 13:43:19 +00:00
QB . arrayValue ( results , [ count ] ) . value = result ;
result = "" ;
2022-02-16 17:40:03 +00:00
}
2022-06-23 13:43:19 +00:00
count = ( QB . func _UBound ( results ) ) + 1 ;
2022-09-17 16:50:08 +00:00
QB . resizeArray ( results , [ { l : 0 , u : count } ] , '' , true ) ; /* STRING */
2022-06-23 13:43:19 +00:00
QB . arrayValue ( results , [ count ] ) . value = c ;
2022-02-16 17:40:03 +00:00
} else {
2022-06-23 13:43:19 +00:00
result = result + c ;
2022-02-16 17:40:03 +00:00
}
2022-06-24 15:26:19 +00:00
}
2022-06-23 13:43:19 +00:00
if ( result != "" ) {
count = ( QB . func _UBound ( results ) ) + 1 ;
2022-09-17 16:50:08 +00:00
QB . resizeArray ( results , [ { l : 0 , u : count } ] , '' , true ) ; /* STRING */
2022-06-23 13:43:19 +00:00
QB . arrayValue ( results , [ count ] ) . value = result ;
2022-02-16 17:40:03 +00:00
}
2022-06-23 13:43:19 +00:00
PrintSplit = ( QB . func _UBound ( results ) ) ;
2022-02-16 17:40:03 +00:00
return PrintSplit ;
}
async function sub _PrintMethods ( ) {
if ( QB . halted ( ) ) { return ; }
await QB . sub _Print ( [ "" ] ) ;
await QB . sub _Print ( [ "Methods" ] ) ;
await QB . sub _Print ( [ "------------------------------------------------------------" ] ) ;
2022-06-23 20:16:25 +00:00
var i = 0 ; /* INTEGER */
2022-10-27 14:04:15 +00:00
var _ _ _v1628216 = 0 ; for ( i = 1 ; i <= ( QB . func _UBound ( methods ) ) ; i = i + 1 ) { if ( QB . halted ( ) ) { return ; } _ _ _v1628216 ++ ; if ( _ _ _v1628216 % 100 == 0 ) { await QB . autoLimit ( ) ; }
2022-06-23 20:16:25 +00:00
var m = { line : 0 , type : '' , returnType : '' , name : '' , uname : '' , argc : 0 , args : '' , jsname : '' , sync : 0 } ; /* METHOD */
2022-06-23 13:43:19 +00:00
m = QB . arrayValue ( methods , [ i ] ) . value ;
await QB . sub _Print ( [ ( QB . func _Str ( m . line ) ) + ": " + m . type + " - " + m . name + " [" + m . jsname + "] - " + m . returnType + " - " + m . args ] ) ;
2022-06-24 15:26:19 +00:00
}
2022-02-16 17:40:03 +00:00
}
async function sub _PrintTypes ( ) {
if ( QB . halted ( ) ) { return ; }
await QB . sub _Print ( [ "" ] ) ;
await QB . sub _Print ( [ "Types" ] ) ;
await QB . sub _Print ( [ "------------------------------------------------------------" ] ) ;
2022-06-23 20:16:25 +00:00
var i = 0 ; /* INTEGER */
2022-10-27 14:04:15 +00:00
var _ _ _v6465872 = 0 ; for ( i = 1 ; i <= ( QB . func _UBound ( types ) ) ; i = i + 1 ) { if ( QB . halted ( ) ) { return ; } _ _ _v6465872 ++ ; if ( _ _ _v6465872 % 100 == 0 ) { await QB . autoLimit ( ) ; }
2022-06-23 20:16:25 +00:00
var t = { line : 0 , name : '' , argc : 0 , args : '' } ; /* QBTYPE */
2022-06-23 13:43:19 +00:00
t = QB . arrayValue ( types , [ i ] ) . value ;
await QB . sub _Print ( [ ( QB . func _Str ( t . line ) ) + ": " + t . name ] ) ;
2022-06-23 20:16:25 +00:00
var v = 0 ; /* INTEGER */
2022-10-27 14:04:15 +00:00
var _ _ _v4100732 = 0 ; for ( v = 1 ; v <= ( QB . func _UBound ( typeVars ) ) ; v = v + 1 ) { if ( QB . halted ( ) ) { return ; } _ _ _v4100732 ++ ; if ( _ _ _v4100732 % 100 == 0 ) { await QB . autoLimit ( ) ; }
2022-06-23 13:43:19 +00:00
if ( QB . arrayValue ( typeVars , [ i ] ) . value . typeId == i ) {
await QB . sub _Print ( [ " -> " + QB . arrayValue ( typeVars , [ v ] ) . value . name + ": " + QB . arrayValue ( typeVars , [ v ] ) . value . type ] ) ;
2022-02-16 17:40:03 +00:00
}
2022-06-24 15:26:19 +00:00
}
}
2022-02-16 17:40:03 +00:00
}
2022-04-18 16:27:23 +00:00
async function func _CopyMethod ( fromMethod /*METHOD*/ , toMethod /*METHOD*/ ) {
if ( QB . halted ( ) ) { return ; }
var CopyMethod = null ;
2022-06-23 13:43:19 +00:00
toMethod . type = fromMethod . type ;
toMethod . name = fromMethod . name ;
2022-04-18 16:27:23 +00:00
return CopyMethod ;
}
2022-03-04 22:28:32 +00:00
async function sub _AddMethod ( m /*METHOD*/ , prefix /*STRING*/ , sync /*INTEGER*/ ) {
2022-02-16 17:40:03 +00:00
if ( QB . halted ( ) ) { return ; }
2022-06-23 20:16:25 +00:00
var mcount = 0 ; /* SINGLE */
2022-06-23 13:43:19 +00:00
mcount = ( QB . func _UBound ( methods ) ) + 1 ;
2022-09-17 16:50:08 +00:00
QB . resizeArray ( methods , [ { l : 0 , u : mcount } ] , { line : 0 , type : '' , returnType : '' , name : '' , uname : '' , argc : 0 , args : '' , jsname : '' , sync : 0 } , true ) ; /* METHOD */
2022-06-23 13:43:19 +00:00
if ( m . type == "FUNCTION" ) {
m . returnType = ( await func _DataTypeFromName ( m . name ) ) ;
2022-02-16 17:40:03 +00:00
}
2022-06-23 13:43:19 +00:00
m . uname = ( QB . func _UCase ( ( await func _RemoveSuffix ( m . name ) ) ) ) ;
m . jsname = ( await func _MethodJS ( m , prefix ) ) ;
m . sync = sync ;
QB . arrayValue ( methods , [ mcount ] ) . value = m ;
2022-02-16 17:40:03 +00:00
}
2022-04-18 16:27:23 +00:00
async function sub _AddExportMethod ( m /*METHOD*/ , prefix /*STRING*/ , sync /*INTEGER*/ ) {
if ( QB . halted ( ) ) { return ; }
2022-06-23 20:16:25 +00:00
var mcount = 0 ; /* SINGLE */
2022-06-23 13:43:19 +00:00
mcount = ( QB . func _UBound ( exportMethods ) ) + 1 ;
2022-09-17 16:50:08 +00:00
QB . resizeArray ( exportMethods , [ { l : 0 , u : mcount } ] , { line : 0 , type : '' , returnType : '' , name : '' , uname : '' , argc : 0 , args : '' , jsname : '' , sync : 0 } , true ) ; /* METHOD */
2022-06-23 13:43:19 +00:00
if ( m . type == "FUNCTION" ) {
m . returnType = ( await func _DataTypeFromName ( m . name ) ) ;
2022-04-18 16:27:23 +00:00
}
2022-06-23 13:43:19 +00:00
m . uname = ( QB . func _UCase ( ( await func _RemoveSuffix ( m . name ) ) ) ) ;
m . jsname = ( await func _MethodJS ( m , prefix ) ) ;
m . uname = ( QB . func _UCase ( prefix ) ) + m . uname ;
m . name = prefix + m . name ;
m . sync = sync ;
QB . arrayValue ( exportMethods , [ mcount ] ) . value = m ;
2022-04-18 16:27:23 +00:00
}
2022-04-30 03:24:36 +00:00
async function sub _AddExportConst ( vname /*STRING*/ ) {
if ( QB . halted ( ) ) { return ; }
2022-06-23 20:16:25 +00:00
var v = { type : '' , name : '' , jsname : '' , isConst : 0 , isArray : 0 , arraySize : 0 , typeId : 0 } ; /* VARIABLE */
2022-06-23 13:43:19 +00:00
v . type = "CONST" ;
v . name = vname ;
v . isConst = True ;
await sub _AddVariable ( v , exportConsts ) ;
2022-04-30 03:24:36 +00:00
}
2022-03-04 22:28:32 +00:00
async function sub _AddGXMethod ( mtype /*STRING*/ , mname /*STRING*/ , sync /*INTEGER*/ ) {
2022-02-16 17:40:03 +00:00
if ( QB . halted ( ) ) { return ; }
2022-06-23 20:16:25 +00:00
var mcount = 0 ; /* SINGLE */
2022-06-23 13:43:19 +00:00
mcount = ( QB . func _UBound ( methods ) ) + 1 ;
2022-09-17 16:50:08 +00:00
QB . resizeArray ( methods , [ { l : 0 , u : mcount } ] , { line : 0 , type : '' , returnType : '' , name : '' , uname : '' , argc : 0 , args : '' , jsname : '' , sync : 0 } , true ) ; /* METHOD */
2022-06-23 20:16:25 +00:00
var m = { line : 0 , type : '' , returnType : '' , name : '' , uname : '' , argc : 0 , args : '' , jsname : '' , sync : 0 } ; /* METHOD */
2022-06-23 13:43:19 +00:00
m . type = mtype ;
m . name = mname ;
m . uname = ( QB . func _UCase ( m . name ) ) ;
m . sync = sync ;
m . jsname = ( await func _GXMethodJS ( ( await func _RemoveSuffix ( mname ) ) ) ) ;
if ( mtype == "FUNCTION" ) {
m . returnType = ( await func _DataTypeFromName ( mname ) ) ;
2022-02-16 17:40:03 +00:00
}
2022-06-23 13:43:19 +00:00
QB . arrayValue ( methods , [ mcount ] ) . value = m ;
2022-02-16 17:40:03 +00:00
}
2022-03-04 22:28:32 +00:00
async function sub _AddQBMethod ( mtype /*STRING*/ , mname /*STRING*/ , sync /*INTEGER*/ ) {
2022-02-16 17:40:03 +00:00
if ( QB . halted ( ) ) { return ; }
2022-06-23 20:16:25 +00:00
var m = { line : 0 , type : '' , returnType : '' , name : '' , uname : '' , argc : 0 , args : '' , jsname : '' , sync : 0 } ; /* METHOD */
2022-06-23 13:43:19 +00:00
m . type = mtype ;
m . name = mname ;
await sub _AddMethod ( m , "QB." , sync ) ;
2022-02-16 17:40:03 +00:00
}
2022-10-27 14:04:15 +00:00
async function sub _AddNativeMethod ( mtype /*STRING*/ , mname /*STRING*/ , jsname /*STRING*/ , sync /*INTEGER*/ ) {
if ( QB . halted ( ) ) { return ; }
var m = { line : 0 , type : '' , returnType : '' , name : '' , uname : '' , argc : 0 , args : '' , jsname : '' , sync : 0 } ; /* METHOD */
m . type = mtype ;
m . name = mname ;
m . uname = ( QB . func _UCase ( m . name ) ) ;
m . jsname = jsname ;
m . sync = sync ;
var mcount = 0 ; /* SINGLE */
mcount = ( QB . func _UBound ( methods ) ) + 1 ;
QB . resizeArray ( methods , [ { l : 0 , u : mcount } ] , { line : 0 , type : '' , returnType : '' , name : '' , uname : '' , argc : 0 , args : '' , jsname : '' , sync : 0 } , true ) ; /* METHOD */
QB . arrayValue ( methods , [ mcount ] ) . value = m ;
}
2022-02-16 17:40:03 +00:00
async function sub _AddLine ( lineIndex /*INTEGER*/ , fline /*STRING*/ ) {
if ( QB . halted ( ) ) { return ; }
2022-06-23 13:43:19 +00:00
await sub _ _ _AddLine ( lineIndex , fline ) ;
2022-02-16 17:40:03 +00:00
}
async function sub _ _ _AddLine ( lineIndex /*INTEGER*/ , fline /*STRING*/ ) {
if ( QB . halted ( ) ) { return ; }
2022-06-23 20:16:25 +00:00
var lcount = 0 ; /* INTEGER */
2022-06-23 13:43:19 +00:00
lcount = ( QB . func _UBound ( lines ) ) + 1 ;
2022-09-17 16:50:08 +00:00
QB . resizeArray ( lines , [ { l : 0 , u : lcount } ] , { line : 0 , text : '' } , true ) ; /* CODELINE */
2022-06-23 13:43:19 +00:00
QB . arrayValue ( lines , [ lcount ] ) . value . line = lineIndex ;
QB . arrayValue ( lines , [ lcount ] ) . value . text = fline ;
2022-02-16 17:40:03 +00:00
}
async function sub _AddJSLine ( sourceLine /*INTEGER*/ , jsline /*STRING*/ ) {
if ( QB . halted ( ) ) { return ; }
2022-06-23 20:16:25 +00:00
var lcount = 0 ; /* INTEGER */
2022-06-23 13:43:19 +00:00
lcount = ( QB . func _UBound ( jsLines ) ) + 1 ;
2022-09-17 16:50:08 +00:00
QB . resizeArray ( jsLines , [ { l : 0 , u : lcount } ] , { line : 0 , text : '' } , true ) ; /* CODELINE */
2022-06-23 13:43:19 +00:00
QB . arrayValue ( jsLines , [ lcount ] ) . value . line = sourceLine ;
QB . arrayValue ( jsLines , [ lcount ] ) . value . text = jsline ;
2022-02-16 17:40:03 +00:00
}
async function sub _AddWarning ( sourceLine /*INTEGER*/ , msgText /*STRING*/ ) {
if ( QB . halted ( ) ) { return ; }
2022-06-23 20:16:25 +00:00
var lcount = 0 ; /* INTEGER */
2022-06-23 13:43:19 +00:00
lcount = ( QB . func _UBound ( warnings ) ) + 1 ;
2022-09-17 16:50:08 +00:00
QB . resizeArray ( warnings , [ { l : 0 , u : lcount } ] , { line : 0 , text : '' } , true ) ; /* CODELINE */
2022-06-23 20:16:25 +00:00
var l = 0 ; /* INTEGER */
2022-06-23 13:43:19 +00:00
if ( ( sourceLine > 0 ) ) {
l = QB . arrayValue ( lines , [ sourceLine ] ) . value . line ;
2022-02-16 17:40:03 +00:00
}
2022-06-23 13:43:19 +00:00
QB . arrayValue ( warnings , [ lcount ] ) . value . line = l ;
QB . arrayValue ( warnings , [ lcount ] ) . value . text = msgText ;
2022-02-16 17:40:03 +00:00
}
async function sub _AddConst ( vname /*STRING*/ ) {
if ( QB . halted ( ) ) { return ; }
2022-06-23 20:16:25 +00:00
var v = { type : '' , name : '' , jsname : '' , isConst : 0 , isArray : 0 , arraySize : 0 , typeId : 0 } ; /* VARIABLE */
2022-06-23 13:43:19 +00:00
v . type = "CONST" ;
v . name = vname ;
v . isConst = True ;
await sub _AddVariable ( v , globalVars ) ;
2022-02-16 17:40:03 +00:00
}
async function sub _AddGXConst ( vname /*STRING*/ ) {
if ( QB . halted ( ) ) { return ; }
2022-06-23 20:16:25 +00:00
var v = { type : '' , name : '' , jsname : '' , isConst : 0 , isArray : 0 , arraySize : 0 , typeId : 0 } ; /* VARIABLE */
2022-06-23 13:43:19 +00:00
v . type = "CONST" ;
v . name = vname ;
if ( vname == "GX_TRUE" ) {
v . jsname = "true" ;
} else if ( vname == "GX_FALSE" ) {
v . jsname = "false" ;
2022-02-16 17:40:03 +00:00
} else {
2022-06-23 20:16:25 +00:00
var jsname = '' ; /* STRING */
2022-06-23 13:43:19 +00:00
jsname = ( QB . func _Mid ( vname , 3 , ( QB . func _Len ( vname ) ) - 2 ) ) ;
if ( ( QB . func _Left ( jsname , 1 ) ) == "_" ) {
jsname = ( QB . func _Right ( jsname , ( QB . func _Len ( jsname ) ) - 1 ) ) ;
2022-02-16 17:40:03 +00:00
}
2022-06-23 13:43:19 +00:00
v . jsname = "GX." + jsname ;
2022-02-16 17:40:03 +00:00
}
2022-06-23 13:43:19 +00:00
v . isConst = True ;
await sub _AddVariable ( v , globalVars ) ;
2022-03-30 22:37:36 +00:00
}
async function sub _AddQBConst ( vname /*STRING*/ ) {
if ( QB . halted ( ) ) { return ; }
2022-06-23 20:16:25 +00:00
var v = { type : '' , name : '' , jsname : '' , isConst : 0 , isArray : 0 , arraySize : 0 , typeId : 0 } ; /* VARIABLE */
2022-06-23 13:43:19 +00:00
v . type = "CONST" ;
v . name = vname ;
v . jsname = "QB." + vname ;
v . isConst = True ;
await sub _AddVariable ( v , globalVars ) ;
2022-02-16 17:40:03 +00:00
}
async function sub _AddGlobal ( vname /*STRING*/ , vtype /*STRING*/ , arraySize /*INTEGER*/ ) {
if ( QB . halted ( ) ) { return ; }
2022-06-23 20:16:25 +00:00
var v = { type : '' , name : '' , jsname : '' , isConst : 0 , isArray : 0 , arraySize : 0 , typeId : 0 } ; /* VARIABLE */
2022-06-23 13:43:19 +00:00
v . type = vtype ;
v . name = vname ;
v . isArray = arraySize > - 1 ;
v . arraySize = arraySize ;
await sub _AddVariable ( v , globalVars ) ;
2022-02-16 17:40:03 +00:00
}
async function sub _AddLocal ( vname /*STRING*/ , vtype /*STRING*/ , arraySize /*INTEGER*/ ) {
if ( QB . halted ( ) ) { return ; }
2022-06-23 20:16:25 +00:00
var v = { type : '' , name : '' , jsname : '' , isConst : 0 , isArray : 0 , arraySize : 0 , typeId : 0 } ; /* VARIABLE */
2022-06-23 13:43:19 +00:00
v . type = vtype ;
v . name = vname ;
v . isArray = arraySize > - 1 ;
v . arraySize = arraySize ;
await sub _AddVariable ( v , localVars ) ;
2022-02-16 17:40:03 +00:00
}
async function sub _AddVariable ( bvar /*VARIABLE*/ , vlist /*VARIABLE*/ ) {
if ( QB . halted ( ) ) { return ; }
2022-06-23 20:16:25 +00:00
var vcount = 0 ; /* SINGLE */
2022-06-23 13:43:19 +00:00
vcount = ( QB . func _UBound ( vlist ) ) + 1 ;
2022-09-17 16:50:08 +00:00
QB . resizeArray ( vlist , [ { l : 0 , u : vcount } ] , { type : '' , name : '' , jsname : '' , isConst : 0 , isArray : 0 , arraySize : 0 , typeId : 0 } , true ) ; /* VARIABLE */
2022-06-23 20:16:25 +00:00
var nvar = { type : '' , name : '' , jsname : '' , isConst : 0 , isArray : 0 , arraySize : 0 , typeId : 0 } ; /* VARIABLE */
2022-06-23 13:43:19 +00:00
nvar . type = bvar . type ;
nvar . name = bvar . name ;
nvar . jsname = bvar . jsname ;
nvar . isConst = bvar . isConst ;
nvar . isArray = bvar . isArray ;
nvar . arraySize = bvar . arraySize ;
nvar . typeId = bvar . typeId ;
if ( nvar . jsname == "" ) {
nvar . jsname = ( await func _RemoveSuffix ( nvar . name ) ) ;
}
QB . arrayValue ( vlist , [ vcount ] ) . value = nvar ;
2022-02-16 17:40:03 +00:00
}
async function sub _AddType ( t /*QBTYPE*/ ) {
if ( QB . halted ( ) ) { return ; }
2022-06-23 20:16:25 +00:00
var tcount = 0 ; /* SINGLE */
2022-06-23 13:43:19 +00:00
tcount = ( QB . func _UBound ( types ) ) + 1 ;
2022-09-17 16:50:08 +00:00
QB . resizeArray ( types , [ { l : 0 , u : tcount } ] , { line : 0 , name : '' , argc : 0 , args : '' } , true ) ; /* QBTYPE */
2022-06-23 13:43:19 +00:00
QB . arrayValue ( types , [ tcount ] ) . value = t ;
2022-02-16 17:40:03 +00:00
}
async function sub _AddSystemType ( tname /*STRING*/ , args /*STRING*/ ) {
if ( QB . halted ( ) ) { return ; }
2022-06-23 20:16:25 +00:00
var t = { line : 0 , name : '' , argc : 0 , args : '' } ; /* QBTYPE */
2022-06-23 13:43:19 +00:00
t . name = tname ;
2022-03-30 22:37:36 +00:00
await sub _AddType ( t ) ;
2022-06-23 20:16:25 +00:00
var typeId = 0 ; /* INTEGER */
2022-06-23 13:43:19 +00:00
typeId = ( QB . func _UBound ( types ) ) ;
2022-06-23 20:16:25 +00:00
var count = 0 ; /* INTEGER */
2022-09-17 16:50:08 +00:00
var pairs = QB . initArray ( [ { l : 0 , u : 0 } ] , '' ) ; /* STRING */
2022-06-23 13:43:19 +00:00
count = ( await func _Split ( args , "," , pairs ) ) ;
2022-06-23 20:16:25 +00:00
var i = 0 ; /* INTEGER */
2022-10-27 14:04:15 +00:00
var _ _ _v4127668 = 0 ; for ( i = 1 ; i <= ( QB . func _UBound ( pairs ) ) ; i = i + 1 ) { if ( QB . halted ( ) ) { return ; } _ _ _v4127668 ++ ; if ( _ _ _v4127668 % 100 == 0 ) { await QB . autoLimit ( ) ; }
2022-09-17 16:50:08 +00:00
var nv = QB . initArray ( [ { l : 0 , u : 0 } ] , '' ) ; /* STRING */
2022-06-23 13:43:19 +00:00
count = ( await func _Split ( QB . arrayValue ( pairs , [ i ] ) . value , ":" , nv ) ) ;
2022-06-23 20:16:25 +00:00
var tvar = { type : '' , name : '' , jsname : '' , isConst : 0 , isArray : 0 , arraySize : 0 , typeId : 0 } ; /* VARIABLE */
2022-06-23 13:43:19 +00:00
tvar . typeId = typeId ;
tvar . name = QB . arrayValue ( nv , [ 1 ] ) . value ;
tvar . type = ( QB . func _UCase ( QB . arrayValue ( nv , [ 2 ] ) . value ) ) ;
await sub _AddVariable ( tvar , typeVars ) ;
2022-06-24 15:26:19 +00:00
}
2022-02-16 17:40:03 +00:00
}
2022-03-04 22:28:32 +00:00
async function func _MainEnd ( ) {
2022-02-16 17:40:03 +00:00
if ( QB . halted ( ) ) { return ; }
var MainEnd = null ;
2022-06-23 13:43:19 +00:00
if ( programMethods == 0 ) {
MainEnd = ( QB . func _UBound ( lines ) ) ;
2022-02-16 17:40:03 +00:00
} else {
2022-06-23 13:43:19 +00:00
MainEnd = QB . arrayValue ( methods , [ 1 ] ) . value . line - 1 ;
2022-02-16 17:40:03 +00:00
}
return MainEnd ;
}
2022-03-04 22:28:32 +00:00
async function func _RemoveSuffix ( vname /*STRING*/ ) {
2022-02-16 17:40:03 +00:00
if ( QB . halted ( ) ) { return ; }
var RemoveSuffix = null ;
2022-06-23 20:16:25 +00:00
var i = 0 ; /* INTEGER */
var done = 0 ; /* INTEGER */
var c = '' ; /* STRING */
2022-06-23 13:43:19 +00:00
vname = ( QB . func _ _Trim ( vname ) ) ;
i = ( QB . func _Len ( vname ) ) ;
2022-10-27 14:04:15 +00:00
var _ _ _v7127304 = 0 ; while ( ! done ) { if ( QB . halted ( ) ) { return ; } _ _ _v7127304 ++ ; if ( _ _ _v7127304 % 100 == 0 ) { await QB . autoLimit ( ) ; }
2022-06-23 13:43:19 +00:00
c = ( QB . func _Mid ( vname , i , 1 ) ) ;
2022-06-23 20:16:25 +00:00
if ( c == "`" || c == "%" || c == "&" || c == "$" || c == "~" || c == "!" || c == "#" ) {
2022-06-23 13:43:19 +00:00
i = i - 1 ;
2022-02-16 17:40:03 +00:00
} else {
2022-06-23 13:43:19 +00:00
done = True ;
2022-02-16 17:40:03 +00:00
}
}
2022-06-23 13:43:19 +00:00
RemoveSuffix = ( QB . func _Left ( vname , i ) ) ;
2022-02-16 17:40:03 +00:00
return RemoveSuffix ;
}
2022-03-04 22:28:32 +00:00
async function func _DataTypeFromName ( vname /*STRING*/ ) {
2022-02-16 17:40:03 +00:00
if ( QB . halted ( ) ) { return ; }
var DataTypeFromName = null ;
2022-06-23 20:16:25 +00:00
var dt = '' ; /* STRING */
2022-06-23 13:43:19 +00:00
if ( ( await func _EndsWith ( vname , "$" ) ) ) {
dt = "STRING" ;
} else if ( ( await func _EndsWith ( vname , "`" ) ) ) {
dt = "_BIT" ;
} else if ( ( await func _EndsWith ( vname , "%%" ) ) ) {
dt = "_BYTE" ;
} else if ( ( await func _EndsWith ( vname , "~%" ) ) ) {
dt = "_UNSIGNED INTEGER" ;
} else if ( ( await func _EndsWith ( vname , "%" ) ) ) {
dt = "INTEGER" ;
} else if ( ( await func _EndsWith ( vname , "~&&" ) ) ) {
dt = "_UNSIGNED INTEGER64" ;
} else if ( ( await func _EndsWith ( vname , "&&" ) ) ) {
dt = "_INTEGER64" ;
} else if ( ( await func _EndsWith ( vname , "~&" ) ) ) {
dt = "_UNSIGNED LONG" ;
} else if ( ( await func _EndsWith ( vname , "##" ) ) ) {
dt = "_FLOAT" ;
} else if ( ( await func _EndsWith ( vname , "#" ) ) ) {
dt = "DOUBLE" ;
} else if ( ( await func _EndsWith ( vname , "~%&" ) ) ) {
dt = "_UNSIGNED _OFFSET" ;
} else if ( ( await func _EndsWith ( vname , "%&" ) ) ) {
dt = "_OFFSET" ;
} else if ( ( await func _EndsWith ( vname , "&" ) ) ) {
dt = "LONG" ;
} else if ( ( await func _EndsWith ( vname , "!" ) ) ) {
dt = "SINGLE" ;
2022-02-16 17:40:03 +00:00
} else {
2022-06-23 13:43:19 +00:00
dt = "SINGLE" ;
2022-02-16 17:40:03 +00:00
}
2022-06-23 13:43:19 +00:00
DataTypeFromName = dt ;
2022-02-16 17:40:03 +00:00
return DataTypeFromName ;
}
2022-03-04 22:28:32 +00:00
async function func _EndsWith ( s /*STRING*/ , finds /*STRING*/ ) {
2022-02-16 17:40:03 +00:00
if ( QB . halted ( ) ) { return ; }
var EndsWith = null ;
2022-06-23 13:43:19 +00:00
if ( ( QB . func _Len ( finds ) ) > ( QB . func _Len ( s ) ) ) {
EndsWith = False ;
2022-02-16 17:40:03 +00:00
return EndsWith ;
}
2022-06-23 13:43:19 +00:00
if ( ( QB . func _ _InStrRev ( s , finds ) ) == ( QB . func _Len ( s ) ) - ( ( QB . func _Len ( finds ) ) - 1 ) ) {
EndsWith = True ;
2022-02-16 17:40:03 +00:00
} else {
2022-06-23 13:43:19 +00:00
EndsWith = False ;
2022-02-16 17:40:03 +00:00
}
return EndsWith ;
}
2022-03-04 22:28:32 +00:00
async function func _StartsWith ( s /*STRING*/ , finds /*STRING*/ ) {
2022-02-16 17:40:03 +00:00
if ( QB . halted ( ) ) { return ; }
var StartsWith = null ;
2022-06-23 13:43:19 +00:00
if ( ( QB . func _Len ( finds ) ) > ( QB . func _Len ( s ) ) ) {
StartsWith = False ;
2022-02-16 17:40:03 +00:00
return StartsWith ;
}
2022-06-23 13:43:19 +00:00
if ( ( QB . func _InStr ( s , finds ) ) == 1 ) {
StartsWith = True ;
2022-02-16 17:40:03 +00:00
} else {
2022-06-23 13:43:19 +00:00
StartsWith = False ;
2022-02-16 17:40:03 +00:00
}
return StartsWith ;
}
2022-03-04 22:28:32 +00:00
async function func _Join ( parts /*STRING*/ , startIndex /*INTEGER*/ , endIndex /*INTEGER*/ , delimiter /*STRING*/ ) {
2022-02-16 17:40:03 +00:00
if ( QB . halted ( ) ) { return ; }
var Join = null ;
2022-06-17 21:06:58 +00:00
if ( endIndex == - 1 ) {
2022-06-23 13:43:19 +00:00
endIndex = ( QB . func _UBound ( parts ) ) ;
2022-02-16 17:40:03 +00:00
}
2022-06-23 20:16:25 +00:00
var s = '' ; /* STRING */
var i = 0 ; /* INTEGER */
2022-10-27 14:04:15 +00:00
var _ _ _v3262062 = 0 ; for ( i = startIndex ; i <= endIndex ; i = i + 1 ) { if ( QB . halted ( ) ) { return ; } _ _ _v3262062 ++ ; if ( _ _ _v3262062 % 100 == 0 ) { await QB . autoLimit ( ) ; }
2022-06-23 13:43:19 +00:00
s = s + QB . arrayValue ( parts , [ i ] ) . value ;
if ( i != ( QB . func _UBound ( parts ) ) ) {
s = s + delimiter ;
2022-02-16 17:40:03 +00:00
}
2022-06-24 15:26:19 +00:00
}
2022-06-23 13:43:19 +00:00
Join = s ;
2022-02-16 17:40:03 +00:00
return Join ;
}
2022-05-02 21:00:21 +00:00
async function func _LPad ( s /*STRING*/ , padChar /*STRING*/ , swidth /*INTEGER*/ ) {
if ( QB . halted ( ) ) { return ; }
var LPad = null ;
2022-06-23 20:16:25 +00:00
var padding = '' ; /* STRING */
2022-06-23 13:43:19 +00:00
padding = ( QB . func _String ( swidth - ( QB . func _Len ( s ) ) , padChar ) ) ;
LPad = padding + s ;
2022-05-02 21:00:21 +00:00
return LPad ;
}
async function func _Replace ( s /*STRING*/ , searchString /*STRING*/ , newString /*STRING*/ ) {
if ( QB . halted ( ) ) { return ; }
var Replace = null ;
2022-06-23 20:16:25 +00:00
var ns = '' ; /* STRING */
var i = 0 ; /* INTEGER */
var slen = 0 ; /* INTEGER */
2022-06-23 13:43:19 +00:00
slen = ( QB . func _Len ( searchString ) ) ;
2022-10-27 14:04:15 +00:00
var _ _ _v6331789 = 0 ; for ( i = 1 ; i <= ( QB . func _Len ( s ) ) ; i = i + 1 ) { if ( QB . halted ( ) ) { return ; } _ _ _v6331789 ++ ; if ( _ _ _v6331789 % 100 == 0 ) { await QB . autoLimit ( ) ; }
2022-06-23 13:43:19 +00:00
if ( ( QB . func _Mid ( s , i , slen ) ) == searchString ) {
ns = ns + newString ;
i = i + slen - 1 ;
2022-05-02 21:00:21 +00:00
} else {
2022-06-23 13:43:19 +00:00
ns = ns + ( QB . func _Mid ( s , i , 1 ) ) ;
2022-05-02 21:00:21 +00:00
}
2022-06-24 15:26:19 +00:00
}
2022-06-23 13:43:19 +00:00
Replace = ns ;
2022-05-02 21:00:21 +00:00
return Replace ;
}
async function func _LF ( ) {
if ( QB . halted ( ) ) { return ; }
var LF = null ;
2022-06-23 13:43:19 +00:00
LF = ( QB . func _Chr ( 10 ) ) ;
2022-05-02 21:00:21 +00:00
return LF ;
}
async function func _CR ( ) {
if ( QB . halted ( ) ) { return ; }
var CR = null ;
2022-06-23 13:43:19 +00:00
CR = ( QB . func _Chr ( 13 ) ) ;
2022-05-02 21:00:21 +00:00
return CR ;
}
async function func _CRLF ( ) {
if ( QB . halted ( ) ) { return ; }
var CRLF = null ;
2022-06-23 13:43:19 +00:00
CRLF = await func _CR ( ) + await func _LF ( ) ;
2022-05-02 21:00:21 +00:00
return CRLF ;
}
2022-03-04 22:28:32 +00:00
async function func _MethodJS ( m /*METHOD*/ , prefix /*STRING*/ ) {
2022-02-16 17:40:03 +00:00
if ( QB . halted ( ) ) { return ; }
var MethodJS = null ;
2022-06-23 20:16:25 +00:00
var jsname = '' ; /* STRING */
2022-06-23 13:43:19 +00:00
jsname = prefix ;
if ( m . type == "FUNCTION" ) {
jsname = jsname + "func_" ;
2022-02-16 17:40:03 +00:00
} else {
2022-06-23 13:43:19 +00:00
jsname = jsname + "sub_" ;
2022-02-16 17:40:03 +00:00
}
2022-06-23 20:16:25 +00:00
var i = 0 ; /* INTEGER */
var c = '' ; /* STRING */
var a = 0 ; /* INTEGER */
2022-10-27 14:04:15 +00:00
var _ _ _v2075611 = 0 ; for ( i = 1 ; i <= ( QB . func _Len ( m . name ) ) ; i = i + 1 ) { if ( QB . halted ( ) ) { return ; } _ _ _v2075611 ++ ; if ( _ _ _v2075611 % 100 == 0 ) { await QB . autoLimit ( ) ; }
2022-06-23 13:43:19 +00:00
c = ( QB . func _Mid ( m . name , i , 1 ) ) ;
a = ( QB . func _Asc ( c ) ) ;
if ( ( a >= 65 && a <= 90 ) || ( a >= 97 && a <= 122 ) || ( a >= 48 && a <= 57 ) || a == 95 || a == 46 ) {
jsname = jsname + c ;
2022-02-16 17:40:03 +00:00
}
2022-06-24 15:26:19 +00:00
}
2022-06-23 13:43:19 +00:00
MethodJS = jsname ;
2022-02-16 17:40:03 +00:00
return MethodJS ;
}
2022-03-04 22:28:32 +00:00
async function func _GXMethodJS ( mname /*STRING*/ ) {
2022-02-16 17:40:03 +00:00
if ( QB . halted ( ) ) { return ; }
var GXMethodJS = null ;
2022-06-23 20:16:25 +00:00
var jsname = '' ; /* STRING */
var startIdx = 0 ; /* INTEGER */
2022-06-23 13:43:19 +00:00
if ( ( QB . func _InStr ( mname , "GXSTR" ) ) == 1 ) {
jsname = "GXSTR." ;
startIdx = 7 ;
2022-02-16 17:40:03 +00:00
} else {
2022-06-23 13:43:19 +00:00
jsname = "GX." ;
startIdx = 3 ;
2022-02-16 17:40:03 +00:00
}
2022-06-23 13:43:19 +00:00
jsname = jsname + ( QB . func _LCase ( ( QB . func _Mid ( mname , startIdx , 1 ) ) ) ) ;
2022-06-23 20:16:25 +00:00
var i = 0 ; /* INTEGER */
var c = '' ; /* STRING */
var a = 0 ; /* INTEGER */
2022-10-27 14:04:15 +00:00
var _ _ _v1860135 = 0 ; for ( i = startIdx + 1 ; i <= ( QB . func _Len ( mname ) ) ; i = i + 1 ) { if ( QB . halted ( ) ) { return ; } _ _ _v1860135 ++ ; if ( _ _ _v1860135 % 100 == 0 ) { await QB . autoLimit ( ) ; }
2022-06-23 13:43:19 +00:00
c = ( QB . func _Mid ( mname , i , 1 ) ) ;
a = ( QB . func _Asc ( c ) ) ;
if ( ( a >= 65 && a <= 90 ) || ( a >= 97 && a <= 122 ) || ( a >= 48 && a <= 57 ) || a == 95 || a == 46 ) {
jsname = jsname + c ;
2022-02-16 17:40:03 +00:00
}
2022-06-24 15:26:19 +00:00
}
2022-06-23 13:43:19 +00:00
GXMethodJS = jsname ;
2022-02-16 17:40:03 +00:00
return GXMethodJS ;
}
async function sub _InitGX ( ) {
if ( QB . halted ( ) ) { return ; }
2022-06-23 13:43:19 +00:00
await sub _AddSystemType ( "GXPOSITION" , "x:LONG,y:LONG" ) ;
await sub _AddSystemType ( "GXDEVICEINPUT" , "deviceId:INTEGER,deviceType:INTEGER,inputType:INTEGER,inputId:INTEGER,inputValue:INTEGER" ) ;
2022-03-30 22:37:36 +00:00
await sub _AddGXConst ( "GX_FALSE" ) ;
await sub _AddGXConst ( "GX_TRUE" ) ;
await sub _AddGXConst ( "GXEVENT_INIT" ) ;
await sub _AddGXConst ( "GXEVENT_UPDATE" ) ;
await sub _AddGXConst ( "GXEVENT_DRAWBG" ) ;
await sub _AddGXConst ( "GXEVENT_DRAWMAP" ) ;
await sub _AddGXConst ( "GXEVENT_DRAWSCREEN" ) ;
await sub _AddGXConst ( "GXEVENT_MOUSEINPUT" ) ;
await sub _AddGXConst ( "GXEVENT_PAINTBEFORE" ) ;
await sub _AddGXConst ( "GXEVENT_PAINTAFTER" ) ;
await sub _AddGXConst ( "GXEVENT_COLLISION_TILE" ) ;
await sub _AddGXConst ( "GXEVENT_COLLISION_ENTITY" ) ;
await sub _AddGXConst ( "GXEVENT_PLAYER_ACTION" ) ;
await sub _AddGXConst ( "GXEVENT_ANIMATE_COMPLETE" ) ;
await sub _AddGXConst ( "GXANIMATE_LOOP" ) ;
await sub _AddGXConst ( "GXANIMATE_SINGLE" ) ;
await sub _AddGXConst ( "GXBG_STRETCH" ) ;
await sub _AddGXConst ( "GXBG_WRAP" ) ;
await sub _AddGXConst ( "GXKEY_ESC" ) ;
await sub _AddGXConst ( "GXKEY_1" ) ;
await sub _AddGXConst ( "GXKEY_2" ) ;
await sub _AddGXConst ( "GXKEY_3" ) ;
await sub _AddGXConst ( "GXKEY_4" ) ;
await sub _AddGXConst ( "GXKEY_5" ) ;
await sub _AddGXConst ( "GXKEY_6" ) ;
await sub _AddGXConst ( "GXKEY_7" ) ;
await sub _AddGXConst ( "GXKEY_8" ) ;
await sub _AddGXConst ( "GXKEY_9" ) ;
await sub _AddGXConst ( "GXKEY_0" ) ;
await sub _AddGXConst ( "GXKEY_DASH" ) ;
await sub _AddGXConst ( "GXKEY_EQUALS" ) ;
await sub _AddGXConst ( "GXKEY_BACKSPACE" ) ;
await sub _AddGXConst ( "GXKEY_TAB" ) ;
await sub _AddGXConst ( "GXKEY_Q" ) ;
await sub _AddGXConst ( "GXKEY_W" ) ;
await sub _AddGXConst ( "GXKEY_E" ) ;
await sub _AddGXConst ( "GXKEY_R" ) ;
await sub _AddGXConst ( "GXKEY_T" ) ;
await sub _AddGXConst ( "GXKEY_Y" ) ;
await sub _AddGXConst ( "GXKEY_U" ) ;
await sub _AddGXConst ( "GXKEY_I" ) ;
await sub _AddGXConst ( "GXKEY_O" ) ;
await sub _AddGXConst ( "GXKEY_P" ) ;
await sub _AddGXConst ( "GXKEY_LBRACKET" ) ;
await sub _AddGXConst ( "GXKEY_RBRACKET" ) ;
await sub _AddGXConst ( "GXKEY_ENTER" ) ;
await sub _AddGXConst ( "GXKEY_LCTRL" ) ;
await sub _AddGXConst ( "GXKEY_A" ) ;
await sub _AddGXConst ( "GXKEY_S" ) ;
await sub _AddGXConst ( "GXKEY_D" ) ;
await sub _AddGXConst ( "GXKEY_F" ) ;
await sub _AddGXConst ( "GXKEY_G" ) ;
await sub _AddGXConst ( "GXKEY_H" ) ;
await sub _AddGXConst ( "GXKEY_J" ) ;
await sub _AddGXConst ( "GXKEY_K" ) ;
await sub _AddGXConst ( "GXKEY_L" ) ;
await sub _AddGXConst ( "GXKEY_SEMICOLON" ) ;
await sub _AddGXConst ( "GXKEY_QUOTE" ) ;
await sub _AddGXConst ( "GXKEY_BACKQUOTE" ) ;
await sub _AddGXConst ( "GXKEY_LSHIFT" ) ;
await sub _AddGXConst ( "GXKEY_BACKSLASH" ) ;
await sub _AddGXConst ( "GXKEY_Z" ) ;
await sub _AddGXConst ( "GXKEY_X" ) ;
await sub _AddGXConst ( "GXKEY_C" ) ;
await sub _AddGXConst ( "GXKEY_V" ) ;
await sub _AddGXConst ( "GXKEY_B" ) ;
await sub _AddGXConst ( "GXKEY_N" ) ;
await sub _AddGXConst ( "GXKEY_M" ) ;
await sub _AddGXConst ( "GXKEY_COMMA" ) ;
await sub _AddGXConst ( "GXKEY_PERIOD" ) ;
await sub _AddGXConst ( "GXKEY_SLASH" ) ;
await sub _AddGXConst ( "GXKEY_RSHIFT" ) ;
await sub _AddGXConst ( "GXKEY_NUMPAD_MULTIPLY" ) ;
await sub _AddGXConst ( "GXKEY_SPACEBAR" ) ;
await sub _AddGXConst ( "GXKEY_CAPSLOCK" ) ;
await sub _AddGXConst ( "GXKEY_F1" ) ;
await sub _AddGXConst ( "GXKEY_F2" ) ;
await sub _AddGXConst ( "GXKEY_F3" ) ;
await sub _AddGXConst ( "GXKEY_F4" ) ;
await sub _AddGXConst ( "GXKEY_F5" ) ;
await sub _AddGXConst ( "GXKEY_F6" ) ;
await sub _AddGXConst ( "GXKEY_F7" ) ;
await sub _AddGXConst ( "GXKEY_F8" ) ;
await sub _AddGXConst ( "GXKEY_F9" ) ;
await sub _AddGXConst ( "GXKEY_PAUSE" ) ;
await sub _AddGXConst ( "GXKEY_SCRLK" ) ;
await sub _AddGXConst ( "GXKEY_NUMPAD_7" ) ;
await sub _AddGXConst ( "GXKEY_NUMPAD_8" ) ;
await sub _AddGXConst ( "GXKEY_NUMPAD_9" ) ;
await sub _AddGXConst ( "GXKEY_NUMPAD_MINUS" ) ;
await sub _AddGXConst ( "GXKEY_NUMPAD_4" ) ;
await sub _AddGXConst ( "GXKEY_NUMPAD_5" ) ;
await sub _AddGXConst ( "GXKEY_NUMPAD_6" ) ;
await sub _AddGXConst ( "GXKEY_NUMPAD_PLUS" ) ;
await sub _AddGXConst ( "GXKEY_NUMPAD_1" ) ;
await sub _AddGXConst ( "GXKEY_NUMPAD_2" ) ;
await sub _AddGXConst ( "GXKEY_NUMPAD_3" ) ;
await sub _AddGXConst ( "GXKEY_NUMPAD_0" ) ;
await sub _AddGXConst ( "GXKEY_NUMPAD_PERIOD" ) ;
await sub _AddGXConst ( "GXKEY_F11" ) ;
await sub _AddGXConst ( "GXKEY_F12" ) ;
await sub _AddGXConst ( "GXKEY_NUMPAD_ENTER" ) ;
await sub _AddGXConst ( "GXKEY_RCTRL" ) ;
await sub _AddGXConst ( "GXKEY_NUMPAD_DIVIDE" ) ;
await sub _AddGXConst ( "GXKEY_NUMLOCK" ) ;
await sub _AddGXConst ( "GXKEY_HOME" ) ;
await sub _AddGXConst ( "GXKEY_UP" ) ;
await sub _AddGXConst ( "GXKEY_PAGEUP" ) ;
await sub _AddGXConst ( "GXKEY_LEFT" ) ;
await sub _AddGXConst ( "GXKEY_RIGHT" ) ;
await sub _AddGXConst ( "GXKEY_END" ) ;
await sub _AddGXConst ( "GXKEY_DOWN" ) ;
await sub _AddGXConst ( "GXKEY_PAGEDOWN" ) ;
await sub _AddGXConst ( "GXKEY_INSERT" ) ;
await sub _AddGXConst ( "GXKEY_DELETE" ) ;
await sub _AddGXConst ( "GXKEY_LWIN" ) ;
await sub _AddGXConst ( "GXKEY_RWIN" ) ;
await sub _AddGXConst ( "GXKEY_MENU" ) ;
await sub _AddGXConst ( "GXACTION_MOVE_LEFT" ) ;
await sub _AddGXConst ( "GXACTION_MOVE_RIGHT" ) ;
await sub _AddGXConst ( "GXACTION_MOVE_UP" ) ;
await sub _AddGXConst ( "GXACTION_MOVE_DOWN" ) ;
await sub _AddGXConst ( "GXACTION_JUMP" ) ;
await sub _AddGXConst ( "GXACTION_JUMP_RIGHT" ) ;
await sub _AddGXConst ( "GXACTION_JUMP_LEFT" ) ;
await sub _AddGXConst ( "GXSCENE_FOLLOW_NONE" ) ;
await sub _AddGXConst ( "GXSCENE_FOLLOW_ENTITY_CENTER" ) ;
await sub _AddGXConst ( "GXSCENE_FOLLOW_ENTITY_CENTER_X" ) ;
await sub _AddGXConst ( "GXSCENE_FOLLOW_ENTITY_CENTER_Y" ) ;
await sub _AddGXConst ( "GXSCENE_FOLLOW_ENTITY_CENTER_X_POS" ) ;
await sub _AddGXConst ( "GXSCENE_FOLLOW_ENTITY_CENTER_X_NEG" ) ;
await sub _AddGXConst ( "GXSCENE_CONSTRAIN_NONE" ) ;
await sub _AddGXConst ( "GXSCENE_CONSTRAIN_TO_MAP" ) ;
await sub _AddGXConst ( "GXFONT_DEFAULT" ) ;
await sub _AddGXConst ( "GXFONT_DEFAULT_BLACK" ) ;
await sub _AddGXConst ( "GXDEVICE_KEYBOARD" ) ;
await sub _AddGXConst ( "GXDEVICE_MOUSE" ) ;
await sub _AddGXConst ( "GXDEVICE_CONTROLLER" ) ;
await sub _AddGXConst ( "GXDEVICE_BUTTON" ) ;
await sub _AddGXConst ( "GXDEVICE_AXIS" ) ;
await sub _AddGXConst ( "GXDEVICE_WHEEL" ) ;
await sub _AddGXConst ( "GXTYPE_ENTITY" ) ;
await sub _AddGXConst ( "GXTYPE_FONT" ) ;
2022-06-23 13:43:19 +00:00
await sub _AddGXMethod ( "SUB" , "GXSleep" , True ) ;
await sub _AddGXMethod ( "FUNCTION" , "GXMouseX" , False ) ;
await sub _AddGXMethod ( "FUNCTION" , "GXMouseY" , False ) ;
2022-10-28 19:58:21 +00:00
await sub _AddGXMethod ( "FUNCTION" , "GXSoundLoad" , True ) ;
2022-06-23 13:43:19 +00:00
await sub _AddGXMethod ( "SUB" , "GXSoundPlay" , False ) ;
await sub _AddGXMethod ( "SUB" , "GXSoundRepeat" , False ) ;
await sub _AddGXMethod ( "SUB" , "GXSoundVolume" , False ) ;
await sub _AddGXMethod ( "SUB" , "GXSoundPause" , False ) ;
await sub _AddGXMethod ( "SUB" , "GXSoundStop" , False ) ;
await sub _AddGXMethod ( "SUB" , "GXSoundMuted" , False ) ;
await sub _AddGXMethod ( "FUNCTION" , "GXSoundMuted" , False ) ;
await sub _AddGXMethod ( "SUB" , "GXEntityAnimate" , False ) ;
await sub _AddGXMethod ( "SUB" , "GXEntityAnimateStop" , False ) ;
await sub _AddGXMethod ( "SUB" , "GXEntityAnimateMode" , False ) ;
await sub _AddGXMethod ( "FUNCTION" , "GXEntityAnimateMode" , False ) ;
await sub _AddGXMethod ( "FUNCTION" , "GXScreenEntityCreate" , False ) ;
await sub _AddGXMethod ( "FUNCTION" , "GXEntityCreate" , False ) ;
await sub _AddGXMethod ( "SUB" , "GXEntityCreate" , False ) ;
2022-09-17 16:50:08 +00:00
await sub _AddGXMethod ( "FUNCTION" , "GXEntityVisible" , False ) ;
2022-06-23 13:43:19 +00:00
await sub _AddGXMethod ( "SUB" , "GXEntityVisible" , False ) ;
await sub _AddGXMethod ( "SUB" , "GXEntityMove" , False ) ;
await sub _AddGXMethod ( "SUB" , "GXEntityPos" , False ) ;
await sub _AddGXMethod ( "SUB" , "GXEntityVX" , False ) ;
await sub _AddGXMethod ( "FUNCTION" , "GXEntityVX" , False ) ;
await sub _AddGXMethod ( "SUB" , "GXEntityVY" , False ) ;
await sub _AddGXMethod ( "FUNCTION" , "GXEntityVY" , False ) ;
await sub _AddGXMethod ( "FUNCTION" , "GXEntityX" , False ) ;
await sub _AddGXMethod ( "FUNCTION" , "GXEntityY" , False ) ;
await sub _AddGXMethod ( "FUNCTION" , "GXEntityWidth" , False ) ;
await sub _AddGXMethod ( "FUNCTION" , "GXEntityHeight" , False ) ;
await sub _AddGXMethod ( "SUB" , "GXEntityFrameNext" , False ) ;
await sub _AddGXMethod ( "SUB" , "GXEntityFrameSet" , False ) ;
await sub _AddGXMethod ( "SUB" , "GXEntityType" , False ) ;
await sub _AddGXMethod ( "FUNCTION" , "GXEntityType" , False ) ;
await sub _AddGXMethod ( "FUNCTION" , "GXEntityUID$" , False ) ;
await sub _AddGXMethod ( "FUNCTION" , "GXFontUID$" , False ) ;
await sub _AddGXMethod ( "SUB" , "GXEntityApplyGravity" , False ) ;
await sub _AddGXMethod ( "FUNCTION" , "GXEntityApplyGravity" , False ) ;
2022-09-17 16:50:08 +00:00
await sub _AddGXMethod ( "FUNCTION" , "GXEntityCollide" , False ) ;
2022-06-23 13:43:19 +00:00
await sub _AddGXMethod ( "SUB" , "GXEntityCollisionOffset" , False ) ;
await sub _AddGXMethod ( "FUNCTION" , "GXEntityCollisionOffsetLeft" , False ) ;
await sub _AddGXMethod ( "FUNCTION" , "GXEntityCollisionOffsetTop" , False ) ;
await sub _AddGXMethod ( "FUNCTION" , "GXEntityCollisionOffsetRight" , False ) ;
await sub _AddGXMethod ( "FUNCTION" , "GXEntityCollisionOffsetBottom" , False ) ;
await sub _AddGXMethod ( "SUB" , "GXFullScreen" , False ) ;
await sub _AddGXMethod ( "FUNCTION" , "GXFullScreen" , False ) ;
await sub _AddGXMethod ( "FUNCTION" , "GXBackgroundAdd" , False ) ;
2022-09-17 16:50:08 +00:00
await sub _AddGXMethod ( "SUB" , "GXBackgroundWrapFactor" , False ) ;
2022-06-23 13:43:19 +00:00
await sub _AddGXMethod ( "SUB" , "GXBackgroundClear" , False ) ;
await sub _AddGXMethod ( "SUB" , "GXSceneEmbedded" , False ) ;
await sub _AddGXMethod ( "FUNCTION" , "GXSceneEmbedded" , False ) ;
await sub _AddGXMethod ( "SUB" , "GXSceneCreate" , False ) ;
await sub _AddGXMethod ( "SUB" , "GXSceneWindowSize" , False ) ;
await sub _AddGXMethod ( "SUB" , "GXSceneScale" , False ) ;
await sub _AddGXMethod ( "SUB" , "GXSceneResize" , False ) ;
await sub _AddGXMethod ( "SUB" , "GXSceneDestroy" , False ) ;
await sub _AddGXMethod ( "SUB" , "GXCustomDraw" , False ) ;
await sub _AddGXMethod ( "FUNCTION" , "GXCustomDraw" , False ) ;
await sub _AddGXMethod ( "SUB" , "GXFrameRate" , False ) ;
await sub _AddGXMethod ( "FUNCTION" , "GXFrameRate" , False ) ;
await sub _AddGXMethod ( "FUNCTION" , "GXFrame" , False ) ;
await sub _AddGXMethod ( "SUB" , "GXSceneDraw" , False ) ;
await sub _AddGXMethod ( "SUB" , "GXSceneMove" , False ) ;
await sub _AddGXMethod ( "SUB" , "GXScenePos" , False ) ;
await sub _AddGXMethod ( "FUNCTION" , "GXSceneX" , False ) ;
await sub _AddGXMethod ( "FUNCTION" , "GXSceneY" , False ) ;
await sub _AddGXMethod ( "FUNCTION" , "GXSceneWidth" , False ) ;
await sub _AddGXMethod ( "FUNCTION" , "GXSceneHeight" , False ) ;
await sub _AddGXMethod ( "FUNCTION" , "GXSceneColumns" , False ) ;
await sub _AddGXMethod ( "FUNCTION" , "GXSceneRows" , False ) ;
await sub _AddGXMethod ( "SUB" , "GXSceneStart" , True ) ;
await sub _AddGXMethod ( "SUB" , "GXSceneUpdate" , False ) ;
await sub _AddGXMethod ( "SUB" , "GXSceneFollowEntity" , False ) ;
await sub _AddGXMethod ( "SUB" , "GXSceneConstrain" , False ) ;
await sub _AddGXMethod ( "SUB" , "GXSceneStop" , False ) ;
await sub _AddGXMethod ( "SUB" , "GXMapCreate" , False ) ;
await sub _AddGXMethod ( "FUNCTION" , "GXMapColumns" , False ) ;
await sub _AddGXMethod ( "FUNCTION" , "GXMapRows" , False ) ;
await sub _AddGXMethod ( "FUNCTION" , "GXMapLayers" , False ) ;
await sub _AddGXMethod ( "SUB" , "GXMapLayerVisible" , False ) ;
await sub _AddGXMethod ( "FUNCTION" , "GXMapLayerVisible" , False ) ;
await sub _AddGXMethod ( "SUB" , "GXMapLayerAdd" , False ) ;
await sub _AddGXMethod ( "SUB" , "GXMapLayerInsert" , False ) ;
await sub _AddGXMethod ( "SUB" , "GXMapLayerRemove" , False ) ;
await sub _AddGXMethod ( "SUB" , "GXMapResize" , False ) ;
await sub _AddGXMethod ( "SUB" , "GXMapDraw" , False ) ;
await sub _AddGXMethod ( "SUB" , "GXMapTilePosAt" , False ) ;
await sub _AddGXMethod ( "SUB" , "GXMapTile" , False ) ;
await sub _AddGXMethod ( "FUNCTION" , "GXMapTile" , False ) ;
await sub _AddGXMethod ( "FUNCTION" , "GXMapTileDepth" , False ) ;
await sub _AddGXMethod ( "SUB" , "GXMapTileAdd" , False ) ;
await sub _AddGXMethod ( "SUB" , "GXMapTileRemove" , False ) ;
await sub _AddGXMethod ( "FUNCTION" , "GXMapVersion" , False ) ;
await sub _AddGXMethod ( "SUB" , "GXMapSave" , False ) ;
await sub _AddGXMethod ( "SUB" , "GXMapLoad" , True ) ;
await sub _AddGXMethod ( "FUNCTION" , "GXMapIsometric" , False ) ;
await sub _AddGXMethod ( "SUB" , "GXMapIsometric" , False ) ;
await sub _AddGXMethod ( "SUB" , "GXSpriteDraw" , False ) ;
await sub _AddGXMethod ( "SUB" , "GXSpriteDrawScaled" , False ) ;
await sub _AddGXMethod ( "SUB" , "GXTilesetCreate" , False ) ;
await sub _AddGXMethod ( "SUB" , "GXTilesetReplaceImage" , False ) ;
await sub _AddGXMethod ( "SUB" , "GXTilesetLoad" , False ) ;
await sub _AddGXMethod ( "SUB" , "GXTilesetSave" , False ) ;
await sub _AddGXMethod ( "SUB" , "GXTilesetPos" , False ) ;
await sub _AddGXMethod ( "FUNCTION" , "GXTilesetWidth" , False ) ;
await sub _AddGXMethod ( "FUNCTION" , "GXTilesetHeight" , False ) ;
await sub _AddGXMethod ( "FUNCTION" , "GXTilesetColumns" , False ) ;
await sub _AddGXMethod ( "FUNCTION" , "GXTilesetRows" , False ) ;
await sub _AddGXMethod ( "FUNCTION" , "GXTilesetFilename" , False ) ;
await sub _AddGXMethod ( "FUNCTION" , "GXTilesetImage" , False ) ;
await sub _AddGXMethod ( "SUB" , "GXTilesetAnimationCreate" , False ) ;
await sub _AddGXMethod ( "SUB" , "GXTilesetAnimationAdd" , False ) ;
await sub _AddGXMethod ( "SUB" , "GXTilesetAnimationRemove" , False ) ;
await sub _AddGXMethod ( "FUNCTION" , "GXTilesetAnimationFrames" , False ) ;
await sub _AddGXMethod ( "FUNCTION" , "GXTilesetAnimationSpeed" , False ) ;
await sub _AddGXMethod ( "SUB" , "GXTilesetAnimationSpeed" , False ) ;
await sub _AddGXMethod ( "FUNCTION" , "GXFontCreate" , False ) ;
await sub _AddGXMethod ( "SUB" , "GXFontCreate" , False ) ;
await sub _AddGXMethod ( "FUNCTION" , "GXFontWidth" , False ) ;
await sub _AddGXMethod ( "FUNCTION" , "GXFontHeight" , False ) ;
await sub _AddGXMethod ( "FUNCTION" , "GXFontCharSpacing" , False ) ;
await sub _AddGXMethod ( "SUB" , "GXFontCharSpacing" , False ) ;
await sub _AddGXMethod ( "FUNCTION" , "GXFontLineSpacing" , False ) ;
await sub _AddGXMethod ( "SUB" , "GXFontLineSpacing" , False ) ;
await sub _AddGXMethod ( "SUB" , "GXDrawText" , False ) ;
await sub _AddGXMethod ( "FUNCTION" , "GXDebug" , False ) ;
await sub _AddGXMethod ( "SUB" , "GXDebug" , False ) ;
await sub _AddGXMethod ( "FUNCTION" , "GXDebugScreenEntities" , False ) ;
await sub _AddGXMethod ( "SUB" , "GXDebugScreenEntities" , False ) ;
await sub _AddGXMethod ( "FUNCTION" , "GXDebugFont" , False ) ;
await sub _AddGXMethod ( "SUB" , "GXDebugFont" , False ) ;
await sub _AddGXMethod ( "FUNCTION" , "GXDebugTileBorderColor" , False ) ;
await sub _AddGXMethod ( "SUB" , "GXDebugTileBorderColor" , False ) ;
await sub _AddGXMethod ( "FUNCTION" , "GXDebugEntityBorderColor" , False ) ;
await sub _AddGXMethod ( "SUB" , "GXDebugEntityBorderColor" , False ) ;
await sub _AddGXMethod ( "FUNCTION" , "GXDebugEntityCollisionColor" , False ) ;
await sub _AddGXMethod ( "SUB" , "GXDebugEntityCollisionColor" , False ) ;
await sub _AddGXMethod ( "SUB" , "GXKeyInput" , False ) ;
await sub _AddGXMethod ( "FUNCTION" , "GXKeyDown" , False ) ;
await sub _AddGXMethod ( "SUB" , "GXDeviceInputDetect" , False ) ;
await sub _AddGXMethod ( "FUNCTION" , "GXDeviceInputTest" , False ) ;
await sub _AddGXMethod ( "FUNCTION" , "GXDeviceName" , False ) ;
await sub _AddGXMethod ( "FUNCTION" , "GXDeviceTypeName" , False ) ;
await sub _AddGXMethod ( "FUNCTION" , "GXInputTypeName" , False ) ;
await sub _AddGXMethod ( "FUNCTION" , "GXKeyButtonName" , False ) ;
2022-03-30 22:37:36 +00:00
await sub _AddGXConst ( "GX_CR" ) ;
await sub _AddGXConst ( "GX_LF" ) ;
await sub _AddGXConst ( "GX_CRLF" ) ;
2022-06-23 13:43:19 +00:00
await sub _AddGXMethod ( "FUNCTION" , "GXSTR_LPad" , False ) ;
await sub _AddGXMethod ( "FUNCTION" , "GXSTR_RPad" , False ) ;
await sub _AddGXMethod ( "FUNCTION" , "GXSTR_Replace" , False ) ;
2022-02-16 17:40:03 +00:00
}
async function sub _InitQBMethods ( ) {
if ( QB . halted ( ) ) { return ; }
2022-06-23 13:43:19 +00:00
await sub _AddQBMethod ( "FUNCTION" , "_Alpha" , False ) ;
await sub _AddQBMethod ( "FUNCTION" , "_Alpha32" , False ) ;
await sub _AddQBMethod ( "FUNCTION" , "_Acos" , False ) ;
await sub _AddQBMethod ( "FUNCTION" , "_Acosh" , False ) ;
await sub _AddQBMethod ( "FUNCTION" , "_Atanh" , False ) ;
await sub _AddQBMethod ( "FUNCTION" , "_Asin" , False ) ;
await sub _AddQBMethod ( "FUNCTION" , "_Asinh" , False ) ;
await sub _AddQBMethod ( "FUNCTION" , "_Atan2" , False ) ;
await sub _AddQBMethod ( "FUNCTION" , "_AutoDisplay" , False ) ;
await sub _AddQBMethod ( "SUB" , "_AutoDisplay" , False ) ;
await sub _AddQBMethod ( "FUNCTION" , "_Blue" , False ) ;
await sub _AddQBMethod ( "FUNCTION" , "_Blue32" , False ) ;
await sub _AddQBMethod ( "FUNCTION" , "_Ceil" , False ) ;
await sub _AddQBMethod ( "FUNCTION" , "_CopyImage" , False ) ;
await sub _AddQBMethod ( "FUNCTION" , "_Cosh" , False ) ;
await sub _AddQBMethod ( "FUNCTION" , "_Coth" , False ) ;
await sub _AddQBMethod ( "FUNCTION" , "_Csch" , False ) ;
2022-09-17 16:50:08 +00:00
await sub _AddQBMethod ( "FUNCTION" , "_CWD$" , False ) ;
2022-06-23 13:43:19 +00:00
await sub _AddQBMethod ( "FUNCTION" , "_D2G" , False ) ;
await sub _AddQBMethod ( "FUNCTION" , "_D2R" , False ) ;
await sub _AddQBMethod ( "SUB" , "_Delay" , True ) ;
await sub _AddQBMethod ( "FUNCTION" , "_Dest" , False ) ;
await sub _AddQBMethod ( "SUB" , "_Dest" , False ) ;
2022-09-17 16:50:08 +00:00
await sub _AddQBMethod ( "FUNCTION" , "_DirExists" , False ) ;
2022-06-23 13:43:19 +00:00
await sub _AddQBMethod ( "FUNCTION" , "_Display" , False ) ;
await sub _AddQBMethod ( "SUB" , "_Display" , False ) ;
2022-09-17 16:50:08 +00:00
await sub _AddQBMethod ( "FUNCTION" , "_FileExists" , False ) ;
2022-06-23 13:43:19 +00:00
await sub _AddQBMethod ( "FUNCTION" , "_FontWidth" , False ) ;
await sub _AddQBMethod ( "SUB" , "_FreeImage" , False ) ;
await sub _AddQBMethod ( "SUB" , "_FullScreen" , False ) ;
await sub _AddQBMethod ( "FUNCTION" , "_FullScreen" , False ) ;
await sub _AddQBMethod ( "FUNCTION" , "_G2D" , False ) ;
await sub _AddQBMethod ( "FUNCTION" , "_G2R" , False ) ;
await sub _AddQBMethod ( "FUNCTION" , "_Green" , False ) ;
await sub _AddQBMethod ( "FUNCTION" , "_Green32" , False ) ;
await sub _AddQBMethod ( "FUNCTION" , "_Height" , False ) ;
await sub _AddQBMethod ( "FUNCTION" , "_Hypot" , False ) ;
await sub _AddQBMethod ( "FUNCTION" , "_InStrRev" , False ) ;
await sub _AddQBMethod ( "SUB" , "_Limit" , True ) ;
await sub _AddQBMethod ( "SUB" , "_KeyClear" , False ) ;
await sub _AddQBMethod ( "FUNCTION" , "_KeyDown" , False ) ;
await sub _AddQBMethod ( "FUNCTION" , "_KeyHit" , False ) ;
await sub _AddQBMethod ( "FUNCTION" , "_LoadImage" , True ) ;
await sub _AddQBMethod ( "FUNCTION" , "_MouseButton" , False ) ;
await sub _AddQBMethod ( "FUNCTION" , "_MouseInput" , False ) ;
await sub _AddQBMethod ( "FUNCTION" , "_MouseX" , False ) ;
await sub _AddQBMethod ( "FUNCTION" , "_MouseY" , False ) ;
await sub _AddQBMethod ( "FUNCTION" , "_NewImage" , False ) ;
2022-09-17 16:50:08 +00:00
await sub _AddQBMethod ( "FUNCTION" , "_OS$" , False ) ;
2022-06-23 13:43:19 +00:00
await sub _AddQBMethod ( "FUNCTION" , "_Pi" , False ) ;
2022-06-23 13:55:34 +00:00
await sub _AddQBMethod ( "SUB" , "_PaletteColor" , False ) ;
2022-06-23 13:43:19 +00:00
await sub _AddQBMethod ( "SUB" , "_PrintString" , False ) ;
await sub _AddQBMethod ( "FUNCTION" , "_PrintWidth" , False ) ;
await sub _AddQBMethod ( "SUB" , "_PutImage" , False ) ;
await sub _AddQBMethod ( "FUNCTION" , "_R2D" , False ) ;
await sub _AddQBMethod ( "FUNCTION" , "_R2G" , False ) ;
await sub _AddQBMethod ( "FUNCTION" , "_Readbit" , False ) ;
await sub _AddQBMethod ( "FUNCTION" , "_Red" , False ) ;
await sub _AddQBMethod ( "FUNCTION" , "_Red32" , False ) ;
await sub _AddQBMethod ( "FUNCTION" , "_Resetbit" , False ) ;
await sub _AddQBMethod ( "FUNCTION" , "_Resize" , False ) ;
await sub _AddQBMethod ( "FUNCTION" , "_ResizeHeight" , False ) ;
await sub _AddQBMethod ( "FUNCTION" , "_ResizeWidth" , False ) ;
await sub _AddQBMethod ( "FUNCTION" , "_RGB" , False ) ;
await sub _AddQBMethod ( "FUNCTION" , "_RGBA" , False ) ;
await sub _AddQBMethod ( "FUNCTION" , "_RGB32" , False ) ;
await sub _AddQBMethod ( "FUNCTION" , "_RGBA32" , False ) ;
await sub _AddQBMethod ( "FUNCTION" , "_Round" , False ) ;
await sub _AddQBMethod ( "FUNCTION" , "_ScreenExists" , False ) ;
await sub _AddQBMethod ( "FUNCTION" , "_Sech" , False ) ;
await sub _AddQBMethod ( "FUNCTION" , "_Setbit" , False ) ;
await sub _AddQBMethod ( "FUNCTION" , "_Shl" , False ) ;
await sub _AddQBMethod ( "FUNCTION" , "_Shr" , False ) ;
await sub _AddQBMethod ( "FUNCTION" , "_Sinh" , False ) ;
await sub _AddQBMethod ( "FUNCTION" , "_Source" , False ) ;
await sub _AddQBMethod ( "SUB" , "_Source" , False ) ;
await sub _AddQBMethod ( "SUB" , "_SndClose" , False ) ;
await sub _AddQBMethod ( "FUNCTION" , "_SndOpen" , False ) ;
await sub _AddQBMethod ( "SUB" , "_SndPlay" , False ) ;
await sub _AddQBMethod ( "SUB" , "_SndLoop" , False ) ;
await sub _AddQBMethod ( "SUB" , "_SndPause" , False ) ;
await sub _AddQBMethod ( "SUB" , "_SndStop" , False ) ;
await sub _AddQBMethod ( "SUB" , "_SndVol" , False ) ;
2022-09-17 16:50:08 +00:00
await sub _AddQBMethod ( "FUNCTION" , "_StartDir$" , False ) ;
2022-06-23 13:43:19 +00:00
await sub _AddQBMethod ( "FUNCTION" , "_Strcmp" , False ) ;
await sub _AddQBMethod ( "FUNCTION" , "_Stricmp" , False ) ;
await sub _AddQBMethod ( "FUNCTION" , "_Tanh" , False ) ;
await sub _AddQBMethod ( "SUB" , "_Title" , False ) ;
await sub _AddQBMethod ( "FUNCTION" , "_Togglebit" , False ) ;
await sub _AddQBMethod ( "FUNCTION" , "_Trim" , False ) ;
await sub _AddQBMethod ( "FUNCTION" , "_Width" , False ) ;
await sub _AddQBMethod ( "FUNCTION" , "Abs" , False ) ;
await sub _AddQBMethod ( "FUNCTION" , "Asc" , False ) ;
await sub _AddQBMethod ( "FUNCTION" , "Atn" , False ) ;
await sub _AddQBMethod ( "SUB" , "Beep" , False ) ;
await sub _AddQBMethod ( "FUNCTION" , "Chr$" , False ) ;
await sub _AddQBMethod ( "FUNCTION" , "Cdbl" , False ) ;
2022-09-17 16:50:08 +00:00
await sub _AddQBMethod ( "SUB" , "ChDir" , False ) ;
2022-06-23 13:43:19 +00:00
await sub _AddQBMethod ( "FUNCTION" , "Cint" , False ) ;
await sub _AddQBMethod ( "FUNCTION" , "Clng" , False ) ;
2022-09-17 16:50:08 +00:00
await sub _AddQBMethod ( "SUB" , "Close" , False ) ;
2022-06-23 13:43:19 +00:00
await sub _AddQBMethod ( "FUNCTION" , "Csng" , False ) ;
await sub _AddQBMethod ( "SUB" , "Circle" , False ) ;
await sub _AddQBMethod ( "SUB" , "Cls" , False ) ;
await sub _AddQBMethod ( "SUB" , "Color" , False ) ;
await sub _AddQBMethod ( "FUNCTION" , "Command$" , False ) ;
await sub _AddQBMethod ( "FUNCTION" , "Cos" , False ) ;
await sub _AddQBMethod ( "FUNCTION" , "Csrlin" , False ) ;
await sub _AddQBMethod ( "FUNCTION" , "Cvi" , False ) ;
await sub _AddQBMethod ( "FUNCTION" , "Cvl" , False ) ;
await sub _AddQBMethod ( "FUNCTION" , "Date$" , False ) ;
await sub _AddQBMethod ( "SUB" , "Draw" , False ) ;
2022-09-17 16:50:08 +00:00
await sub _AddQBMethod ( "FUNCTION" , "EOF" , False ) ;
2022-06-23 13:43:19 +00:00
await sub _AddQBMethod ( "FUNCTION" , "Exp" , False ) ;
2022-09-17 16:50:08 +00:00
await sub _AddQBMethod ( "SUB" , "Files" , True ) ;
2022-06-23 13:43:19 +00:00
await sub _AddQBMethod ( "FUNCTION" , "Fix" , False ) ;
2022-09-17 16:50:08 +00:00
await sub _AddQBMethod ( "FUNCTION" , "FreeFile" , False ) ;
await sub _AddQBMethod ( "SUB" , "Get" , False ) ;
await sub _AddQBMethod ( "FUNCTION" , "Put" , False ) ;
2022-06-23 13:43:19 +00:00
await sub _AddQBMethod ( "FUNCTION" , "Hex$" , False ) ;
await sub _AddQBMethod ( "SUB" , "Input" , True ) ;
await sub _AddQBMethod ( "FUNCTION" , "InKey$" , False ) ;
await sub _AddQBMethod ( "FUNCTION" , "InStr" , False ) ;
await sub _AddQBMethod ( "FUNCTION" , "Int" , False ) ;
await sub _AddQBMethod ( "FUNCTION" , "LBound" , False ) ;
await sub _AddQBMethod ( "FUNCTION" , "Left$" , False ) ;
await sub _AddQBMethod ( "FUNCTION" , "LCase$" , False ) ;
await sub _AddQBMethod ( "FUNCTION" , "Len" , False ) ;
2022-09-17 16:50:08 +00:00
await sub _AddQBMethod ( "FUNCTION" , "LOF" , False ) ;
2022-06-23 13:43:19 +00:00
await sub _AddQBMethod ( "SUB" , "Line" , False ) ;
await sub _AddQBMethod ( "SUB" , "Locate" , False ) ;
await sub _AddQBMethod ( "FUNCTION" , "Log" , False ) ;
await sub _AddQBMethod ( "FUNCTION" , "LTrim$" , False ) ;
2022-09-17 16:50:08 +00:00
await sub _AddQBMethod ( "SUB" , "Kill" , False ) ;
2022-06-23 13:43:19 +00:00
await sub _AddQBMethod ( "FUNCTION" , "Mid$" , False ) ;
2022-09-17 16:50:08 +00:00
await sub _AddQBMethod ( "SUB" , "MkDir" , False ) ;
2022-06-23 13:43:19 +00:00
await sub _AddQBMethod ( "FUNCTION" , "Mki$" , False ) ;
await sub _AddQBMethod ( "FUNCTION" , "Mkl$" , False ) ;
2022-09-17 16:50:08 +00:00
await sub _AddQBMethod ( "SUB" , "Name" , False ) ;
2022-06-23 13:43:19 +00:00
await sub _AddQBMethod ( "FUNCTION" , "Oct$" , False ) ;
2022-09-17 16:50:08 +00:00
await sub _AddQBMethod ( "SUB" , "Open" , False ) ;
2022-06-23 13:43:19 +00:00
await sub _AddQBMethod ( "SUB" , "Paint" , False ) ;
await sub _AddQBMethod ( "FUNCTION" , "Point" , False ) ;
await sub _AddQBMethod ( "FUNCTION" , "Pos" , False ) ;
await sub _AddQBMethod ( "SUB" , "PReset" , False ) ;
await sub _AddQBMethod ( "SUB" , "Print" , True ) ;
await sub _AddQBMethod ( "SUB" , "PSet" , False ) ;
2022-09-17 16:50:08 +00:00
await sub _AddQBMethod ( "SUB" , "Put" , False ) ;
2022-06-23 13:43:19 +00:00
await sub _AddQBMethod ( "SUB" , "Randomize" , False ) ;
await sub _AddQBMethod ( "SUB" , "Restore" , False ) ;
await sub _AddQBMethod ( "FUNCTION" , "Right$" , False ) ;
await sub _AddQBMethod ( "FUNCTION" , "RTrim$" , False ) ;
await sub _AddQBMethod ( "SUB" , "Read" , False ) ;
2022-09-17 16:50:08 +00:00
await sub _AddQBMethod ( "SUB" , "RmDir" , False ) ;
2022-06-23 13:43:19 +00:00
await sub _AddQBMethod ( "FUNCTION" , "Rnd" , False ) ;
await sub _AddQBMethod ( "SUB" , "Screen" , False ) ;
2022-10-27 14:04:15 +00:00
await sub _AddQBMethod ( "FUNCTION" , "Seek" , False ) ;
await sub _AddQBMethod ( "SUB" , "Seek" , False ) ;
2022-06-23 13:43:19 +00:00
await sub _AddQBMethod ( "FUNCTION" , "Sgn" , False ) ;
await sub _AddQBMethod ( "FUNCTION" , "Sin" , False ) ;
await sub _AddQBMethod ( "SUB" , "Sleep" , True ) ;
await sub _AddQBMethod ( "FUNCTION" , "Space" , False ) ;
await sub _AddQBMethod ( "FUNCTION" , "String" , False ) ;
await sub _AddQBMethod ( "FUNCTION" , "Sqr" , False ) ;
await sub _AddQBMethod ( "FUNCTION" , "Str$" , False ) ;
await sub _AddQBMethod ( "SUB" , "Swap" , False ) ;
await sub _AddQBMethod ( "FUNCTION" , "Tan" , False ) ;
await sub _AddQBMethod ( "FUNCTION" , "Time$" , False ) ;
await sub _AddQBMethod ( "FUNCTION" , "Timer" , False ) ;
await sub _AddQBMethod ( "FUNCTION" , "UBound" , False ) ;
await sub _AddQBMethod ( "FUNCTION" , "UCase$" , False ) ;
await sub _AddQBMethod ( "FUNCTION" , "Val" , False ) ;
await sub _AddQBMethod ( "FUNCTION" , "Varptr" , False ) ;
await sub _AddQBMethod ( "SUB" , "Window" , False ) ;
2022-10-27 14:04:15 +00:00
await sub _AddQBMethod ( "SUB" , "Write" , True ) ;
2022-06-23 13:43:19 +00:00
await sub _AddQBMethod ( "SUB" , "IncludeJS" , True ) ;
2022-10-27 14:04:15 +00:00
await sub _AddNativeMethod ( "FUNCTION" , "JSON.Parse" , "JSON.parse" , False ) ;
await sub _AddNativeMethod ( "FUNCTION" , "JSON.Stringify" , "JSON.stringify" , False ) ;
2022-06-23 13:43:19 +00:00
await sub _AddSystemType ( "FETCHRESPONSE" , "ok:INTEGER,status:INTEGER,statusText:STRING,text:STRING" ) ;
await sub _AddQBMethod ( "FUNCTION" , "Fetch" , True ) ;
await sub _AddQBMethod ( "SUB" , "Fetch" , True ) ;
await sub _AddQBMethod ( "FUNCTION" , "FromJSON" , False ) ;
await sub _AddQBMethod ( "FUNCTION" , "ToJSON" , False ) ;
2022-02-16 17:40:03 +00:00
}
2022-03-04 22:28:32 +00:00
this . compile = async function ( src ) {
2022-04-18 16:27:23 +00:00
await sub _QBToJS ( src , TEXT , '' ) ;
2022-02-16 17:40:03 +00:00
var js = '' ;
for ( var i = 1 ; i <= QB . func _UBound ( jsLines ) ; i ++ ) {
2022-06-23 13:43:19 +00:00
js += QB . arrayValue ( jsLines , [ i ] ) . value . text + '\n' ;
2022-02-16 17:40:03 +00:00
}
return js ;
} ;
this . getWarnings = function ( ) {
var w = [ ] ;
for ( var i = 1 ; i <= QB . func _UBound ( warnings ) ; i ++ ) {
w . push ( {
line : QB . arrayValue ( warnings , [ i ] ) . value . line ,
text : QB . arrayValue ( warnings , [ i ] ) . value . text
} ) ;
}
return w ;
} ;
2022-06-17 21:06:58 +00:00
this . getSourceLine = function ( jsLine ) {
if ( jsLine == 0 ) { return 0 ; }
var line = QB . arrayValue ( jsLines , [ jsLine ] ) . value . line ;
line = QB . arrayValue ( lines , [ line ] ) . value . line ;
return line ;
} ;
2022-03-04 22:28:32 +00:00
return this ;
}