mjc

org.multijava.util.classfile
Class ClassInfo

java.lang.Object
  extended byorg.multijava.util.classfile.Member
      extended byorg.multijava.util.classfile.ClassInfo
All Implemented Interfaces:
Comparable, Constants

public class ClassInfo
extends Member

VMS 4.1 Class File This is the place where all information about the class defined by this class file resides.


Field Summary
protected  AttributeList attributes
           
private  FieldInfo[] fields
           
private  ClassConstant[] interfaces
           
private  int majorVersion
           
private  MethodInfo[] methods
           
private  int minorVersion
           
private  File sourceFile
           
private  ClassConstant superClass
           
private  ClassConstant thisClass
           
 
Fields inherited from class org.multijava.util.classfile.Member
 
Fields inherited from interface org.multijava.util.classfile.Constants
ACC_ABSTRACT, ACC_FINAL, ACC_INTERFACE, ACC_NATIVE, ACC_PRIVATE, ACC_PROTECTED, ACC_PUBLIC, ACC_STATIC, ACC_STRICT, ACC_SUPER, ACC_SYNCHRONIZED, ACC_SYNTHETIC, ACC_TRANSIENT, ACC_VOLATILE, ACCESS_FLAG_ARRAY, ACCESS_FLAG_NAMES, ATT_ANCHOR, ATT_BRIDGE, ATT_CODE, ATT_CONSTANTVALUE, ATT_DEPRECATED, ATT_DISPATCHER, ATT_EXCEPTIONS, ATT_GENERIC, ATT_GENERIC_FUNCTIONS, ATT_INNERCLASSES, ATT_LINENUMBERTABLE, ATT_LOCALVARIABLETABLE, ATT_MM_BODY, ATT_REDIRECTOR, ATT_RMJ_GLUE, ATT_RMJ_SIGNATURE, ATT_RUNTIME_VISIBLE_ANNOTATIONS, ATT_RUNTIME_VISIBLE_PARAMETER_ANNOTATIONS, ATT_SIGNATURE, ATT_SOURCEFILE, ATT_SYNTHETIC, ATT_UNIVERSE_FIELD, ATT_UNIVERSE_METHOD, ATT_UNIVERSE_VERSION, 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_dup2, opc_dup2_x1, opc_dup2_x2, opc_dup_x1, opc_dup_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_ldc2_w, opc_ldc_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
  ClassInfo(DataInput in, boolean interfaceOnly)
           
protected ClassInfo(DataInput in, boolean interfaceOnly, ClassInfoCreator cr)
          Constructs a class info structure from a class file
  ClassInfo(short modifiers, String thisClass, String superClass, String genericSignature, ArrayList interfaces, ArrayList fields, ArrayList methods, InnerClassInfo[] innerClasses, AttributeList attributes, File sourceFile, boolean deprecated)
          Constructs a new class info structure from source.
  ClassInfo(short modifiers, String thisClass, String superClass, String genericSignature, ClassConstant[] interfaces, FieldInfo[] fields, MethodInfo[] methods, InnerClassInfo[] innerClasses, AttributeList attributes, File sourceFile, boolean deprecated)
          Constructs a new class info structure from source.
 
Method Summary
protected  File createOutputFile(File dir, String className)
          Creates an output file.
 MultimethodInfo[] getExternalMethods()
          Returns the method infos for the external methods of this.
 FieldInfo[] getFields()
          Returns the fields info of the class in the file
 String getGenericSignature()
           
 InnerClassInfo[] getInnerClasses()
          Returns the inner classes table of the class in the file
 String[] getInterfaces()
          Returns the interfaces of the class in the file
 int getMajorVersion()
          Returns the version of the class in the file
 MethodInfo[] getMethods()
          Returns the methods info of the class in the file
 int getMinorVersion()
          Returns the version of the class in the file
 MethodInfo[] getMultimethods()
          Returns the method infos of the class but with synthetic multimethod and redirector bodies and external methods removed and internal multimethod signatures added.
 String getName()
          Returns the name of the this class (fully qualified)
 String getSignature()
          Returns the type of the this field
 String getSuperClass()
          Returns the super class of the class in the file
 String getUniverseVersion()
          Return the version of the encoding for the universe modifiers in the universe attributes or annotations.
 boolean hasUniverseRuntimeSupport()
          Return true if this class was compiled with universe run-time support enabled.
 boolean isAnchor()
          Returns true if the class is an anchor class for an external generic function.
 boolean isDeprecated()
          Returns true if the field is deprecated
