package rpn.basic;

import rpn.Calculator;

public class FloorItem extends Item {
	
	public FloorItem(Calculator ca) {
		super(ca);
		ca.systemInstall(this);
	}
	
	public void exec() {
		if (ca.check(1)) {
			Item a = (Item) ca.pop();
			if (a instanceof DoubleValue) {
				double x = ((DoubleValue) a).doubleValue();
				int m = (int) Math.floor(x);
				if (m > x) {
					m--;
				}
				ca.push(new IntItem(ca, m));
			} else if (a instanceof IntItem) {
				; // do nothing!
			} else {
				ca.error(this, CalcErr.Type);
			}
		} else {
			ca.error(this, CalcErr.Underflow);
		}
	}
	
	public String toString() {
		return("floor");
	}
}