at.dms.kjc
Class CNumericType

java.lang.Object
  extended by at.dms.util.Utils
      extended by at.dms.kjc.CType
          extended by at.dms.kjc.CNumericType
All Implemented Interfaces:
Constants, DeepCloneable, Serializable
Direct Known Subclasses:
CBitType, CByteType, CCharType, CDoubleType, CFloatType, CIntType, CLongType, CShortType

public abstract class CNumericType
extends CType

This class represents java and kopi numericals types Such as byte, short, int, long, float, double

See Also:
Serialized Form

Field Summary
 
Fields inherited from class at.dms.kjc.CType
instance, type
 
Fields inherited from class at.dms.util.Utils
EMPTY_LIST, getForLoopCallers
 
Fields inherited from interface at.dms.kjc.Constants
CMP_VERSION, JAV_CLASS, JAV_CLONE, JAV_CLONEABLE, JAV_CONSTRUCTOR, JAV_ERROR, JAV_EXCEPTION, JAV_INIT, JAV_LENGTH, JAV_NAME_SEPARATOR, JAV_OBJECT, JAV_OUTER_THIS, JAV_RUNTIME, JAV_RUNTIME_EXCEPTION, JAV_STATIC_INIT, JAV_STRING, JAV_STRINGBUFFER, JAV_THIS, JAV_THROWABLE, OPE_BAND, OPE_BNOT, OPE_BOR, OPE_BSR, OPE_BXOR, OPE_EQ, OPE_GE, OPE_GT, OPE_LE, OPE_LNOT, OPE_LT, OPE_MINUS, OPE_NE, OPE_PERCENT, OPE_PLUS, OPE_POSTDEC, OPE_POSTINC, OPE_PREDEC, OPE_PREINC, OPE_SIMPLE, OPE_SL, OPE_SLASH, OPE_SR, OPE_STAR, TID_ARRAY, TID_BIT, TID_BOOLEAN, TID_BYTE, TID_CHAR, TID_CLASS, TID_DOUBLE, TID_FLOAT, TID_INT, TID_LONG, TID_SHORT, TID_VECTOR, TID_VOID, VECTOR_EMPTY
 