private static FieldInfo[] makeFieldInfoArray(ArrayList vector)
           
private static ClassConstant[] makeInterfacesArray(ArrayList vector)
           
private static MethodInfo[] makeMethodInfoArray(ArrayList vector)
           
private  ConstantPool resolveConstants()
          Create a constant pool and insert in it all constants from from all the element of the class (fields, method, attributes, ...)
 void setDeprecated(boolean deprecated)
          Sets the deprecated attribute of this field
 void setFields(FieldInfo[] fields)
          Sets the fields info of the class in the file
 void setGenericSignature(String type)
           
 void setInnerClasses(InnerClassInfo[] inners)
          Sets the inner classes table of the class in the file
 void setInterfaces(String[] interfaces)
          Sets the interfaces of the class in the file
 void setMajorVersion(int majorVersion)
          Sets the version of the class in the file
 void setMethods(MethodInfo[] methods)
          Sets the methods info of the class in the file
 void setMinor(int minorVersion)
          Sets the version of the class in the file
 void setName(String name)
          Sets the name of the this field (fully qualified)
 void setSuperClass(String superClass)
          Sets the super class of the class in the file
 File sourceFile()
          Returns the source file of the class in the file, or null if the actual source file is unknown.
 String sourceFileName()
          Returns the short name of the source file as stored in the attributes of this.
 void write(DataOutput out)
          Writes the content of the class to the specified output stream
 void write(Destination dest)
          Writes the contents of the class to a file.
 
Methods inherited from class org.multijava.util.classfile.Member
compareTo, equals, getModifiers, hashCode, setModifiers, toString
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

majorVersion

private int majorVersion

minorVersion

private int minorVersion

thisClass

private ClassConstant thisClass

superClass

private ClassConstant superClass

interfaces

private ClassConstant[] interfaces

fields

private FieldInfo[] fields

methods

private MethodInfo[] methods

attributes

protected AttributeList attributes

sourceFile

private final File sourceFile
Constructor Detail

ClassInfo

public ClassInfo(short modifiers,
                 String thisClass,
                 String superClass,
                 String genericSignature,
                 ArrayList interfaces,
                 ArrayList fields,
                 ArrayList methods,
                 InnerClassInfo[] innerClasses,
                 AttributeList attributes,
                 File sourceFile,
                 boolean deprecated)
Constructs a new class info structure from source.

Parameters:
modifiers - access permission to and properties of this class
thisClass - the class or interface defined by this class file
superClass - the superclass of this class
interfaces - the interfaces implemented by this class
fields - the fields which are members of this class
methods - the methods which are members of this class
innerClasses - the inner classes which are members of this class
attributes - a list of the additional custom attributes for the classinfo, or null if none. This reference is captured.
sourceFile - the source file
deprecated - is this class deprecated ?

ClassInfo

public ClassInfo(short modifiers,
                 String thisClass,
                 String superClass,
                 String genericSignature,
                 ClassConstant[] interfaces,
                 FieldInfo[] fields,
                 MethodInfo[] methods,
                 InnerClassInfo[] innerClasses,
                 AttributeList attributes,
                 File sourceFile,
                 boolean deprecated)
Constructs a new class info structure from source.

Parameters:
modifiers - access permission to and properties of this class
thisClass - the class or interface defined by this class file
superClass - the superclass of this class
interfaces - the interfaces implemented by this class
fields - the fields which are members of this class
methods - the methods which are members of this class
innerClasses - the inner classes which are members of this class
attributes - a list of the additional custom attributes for the classinfo, or null if none. This reference is captured.
sourceFile - the source file
deprecated - is this class deprecated ?

ClassInfo

public ClassInfo(DataInput in,
                 boolean interfaceOnly)
          throws IOException,
                 ClassFileFormatException
Throws:
IOException
ClassFileFormatException

ClassInfo

protected ClassInfo(DataInput in,
                    boolean interfaceOnly,
                    ClassInfoCreator cr)
             throws IOException,
                    ClassFileFormatException
Constructs a class info structure from a class file

Parameters:
in - the stream to read the class from
interfaceOnly - load only the interface, not the source code
Throws:
IOException - an io problem has occured
ClassFileFormatException - attempt to write a bad classfile info
Method Detail

