package rpn.vc;

import java.util.Hashtable;
import rpn.Calculator;
import rpn.basic.Item;
import rpn.basic.CalcErr;
import rpn.basic.IntItem;
import rpn.basic.DoubleValue;
import rpn.basic.ErrItem;
import rpn.basic.LeftItem;
import rpn.doubles.DoubleItem;

public class VCRightItem extends Item {

	public VCRightItem(Calculator ca) {
		super(ca);
		ca.systemInstall(this);
	}
	
	public void exec() {
		int n = ca.size();
		int i;
		for (i=n;i>0;i--) {
			Item it = (Item) ca.element(i-1);
			if (it instanceof LeftItem) {
				break;
			}
		} 
		if (i > 0) {
			double a[] = new fraction[n-i];
			for (int j=n;j>i;j--) {
				Item A = (Item) ca.pop();
				if (A instanceof FracValue) {
					fraction f = ((FracValue) A).fracValue();
					a[j-1-i] = f;
				} else {
					ca.error(this, CalcErr.Vector);
					return;
				}
			}
			ca.pop();
			Item it = new FCVectorItem(ca, a);
			ca.push(it);
		}
		else {
			ca.error(this, CalcErr.UnmatchedRight);
		}
	}
	
	public String toString() {
		return("]");
	}
}