bsh
Class Primitive

java.lang.Object
  |
  +--bsh.Primitive
All Implemented Interfaces:
ParserConstants, java.io.Serializable

public class Primitive
extends java.lang.Object
implements ParserConstants, java.io.Serializable

Wrapper for primitive types in Bsh. This is package public because it is used in the implementation of some bsh commands. See the note in LHS.java about wrapping objects.

See Also:
Serialized Form

Nested Class Summary
private static class Primitive.Special
           
 
Field Summary
static Primitive NULL
           
private  java.lang.Object value
           
static Primitive VOID
          VOID means "no type".
 
Fields inherited from interface bsh.ParserConstants
_DEFAULT, ANDASSIGN, ANDASSIGNX, ASSIGN, BANG, BIT_AND, BIT_ANDX, BIT_OR, BIT_ORX, BOOL_AND, BOOL_ANDX, BOOL_OR, BOOL_ORX, BOOLEAN, BREAK, BYTE, CASE, CATCH, CHAR, CHARACTER_LITERAL, CLASS, COLON, COMMA, CONST, CONTINUE, DECIMAL_LITERAL, DECR, DEFAULT, DIGIT, DO, DOT, DOUBLE, ELSE, EOF, EQ, EXPONENT, FALSE, FINAL, FINALLY, FLOAT, FLOATING_POINT_LITERAL, FOR, FORMAL_COMMENT, GE, GEX, GOTO, GT, GTX, HASH_BANG_COMMENT, HEX_LITERAL, HOOK, IDENTIFIER, IF, IMPORT, INCR, INSTANCEOF, INT, INTEGER_LITERAL, INTERFACE, LBRACE, LBRACKET, LE, LETTER, LEX, LONG, LPAREN, LSHIFT, LSHIFTASSIGN, LSHIFTASSIGNX, LSHIFTX, LT, LTX, MINUS, MINUSASSIGN, MOD, MODASSIGN, MULTI_LINE_COMMENT, NE, NEW, NONPRINTABLE, OCTAL_LITERAL, ORASSIGN, ORASSIGNX, PLUS, PLUSASSIGN, PRIVATE, PROTECTED, PUBLIC, RBRACE, RBRACKET, RETURN, RPAREN, RSIGNEDSHIFT, RSIGNEDSHIFTASSIGN, RSIGNEDSHIFTASSIGNX, RSIGNEDSHIFTX, RUNSIGNEDSHIFT, RUNSIGNEDSHIFTASSIGN, RUNSIGNEDSHIFTASSIGNX, RUNSIGNEDSHIFTX, SEMICOLON, SHORT, SINGLE_LINE_COMMENT, SLASH, SLASHASSIGN, STAR, STARASSIGN, STATIC, STRING_LITERAL, SWITCH, THROW, TILDE, tokenImage, TRUE, TRY, WHILE, XOR, XORASSIGN
 
Constructor Summary
  Primitive(boolean value)
           
  Primitive(java.lang.Boolean value)
           
  Primitive(byte value)
           
  Primitive(java.lang.Byte value)
           
  Primitive(char value)
           
  Primitive(java.lang.Character value)
           
  Primitive(double value)
           
  Primitive(java.lang.Double value)
           
  Primitive(float value)
           
  Primitive(java.lang.Float value)
           
  Primitive(int value)
           
  Primitive(java.lang.Integer value)
           
  Primitive(long value)
           
  Primitive(java.lang.Long value)
           
  Primitive(java.lang.Number number)
           
private Primitive(java.lang.Object value)
           
  Primitive(short value)
           
  Primitive(java.lang.Short value)
           
 
Method Summary
static java.lang.Object binaryOperation(java.lang.Object obj1, java.lang.Object obj2, int kind)
          Allow primitive operations on wrapper types such as Integer and Boolean.
(package private) static java.lang.Object binaryOperationImpl(java.lang.Object lhs, java.lang.Object rhs, int kind)
           
(package private) static java.lang.Boolean booleanBinaryOperation(java.lang.Boolean B1, java.lang.Boolean B2, int kind)
           
(package private) static boolean booleanUnaryOperation(java.lang.Boolean B, int kind)
           
 boolean booleanValue()
           
(package private) static java.lang.Object doubleBinaryOperation(java.lang.Double D1, java.lang.Double D2, int kind)
           
(package private) static double doubleUnaryOperation(java.lang.Double D, int kind)
           
 boolean equals(java.lang.Object obj)
           
(package private) static java.lang.Object floatBinaryOperation(java.lang.Float F1, java.lang.Float F2, int kind)
           
(package private) static float floatUnaryOperation(java.lang.Float F, int kind)
           
 java.lang.Class getType()
           
private  java.lang.Class getType(java.lang.Object o)
           
 java.lang.Object getValue()
           
(package private) static java.lang.Object intBinaryOperation(java.lang.Integer I1, java.lang.Integer I2, int kind)
           
(package private) static int intUnaryOperation(java.lang.Integer I, int kind)
           
 int intValue()
           
 boolean isNumber()
          Determine if this primitive is a numeric type.
(package private) static java.lang.Object longBinaryOperation(java.lang.Long L1, java.lang.Long L2, int kind)
           
