package prefuse.data.expression; import prefuse.data.Schema; import prefuse.data.Tuple; import prefuse.util.TypeLib; /** * Literal expression of a numeric value. * * @author <a href="http://jheer.org">jeffrey heer</a> */ public class NumericLiteral extends Literal { private final Number m_number; private final Class m_type; // ------------------------------------------------------------------------ // Constructors /** * Create a new integer NumericLiteral. * @param x the literal numeric value */ public NumericLiteral(int x) { m_number = new Integer(x); m_type = int.class; } /** * Create a new long NumericLiteral. * @param x the literal numeric value */ public NumericLiteral(long x) { m_number = new Long(x); m_type = long.class; } /** * Create a new float NumericLiteral. * @param x the literal numeric value */ public NumericLiteral(float x) { m_number = new Float(x); m_type = float.class; } /** * Create a new double NumericLiteral. * @param x the literal numeric value */ public NumericLiteral(double x) { m_number = new Double(x); m_type = double.class; } /** * Create a new NumericLiteral. * @param x the literal numeric value, must be an instance of * {@link java.lang.Number}, otherwise an exception will be thrown. */ public NumericLiteral(Object x) { if ( x instanceof Number ) { m_number = (Number)x; m_type = TypeLib.getPrimitiveType(m_number.getClass()); } else { throw new IllegalArgumentException("Invalid type!"); } } // ------------------------------------------------------------------------ // Expression Interface /** * @see prefuse.data.expression.Expression#getType(prefuse.data.Schema) */ public Class getType(Schema s) { return m_type; } /** * @see prefuse.data.expression.Expression#get(prefuse.data.Tuple) */ public Object get(Tuple t) { return m_number; } /** * @see prefuse.data.expression.Expression#getInt(prefuse.data.Tuple) */ public int getInt(Tuple t) { return m_number.intValue(); } /** * @see prefuse.data.expression.Expression#getLong(prefuse.data.Tuple) */ public long getLong(Tuple t) { return m_number.longValue(); } /** * @see prefuse.data.expression.Expression#getFloat(prefuse.data.Tuple) */ public float getFloat(Tuple t) { return m_number.floatValue(); } /** * @see prefuse.data.expression.Expression#getDouble(prefuse.data.Tuple) */ public double getDouble(Tuple t) { return m_number.doubleValue(); } /** * @see java.lang.Object#toString() */ public String toString() { return m_number.toString(); } } // end of class NumericLiteral