at.dms.kjc
Class CNumericType

java.lang.Object
  |
  +--at.dms.util.Utils
        |
        +--at.dms.kjc.CType
              |
              +--at.dms.kjc.CNumericType
All Implemented Interfaces:
Constants, Constants

public class CNumericType
extends CType

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


Fields inherited from class at.dms.kjc.CType
signatureParser, type
 
Fields inherited from class at.dms.util.Utils
DBG_LEVEL_HIGH, DBG_LEVEL_LOW, DBG_LEVEL_NO
 
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_BOOLEAN, TID_BYTE, TID_CHAR, TID_CLASS, TID_DOUBLE, TID_FLOAT, TID_INT, TID_LONG, TID_SHORT, TID_VOID
 
Fields inherited from interface at.dms.classfile.Constants
ACC_ABSTRACT, ACC_FINAL, ACC_INTERFACE, ACC_NATIVE, ACC_NBR_FLAGS, 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  void appendSignature(FastStringBuffer buff)
          Transforms this type to a string
static CType binaryPromote(CType left, CType right)
          Returns the type to which both operands in a binary expression must be promoted before the operation is performed.
 void checkType(CContext context)
          check that type is valid necessary to resolve String into java/lang/String
 void genCastTo(CNumericType dest, CodeSequence code)
          Generates a sequence of bytecodes
 java.lang.String getSignature()
          Transforms this type to a string
 int getSize()
          Returns the size used in stack by value of this type
 boolean implicitlyCastTo(CType dest)
          implicitlyCastTo
 boolean isAssignableTo(CType dest)
          isAssignableTo
 boolean isCastableTo(CType dest)
          isCastableTo
 boolean isCodedHasInt()
          ?
 boolean isFloatingPoint()
          Check if a type is an integer type
 boolean isNumeric()
          Check if a type is a numeric type
 boolean isOrdinal()
          Check if a type is an integer type
 java.lang.String toString()
          Transforms this type to a string
static CType unaryPromote(CType type)
          Returns the unary-promoted type for the argument type.
 
Methods inherited from class at.dms.kjc.CType
checked, equals, genMethodSignature, getCClass, getLoadOpcode, getReturnOpcode, getStoreOpcode, getTypeID, isArrayType, isCheckedException, isClassType, isPrimitive, isReference, parseMethodSignature, parseSignature
 
Methods inherited from class at.dms.util.Utils
assert, assert, fail, fail, hasFlag, hasMoreThanOneFlag, hasOtherFlags, splitQualifiedName, splitQualifiedName, vectorToArray, vectorToIntArray
 
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 java.lang.String toString()
Transforms this type to a string
Overrides:
toString in class CType

getSignature

public java.lang.String getSignature()
Transforms this type to a string
Overrides:
getSignature in class CType
Following copied from class: at.dms.kjc.CType
Returns:
the class file form of thid type

appendSignature

protected void appendSignature(FastStringBuffer buff)
Transforms this type to a string
Overrides:
appendSignature in class CType

getSize

public int getSize()
Returns the size used in stack by value of this type
Overrides:
getSize in class CType

isNumeric

public boolean isNumeric()
Check if a type is a numeric type
Overrides:
isNumeric in class CType
Returns:
is it a numeric type ?

isCodedHasInt

public boolean isCodedHasInt()
Description copied from class: CType
?
Overrides:
isCodedHasInt in class CType

isOrdinal

public boolean isOrdinal()
Check if a type is an integer type
Overrides:
isOrdinal in class CType
Returns:
is it a integer type ?

isFloatingPoint

public boolean isFloatingPoint()
Check if a type is an integer type
Overrides:
isFloatingPoint in class CType
Returns:
is it a real number type ?

checkType

public void checkType(CContext context)
               throws UnpositionedError
check that type is valid necessary to resolve String into java/lang/String
Overrides:
checkType in class CType
Throws:
UnpositionedError - this error will be positioned soon

isAssignableTo

public boolean isAssignableTo(CType dest)
isAssignableTo
Overrides:
isAssignableTo in class CType
Parameters:
dest - the destination type
Returns:
assignment is valid ?

isCastableTo

public boolean isCastableTo(CType dest)
isCastableTo
Overrides:
isCastableTo in class CType
Parameters:
dest - the destination type
Returns:
cast is valid ?

implicitlyCastTo

public boolean implicitlyCastTo(CType dest)
implicitlyCastTo
Overrides:
implicitlyCastTo in class CType
Parameters:
dest - the expression type to cast to
Returns:
cast is valid ?

unaryPromote

public static CType unaryPromote(CType type)
Returns the unary-promoted type for the argument type. This is done according to the rules defined in JLS2 section 5.6.1, titled "Unary Numeric Promotion."
Parameters:
type - the type to promote.
Returns:
the unary-promoted type for type.

binaryPromote

public static CType binaryPromote(CType left,
                                  CType right)
Returns the type to which both operands in a binary expression must be promoted before the operation is performed. This must only be used for binary epxressions that are required by the JLS to perform binary numeric promotion (such as the multiplicative operations). The resulting type of the expression is also the promoted type. Binary Numeric Promotion is described in JLS 2nd edition, paragraph 5.6.2.
Parameters:
left - the type of the left expression in a binary expression.
right - the type of the right expression in a binary expression.
Returns:
the promoted type.

genCastTo

public void genCastTo(CNumericType dest,
                      CodeSequence code)
Generates a sequence of bytecodes
Parameters:
dest - the destination type
code - the code list