package rpn.vc;

import java.util.Hashtable;
import rpn.Calculator;
import rpn.doubles.*;
import rpn.basic.*;

public class VCLeItem extends Item {
	
	public VCLeItem(Calculator ca) {
		super(ca);
		ca.systemInstall(this);
	}
	
	public void exec() {
		if (ca.check(2)) {
			Item a = ca.peek(1);
			Item b = ca.peek(0);
			if (a instanceof IntItem && b instanceof IntItem) {
				IntItem A = (IntItem) a;
				IntItem B = (IntItem) b;
				boolean v = (A.n <= B.n);
				ca.pop(2);
				ca.push(new BooleanItem(ca, v));
			} else if (a instanceof IntItem && b instanceof DoubleItem) {
				IntItem A = (IntItem) a;
				DoubleItem B = (DoubleItem) b;
				boolean v = (A.n <= B.x);
				ca.pop(2);
				ca.push(new BooleanItem(ca, v));
			} else if (a instanceof DoubleItem && b instanceof IntItem) {
				DoubleItem A = (DoubleItem) a;
				IntItem B = (IntItem) b;
				boolean v = (A.x <= B.n);
				ca.pop(2);
				ca.push(new BooleanItem(ca, v));
			} else if (a instanceof DoubleItem && b instanceof DoubleItem) {
				DoubleItem A = (DoubleItem) a;
				DoubleItem B = (DoubleItem) b;
				boolean v = (A.x <= B.x);
				ca.pop(2);
				ca.push(new BooleanItem(ca, v));
			} else {
				ca.error(this, CalcErr.Type);
			}
		}
		else {
			ca.error(this, CalcErr.Underflow);
		}
	}
	
	public String toString() {
		return("le");
	}
}