(package private) static long longUnaryOperation(java.lang.Long L, int kind)
           
 java.lang.Number numberValue()
           
(package private) static java.lang.Object[] promotePrimitives(java.lang.Object lhs, java.lang.Object rhs)
          Promote the pair of primitives to the maximum type of the two.
(package private) static java.lang.Object promoteToInteger(java.lang.Object primitive)
          Promote primitive wrapper type to to Integer wrapper type Can we use the castPrimitive() (in BSHCastExpression) for this?
 java.lang.String toString()
           
static Primitive unaryOperation(Primitive val, int kind)
           
static java.lang.Object unwrap(java.lang.Object obj)
          Unwrap primitive values and map voids to nulls.
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

value

private java.lang.Object value

NULL

public static final Primitive NULL

VOID

public static final Primitive VOID
VOID means "no type". Strictly speaking, this makes no sense here. But for practical reasons we'll consider the lack of a type to be a special value.

Constructor Detail

Primitive

private Primitive(java.lang.Object value)

Primitive

public Primitive(java.lang.Number number)

Primitive

public Primitive(java.lang.Boolean value)

Primitive

public Primitive(java.lang.Byte value)

Primitive

public Primitive(java.lang.Short value)

Primitive

public Primitive(java.lang.Character value)

Primitive

public Primitive(java.lang.Integer value)

Primitive

public Primitive(java.lang.Long value)

Primitive

public Primitive(java.lang.Float value)

Primitive

public Primitive(java.lang.Double value)

Primitive

public Primitive(boolean value)

Primitive

public Primitive(byte value)

Primitive

public Primitive(short value)

Primitive

public Primitive(char value)

Primitive

public Primitive(int value)

Primitive

public Primitive(long value)

Primitive

public Primitive(float value)

Primitive

public Primitive(double value)
Method Detail

getValue

public java.lang.Object getValue()

toString

public java.lang.String toString()
Overrides:
toString in class java.lang.Object

getType

public java.lang.Class getType()

getType

private java.lang.Class getType(java.lang.Object o)

binaryOperation

public static java.lang.Object binaryOperation(java.lang.Object obj1,
                                               java.lang.Object obj2,
                                               int kind)
                                        throws EvalError
Allow primitive operations on wrapper types such as Integer and Boolean. This is static so that it can be reached from wherever...

EvalError

binaryOperationImpl

static java.lang.Object binaryOperationImpl(java.lang.Object lhs,
                                            java.lang.Object rhs,
                                            int kind)
                                     throws EvalError
EvalError

booleanBinaryOperation

static java.lang.Boolean booleanBinaryOperation(java.lang.Boolean B1,
                                                java.lang.Boolean B2,
                                                int kind)
                                         throws EvalError
EvalError

longBinaryOperation

static java.lang.Object longBinaryOperation(java.lang.Long L1,
                                            java.lang.Long L2,
                                            int kind)

intBinaryOperation

static java.lang.Object intBinaryOperation(java.lang.Integer I1,
                                           java.lang.Integer I2,
                                           int kind)

doubleBinaryOperation

static java.lang.Object doubleBinaryOperation(java.lang.Double D1,
                                              java.lang.Double D2,
                                              int kind)
                                       throws EvalError
EvalError

floatBinaryOperation

static java.lang.Object floatBinaryOperation(java.lang.Float F1,
                                             java.lang.Float F2,
                                             int kind)
                                      throws EvalError
EvalError

promoteToInteger

static java.lang.Object promoteToInteger(java.lang.Object primitive)
Promote primitive wrapper type to to Integer wrapper type Can we use the castPrimitive() (in BSHCastExpression) for this?


promotePrimitives

static java.lang.Object[] promotePrimitives(java.lang.Object lhs,
                                            java.lang.Object rhs)
Promote the pair of primitives to the maximum type of the two. e.g. [int,long]->[long,long]


unaryOperation

public static Primitive unaryOperation(Primitive val,
                                       int kind)
                                throws EvalError
EvalError

booleanUnaryOperation

static boolean booleanUnaryOperation(java.lang.Boolean B,
                                     int kind)
                              throws EvalError
EvalError

intUnaryOperation

static int intUnaryOperation(java.lang.Integer I,
                             int kind)

longUnaryOperation

static long longUnaryOperation(java.lang.Long L,
                               int kind)

floatUnaryOperation

static float floatUnaryOperation(java.lang.Float F,
                                 int kind)

doubleUnaryOperation

static double doubleUnaryOperation(java.lang.Double D,
                                   int kind)

intValue

public int intValue()
             throws EvalError
EvalError

booleanValue

public boolean booleanValue()
                     throws EvalError
EvalError

isNumber

public boolean isNumber()
Determine if this primitive is a numeric type. i.e. not boolean, null, or void (but including char)


numberValue

public java.lang.Number numberValue()
                             throws EvalError
EvalError

equals

public boolean equals(java.lang.Object obj)
Overrides:
equals in class java.lang.Object

unwrap

public static java.lang.Object unwrap(java.lang.Object obj)
Unwrap primitive values and map voids to nulls. Normal (non Primitive) types remain unchanged.

Parameters:
obj - object type which may be bsh.Primitive
Returns:
corresponding "normal" Java type, "unwrapping" any bsh.Primitive types to their wrapper types.