Fields inherited from interface at.dms.classfile.Constants
ACC_ABSTRACT, ACC_FINAL, ACC_INLINE, ACC_INTERFACE, ACC_NATIVE, ACC_PRIVATE, ACC_PROTECTED, ACC_PUBLIC, ACC_STATIC, ACC_STRICT, ACC_SUPER, ACC_SYNCHRONIZED, ACC_TRANSIENT, ACC_VOLATILE, ATT_CODE, ATT_CONSTANTVALUE, ATT_DEPRECATED, ATT_EXCEPTIONS, ATT_GENERIC, ATT_INNERCLASSES, ATT_LINENUMBERTABLE, ATT_LOCALVARIABLETABLE, ATT_SOURCEFILE, ATT_SYNTHETIC, CST_CLASS, CST_DOUBLE, CST_FIELD, CST_FLOAT, CST_INTEGER, CST_INTERFACEMETHOD, CST_LONG, CST_METHOD, CST_NAMEANDTYPE, CST_STRING, CST_UTF8, ENV_DEBUG_MODE, ENV_USE_CACHE, JAVA_MAGIC, JAVA_MAJOR, JAVA_MINOR, MAX_CODE_PER_METHOD, opc_aaload, opc_aastore, opc_aconst_null, opc_aload, opc_aload_0, opc_aload_1, opc_aload_2, opc_aload_3, opc_anewarray, opc_areturn, opc_arraylength, opc_astore, opc_astore_0, opc_astore_1, opc_astore_2, opc_astore_3, opc_athrow, opc_baload, opc_bastore, opc_bipush, opc_caload, opc_castore, opc_checkcast, opc_d2f, opc_d2i, opc_d2l, opc_dadd, opc_daload, opc_dastore, opc_dcmpg, opc_dcmpl, opc_dconst_0, opc_dconst_1, opc_ddiv, opc_dload, opc_dload_0, opc_dload_1, opc_dload_2, opc_dload_3, opc_dmul, opc_dneg, opc_drem, opc_dreturn, opc_dstore, opc_dstore_0, opc_dstore_1, opc_dstore_2, opc_dstore_3, opc_dsub, opc_dup, opc_dup_x1, opc_dup_x2, opc_dup2, opc_dup2_x1, opc_dup2_x2, opc_f2d, opc_f2i, opc_f2l, opc_fadd, opc_faload, opc_fastore, opc_fcmpg, opc_fcmpl, opc_fconst_0, opc_fconst_1, opc_fconst_2, opc_fdiv, opc_fload, opc_fload_0, opc_fload_1, opc_fload_2, opc_fload_3, opc_fmul, opc_fneg, opc_frem, opc_freturn, opc_fstore, opc_fstore_0, opc_fstore_1, opc_fstore_2, opc_fstore_3, opc_fsub, opc_getfield, opc_getstatic, opc_goto, opc_goto_w, opc_i2b, opc_i2c, opc_i2d, opc_i2f, opc_i2l, opc_i2s, opc_iadd, opc_iaload, opc_iand, opc_iastore, opc_iconst_0, opc_iconst_1, opc_iconst_2, opc_iconst_3, opc_iconst_4, opc_iconst_5, opc_iconst_m1, opc_idiv, opc_if_acmpeq, opc_if_acmpne, opc_if_icmpeq, opc_if_icmpge, opc_if_icmpgt, opc_if_icmple, opc_if_icmplt, opc_if_icmpne, opc_ifeq, opc_ifge, opc_ifgt, opc_ifle, opc_iflt, opc_ifne, opc_ifnonnull, opc_ifnull, opc_iinc, opc_iload, opc_iload_0, opc_iload_1, opc_iload_2, opc_iload_3, opc_imul, opc_ineg, opc_instanceof, opc_invokeinterface, opc_invokespecial, opc_invokestatic, opc_invokevirtual, opc_ior, opc_irem, opc_ireturn, opc_ishl, opc_ishr, opc_istore, opc_istore_0, opc_istore_1, opc_istore_2, opc_istore_3, opc_isub, opc_iushr, opc_ixor, opc_jsr, opc_jsr_w, opc_l2d, opc_l2f, opc_l2i, opc_ladd, opc_laload, opc_land, opc_lastore, opc_lcmp, opc_lconst_0, opc_lconst_1, opc_ldc, opc_ldc_w, opc_ldc2_w, opc_ldiv, opc_lload, opc_lload_0, opc_lload_1, opc_lload_2, opc_lload_3, opc_lmul, opc_lneg, opc_lookupswitch, opc_lor, opc_lrem, opc_lreturn, opc_lshl, opc_lshr, opc_lstore, opc_lstore_0, opc_lstore_1, opc_lstore_2, opc_lstore_3, opc_lsub, opc_lushr, opc_lxor, opc_monitorenter, opc_monitorexit, opc_multianewarray, opc_new, opc_newarray, opc_nop, opc_pop, opc_pop2, opc_putfield, opc_putstatic, opc_ret, opc_return, opc_saload, opc_sastore, opc_sipush, opc_swap, opc_tableswitch, opc_wide, opc_xxxunusedxxx, POO_ASCII_CONSTANT, POO_CLASS_CONSTANT, POO_DOUBLE_CONSTANT, POO_FLOAT_CONSTANT, POO_INTEGER_CONSTANT, POO_LONG_CONSTANT, POO_NAT_CONSTANT, POO_REF_CONSTANT, POO_STRING_CONSTANT, TYP_ADDRESS, TYP_DOUBLE, TYP_FLOAT, TYP_INT, TYP_LONG, TYP_REFERENCE, TYP_VOID
 
Constructor Summary
protected CNumericType(int typeID)
          Constructor
 
Method Summary
protected abstract  void appendSignature(SimpleStringBuffer buffer)
          Appends the VM signature of this type to the specified buffer.
static CType binaryPromote(CType t1, CType t2)
          binaryPromote search the type corresponding to the promotion of the two types
 void checkType(CContext context)
          check that type is valid necessary to resolve String into java/lang/String
 Object deepClone()
          Returns a deep clone of this object.
protected  void deepCloneInto(CNumericType other)
          Clones all fields of this into
abstract  void genCastTo(CNumericType dest, CodeSequence code)
          Generates a bytecode sequence to convert a value of this type to the specified destination type.
abstract  String getSignature()
          Returns the VM signature of this type.
abstract  int getSize()
          Returns the stack size used by a value of this type.
abstract  int getSizeInC()
          Returns the stack size (conservative estimate of maximum number of bytes needed in C on 32-bit machine) used by a value of this type.
abstract  boolean isAssignableTo(CType dest)
          Can this type be converted to the specified type by assignment conversion (JLS 5.2) ?
 boolean isCastableTo(CType dest)
          Can this type be converted to the specified type by casting conversion (JLS 5.5) ?
