Clazz.declarePackage("JS");
Clazz.load(null, "JS.ScriptFlowContext", ["JS.ScriptCompiler"], function(){
var c$ = Clazz.decorateAsClass(function(){
this.compiler = null;
this.token = null;
this.pt0 = 0;
this.ptDefault = 0;
this.$function = null;
this.$var = null;
this.parent = null;
this.lineStart = 0;
this.commandStart = 0;
this.ptLine = 0;
this.ptCommand = 0;
this.forceEndIf = true;
this.ident = null;
this.addLine = 0;
this.tok0 = 0;
this.ichCommand = 0;
this.line0 = 0;
Clazz.instantialize(this, arguments);}, JS, "ScriptFlowContext", null);
Clazz.makeConstructor(c$, 
function(compiler, token, pt0, parent, ich, line0){
this.compiler = compiler;
this.token = token;
this.tok0 = token.tok;
this.ident = token.value;
this.pt0 = pt0;
this.line0 = line0;
this.parent = parent;
this.ichCommand = ich;
this.lineStart = this.ptLine = this.compiler.lineCurrent;
this.commandStart = this.ptCommand = this.compiler.iCommand;
}, "JS.ScriptCompiler,JS.ContextToken,~N,JS.ScriptFlowContext,~N,~N");
Clazz.defineMethod(c$, "getBreakableContext", 
function(nLevelsUp){
var f = this;
while (f != null && (!JS.ScriptCompiler.isBreakableContext(f.token.tok) || nLevelsUp-- > 0)) f = f.parent;

return f;
}, "~N");
Clazz.defineMethod(c$, "checkForceEndIf", 
function(offset){
if (this.ptCommand == this.compiler.iCommand && this.addLine > 0) this.addLine++;
var test = this.forceEndIf && this.ptCommand < this.compiler.iCommand && this.ptLine + (this.addLine == 0 ? 0 : this.addLine + offset) == this.compiler.lineCurrent;
if (test) this.forceEndIf = false;
return test;
}, "~N");
Clazz.defineMethod(c$, "setPt0", 
function(pt0, isDefault){
this.pt0 = pt0;
if (isDefault) this.ptDefault = pt0;
this.setLine();
return pt0;
}, "~N,~B");
Clazz.defineMethod(c$, "setLine", 
function(){
this.ptLine = this.compiler.lineCurrent;
this.ptCommand = this.compiler.iCommand + 1;
});
Clazz.overrideMethod(c$, "toString", 
function(){
return "ident " + this.ident + " line " + this.lineStart + " command " + this.commandStart;
});
Clazz.defineMethod(c$, "path", 
function(){
var s = "";
var f = this;
while (f != null) {
s = f.ident + "-" + s;
f = f.parent;
}
return "[" + s + "]";
});
Clazz.defineMethod(c$, "setFunction", 
function($function){
this.$function = $function;
}, "JS.ScriptFunction");
});
;//5.0.1-v2 Tue Jul 23 17:25:20 CDT 2024
