package edu.uchicago.cs.cspp51035;

/*
 * Created on Jun 26, 2005
 *
 */

/**
 * @author yuhu
 *
 */


public abstract class Operand {
	int		type; // 1: Integer; 2: Long; 3: Float; 4: Double
}

class RPNInteger extends Operand implements StackElement
{
	
	private Integer myValue = new Integer(1);
	
	public RPNInteger(int value)
	{
		myValue = new Integer(value);
		type = 1; 
	}
	
	public Integer getValue()
	{
			
		return myValue;
	}
	
	public String getInfo()
	{
		String		MyInfo = "I am an Operand";
		
		return MyInfo; 
	}

}


class RPNLong extends Operand implements StackElement
{
	Long myValue = new Long(1);
	
	public RPNLong(long value)
	{
		myValue = new Long(value);
		type = 2; 
	}
	
	public Long getValue()
	{
		
		
		return myValue;
	}
	
	public String getInfo()
	{
		String		MyInfo = "I am an Operand";
		
		return MyInfo; 
	}

}

class RPNFloat extends Operand implements StackElement
{
	Float myValue = new Float(1.0);
	
	public RPNFloat(float value)
	{
		myValue = new Float(value);
		type = 3; 
	}
	
	public Float getValue()
	{
			
		return myValue;
	}
	
	public String getInfo()
	{
		String		MyInfo = "I am an Operand";
		
		return MyInfo; 
	}

}

class RPNDouble extends Operand implements StackElement
{
	Double myValue = new Double(1.0);
	
	public RPNDouble(double value)
	{
		myValue = new Double(value);
		type = 4; 
	}
	
	public Double getValue()
	{

		return myValue;
	}
	
	public String getInfo()
	{
		String		MyInfo = "I am an Operand";
		
		return MyInfo; 
	}

}
