mirror of
https://github.com/boxgaming/qbjs.git
synced 2024-09-20 04:24:45 +00:00
Export fix to prevent registering built-in functions. Changed Not operator to use javascript bitwise operator
This commit is contained in:
parent
185d53907b
commit
b8836a2b3e
2 changed files with 179 additions and 80 deletions
194
qb2js.js
194
qb2js.js
|
@ -7,7 +7,7 @@ async function _QBCompiler() {
|
||||||
const FILE = 1; const TEXT = 2;
|
const FILE = 1; const TEXT = 2;
|
||||||
const MWARNING = 0; const MERROR = 1;
|
const MWARNING = 0; const MERROR = 1;
|
||||||
const False = 0;
|
const False = 0;
|
||||||
const True = ! False;
|
const True = ~ False;
|
||||||
const PrintDataTypes = True;
|
const PrintDataTypes = True;
|
||||||
const PrintLineMapping = False;
|
const PrintLineMapping = False;
|
||||||
const PrintTokenizedLine = False;
|
const PrintTokenizedLine = False;
|
||||||
|
@ -20,7 +20,7 @@ async function _QBCompiler() {
|
||||||
|
|
||||||
var lines = QB.initArray([{l:0,u:0}], {line:0,text:'',mtype:0}); /* CODELINE */
|
var lines = QB.initArray([{l:0,u:0}], {line:0,text:'',mtype:0}); /* CODELINE */
|
||||||
var jsLines = QB.initArray([{l:0,u:0}], {line:0,text:'',mtype:0}); /* CODELINE */
|
var jsLines = QB.initArray([{l:0,u:0}], {line:0,text:'',mtype:0}); /* CODELINE */
|
||||||
var methods = QB.initArray([{l:0,u:0}], {line:0,type:'',returnType:'',name:'',uname:'',argc:0,args:'',jsname:'',sync:0}); /* METHOD */
|
var methods = QB.initArray([{l:0,u:0}], {line:0,type:'',returnType:'',name:'',uname:'',argc:0,args:'',jsname:'',sync:0,builtin:0}); /* METHOD */
|
||||||
var types = QB.initArray([{l:0,u:0}], {line:0,name:'',argc:0,args:''}); /* QBTYPE */
|
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 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 globalVars = QB.initArray([{l:0,u:0}], {type:'',name:'',jsname:'',isConst:0,isArray:0,arraySize:0,typeId:0}); /* VARIABLE */
|
||||||
|
@ -28,7 +28,7 @@ async function _QBCompiler() {
|
||||||
var warnings = QB.initArray([{l:0,u:0}], {line:0,text:'',mtype:0}); /* CODELINE */
|
var warnings = QB.initArray([{l:0,u:0}], {line:0,text:'',mtype:0}); /* CODELINE */
|
||||||
var exportLines = QB.initArray([{l:0,u:0}], ''); /* STRING */
|
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 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 exportMethods = QB.initArray([{l:0,u:0}], {line:0,type:'',returnType:'',name:'',uname:'',argc:0,args:'',jsname:'',sync:0,builtin:0}); /* METHOD */
|
||||||
var dataArray = QB.initArray([{l:0,u:0}], ''); /* STRING */
|
var dataArray = QB.initArray([{l:0,u:0}], ''); /* STRING */
|
||||||
var dataLabels = QB.initArray([{l:0,u:0}], {text:'',index:0}); /* LABEL */
|
var dataLabels = QB.initArray([{l:0,u:0}], {text:'',index:0}); /* LABEL */
|
||||||
var modLevel = 0; /* INTEGER */
|
var modLevel = 0; /* INTEGER */
|
||||||
|
@ -78,12 +78,12 @@ if (QB.halted()) { return; }; sourceType = Math.round(sourceType);
|
||||||
}
|
}
|
||||||
await sub_AddJSLine( 0, "/* static method variables: */ ");
|
await sub_AddJSLine( 0, "/* static method variables: */ ");
|
||||||
staticVarLine = (QB.func_UBound( jsLines));
|
staticVarLine = (QB.func_UBound( jsLines));
|
||||||
if (! selfConvert & moduleName == "" ) {
|
if (~ selfConvert & moduleName == "" ) {
|
||||||
await sub_AddJSLine( 0, "QB.start();");
|
await sub_AddJSLine( 0, "QB.start();");
|
||||||
}
|
}
|
||||||
if (! selfConvert & moduleName == "" ) {
|
if (~ selfConvert & moduleName == "" ) {
|
||||||
var mtest = {line:0,type:'',returnType:'',name:'',uname:'',argc:0,args:'',jsname:'',sync:0}; /* METHOD */
|
var mtest = {line:0,type:'',returnType:'',name:'',uname:'',argc:0,args:'',jsname:'',sync:0,builtin:0}; /* METHOD */
|
||||||
if ((await func_FindMethod( "GXOnGameEvent" , mtest, "SUB")) ) {
|
if ((await func_FindMethod( "GXOnGameEvent" , mtest, "SUB" , True)) ) {
|
||||||
await sub_AddJSLine( 0, " await GX.registerGameEvents(sub_GXOnGameEvent);");
|
await sub_AddJSLine( 0, " await GX.registerGameEvents(sub_GXOnGameEvent);");
|
||||||
isGX = True;
|
isGX = True;
|
||||||
} else {
|
} else {
|
||||||
|
@ -94,11 +94,11 @@ if (QB.halted()) { return; }; sourceType = Math.round(sourceType);
|
||||||
await sub_AddJSLine( 0, "");
|
await sub_AddJSLine( 0, "");
|
||||||
await sub_InitData();
|
await sub_InitData();
|
||||||
await sub_ConvertLines( 1, await func_MainEnd(), "");
|
await sub_ConvertLines( 1, await func_MainEnd(), "");
|
||||||
if (! selfConvert & ! isGX & moduleName == "" ) {
|
if (~ selfConvert & ~ isGX & moduleName == "" ) {
|
||||||
await sub_AddJSLine( 0, "QB.end();");
|
await sub_AddJSLine( 0, "QB.end();");
|
||||||
}
|
}
|
||||||
await sub_ConvertMethods();
|
await sub_ConvertMethods();
|
||||||
if (! selfConvert & moduleName == "" ) {
|
if (~ selfConvert & moduleName == "" ) {
|
||||||
await sub_InitTypes();
|
await sub_InitTypes();
|
||||||
}
|
}
|
||||||
if ( selfConvert) {
|
if ( selfConvert) {
|
||||||
|
@ -125,6 +125,35 @@ if (QB.halted()) { return; }; sourceType = Math.round(sourceType);
|
||||||
await sub_AddJSLine( 0, " }");
|
await sub_AddJSLine( 0, " }");
|
||||||
await sub_AddJSLine( 0, " return w;");
|
await sub_AddJSLine( 0, " return w;");
|
||||||
await sub_AddJSLine( 0, "};");
|
await sub_AddJSLine( 0, "};");
|
||||||
|
await sub_AddJSLine( 0, "function _getMethods(methods) {");
|
||||||
|
await sub_AddJSLine( 0, " var m = [];");
|
||||||
|
await sub_AddJSLine( 0, " for (var i=1; i <= QB.func_UBound(methods); i++) {");
|
||||||
|
await sub_AddJSLine( 0, " var lidx = QB.arrayValue(methods, [i]).value.line;");
|
||||||
|
await sub_AddJSLine( 0, " m.push({");
|
||||||
|
await sub_AddJSLine( 0, " line: QB.arrayValue(lines, [lidx]).value.line,");
|
||||||
|
await sub_AddJSLine( 0, " type: QB.arrayValue(methods, [i]).value.type,");
|
||||||
|
await sub_AddJSLine( 0, " returnType: QB.arrayValue(methods, [i]).value.returnType,");
|
||||||
|
await sub_AddJSLine( 0, " name: QB.arrayValue(methods, [i]).value.name,");
|
||||||
|
await sub_AddJSLine( 0, " uname: QB.arrayValue(methods, [i]).value.uname,");
|
||||||
|
await sub_AddJSLine( 0, " jsname: QB.arrayValue(methods, [i]).value.jsname,");
|
||||||
|
await sub_AddJSLine( 0, " argc: QB.arrayValue(methods, [i]).value.argc,");
|
||||||
|
await sub_AddJSLine( 0, " args: QB.arrayValue(methods, [i]).value.args");
|
||||||
|
await sub_AddJSLine( 0, " });");
|
||||||
|
await sub_AddJSLine( 0, " }");
|
||||||
|
await sub_AddJSLine( 0, " return m;");
|
||||||
|
await sub_AddJSLine( 0, "}");
|
||||||
|
await sub_AddJSLine( 0, "this.getMethods = function () { return _getMethods(methods); };");
|
||||||
|
await sub_AddJSLine( 0, "this.getExportMethods = function () { return _getMethods(exportMethods); };");
|
||||||
|
await sub_AddJSLine( 0, "this.getExportConsts = function() {");
|
||||||
|
await sub_AddJSLine( 0, " var c = [];");
|
||||||
|
await sub_AddJSLine( 0, " for (var i=1; i <= QB.func_UBound(exportConsts); i++) {");
|
||||||
|
await sub_AddJSLine( 0, " c.push({");
|
||||||
|
await sub_AddJSLine( 0, " name: QB.arrayValue(exportConsts, [i]).value.name,");
|
||||||
|
await sub_AddJSLine( 0, " jsname: QB.arrayValue(exportConsts, [i]).value.jsname");
|
||||||
|
await sub_AddJSLine( 0, " });");
|
||||||
|
await sub_AddJSLine( 0, " }");
|
||||||
|
await sub_AddJSLine( 0, " return c;");
|
||||||
|
await sub_AddJSLine( 0, "}");
|
||||||
await sub_AddJSLine( 0, "this.getSourceLine = function(jsLine) {");
|
await sub_AddJSLine( 0, "this.getSourceLine = function(jsLine) {");
|
||||||
await sub_AddJSLine( 0, " if (jsLine == 0) { return 0; }");
|
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, " var line = QB.arrayValue(jsLines, [jsLine]).value.line;");
|
||||||
|
@ -135,7 +164,6 @@ if (QB.halted()) { return; }; sourceType = Math.round(sourceType);
|
||||||
await sub_AddJSLine( 0, "return this;");
|
await sub_AddJSLine( 0, "return this;");
|
||||||
await sub_AddJSLine( 0, "}");
|
await sub_AddJSLine( 0, "}");
|
||||||
} else if ( moduleName != "" ) {
|
} else if ( moduleName != "" ) {
|
||||||
await sub_AddJSLine( 0, "return this;");
|
|
||||||
await sub_AddJSLine( 0, "}");
|
await sub_AddJSLine( 0, "}");
|
||||||
await sub_AddJSLine( 0, "const " + moduleName + " = await _" + moduleName + "();");
|
await sub_AddJSLine( 0, "const " + moduleName + " = await _" + moduleName + "();");
|
||||||
} else if ( sourceType == FILE) {
|
} else if ( sourceType == FILE) {
|
||||||
|
@ -177,7 +205,7 @@ if (QB.halted()) { return; };
|
||||||
async function sub_ResetDataStructures() {
|
async function sub_ResetDataStructures() {
|
||||||
if (QB.halted()) { return; };
|
if (QB.halted()) { return; };
|
||||||
QB.resizeArray(lines, [{l:0,u:0}], {line:0,text:'',mtype:0}, false); /* CODELINE */
|
QB.resizeArray(lines, [{l:0,u:0}], {line:0,text:'',mtype:0}, 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(methods, [{l:0,u:0}], {line:0,type:'',returnType:'',name:'',uname:'',argc:0,args:'',jsname:'',sync:0,builtin:0}, false); /* METHOD */
|
||||||
QB.resizeArray(types, [{l:0,u:0}], {line:0,name:'',argc:0,args:''}, false); /* QBTYPE */
|
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(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(globalVars, [{l:0,u:0}], {type:'',name:'',jsname:'',isConst:0,isArray:0,arraySize:0,typeId:0}, false); /* VARIABLE */
|
||||||
|
@ -186,7 +214,7 @@ if (QB.halted()) { return; };
|
||||||
QB.resizeArray(dataArray, [{l:0,u:0}], '', false); /* STRING */
|
QB.resizeArray(dataArray, [{l:0,u:0}], '', false); /* STRING */
|
||||||
QB.resizeArray(dataLabels, [{l:0,u:0}], {text:'',index:0}, false); /* LABEL */
|
QB.resizeArray(dataLabels, [{l:0,u:0}], {text:'',index:0}, false); /* LABEL */
|
||||||
if ( modLevel == 0) {
|
if ( modLevel == 0) {
|
||||||
QB.resizeArray(exportMethods, [{l:0,u:0}], {line:0,type:'',returnType:'',name:'',uname:'',argc:0,args:'',jsname:'',sync:0}, false); /* METHOD */
|
QB.resizeArray(exportMethods, [{l:0,u:0}], {line:0,type:'',returnType:'',name:'',uname:'',argc:0,args:'',jsname:'',sync:0,builtin:0}, false); /* METHOD */
|
||||||
QB.resizeArray(exportConsts, [{l:0,u:0}], {type:'',name:'',jsname:'',isConst:0,isArray:0,arraySize:0,typeId:0}, false); /* VARIABLE */
|
QB.resizeArray(exportConsts, [{l:0,u:0}], {type:'',name:'',jsname:'',isConst:0,isArray:0,arraySize:0,typeId:0}, false); /* VARIABLE */
|
||||||
}
|
}
|
||||||
currentMethod = "";
|
currentMethod = "";
|
||||||
|
@ -224,7 +252,7 @@ if (QB.halted()) { return; }; firstLine = Math.round(firstLine); lastLine = Math
|
||||||
var i = 0; /* INTEGER */ var j = 0; /* INTEGER */
|
var i = 0; /* INTEGER */ var j = 0; /* INTEGER */
|
||||||
var indent = 0; /* INTEGER */
|
var indent = 0; /* INTEGER */
|
||||||
var tempIndent = 0; /* INTEGER */
|
var tempIndent = 0; /* INTEGER */
|
||||||
var m = {line:0,type:'',returnType:'',name:'',uname:'',argc:0,args:'',jsname:'',sync:0}; /* METHOD */
|
var m = {line:0,type:'',returnType:'',name:'',uname:'',argc:0,args:'',jsname:'',sync:0,builtin:0}; /* METHOD */
|
||||||
var totalIndent = 0; /* INTEGER */
|
var totalIndent = 0; /* INTEGER */
|
||||||
totalIndent = 1;
|
totalIndent = 1;
|
||||||
var caseCount = 0; /* INTEGER */
|
var caseCount = 0; /* INTEGER */
|
||||||
|
@ -564,7 +592,7 @@ if (QB.halted()) { return; }; firstLine = Math.round(firstLine); lastLine = Math
|
||||||
} else {
|
} else {
|
||||||
subname = (QB.func_Left( subline, subend - 1));
|
subname = (QB.func_Left( subline, subend - 1));
|
||||||
}
|
}
|
||||||
if ((await func_FindMethod( subname, m, "SUB")) ) {
|
if ((await func_FindMethod( subname, m, "SUB" , True)) ) {
|
||||||
var subargs = ''; /* STRING */
|
var subargs = ''; /* STRING */
|
||||||
if ( subname == subline) {
|
if ( subname == subline) {
|
||||||
subargs = "";
|
subargs = "";
|
||||||
|
@ -600,7 +628,7 @@ if (QB.halted()) { return; }; firstLine = Math.round(firstLine); lastLine = Math
|
||||||
arg1 = (QB.func_Mid( QB.arrayValue(parts, [ 1]).value , parendx));
|
arg1 = (QB.func_Mid( QB.arrayValue(parts, [ 1]).value , parendx));
|
||||||
c = (await func_SLSplit( sname + " " + arg1 + (await func_Join( parts , 2, - 1, " ")) , parts , True));
|
c = (await func_SLSplit( sname + " " + arg1 + (await func_Join( parts , 2, - 1, " ")) , parts , True));
|
||||||
}
|
}
|
||||||
if ((await func_FindMethod( QB.arrayValue(parts, [ 1]).value , m, "SUB")) ) {
|
if ((await func_FindMethod( QB.arrayValue(parts, [ 1]).value , m, "SUB" , True)) ) {
|
||||||
js = (await func_ConvertSub( m, (await func_Join( parts , 2, - 1, " ")) , i));
|
js = (await func_ConvertSub( m, (await func_Join( parts , 2, - 1, " ")) , i));
|
||||||
} else {
|
} else {
|
||||||
js = "// " + l;
|
js = "// " + l;
|
||||||
|
@ -608,7 +636,7 @@ if (QB.halted()) { return; }; firstLine = Math.round(firstLine); lastLine = Math
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if ((await func_FindMethod( QB.arrayValue(parts, [ 1]).value , m, "SUB")) ) {
|
if ((await func_FindMethod( QB.arrayValue(parts, [ 1]).value , m, "SUB" , True)) ) {
|
||||||
js = (await func_ConvertSub( m, (await func_Join( parts , 2, - 1, " ")) , i));
|
js = (await func_ConvertSub( m, (await func_Join( parts , 2, - 1, " ")) , i));
|
||||||
} else {
|
} else {
|
||||||
js = "// " + l;
|
js = "// " + l;
|
||||||
|
@ -706,8 +734,8 @@ return FixCondition;
|
||||||
async function sub_ParseExport(s/*STRING*/,lineIndex/*INTEGER*/) {
|
async function sub_ParseExport(s/*STRING*/,lineIndex/*INTEGER*/) {
|
||||||
if (QB.halted()) { return; };
|
if (QB.halted()) { return; };
|
||||||
var exportedItem = ''; /* STRING */
|
var exportedItem = ''; /* STRING */
|
||||||
var ef = {line:0,type:'',returnType:'',name:'',uname:'',argc:0,args:'',jsname:'',sync:0}; /* METHOD */
|
var ef = {line:0,type:'',returnType:'',name:'',uname:'',argc:0,args:'',jsname:'',sync:0,builtin:0}; /* METHOD */
|
||||||
var es = {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,builtin:0}; /* METHOD */
|
||||||
var ev = {type:'',name:'',jsname:'',isConst:0,isArray:0,arraySize:0,typeId:0}; /* VARIABLE */
|
var ev = {type:'',name:'',jsname:'',isConst:0,isArray:0,arraySize:0,typeId:0}; /* VARIABLE */
|
||||||
var exportName = ''; /* STRING */
|
var exportName = ''; /* STRING */
|
||||||
var parts = QB.initArray([{l:0,u:0}], ''); /* STRING */
|
var parts = QB.initArray([{l:0,u:0}], ''); /* STRING */
|
||||||
|
@ -715,7 +743,7 @@ if (QB.halted()) { return; };
|
||||||
found = False;
|
found = False;
|
||||||
var c = 0; /* INTEGER */
|
var c = 0; /* INTEGER */
|
||||||
c = (await func_SLSplit( s, parts , False));
|
c = (await func_SLSplit( s, parts , False));
|
||||||
if ((await func_FindMethod( QB.arrayValue(parts, [ 1]).value , es, "SUB")) ) {
|
if ((await func_FindMethod( QB.arrayValue(parts, [ 1]).value , es, "SUB" , False)) ) {
|
||||||
if ( c > 2) {
|
if ( c > 2) {
|
||||||
exportName = QB.arrayValue(parts, [ 3]).value;
|
exportName = QB.arrayValue(parts, [ 3]).value;
|
||||||
} else {
|
} else {
|
||||||
|
@ -728,7 +756,7 @@ if (QB.halted()) { return; };
|
||||||
await sub_RegisterExport( exportName, exportedItem);
|
await sub_RegisterExport( exportName, exportedItem);
|
||||||
found = True;
|
found = True;
|
||||||
}
|
}
|
||||||
if ((await func_FindMethod( QB.arrayValue(parts, [ 1]).value , ef, "FUNCTION")) ) {
|
if ((await func_FindMethod( QB.arrayValue(parts, [ 1]).value , ef, "FUNCTION" , False)) ) {
|
||||||
if ( c > 2) {
|
if ( c > 2) {
|
||||||
exportName = QB.arrayValue(parts, [ 3]).value;
|
exportName = QB.arrayValue(parts, [ 3]).value;
|
||||||
} else {
|
} else {
|
||||||
|
@ -760,7 +788,7 @@ if (QB.halted()) { return; };
|
||||||
found = True;
|
found = True;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (! found) {
|
if (~ found) {
|
||||||
await sub_AddWarning( lineIndex, "Invalid export [" + QB.arrayValue(parts, [ 1]).value + "]. Exported items must be a Sub, Function or Const in the current module.");
|
await sub_AddWarning( lineIndex, "Invalid export [" + QB.arrayValue(parts, [ 1]).value + "]. Exported items must be a Sub, Function or Const in the current module.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -868,8 +896,8 @@ var ConvertPut = null;
|
||||||
position = "undefined";
|
position = "undefined";
|
||||||
}
|
}
|
||||||
var v = {type:'',name:'',jsname:'',isConst:0,isArray:0,arraySize:0,typeId:0}; /* VARIABLE */
|
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, False)) ) {
|
||||||
if (!(await func_FindVariable( vname, v, True)) ) {
|
if (~(await func_FindVariable( vname, v, True)) ) {
|
||||||
await sub_AddWarning( lineNumber, "Invalid variable '" + vname + "'");
|
await sub_AddWarning( lineNumber, "Invalid variable '" + vname + "'");
|
||||||
return ConvertPut;
|
return ConvertPut;
|
||||||
}
|
}
|
||||||
|
@ -1469,7 +1497,7 @@ var GetVarType = null;
|
||||||
vname = (QB.func_Left( vname, pidx - 1));
|
vname = (QB.func_Left( vname, pidx - 1));
|
||||||
}
|
}
|
||||||
found = (await func_FindVariable( vname, v, False));
|
found = (await func_FindVariable( vname, v, False));
|
||||||
if (! found) {
|
if (~ found) {
|
||||||
found = (await func_FindVariable( vname, v, True));
|
found = (await func_FindVariable( vname, v, True));
|
||||||
}
|
}
|
||||||
if ( found) {
|
if ( found) {
|
||||||
|
@ -1482,7 +1510,7 @@ var GetVarType = null;
|
||||||
vname = (QB.func_Left( vname, pidx - 1));
|
vname = (QB.func_Left( vname, pidx - 1));
|
||||||
}
|
}
|
||||||
found = (await func_FindVariable( vname, v, False));
|
found = (await func_FindVariable( vname, v, False));
|
||||||
if (! found) {
|
if (~ found) {
|
||||||
found = (await func_FindVariable( vname, v, True));
|
found = (await func_FindVariable( vname, v, True));
|
||||||
}
|
}
|
||||||
if ( found) {
|
if ( found) {
|
||||||
|
@ -1553,12 +1581,12 @@ var FindParamChar = null;
|
||||||
var ___v9485711 = 0; ___l3009705: for ( i= 1; i <= (QB.func_Len( s)); i= i + 1) { if (QB.halted()) { return; } ___v9485711++; if (___v9485711 % 100 == 0) { await QB.autoLimit(); }
|
var ___v9485711 = 0; ___l3009705: for ( i= 1; i <= (QB.func_Len( s)); i= i + 1) { if (QB.halted()) { return; } ___v9485711++; if (___v9485711 % 100 == 0) { await QB.autoLimit(); }
|
||||||
c = (QB.func_Mid( s, i, 1));
|
c = (QB.func_Mid( s, i, 1));
|
||||||
if ( c == (QB.func_Chr( 34)) ) {
|
if ( c == (QB.func_Chr( 34)) ) {
|
||||||
quote = ! quote;
|
quote = ~ quote;
|
||||||
} else if (! quote & c == "(" ) {
|
} else if (~ quote & c == "(" ) {
|
||||||
paren = paren + 1;
|
paren = paren + 1;
|
||||||
} else if (! quote & c == ")" ) {
|
} else if (~ quote & c == ")" ) {
|
||||||
paren = paren - 1;
|
paren = paren - 1;
|
||||||
} else if (! quote & paren == 0 & c == char) {
|
} else if (~ quote & paren == 0 & c == char) {
|
||||||
idx = i;
|
idx = i;
|
||||||
break ___l3009705;
|
break ___l3009705;
|
||||||
}
|
}
|
||||||
|
@ -1758,7 +1786,7 @@ var RegisterVar = null;
|
||||||
bvar.jsname = "$" + currentMethod + "__" + bvar.jsname;
|
bvar.jsname = "$" + currentMethod + "__" + bvar.jsname;
|
||||||
}
|
}
|
||||||
bvar.type = (await func_NormalizeType( bvar.type));
|
bvar.type = (await func_NormalizeType( bvar.type));
|
||||||
if (! bvar.isArray) {
|
if (~ bvar.isArray) {
|
||||||
js = js + "var " + bvar.jsname + " = " + (await func_InitTypeValue( bvar.type)) + "; ";
|
js = js + "var " + bvar.jsname + " = " + (await func_InitTypeValue( bvar.type)) + "; ";
|
||||||
} else {
|
} else {
|
||||||
if ((await func_FindVariable( bvar.name, findVar, True)) ) {
|
if ((await func_FindVariable( bvar.name, findVar, True)) ) {
|
||||||
|
@ -1863,7 +1891,7 @@ var ConvertExpression = null;
|
||||||
var word = ''; /* STRING */
|
var word = ''; /* STRING */
|
||||||
word = "";
|
word = "";
|
||||||
var bvar = {type:'',name:'',jsname:'',isConst:0,isArray:0,arraySize:0,typeId:0}; /* VARIABLE */
|
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 m = {line:0,type:'',returnType:'',name:'',uname:'',argc:0,args:'',jsname:'',sync:0,builtin:0}; /* METHOD */
|
||||||
var stringLiteral = 0; /* INTEGER */
|
var stringLiteral = 0; /* INTEGER */
|
||||||
var i = 0; /* INTEGER */
|
var i = 0; /* INTEGER */
|
||||||
i = 1;
|
i = 1;
|
||||||
|
@ -1871,7 +1899,7 @@ var ConvertExpression = null;
|
||||||
c = (QB.func_Mid( ex, i, 1));
|
c = (QB.func_Mid( ex, i, 1));
|
||||||
if ( c == (QB.func_Chr( 34)) ) {
|
if ( c == (QB.func_Chr( 34)) ) {
|
||||||
js = js + c;
|
js = js + c;
|
||||||
stringLiteral = ! stringLiteral;
|
stringLiteral = ~ stringLiteral;
|
||||||
} else if ( stringLiteral) {
|
} else if ( stringLiteral) {
|
||||||
js = js + c;
|
js = js + c;
|
||||||
} else {
|
} else {
|
||||||
|
@ -1882,7 +1910,7 @@ var ConvertExpression = null;
|
||||||
var uword = ''; /* STRING */
|
var uword = ''; /* STRING */
|
||||||
uword = (QB.func_UCase( (QB.func__Trim( word))));
|
uword = (QB.func_UCase( (QB.func__Trim( word))));
|
||||||
if ( uword == "NOT" ) {
|
if ( uword == "NOT" ) {
|
||||||
js = js + "!";
|
js = js + "~";
|
||||||
} else if ( uword == "AND" ) {
|
} else if ( uword == "AND" ) {
|
||||||
js = js + " & ";
|
js = js + " & ";
|
||||||
} else if ( uword == "OR" ) {
|
} else if ( uword == "OR" ) {
|
||||||
|
@ -1905,7 +1933,7 @@ var ConvertExpression = null;
|
||||||
if ((await func_FindVariable( word, bvar, False)) ) {
|
if ((await func_FindVariable( word, bvar, False)) ) {
|
||||||
js = js + " " + bvar.jsname;
|
js = js + " " + bvar.jsname;
|
||||||
} else {
|
} else {
|
||||||
if ((await func_FindMethod( word, m, "FUNCTION")) ) {
|
if ((await func_FindMethod( word, m, "FUNCTION" , True)) ) {
|
||||||
if ( m.name != currentMethod) {
|
if ( m.name != currentMethod) {
|
||||||
js = js + (await func_CallMethod( m)) + "()";
|
js = js + (await func_CallMethod( m)) + "()";
|
||||||
} else {
|
} else {
|
||||||
|
@ -1931,20 +1959,20 @@ var ConvertExpression = null;
|
||||||
var stringLiteral2 = 0; /* INTEGER */
|
var stringLiteral2 = 0; /* INTEGER */
|
||||||
stringLiteral2 = False;
|
stringLiteral2 = False;
|
||||||
i = i + 1;
|
i = i + 1;
|
||||||
var ___v6276420 = 0; ___l6317424: while (! done & i <= (QB.func_Len( ex))) { if (QB.halted()) { return; }___v6276420++; if (___v6276420 % 100 == 0) { await QB.autoLimit(); }
|
var ___v6276420 = 0; ___l6317424: while (~ done & i <= (QB.func_Len( ex))) { if (QB.halted()) { return; }___v6276420++; if (___v6276420 % 100 == 0) { await QB.autoLimit(); }
|
||||||
c2 = (QB.func_Mid( ex, i, 1));
|
c2 = (QB.func_Mid( ex, i, 1));
|
||||||
if ( c2 == (QB.func_Chr( 34)) ) {
|
if ( c2 == (QB.func_Chr( 34)) ) {
|
||||||
stringLiteral2 = ! stringLiteral2;
|
stringLiteral2 = ~ stringLiteral2;
|
||||||
} else if (! stringLiteral2 & c2 == "(" ) {
|
} else if (~ stringLiteral2 & c2 == "(" ) {
|
||||||
pcount = pcount + 1;
|
pcount = pcount + 1;
|
||||||
} else if (! stringLiteral2 & c2 == ")" ) {
|
} else if (~ stringLiteral2 & c2 == ")" ) {
|
||||||
if ( pcount == 0) {
|
if ( pcount == 0) {
|
||||||
done = True;
|
done = True;
|
||||||
} else {
|
} else {
|
||||||
pcount = pcount - 1;
|
pcount = pcount - 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (! done) {
|
if (~ done) {
|
||||||
ex2 = ex2 + c2;
|
ex2 = ex2 + c2;
|
||||||
i = i + 1;
|
i = i + 1;
|
||||||
}
|
}
|
||||||
|
@ -1963,7 +1991,7 @@ var ConvertExpression = null;
|
||||||
} else {
|
} else {
|
||||||
js = js + fneg + "QB.arrayValue(" + bvar.jsname + ", [" + (await func_ConvertExpression( ex2, lineNumber)) + "]).value";
|
js = js + fneg + "QB.arrayValue(" + bvar.jsname + ", [" + (await func_ConvertExpression( ex2, lineNumber)) + "]).value";
|
||||||
}
|
}
|
||||||
} else if ((await func_FindMethod( word, m, "FUNCTION")) ) {
|
} else if ((await func_FindMethod( word, m, "FUNCTION" , True)) ) {
|
||||||
js = js + fneg + "(" + (await func_CallMethod( m)) + "(" + (await func_ConvertMethodParams( ex2, lineNumber)) + "))";
|
js = js + fneg + "(" + (await func_CallMethod( m)) + "(" + (await func_ConvertMethodParams( ex2, lineNumber)) + "))";
|
||||||
} else {
|
} else {
|
||||||
if ((QB.func__Trim( word)) != "" ) {
|
if ((QB.func__Trim( word)) != "" ) {
|
||||||
|
@ -2034,7 +2062,7 @@ var FindVariable = null;
|
||||||
break ___l5610401;
|
break ___l5610401;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (! found) {
|
if (~ found) {
|
||||||
var ___v8348172 = 0; ___l9137176: for ( i= 1; i <= (QB.func_UBound( globalVars)); i= i + 1) { if (QB.halted()) { return; } ___v8348172++; if (___v8348172 % 100 == 0) { await QB.autoLimit(); }
|
var ___v8348172 = 0; ___l9137176: for ( i= 1; i <= (QB.func_UBound( globalVars)); i= i + 1) { if (QB.halted()) { return; } ___v8348172++; if (___v8348172 % 100 == 0) { await QB.autoLimit(); }
|
||||||
if (QB.arrayValue(globalVars, [ i]).value .isArray == isArray & (QB.func_UCase( QB.arrayValue(globalVars, [ i]).value .name)) == fvarname) {
|
if (QB.arrayValue(globalVars, [ i]).value .isArray == isArray & (QB.func_UCase( QB.arrayValue(globalVars, [ i]).value .name)) == fvarname) {
|
||||||
found = True;
|
found = True;
|
||||||
|
@ -2052,14 +2080,15 @@ var FindVariable = null;
|
||||||
FindVariable = found;
|
FindVariable = found;
|
||||||
return FindVariable;
|
return FindVariable;
|
||||||
}
|
}
|
||||||
async function func_FindMethod(mname/*STRING*/,m/*METHOD*/,t/*STRING*/) {
|
async function func_FindMethod(mname/*STRING*/,m/*METHOD*/,t/*STRING*/,includeBuiltIn/*INTEGER*/) {
|
||||||
if (QB.halted()) { return; };
|
if (QB.halted()) { return; };
|
||||||
var FindMethod = null;
|
var FindMethod = null;
|
||||||
var found = 0; /* INTEGER */
|
var found = 0; /* INTEGER */
|
||||||
found = False;
|
found = False;
|
||||||
var i = 0; /* INTEGER */
|
var i = 0; /* INTEGER */
|
||||||
var ___v5433606 = 0; ___l226292: for ( i= 1; i <= (QB.func_UBound( methods)); i= i + 1) { if (QB.halted()) { return; } ___v5433606++; if (___v5433606 % 100 == 0) { await QB.autoLimit(); }
|
var ___v5433606 = 0; ___l226292: for ( i= 1; i <= (QB.func_UBound( methods)); i= i + 1) { if (QB.halted()) { return; } ___v5433606++; if (___v5433606 % 100 == 0) { await QB.autoLimit(); }
|
||||||
if (QB.arrayValue(methods, [ i]).value .uname == (QB.func__Trim( (QB.func_UCase( (await func_RemoveSuffix( mname)))))) & QB.arrayValue(methods, [ i]).value .type == t) {
|
if ((~ includeBuiltIn) & QB.arrayValue(methods, [ i]).value .builtin) {
|
||||||
|
} else 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;
|
found = True;
|
||||||
m.line = QB.arrayValue(methods, [ i]).value .line;
|
m.line = QB.arrayValue(methods, [ i]).value .line;
|
||||||
m.type = QB.arrayValue(methods, [ i]).value .type;
|
m.type = QB.arrayValue(methods, [ i]).value .type;
|
||||||
|
@ -2073,7 +2102,7 @@ var FindMethod = null;
|
||||||
break ___l226292;
|
break ___l226292;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (! found) {
|
if (~ found) {
|
||||||
var ___v4302612 = 0; ___l9161640: for ( i= 1; i <= (QB.func_UBound( exportMethods)); i= i + 1) { if (QB.halted()) { return; } ___v4302612++; if (___v4302612 % 100 == 0) { await QB.autoLimit(); }
|
var ___v4302612 = 0; ___l9161640: for ( i= 1; i <= (QB.func_UBound( exportMethods)); i= i + 1) { if (QB.halted()) { return; } ___v4302612++; if (___v4302612 % 100 == 0) { await QB.autoLimit(); }
|
||||||
if (QB.arrayValue(exportMethods, [ i]).value .uname == (QB.func__Trim( (QB.func_UCase( (await func_RemoveSuffix( mname)))))) & QB.arrayValue(exportMethods, [ i]).value .type == t) {
|
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;
|
found = True;
|
||||||
|
@ -2131,7 +2160,7 @@ if (QB.halted()) { return; };
|
||||||
}
|
}
|
||||||
bvar.jsname = "";
|
bvar.jsname = "";
|
||||||
await sub_AddVariable( bvar, localVars);
|
await sub_AddVariable( bvar, localVars);
|
||||||
if (! bvar.isArray) {
|
if (~ bvar.isArray) {
|
||||||
var typeName = ''; /* STRING */
|
var typeName = ''; /* STRING */
|
||||||
typeName = (QB.func_UCase( bvar.type));
|
typeName = (QB.func_UCase( bvar.type));
|
||||||
if ( typeName == "_BIT" | typeName == "_UNSIGNED _BIT" | typeName == "_BYTE" | typeName == "_UNSIGNED _BYTE" | typeName == "INTEGER" | typeName == "_UNSIGNED INTEGER" | typeName == "LONG" | typeName == "_UNSIGNED LONG" | typeName == "_INTEGER64" | typeName == "_UNSIGNED _INTEGER64" ) {
|
if ( typeName == "_BIT" | typeName == "_UNSIGNED _BIT" | typeName == "_BYTE" | typeName == "_UNSIGNED _BYTE" | typeName == "INTEGER" | typeName == "_UNSIGNED INTEGER" | typeName == "LONG" | typeName == "_UNSIGNED LONG" | typeName == "_INTEGER64" | typeName == "_UNSIGNED _INTEGER64" ) {
|
||||||
|
@ -2271,7 +2300,7 @@ var ReadLine = null;
|
||||||
}
|
}
|
||||||
if ((QB.func_UCase( QB.arrayValue(words, [ 1]).value)) == "$END" ) {
|
if ((QB.func_UCase( QB.arrayValue(words, [ 1]).value)) == "$END" ) {
|
||||||
if ( rawJS) {
|
if ( rawJS) {
|
||||||
rawJS = ! rawJS;
|
rawJS = ~ rawJS;
|
||||||
}
|
}
|
||||||
await sub_AddLine( lineIndex, fline);
|
await sub_AddLine( lineIndex, fline);
|
||||||
ReadLine = rawJS;
|
ReadLine = rawJS;
|
||||||
|
@ -2393,7 +2422,7 @@ if (QB.halted()) { return; };
|
||||||
argstr = (QB.func_Left( mstr, pend - 1));
|
argstr = (QB.func_Left( mstr, pend - 1));
|
||||||
}
|
}
|
||||||
var arga = QB.initArray([{l:0,u:0}], ''); /* STRING */
|
var arga = QB.initArray([{l:0,u:0}], ''); /* STRING */
|
||||||
var m = {line:0,type:'',returnType:'',name:'',uname:'',argc:0,args:'',jsname:'',sync:0}; /* METHOD */
|
var m = {line:0,type:'',returnType:'',name:'',uname:'',argc:0,args:'',jsname:'',sync:0,builtin:0}; /* METHOD */
|
||||||
m.line = i;
|
m.line = i;
|
||||||
m.type = word;
|
m.type = word;
|
||||||
m.name = mname;
|
m.name = mname;
|
||||||
|
@ -2480,9 +2509,9 @@ var SLSplit = null;
|
||||||
var oplen = 0; /* INTEGER */
|
var oplen = 0; /* INTEGER */
|
||||||
oplen = (await func_FindOperator( c, c2));
|
oplen = (await func_FindOperator( c, c2));
|
||||||
if ( c == (QB.func_Chr( 34)) ) {
|
if ( c == (QB.func_Chr( 34)) ) {
|
||||||
quoteMode = ! quoteMode;
|
quoteMode = ~ quoteMode;
|
||||||
result = result + c;
|
result = result + c;
|
||||||
if (! quoteMode & escapeStrings) {
|
if (~ quoteMode & escapeStrings) {
|
||||||
result = (await func_Replace( result, "\\" , "\\\\"));
|
result = (await func_Replace( result, "\\" , "\\\\"));
|
||||||
}
|
}
|
||||||
} else if ( c == " " ) {
|
} else if ( c == " " ) {
|
||||||
|
@ -2571,7 +2600,7 @@ if (QB.halted()) { return; };
|
||||||
var c = ''; /* STRING */
|
var c = ''; /* STRING */
|
||||||
c = (QB.func_Mid( sourceString, i, 1));
|
c = (QB.func_Mid( sourceString, i, 1));
|
||||||
if ( c == (QB.func_Chr( 34)) ) {
|
if ( c == (QB.func_Chr( 34)) ) {
|
||||||
quoteMode = ! quoteMode;
|
quoteMode = ~ quoteMode;
|
||||||
} else if ( quoteMode) {
|
} else if ( quoteMode) {
|
||||||
} else if ( c == "(" ) {
|
} else if ( c == "(" ) {
|
||||||
paren = paren + 1;
|
paren = paren + 1;
|
||||||
|
@ -2602,7 +2631,7 @@ var SLSplit2 = null;
|
||||||
var c = ''; /* STRING */
|
var c = ''; /* STRING */
|
||||||
c = (QB.func_Mid( cstr, i, 1));
|
c = (QB.func_Mid( cstr, i, 1));
|
||||||
if ( c == (QB.func_Chr( 34)) ) {
|
if ( c == (QB.func_Chr( 34)) ) {
|
||||||
quoteMode = ! quoteMode;
|
quoteMode = ~ quoteMode;
|
||||||
result = result + c;
|
result = result + c;
|
||||||
} else if ( quoteMode) {
|
} else if ( quoteMode) {
|
||||||
result = result + c;
|
result = result + c;
|
||||||
|
@ -2651,7 +2680,7 @@ var ListSplit = null;
|
||||||
var c = ''; /* STRING */
|
var c = ''; /* STRING */
|
||||||
c = (QB.func_Mid( cstr, i, 1));
|
c = (QB.func_Mid( cstr, i, 1));
|
||||||
if ( c == (QB.func_Chr( 34)) ) {
|
if ( c == (QB.func_Chr( 34)) ) {
|
||||||
quoteMode = ! quoteMode;
|
quoteMode = ~ quoteMode;
|
||||||
result = result + c;
|
result = result + c;
|
||||||
} else if ( quoteMode) {
|
} else if ( quoteMode) {
|
||||||
result = result + c;
|
result = result + c;
|
||||||
|
@ -2696,7 +2725,7 @@ var PrintSplit = null;
|
||||||
var c = ''; /* STRING */
|
var c = ''; /* STRING */
|
||||||
c = (QB.func_Mid( cstr, i, 1));
|
c = (QB.func_Mid( cstr, i, 1));
|
||||||
if ( c == (QB.func_Chr( 34)) ) {
|
if ( c == (QB.func_Chr( 34)) ) {
|
||||||
quoteMode = ! quoteMode;
|
quoteMode = ~ quoteMode;
|
||||||
result = result + c;
|
result = result + c;
|
||||||
} else if ( quoteMode) {
|
} else if ( quoteMode) {
|
||||||
result = result + c;
|
result = result + c;
|
||||||
|
@ -2737,7 +2766,7 @@ if (QB.halted()) { return; };
|
||||||
await QB.sub_Print(["------------------------------------------------------------"]);
|
await QB.sub_Print(["------------------------------------------------------------"]);
|
||||||
var i = 0; /* INTEGER */
|
var i = 0; /* INTEGER */
|
||||||
var ___v6789134 = 0; ___l1919225: for ( i= 1; i <= (QB.func_UBound( methods)); i= i + 1) { if (QB.halted()) { return; } ___v6789134++; if (___v6789134 % 100 == 0) { await QB.autoLimit(); }
|
var ___v6789134 = 0; ___l1919225: for ( i= 1; i <= (QB.func_UBound( methods)); i= i + 1) { if (QB.halted()) { return; } ___v6789134++; if (___v6789134 % 100 == 0) { await QB.autoLimit(); }
|
||||||
var m = {line:0,type:'',returnType:'',name:'',uname:'',argc:0,args:'',jsname:'',sync:0}; /* METHOD */
|
var m = {line:0,type:'',returnType:'',name:'',uname:'',argc:0,args:'',jsname:'',sync:0,builtin:0}; /* METHOD */
|
||||||
m = QB.arrayValue(methods, [ i]).value;
|
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]);
|
await QB.sub_Print([(QB.func_Str( m.line)) + ": " + m.type + " - " + m.name + " [" + m.jsname + "] - " + m.returnType + " - " + m.args]);
|
||||||
}
|
}
|
||||||
|
@ -2776,7 +2805,7 @@ async function sub_AddMethod(m/*METHOD*/,prefix/*STRING*/,sync/*INTEGER*/) {
|
||||||
if (QB.halted()) { return; };
|
if (QB.halted()) { return; };
|
||||||
var mcount = 0; /* SINGLE */
|
var mcount = 0; /* SINGLE */
|
||||||
mcount = (QB.func_UBound( methods)) + 1;
|
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.resizeArray(methods, [{l:0,u:mcount}], {line:0,type:'',returnType:'',name:'',uname:'',argc:0,args:'',jsname:'',sync:0,builtin:0}, true); /* METHOD */
|
||||||
if ( m.type == "FUNCTION" ) {
|
if ( m.type == "FUNCTION" ) {
|
||||||
m.returnType = (await func_DataTypeFromName( m.name));
|
m.returnType = (await func_DataTypeFromName( m.name));
|
||||||
}
|
}
|
||||||
|
@ -2789,7 +2818,7 @@ async function sub_AddExportMethod(m/*METHOD*/,prefix/*STRING*/,sync/*INTEGER*/)
|
||||||
if (QB.halted()) { return; };
|
if (QB.halted()) { return; };
|
||||||
var mcount = 0; /* SINGLE */
|
var mcount = 0; /* SINGLE */
|
||||||
mcount = (QB.func_UBound( exportMethods)) + 1;
|
mcount = (QB.func_UBound( exportMethods)) + 1;
|
||||||
QB.resizeArray(exportMethods, [{l:0,u:mcount}], {line:0,type:'',returnType:'',name:'',uname:'',argc:0,args:'',jsname:'',sync:0}, true); /* METHOD */
|
QB.resizeArray(exportMethods, [{l:0,u:mcount}], {line:0,type:'',returnType:'',name:'',uname:'',argc:0,args:'',jsname:'',sync:0,builtin:0}, true); /* METHOD */
|
||||||
if ( m.type == "FUNCTION" ) {
|
if ( m.type == "FUNCTION" ) {
|
||||||
m.returnType = (await func_DataTypeFromName( m.name));
|
m.returnType = (await func_DataTypeFromName( m.name));
|
||||||
}
|
}
|
||||||
|
@ -2812,12 +2841,13 @@ async function sub_AddGXMethod(mtype/*STRING*/,mname/*STRING*/,sync/*INTEGER*/)
|
||||||
if (QB.halted()) { return; };
|
if (QB.halted()) { return; };
|
||||||
var mcount = 0; /* SINGLE */
|
var mcount = 0; /* SINGLE */
|
||||||
mcount = (QB.func_UBound( methods)) + 1;
|
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.resizeArray(methods, [{l:0,u:mcount}], {line:0,type:'',returnType:'',name:'',uname:'',argc:0,args:'',jsname:'',sync:0,builtin:0}, true); /* METHOD */
|
||||||
var m = {line:0,type:'',returnType:'',name:'',uname:'',argc:0,args:'',jsname:'',sync:0}; /* METHOD */
|
var m = {line:0,type:'',returnType:'',name:'',uname:'',argc:0,args:'',jsname:'',sync:0,builtin:0}; /* METHOD */
|
||||||
m.type = mtype;
|
m.type = mtype;
|
||||||
m.name = mname;
|
m.name = mname;
|
||||||
m.uname = (QB.func_UCase( m.name));
|
m.uname = (QB.func_UCase( m.name));
|
||||||
m.sync = sync;
|
m.sync = sync;
|
||||||
|
m.builtin = True;
|
||||||
m.jsname = (await func_GXMethodJS( (await func_RemoveSuffix( mname))));
|
m.jsname = (await func_GXMethodJS( (await func_RemoveSuffix( mname))));
|
||||||
if ( mtype == "FUNCTION" ) {
|
if ( mtype == "FUNCTION" ) {
|
||||||
m.returnType = (await func_DataTypeFromName( mname));
|
m.returnType = (await func_DataTypeFromName( mname));
|
||||||
|
@ -2826,32 +2856,35 @@ if (QB.halted()) { return; };
|
||||||
}
|
}
|
||||||
async function sub_AddQBMethod(mtype/*STRING*/,mname/*STRING*/,sync/*INTEGER*/) {
|
async function sub_AddQBMethod(mtype/*STRING*/,mname/*STRING*/,sync/*INTEGER*/) {
|
||||||
if (QB.halted()) { return; };
|
if (QB.halted()) { return; };
|
||||||
var m = {line:0,type:'',returnType:'',name:'',uname:'',argc:0,args:'',jsname:'',sync:0}; /* METHOD */
|
var m = {line:0,type:'',returnType:'',name:'',uname:'',argc:0,args:'',jsname:'',sync:0,builtin:0}; /* METHOD */
|
||||||
m.type = mtype;
|
m.type = mtype;
|
||||||
m.name = mname;
|
m.name = mname;
|
||||||
|
m.builtin = True;
|
||||||
await sub_AddMethod( m, "QB." , sync);
|
await sub_AddMethod( m, "QB." , sync);
|
||||||
if ((QB.func_InStr( mname, "_")) == 1) {
|
if ((QB.func_InStr( mname, "_")) == 1) {
|
||||||
var m2 = {line:0,type:'',returnType:'',name:'',uname:'',argc:0,args:'',jsname:'',sync:0}; /* METHOD */
|
var m2 = {line:0,type:'',returnType:'',name:'',uname:'',argc:0,args:'',jsname:'',sync:0,builtin:0}; /* METHOD */
|
||||||
await sub_CopyMethod( QB.arrayValue(methods, [(QB.func_UBound( methods))]).value , m2);
|
await sub_CopyMethod( QB.arrayValue(methods, [(QB.func_UBound( methods))]).value , m2);
|
||||||
m2.name = (QB.func_Mid( mname, 2));
|
m2.name = (QB.func_Mid( mname, 2));
|
||||||
m2.uname = (QB.func_UCase( (await func_RemoveSuffix( m2.name))));
|
m2.uname = (QB.func_UCase( (await func_RemoveSuffix( m2.name))));
|
||||||
|
m2.builtin = True;
|
||||||
var mcount = 0; /* SINGLE */
|
var mcount = 0; /* SINGLE */
|
||||||
mcount = (QB.func_UBound( methods)) + 1;
|
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.resizeArray(methods, [{l:0,u:mcount}], {line:0,type:'',returnType:'',name:'',uname:'',argc:0,args:'',jsname:'',sync:0,builtin:0}, true); /* METHOD */
|
||||||
QB.arrayValue(methods, [ mcount]).value = m2;
|
QB.arrayValue(methods, [ mcount]).value = m2;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
async function sub_AddNativeMethod(mtype/*STRING*/,mname/*STRING*/,jsname/*STRING*/,sync/*INTEGER*/) {
|
async function sub_AddNativeMethod(mtype/*STRING*/,mname/*STRING*/,jsname/*STRING*/,sync/*INTEGER*/) {
|
||||||
if (QB.halted()) { return; };
|
if (QB.halted()) { return; };
|
||||||
var m = {line:0,type:'',returnType:'',name:'',uname:'',argc:0,args:'',jsname:'',sync:0}; /* METHOD */
|
var m = {line:0,type:'',returnType:'',name:'',uname:'',argc:0,args:'',jsname:'',sync:0,builtin:0}; /* METHOD */
|
||||||
m.type = mtype;
|
m.type = mtype;
|
||||||
m.name = mname;
|
m.name = mname;
|
||||||
m.uname = (QB.func_UCase( m.name));
|
m.uname = (QB.func_UCase( m.name));
|
||||||
m.jsname = jsname;
|
m.jsname = jsname;
|
||||||
m.sync = sync;
|
m.sync = sync;
|
||||||
|
m.builtin = True;
|
||||||
var mcount = 0; /* SINGLE */
|
var mcount = 0; /* SINGLE */
|
||||||
mcount = (QB.func_UBound( methods)) + 1;
|
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.resizeArray(methods, [{l:0,u:mcount}], {line:0,type:'',returnType:'',name:'',uname:'',argc:0,args:'',jsname:'',sync:0,builtin:0}, true); /* METHOD */
|
||||||
QB.arrayValue(methods, [ mcount]).value = m;
|
QB.arrayValue(methods, [ mcount]).value = m;
|
||||||
}
|
}
|
||||||
async function sub_AddLine(lineIndex/*INTEGER*/,fline/*STRING*/) {
|
async function sub_AddLine(lineIndex/*INTEGER*/,fline/*STRING*/) {
|
||||||
|
@ -2905,9 +2938,9 @@ if (QB.halted()) { return; };
|
||||||
v.type = "CONST";
|
v.type = "CONST";
|
||||||
v.name = vname;
|
v.name = vname;
|
||||||
if ( vname == "GX_TRUE" ) {
|
if ( vname == "GX_TRUE" ) {
|
||||||
v.jsname = "true";
|
v.jsname = "GX.TRUE";
|
||||||
} else if ( vname == "GX_FALSE" ) {
|
} else if ( vname == "GX_FALSE" ) {
|
||||||
v.jsname = "false";
|
v.jsname = "GX.FALSE";
|
||||||
} else {
|
} else {
|
||||||
var jsname = ''; /* STRING */
|
var jsname = ''; /* STRING */
|
||||||
jsname = (QB.func_Mid( vname, 3, (QB.func_Len( vname)) - 2));
|
jsname = (QB.func_Mid( vname, 3, (QB.func_Len( vname)) - 2));
|
||||||
|
@ -3046,7 +3079,7 @@ var RemoveSuffix = null;
|
||||||
var c = ''; /* STRING */
|
var c = ''; /* STRING */
|
||||||
vname = (QB.func__Trim( vname));
|
vname = (QB.func__Trim( vname));
|
||||||
i = (QB.func_Len( vname));
|
i = (QB.func_Len( vname));
|
||||||
var ___v7577293 = 0; ___l896414: while (! done) { if (QB.halted()) { return; }___v7577293++; if (___v7577293 % 100 == 0) { await QB.autoLimit(); }
|
var ___v7577293 = 0; ___l896414: while (~ done) { if (QB.halted()) { return; }___v7577293++; if (___v7577293 % 100 == 0) { await QB.autoLimit(); }
|
||||||
c = (QB.func_Mid( vname, i, 1));
|
c = (QB.func_Mid( vname, i, 1));
|
||||||
if ( c == "`" | c == "%" | c == "&" | c == "$" | c == "~" | c == "!" | c == "#" ) {
|
if ( c == "`" | c == "%" | c == "&" | c == "$" | c == "~" | c == "!" | c == "#" ) {
|
||||||
i = i - 1;
|
i = i - 1;
|
||||||
|
@ -3786,6 +3819,35 @@ this.getWarnings = function() {
|
||||||
}
|
}
|
||||||
return w;
|
return w;
|
||||||
};
|
};
|
||||||
|
function _getMethods(methods) {
|
||||||
|
var m = [];
|
||||||
|
for (var i=1; i <= QB.func_UBound(methods); i++) {
|
||||||
|
var lidx = QB.arrayValue(methods, [i]).value.line;
|
||||||
|
m.push({
|
||||||
|
line: QB.arrayValue(lines, [lidx]).value.line,
|
||||||
|
type: QB.arrayValue(methods, [i]).value.type,
|
||||||
|
returnType: QB.arrayValue(methods, [i]).value.returnType,
|
||||||
|
name: QB.arrayValue(methods, [i]).value.name,
|
||||||
|
uname: QB.arrayValue(methods, [i]).value.uname,
|
||||||
|
jsname: QB.arrayValue(methods, [i]).value.jsname,
|
||||||
|
argc: QB.arrayValue(methods, [i]).value.argc,
|
||||||
|
args: QB.arrayValue(methods, [i]).value.args
|
||||||
|
});
|
||||||
|
}
|
||||||
|
return m;
|
||||||
|
}
|
||||||
|
this.getMethods = function () { return _getMethods(methods); };
|
||||||
|
this.getExportMethods = function () { return _getMethods(exportMethods); };
|
||||||
|
this.getExportConsts = function() {
|
||||||
|
var c = [];
|
||||||
|
for (var i=1; i <= QB.func_UBound(exportConsts); i++) {
|
||||||
|
c.push({
|
||||||
|
name: QB.arrayValue(exportConsts, [i]).value.name,
|
||||||
|
jsname: QB.arrayValue(exportConsts, [i]).value.jsname
|
||||||
|
});
|
||||||
|
}
|
||||||
|
return c;
|
||||||
|
}
|
||||||
this.getSourceLine = function(jsLine) {
|
this.getSourceLine = function(jsLine) {
|
||||||
if (jsLine == 0) { return 0; }
|
if (jsLine == 0) { return 0; }
|
||||||
var line = QB.arrayValue(jsLines, [jsLine]).value.line;
|
var line = QB.arrayValue(jsLines, [jsLine]).value.line;
|
||||||
|
|
|
@ -31,6 +31,7 @@ Type Method
|
||||||
args As String
|
args As String
|
||||||
jsname As String
|
jsname As String
|
||||||
sync As Integer
|
sync As Integer
|
||||||
|
builtin As Integer
|
||||||
End Type
|
End Type
|
||||||
|
|
||||||
Type Argument
|
Type Argument
|
||||||
|
@ -147,7 +148,7 @@ Sub QBToJS (source As String, sourceType As Integer, moduleName As String)
|
||||||
|
|
||||||
If Not selfConvert And moduleName = "" Then
|
If Not selfConvert And moduleName = "" Then
|
||||||
Dim mtest As Method
|
Dim mtest As Method
|
||||||
If FindMethod("GXOnGameEvent", mtest, "SUB") Then
|
If FindMethod("GXOnGameEvent", mtest, "SUB", True) Then
|
||||||
AddJSLine 0, " await GX.registerGameEvents(sub_GXOnGameEvent);"
|
AddJSLine 0, " await GX.registerGameEvents(sub_GXOnGameEvent);"
|
||||||
isGX = True
|
isGX = True
|
||||||
Else
|
Else
|
||||||
|
@ -189,6 +190,35 @@ Sub QBToJS (source As String, sourceType As Integer, moduleName As String)
|
||||||
AddJSLine 0, " }"
|
AddJSLine 0, " }"
|
||||||
AddJSLine 0, " return w;"
|
AddJSLine 0, " return w;"
|
||||||
AddJSLine 0, "};"
|
AddJSLine 0, "};"
|
||||||
|
AddJSLine 0, "function _getMethods(methods) {"
|
||||||
|
AddJSLine 0, " var m = [];"
|
||||||
|
AddJSLine 0, " for (var i=1; i <= QB.func_UBound(methods); i++) {"
|
||||||
|
AddJSLine 0, " var lidx = QB.arrayValue(methods, [i]).value.line;"
|
||||||
|
AddJSLine 0, " m.push({"
|
||||||
|
AddJSLine 0, " line: QB.arrayValue(lines, [lidx]).value.line,"
|
||||||
|
AddJSLine 0, " type: QB.arrayValue(methods, [i]).value.type,"
|
||||||
|
AddJSLine 0, " returnType: QB.arrayValue(methods, [i]).value.returnType,"
|
||||||
|
AddJSLine 0, " name: QB.arrayValue(methods, [i]).value.name,"
|
||||||
|
AddJSLine 0, " uname: QB.arrayValue(methods, [i]).value.uname,"
|
||||||
|
AddJSLine 0, " jsname: QB.arrayValue(methods, [i]).value.jsname,"
|
||||||
|
AddJSLine 0, " argc: QB.arrayValue(methods, [i]).value.argc,"
|
||||||
|
AddJSLine 0, " args: QB.arrayValue(methods, [i]).value.args"
|
||||||
|
AddJSLine 0, " });"
|
||||||
|
AddJSLine 0, " }"
|
||||||
|
AddJSLine 0, " return m;"
|
||||||
|
AddJSLine 0, "}"
|
||||||
|
AddJSLine 0, "this.getMethods = function () { return _getMethods(methods); };"
|
||||||
|
AddJSLine 0, "this.getExportMethods = function () { return _getMethods(exportMethods); };"
|
||||||
|
AddJSLine 0, "this.getExportConsts = function() {"
|
||||||
|
AddJSLine 0, " var c = [];"
|
||||||
|
AddJSLine 0, " for (var i=1; i <= QB.func_UBound(exportConsts); i++) {"
|
||||||
|
AddJSLine 0, " c.push({"
|
||||||
|
AddJSLine 0, " name: QB.arrayValue(exportConsts, [i]).value.name,"
|
||||||
|
AddJSLine 0, " jsname: QB.arrayValue(exportConsts, [i]).value.jsname"
|
||||||
|
AddJSLine 0, " });"
|
||||||
|
AddJSLine 0, " }"
|
||||||
|
AddJSLine 0, " return c;"
|
||||||
|
AddJSLine 0, "}"
|
||||||
AddJSLine 0, "this.getSourceLine = function(jsLine) {"
|
AddJSLine 0, "this.getSourceLine = function(jsLine) {"
|
||||||
AddJSLine 0, " if (jsLine == 0) { return 0; }"
|
AddJSLine 0, " if (jsLine == 0) { return 0; }"
|
||||||
AddJSLine 0, " var line = QB.arrayValue(jsLines, [jsLine]).value.line;"
|
AddJSLine 0, " var line = QB.arrayValue(jsLines, [jsLine]).value.line;"
|
||||||
|
@ -200,7 +230,7 @@ Sub QBToJS (source As String, sourceType As Integer, moduleName As String)
|
||||||
AddJSLine 0, "}"
|
AddJSLine 0, "}"
|
||||||
|
|
||||||
ElseIf moduleName <> "" Then
|
ElseIf moduleName <> "" Then
|
||||||
AddJSLine 0, "return this;"
|
'AddJSLine 0, "return this;"
|
||||||
AddJSLine 0, "}"
|
AddJSLine 0, "}"
|
||||||
AddJSLine 0, "const " + moduleName + " = await _" + moduleName + "();"
|
AddJSLine 0, "const " + moduleName + " = await _" + moduleName + "();"
|
||||||
|
|
||||||
|
@ -670,7 +700,7 @@ Sub ConvertLines (firstLine As Integer, lastLine As Integer, functionName As Str
|
||||||
subname = Left$(subline, subend - 1)
|
subname = Left$(subline, subend - 1)
|
||||||
End If
|
End If
|
||||||
|
|
||||||
If FindMethod(subname, m, "SUB") Then
|
If FindMethod(subname, m, "SUB", True) Then
|
||||||
Dim subargs As String
|
Dim subargs As String
|
||||||
If subname = subline Then
|
If subname = subline Then
|
||||||
subargs = ""
|
subargs = ""
|
||||||
|
@ -714,7 +744,7 @@ Sub ConvertLines (firstLine As Integer, lastLine As Integer, functionName As Str
|
||||||
c = SLSplit(sname + " " + arg1 + Join(parts(), 2, -1, " "), parts(), True)
|
c = SLSplit(sname + " " + arg1 + Join(parts(), 2, -1, " "), parts(), True)
|
||||||
End If
|
End If
|
||||||
|
|
||||||
If FindMethod(parts(1), m, "SUB") Then
|
If FindMethod(parts(1), m, "SUB", True) Then
|
||||||
js = ConvertSub(m, Join(parts(), 2, -1, " "), i)
|
js = ConvertSub(m, Join(parts(), 2, -1, " "), i)
|
||||||
Else
|
Else
|
||||||
js = "// " + l
|
js = "// " + l
|
||||||
|
@ -724,7 +754,7 @@ Sub ConvertLines (firstLine As Integer, lastLine As Integer, functionName As Str
|
||||||
|
|
||||||
|
|
||||||
Else
|
Else
|
||||||
If FindMethod(parts(1), m, "SUB") Then
|
If FindMethod(parts(1), m, "SUB", True) Then
|
||||||
js = ConvertSub(m, Join(parts(), 2, -1, " "), i)
|
js = ConvertSub(m, Join(parts(), 2, -1, " "), i)
|
||||||
Else
|
Else
|
||||||
js = "// " + l
|
js = "// " + l
|
||||||
|
@ -819,7 +849,7 @@ Sub ParseExport (s As String, lineIndex As Integer)
|
||||||
|
|
||||||
'AddWarning lineIndex, "ParseExport: [" + s + "]"
|
'AddWarning lineIndex, "ParseExport: [" + s + "]"
|
||||||
|
|
||||||
If FindMethod(parts(1), es, "SUB") Then
|
If FindMethod(parts(1), es, "SUB", False) Then
|
||||||
If c > 2 Then
|
If c > 2 Then
|
||||||
exportName = parts(3)
|
exportName = parts(3)
|
||||||
Else
|
Else
|
||||||
|
@ -833,7 +863,7 @@ Sub ParseExport (s As String, lineIndex As Integer)
|
||||||
found = True
|
found = True
|
||||||
End If
|
End If
|
||||||
|
|
||||||
If FindMethod(parts(1), ef, "FUNCTION") Then
|
If FindMethod(parts(1), ef, "FUNCTION", False) Then
|
||||||
If c > 2 Then
|
If c > 2 Then
|
||||||
exportName = parts(3)
|
exportName = parts(3)
|
||||||
Else
|
Else
|
||||||
|
@ -2011,7 +2041,7 @@ Function ConvertExpression$ (ex As String, lineNumber As Integer)
|
||||||
If i = Len(ex) Then word = word + c
|
If i = Len(ex) Then word = word + c
|
||||||
Dim uword As String: uword = UCase$(_Trim$(word))
|
Dim uword As String: uword = UCase$(_Trim$(word))
|
||||||
If uword = "NOT" Then
|
If uword = "NOT" Then
|
||||||
js = js + "!"
|
js = js + "~"
|
||||||
ElseIf uword = "AND" Then
|
ElseIf uword = "AND" Then
|
||||||
js = js + " & "
|
js = js + " & "
|
||||||
ElseIf uword = "OR" Then
|
ElseIf uword = "OR" Then
|
||||||
|
@ -2040,7 +2070,7 @@ Function ConvertExpression$ (ex As String, lineNumber As Integer)
|
||||||
' the return value is being assigned in the method.
|
' the return value is being assigned in the method.
|
||||||
' Currently, this does not support recursive calls.
|
' Currently, this does not support recursive calls.
|
||||||
' (is this comment still true?)
|
' (is this comment still true?)
|
||||||
If FindMethod(word, m, "FUNCTION") Then
|
If FindMethod(word, m, "FUNCTION", True) Then
|
||||||
If m.name <> currentMethod Then
|
If m.name <> currentMethod Then
|
||||||
js = js + CallMethod$(m) + "()"
|
js = js + CallMethod$(m) + "()"
|
||||||
Else
|
Else
|
||||||
|
@ -2103,7 +2133,7 @@ Function ConvertExpression$ (ex As String, lineNumber As Integer)
|
||||||
' This is the case where a dimension is specified in order to retrieve or set a value in the array
|
' This is the case where a dimension is specified in order to retrieve or set a value in the array
|
||||||
js = js + fneg + "QB.arrayValue(" + bvar.jsname + ", [" + ConvertExpression(ex2, lineNumber) + "]).value"
|
js = js + fneg + "QB.arrayValue(" + bvar.jsname + ", [" + ConvertExpression(ex2, lineNumber) + "]).value"
|
||||||
End If
|
End If
|
||||||
ElseIf FindMethod(word, m, "FUNCTION") Then
|
ElseIf FindMethod(word, m, "FUNCTION", True) Then
|
||||||
js = js + fneg + "(" + CallMethod(m) + "(" + ConvertMethodParams(ex2, lineNumber) + "))"
|
js = js + fneg + "(" + CallMethod(m) + "(" + ConvertMethodParams(ex2, lineNumber) + "))"
|
||||||
Else
|
Else
|
||||||
If _Trim$(word) <> "" Then AddWarning lineNumber, "Missing function or array [" + word + "]"
|
If _Trim$(word) <> "" Then AddWarning lineNumber, "Missing function or array [" + word + "]"
|
||||||
|
@ -2183,11 +2213,14 @@ Function FindVariable (varname As String, bvar As Variable, isArray As Integer)
|
||||||
FindVariable = found
|
FindVariable = found
|
||||||
End Function
|
End Function
|
||||||
|
|
||||||
Function FindMethod (mname As String, m As Method, t As String)
|
Function FindMethod (mname As String, m As Method, t As String, includeBuiltIn As Integer)
|
||||||
Dim found As Integer: found = False
|
Dim found As Integer: found = False
|
||||||
Dim i As Integer
|
Dim i As Integer
|
||||||
For i = 1 To UBound(methods)
|
For i = 1 To UBound(methods)
|
||||||
If methods(i).uname = _Trim$(UCase$(RemoveSuffix(mname))) And methods(i).type = t Then
|
If (Not includeBuiltIn) And methods(i).builtin Then
|
||||||
|
' Skip it
|
||||||
|
'_Continue
|
||||||
|
ElseIf methods(i).uname = _Trim$(UCase$(RemoveSuffix(mname))) And methods(i).type = t Then
|
||||||
found = True
|
found = True
|
||||||
m.line = methods(i).line
|
m.line = methods(i).line
|
||||||
m.type = methods(i).type
|
m.type = methods(i).type
|
||||||
|
@ -3055,6 +3088,7 @@ Sub AddGXMethod (mtype As String, mname As String, sync As Integer)
|
||||||
m.name = mname
|
m.name = mname
|
||||||
m.uname = UCase$(m.name)
|
m.uname = UCase$(m.name)
|
||||||
m.sync = sync
|
m.sync = sync
|
||||||
|
m.builtin = True
|
||||||
m.jsname = GXMethodJS(RemoveSuffix(mname))
|
m.jsname = GXMethodJS(RemoveSuffix(mname))
|
||||||
If mtype = "FUNCTION" Then
|
If mtype = "FUNCTION" Then
|
||||||
m.returnType = DataTypeFromName(mname)
|
m.returnType = DataTypeFromName(mname)
|
||||||
|
@ -3066,6 +3100,7 @@ Sub AddQBMethod (mtype As String, mname As String, sync As Integer)
|
||||||
Dim m As Method
|
Dim m As Method
|
||||||
m.type = mtype
|
m.type = mtype
|
||||||
m.name = mname
|
m.name = mname
|
||||||
|
m.builtin = True
|
||||||
AddMethod m, "QB.", sync
|
AddMethod m, "QB.", sync
|
||||||
If InStr(mname, "_") = 1 Then
|
If InStr(mname, "_") = 1 Then
|
||||||
' Register the method again without the "_" prefix
|
' Register the method again without the "_" prefix
|
||||||
|
@ -3073,6 +3108,7 @@ Sub AddQBMethod (mtype As String, mname As String, sync As Integer)
|
||||||
CopyMethod methods(UBound(methods)), m2
|
CopyMethod methods(UBound(methods)), m2
|
||||||
m2.name = Mid$(mname, 2)
|
m2.name = Mid$(mname, 2)
|
||||||
m2.uname = UCase$(RemoveSuffix(m2.name))
|
m2.uname = UCase$(RemoveSuffix(m2.name))
|
||||||
|
m2.builtin = True
|
||||||
Dim mcount: mcount = UBound(methods) + 1
|
Dim mcount: mcount = UBound(methods) + 1
|
||||||
ReDim _Preserve As Method methods(mcount)
|
ReDim _Preserve As Method methods(mcount)
|
||||||
methods(mcount) = m2
|
methods(mcount) = m2
|
||||||
|
@ -3086,6 +3122,7 @@ Sub AddNativeMethod (mtype As String, mname As String, jsname As String, sync As
|
||||||
m.uname = UCase$(m.name)
|
m.uname = UCase$(m.name)
|
||||||
m.jsname = jsname
|
m.jsname = jsname
|
||||||
m.sync = sync
|
m.sync = sync
|
||||||
|
m.builtin = True
|
||||||
|
|
||||||
Dim mcount: mcount = UBound(methods) + 1
|
Dim mcount: mcount = UBound(methods) + 1
|
||||||
ReDim _Preserve As Method methods(mcount)
|
ReDim _Preserve As Method methods(mcount)
|
||||||
|
@ -3140,9 +3177,9 @@ Sub AddGXConst (vname As String)
|
||||||
v.type = "CONST"
|
v.type = "CONST"
|
||||||
v.name = vname
|
v.name = vname
|
||||||
If vname = "GX_TRUE" Then
|
If vname = "GX_TRUE" Then
|
||||||
v.jsname = "true"
|
v.jsname = "GX.TRUE"
|
||||||
ElseIf vname = "GX_FALSE" Then
|
ElseIf vname = "GX_FALSE" Then
|
||||||
v.jsname = "false"
|
v.jsname = "GX.FALSE"
|
||||||
Else
|
Else
|
||||||
Dim jsname As String
|
Dim jsname As String
|
||||||
jsname = Mid$(vname, 3, Len(vname) - 2)
|
jsname = Mid$(vname, 3, Len(vname) - 2)
|
||||||
|
|
Loading…
Reference in a new issue