Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /* ************************************************************************
  #
  #  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;
 
 
 // for instructions that are composed of multiple operations
 abstract public class Ops extends Instruction {
 	public void run(StackEntry stack) {
 		if (stack.getState() == .) {
 			stack.getStore().setField("SubAlign"true);
 			stack.getStore().setField("CurrNode", 0);
 			stack.getStore().setField("Target".);
 			this.prepTarget(stack);
 		}
 		else if (stack.getState() == .) {
 			if (stack.getStore().getFieldAsBooleanOrFalse("SubAlign")) {
 				this.nextOpResume(stack);
 				return;
 			}
 
 			// next op needs to align
 			stack.getStore().setField("SubAlign"true);
 			
 			Struct var2 = (Structstack.getStore().getField("Target");
 			int cnode = stack.getStore().getFieldAsInteger("CurrNode").intValue();
 			XNode nod = this..getChild(cnode - 1);
 			
 			this.runOp(stack, (XElement)nodvar2);
 		}
 	}
 	
 	public void nextOpResume(StackEntry stack) {
 		// next op needs to run
 		stack.getStore().setField("SubAlign"false);
 		
 		while (true) {
 			int cnode = stack.getStore().getFieldAsInteger("CurrNode").intValue();
 			
 			if (cnode >= this..children()) {
 				break;
 			}
 			
 			XNode nod = this..getChild(cnode);
 			stack.getStore().setField("CurrNode"cnode + 1);
 			
 			if (nod instanceof XElement) {
 				break;
 			}
 		} 
 		
 		stack.resume();
 	}
 	
 	public void setTarget(StackEntry stackStruct v) {
 		stack.getStore().setField("Target"v);
 		stack.setLastResult(v);
 	}
 	
 	// subclass is responsible for resuming stack  
 	abstract public void prepTarget(StackEntry stack);
 	
 	// subclass is responsible for resuming stack  
 	abstract public void runOp(StackEntry stackXElement opStruct target);
 
 		RecordStruct sub = super.collectDebugRecord(stackrec);
 
 		if (stack.getState() == .) {
 			int cnode = stack.getStore().getFieldAsInteger("CurrNode").intValue() - 1;
 			
 			if (cnode >= this..children()) 
 				return null;
 			
 			XNode nod = this..getChild(cnode);
 			
			if (! (nod instanceof XElement)) 
				return null;
			XElement mut = (XElement)nod;
			sub = new RecordStruct();
			sub.setField("Line"mut.getLine());
			sub.setField("Column"mut.getCol());		
			sub.setField("Command"mut.toLocalString());
		   	return sub;
		}
		return sub;
	}
New to GrepCode? Check out our FAQ X