getName

public String getName()
Returns the name of the this class (fully qualified)


getGenericSignature

public String getGenericSignature()

setGenericSignature

public void setGenericSignature(String type)

setName

public void setName(String name)
Sets the name of the this field (fully qualified)


getSignature

public String getSignature()
Returns the type of the this field


getSuperClass

public String getSuperClass()
Returns the super class of the class in the file


setSuperClass

public void setSuperClass(String superClass)
Sets the super class of the class in the file


getMajorVersion

public int getMajorVersion()
Returns the version of the class in the file


setMajorVersion

public void setMajorVersion(int majorVersion)
Sets the version of the class in the file


getMinorVersion

public int getMinorVersion()
Returns the version of the class in the file


setMinor

public void setMinor(int minorVersion)
Sets the version of the class in the file


getInnerClasses

public InnerClassInfo[] getInnerClasses()
Returns the inner classes table of the class in the file


setInnerClasses

public void setInnerClasses(InnerClassInfo[] inners)
Sets the inner classes table of the class in the file


sourceFile

public File sourceFile()
Returns the source file of the class in the file, or null if the actual source file is unknown.

See Also:
sourceFileName()

sourceFileName

public String sourceFileName()
Returns the short name of the source file as stored in the attributes of this.


getUniverseVersion

public String getUniverseVersion()
Return the version of the encoding for the universe modifiers in the universe attributes or annotations. It will first check if the universe_class attribute is present, if not it will check for an annotation. By AHS.


hasUniverseRuntimeSupport

public boolean hasUniverseRuntimeSupport()
Return true if this class was compiled with universe run-time support enabled. It will first check if the universe_class attribute is present, if not it will check for an annotation. By AHS.


isDeprecated

public boolean isDeprecated()
Returns true if the field is deprecated


setDeprecated

public void setDeprecated(boolean deprecated)
Sets the deprecated attribute of this field


getInterfaces

public String[] getInterfaces()
Returns the interfaces of the class in the file


setInterfaces

public void setInterfaces(String[] interfaces)
Sets the interfaces of the class in the file


getFields

public FieldInfo[] getFields()
Returns the fields info of the class in the file


setFields

public void setFields(FieldInfo[] fields)
Sets the fields info of the class in the file


getMethods

public MethodInfo[] getMethods()
Returns the methods info of the class in the file


setMethods

public void setMethods(MethodInfo[] methods)
Sets the methods info of the class in the file


getMultimethods

public MethodInfo[] getMultimethods()
Returns the method infos of the class but with synthetic multimethod and redirector bodies and external methods removed and internal multimethod signatures added.


getExternalMethods

public MultimethodInfo[] getExternalMethods()
Returns the method infos for the external methods of this. Returns an empty array unless this is an anchor class.


isAnchor

public boolean isAnchor()
Returns true if the class is an anchor class for an external generic function.


write

public void write(DataOutput out)
           throws IOException,
                  ClassFileFormatException
Writes the content of the class to the specified output stream

Parameters:
out - the stream to write to
Throws:
IOException - an io problem has occured
ClassFileFormatException - attempt to write a bad classfile info

write

public void write(Destination dest)
           throws IOException,
                  ClassFileFormatException
Writes the contents of the class to a file.

Parameters:
dest - the directory to write the .class file to, if the directory doesn't exist it will be created
Throws:
IOException - an io problem occured
ClassFileFormatException - attempt to write a bad classfile info

createOutputFile

protected File createOutputFile(File dir,
                                String className)
Creates an output file. This is a factory method that can be overridden by subclasses.


resolveConstants

private ConstantPool resolveConstants()
                               throws ClassFileFormatException
Create a constant pool and insert in it all constants from from all the element of the class (fields, method, attributes, ...)

Throws:
ClassFileFormatException

makeFieldInfoArray

private static FieldInfo[] makeFieldInfoArray(ArrayList vector)

makeMethodInfoArray

private static MethodInfo[] makeMethodInfoArray(ArrayList vector)

makeInterfacesArray

private static ClassConstant[] makeInterfacesArray(ArrayList vector)

mjc

mjc is Copyright (C) 2000-2004 by Iowa State University and is distributed under the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. mjc is based in part on the Kopi project Copyright (C) 1990-99 DMS Decision Management Systems Ges.m.b.H.