/* ************************************************************************
#
# DivConq
#
# http://divconq.com/
#
# Copyright:
# Copyright 2014 eTimeline, LLC. All rights reserved.
#
# License:
# See the license.txt file in the project's top-level directory for details.
#
# Authors:
# * Andy White
#
************************************************************************ */
package divconq.script.inst;
import divconq.lang.op.OperationCallback;
import divconq.script.ExecuteState;
import divconq.script.LogicBlockInstruction;
import divconq.script.StackBlockEntry;
import divconq.script.StackEntry;
public class Until extends LogicBlockInstruction {
@Override
public void alignInstruction(final StackEntry stack, OperationCallback callback) {
StackBlockEntry bstack = (StackBlockEntry)stack;
// signal end if conditional logic fails after loop
if (bstack.getPosition() >= this.instructions.size())
if (!this.checkLogic(stack))
bstack.setPosition(0);
else
stack.setState(ExecuteState.Done);
super.alignInstruction(stack, callback);
}
}