at.dms.kjc
Class CMember

java.lang.Object
  |
  +--at.dms.util.Utils
        |
        +--at.dms.kjc.CMember
All Implemented Interfaces:
Constants, Constants
Direct Known Subclasses:
CClass, CField, CMethod

public class CMember
extends Utils
implements Constants

This class represents an exported member of a class.

See Also:
CMember, CField, CMethod, CClass

Field Summary
static java.lang.String ACCESSOR_PREFIX
          Prefix for names of accessor methods.
 
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
CMember(CClass owner, int modifiers, java.lang.String ident, boolean deprecated)
          Constructs a field export
 
Method Summary
 CClass getCClass()
           
 CField getField()
           
 java.lang.String getIdent()
           
 java.lang.String getJavaName()
           
 CMethod getMethod()
           
 int getModifiers()
           
 CClass getOwner()
          Returns the owner of this member
 java.lang.String getPrefixName()
           
 java.lang.String getQualifiedName()
           
 boolean isAccessible(CClass from)
          Returns true if this member is accessisble from the specified class according to the JLS.
 boolean isDeprecated()
           
 boolean isFinal()
           
 boolean isPrivate()
           
 boolean isProtected()
           
 boolean isPublic()
           
 boolean isStatic()
           
 boolean isSynthetic()
          Whether this is a synthetic member.
 boolean mustUseAccessorMethod(CClass from)
          Returns true if it is necessary to use an accessor method to access this member.
 void setModifiers(int modifiers)
          (Re)sets the modifiers of this member.
 void setSynthetic(boolean flag)
          Sets the flag that indicates if this member is synthetic or not.
 
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, toString, wait, wait, wait
 

Field Detail

ACCESSOR_PREFIX

public static final java.lang.String ACCESSOR_PREFIX
Prefix for names of accessor methods.
Constructor Detail

CMember

public CMember(CClass owner,
               int modifiers,
               java.lang.String ident,
               boolean deprecated)
Constructs a field export
Parameters:
owner - the owner of this member
modifiers - the modifiers on this member
ident - the ident of this member
deprecated - is this member deprecated
Method Detail

isSynthetic

public boolean isSynthetic()
Whether this is a synthetic member.

setSynthetic

public void setSynthetic(boolean flag)
Sets the flag that indicates if this member is synthetic or not.

getOwner

public CClass getOwner()
Returns the owner of this member

getIdent

public java.lang.String getIdent()
Returns:
the ident of this method

getQualifiedName

public java.lang.String getQualifiedName()
Returns:
the fully qualified name of this member

getPrefixName

public java.lang.String getPrefixName()
Returns:
the fully qualified name of this member

getJavaName

public java.lang.String getJavaName()
Returns:
the fully qualified name of this member

getModifiers

public int getModifiers()
Returns:
the modifiers of this member.

setModifiers

public void setModifiers(int modifiers)
(Re)sets the modifiers of this member.

getField

public CField getField()
Returns:
the interface

getMethod

public CMethod getMethod()
Returns:
the interface

getCClass

public CClass getCClass()
Returns:
the interface

isStatic

public boolean isStatic()
Returns:
true if this member is static

isPublic

public boolean isPublic()
Returns:
true if this member is public

isProtected

public boolean isProtected()
Returns:
true if this member is protected

isPrivate

public boolean isPrivate()
Returns:
true if this member is private

isFinal

public boolean isFinal()
Returns:
true if this member is final

isDeprecated

public boolean isDeprecated()
Returns:
true if this member is deprecated

mustUseAccessorMethod

public boolean mustUseAccessorMethod(CClass from)
Returns true if it is necessary to use an accessor method to access this member. Precondition: the member must be accessible for from (use isAccessible method).

isAccessible

public boolean isAccessible(CClass from)
Returns true if this member is accessisble from the specified class according to the JLS. This doesn't mean that it is accessible according to the JVM. One must check using mustUseAccessorMethod(CClass) if an accessor method is required to let another class access the member.
Returns:
true if this member is accessible