package rpn.basic;

import java.util.Hashtable;
import rpn.Calculator;
import rpn.ItemArray;

public class IfElseItem extends Item {
	
	public IfElseItem(Calculator ca) {
		super(ca);
		ca.systemInstall(this);
	}
	
	public void exec() {
		if (ca.check(3)) {
			Item a = ca.peek(2);
			Item b = ca.peek(1);
			Item c = ca.peek(0);
			// System.out.println("a = " + a);
			// System.out.println("b = " + b);
			// System.out.println("c = " + c);
			if (a instanceof BooleanItem 
				&& b instanceof ProcItem
				&& c instanceof ProcItem) {
				ca.pop(3);
				boolean v = ((BooleanItem) a).v;
				ItemArray ia;
				if (v) {
					ia = new ItemArray(((ProcItem) b).a);
				} else {
					ia = new ItemArray(((ProcItem) c).a);
				} 
				ca.pushExec(ia);
			} else {
				/* System.out.println("a = " + a);
				System.out.println("b = " + b);
				System.out.println("c = " + c); */
				ca.error(this, CalcErr.Type);
			}
		}
		else {
			ca.error(this, CalcErr.Underflow);
		}
	}
	
	public String toString() {
		return("ifelse");
	}
}