abstract  boolean isFloatingPoint()
          Is this a floating point type ?
 boolean isNumeric()
          Is this a numeric type ?
abstract  boolean isOrdinal()
          Is this type ordinal ?
abstract  String toString()
          Returns a string representation of this type.
static CType unaryPromote(CType t1)
          unaryPromote search the type corresponding to the type after computation
 
Methods inherited from class at.dms.kjc.CType
checked, deepCloneInto, equals, genMethodSignature, getArrayLoadOpcode, getArrayStoreOpcode, getCClass, getLoadOpcode, getReturnOpcode, getStoreOpcode, getTypeID, isArrayType, isCheckedException, isClassType, isPrimitive, isReference, parseMethodSignature, parseSignature
 
Methods inherited from class at.dms.util.Utils
asPercent, cellMathEquivalent, cMathEquivalent, cppMathEquivalent, deepCloneInto, equalArrays, fail, getEnvironmentVariable, getExpression, hasPeeks, initArray, initArray, initLiteralArray, intArrayToList, isMathMethod, isUniform, kopi_assert, kopi_assert, makeCountdownForLoop, makeDotFileName, makeForLoop, makeForLoop, makeForLoop, makeForLoopFieldIndex, makeForLoopLocalIndex, nextPow2, passThruParens, peelMarkers, popBeforePeek, readFile, removeUnusedPops, replaceAll, setupDotFileName, simplifyMathMethod, splitQualifiedName, splitQualifiedName, toArray, toIntArray, toVector, voidToInt, writeFile
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

CNumericType

protected CNumericType(int typeID)
Constructor

Parameters:
typeID - the ident (int value) of this type
Method Detail

toString

public abstract String toString()
Returns a string representation of this type.

Specified by:
toString in class CType

getSignature

public abstract String getSignature()
Returns the VM signature of this type.

Overrides:
getSignature in class CType

appendSignature

protected abstract void appendSignature(SimpleStringBuffer buffer)
Appends the VM signature of this type to the specified buffer.

Specified by:
appendSignature in class CType

getSizeInC

public abstract int getSizeInC()
Returns the stack size (conservative estimate of maximum number of bytes needed in C on 32-bit machine) used by a value of this type.

Specified by:
getSizeInC in class CType

getSize

public abstract int getSize()
Returns the stack size used by a value of this type.

Specified by:
getSize in class CType

isOrdinal

public abstract boolean isOrdinal()
Is this type ordinal ?

Overrides:
isOrdinal in class CType
Returns:
is it a integer type ?

isFloatingPoint

public abstract boolean isFloatingPoint()
Is this a floating point type ?

Overrides:
isFloatingPoint in class CType
Returns:
is it a real number type ?

isNumeric

public boolean isNumeric()
Is this a numeric type ?

Overrides:
isNumeric in class CType
Returns:
is it a numeric type ?

checkType

public void checkType(CContext context)
               throws UnpositionedError
check that type is valid necessary to resolve String into java/lang/String

Specified by:
checkType in class CType
Throws:
UnpositionedError - this error will be positioned soon

isAssignableTo

public abstract boolean isAssignableTo(CType dest)
Can this type be converted to the specified type by assignment conversion (JLS 5.2) ?

Specified by:
isAssignableTo in class CType
Parameters:
dest - the destination type
Returns:
true iff the conversion is valid

isCastableTo

public boolean isCastableTo(CType dest)
Can this type be converted to the specified type by casting conversion (JLS 5.5) ?

Specified by:
isCastableTo in class CType
Parameters:
dest - the destination type
Returns:
true iff the conversion is valid

unaryPromote

public static CType unaryPromote(CType t1)
unaryPromote search the type corresponding to the type after computation

Parameters:
t1 - the type
Returns:
the corresponding type after operation

binaryPromote

public static CType binaryPromote(CType t1,
                                  CType t2)
binaryPromote search the type corresponding to the promotion of the two types

Parameters:
t1 - the first type
t2 - the second type
Returns:
the corresponding type or null

genCastTo

public abstract void genCastTo(CNumericType dest,
                               CodeSequence code)
Generates a bytecode sequence to convert a value of this type to the specified destination type.

Parameters:
dest - the destination type
code - the code sequence

deepClone

public Object deepClone()
Returns a deep clone of this object.

Specified by:
deepClone in interface DeepCloneable
Overrides:
deepClone in class CType

deepCloneInto

protected void deepCloneInto(CNumericType other)
Clones all fields of this into
other