proguard.classfile
Class ProgramClass

java.lang.Object
  extended by proguard.classfile.ProgramClass
All Implemented Interfaces:
Clazz, VisitorAccepter

public class ProgramClass
extends java.lang.Object
implements Clazz

This Clazz is a complete representation of the data in a Java class.


Field Summary
 Attribute[] attributes
           
 Constant[] constantPool
           
 ProgramField[] fields
           
 ProgramMethod[] methods
           
 Clazz[] subClasses
          An extra field pointing to the subclasses of this class.
 int u2accessFlags
           
 int u2attributesCount
           
 int u2constantPoolCount
           
 int u2fieldsCount
           
 int[] u2interfaces
           
 int u2interfacesCount
           
 int u2methodsCount
           
 int u2superClass
           
 int u2thisClass
           
 int u4magic
           
 int u4version
           
 java.lang.Object visitorInfo
          An extra field in which visitors can store information.
 
Constructor Summary
ProgramClass()
          Creates an uninitialized ProgramClass.
 
Method Summary
 void accept(ClassVisitor classVisitor)
          Accepts the given class visitor.
 void addSubClass(Clazz clazz)
          Notifies this Clazz that it is being subclassed by another class.
 void attributesAccept(AttributeVisitor attributeVisitor)
          Lets the given attribute info visitor visit all attributes of this class.
 void constantPoolEntriesAccept(ConstantVisitor constantVisitor)
          Lets the given constant pool entry visitor visit all constant pool entries of this class.
 void constantPoolEntryAccept(int index, ConstantVisitor constantVisitor)
          Lets the given constant pool entry visitor visit the constant pool entry at the specified index.
 boolean extends_(Clazz clazz)
          Returns whether this class extends the given class.
 boolean extendsOrImplements(Clazz clazz)
          Returns whether this class implements the given class.
 void fieldAccept(java.lang.String name, java.lang.String descriptor, MemberVisitor memberVisitor)
          Lets the given member info visitor visit the specified field.
 void fieldsAccept(MemberVisitor memberVisitor)
          Lets the given member info visitor visit all fields of this class.
 Field findField(java.lang.String name, java.lang.String descriptor)
          Returns the field with the given name and descriptor.
 Method findMethod(java.lang.String name, java.lang.String descriptor)
          Returns the method with the given name and descriptor.
 int getAccessFlags()
          Returns the access flags of this class.
 java.lang.String getClassName(int constantIndex)
          Returns the class name of ClassConstant at the specified index.
 Constant getConstant(int constantIndex)
          Returns the Constant at the given index in the constant pool.
 Clazz getInterface(int index)
          Returns the interface at the given index.
 int getInterfaceCount()
          Returns the number of interfaces that this class implements.
 java.lang.String getInterfaceName(int index)
          Returns the full internal name of the interface at the given index of this class.
 java.lang.String getName()
          Returns the full internal name of this class.
 java.lang.String getName(int constantIndex)
          Returns the name of the NameAndTypeConstant at the specified index.
 java.lang.String getString(int constantIndex)
          Returns the String value of the Utf8Constant at the specified index.
 java.lang.String getStringString(int constantIndex)
          Returns the String value of the StringConstant at the specified index.
 Clazz getSuperClass()
          Returns the super class of this class.
 java.lang.String getSuperName()
          Returns the full internal name of the super class of this class, or null if this class represents java.lang.Object.
 int getTag(int constantIndex)
          Returns the tag value of the Constant at the specified index.
 java.lang.String getType(int constantIndex)
          Returns the type of the NameAndTypeConstant at the specified index.
 java.lang.Object getVisitorInfo()
          Gets the visitor information of the visitor accepter.
 void hierarchyAccept(boolean visitThisClass, boolean visitSuperClass, boolean visitInterfaces, boolean visitSubclasses, ClassVisitor classVisitor)
          Accepts the given class visitor in the class hierarchy.
 void interfaceConstantsAccept(ConstantVisitor constantVisitor)
          Lets the given constant pool entry visitor visit the class constant pool entries for all interfaces of this class.
 boolean mayHaveImplementations(Method method)
          Returns whether the given method may possibly have implementing or overriding methods down the class hierarchy.
 void methodAccept(java.lang.String name, java.lang.String descriptor, MemberVisitor memberVisitor)
          Lets the given member info visitor visit the specified method.
 void methodsAccept(MemberVisitor memberVisitor)
          Lets the given member info visitor visit all methods of this class.
 void setVisitorInfo(java.lang.Object visitorInfo)
          Sets the visitor information of the visitor accepter.
 void subclassesAccept(ClassVisitor classVisitor)
          Lets the given class visitor visit all known subclasses.
 void superClassConstantAccept(ConstantVisitor constantVisitor)
          Lets the given constant pool entry visitor visit the class constant pool entry of the super class of this class, if there is one.
 void thisClassConstantAccept(ConstantVisitor constantVisitor)
          Lets the given constant pool entry visitor visit the class constant pool entry of this class.
 java.lang.String toString()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

u4magic

public int u4magic

u4version

public int u4version

u2constantPoolCount

public int u2constantPoolCount

constantPool

public Constant[] constantPool

u2accessFlags

public int u2accessFlags

u2thisClass

public int u2thisClass

u2superClass

public int u2superClass

u2interfacesCount

public int u2interfacesCount

u2interfaces

public int[] u2interfaces

u2fieldsCount

public int u2fieldsCount

fields

public ProgramField[] fields

u2methodsCount

public int u2methodsCount

methods

public ProgramMethod[] methods

u2attributesCount

public int u2attributesCount

attributes

public Attribute[] attributes

subClasses

public Clazz[] subClasses
An extra field pointing to the subclasses of this class. This field is filled out by the ClassSubHierarchyInitializer.


visitorInfo

public java.lang.Object visitorInfo
An extra field in which visitors can store information.

Constructor Detail

ProgramClass

public ProgramClass()
Creates an uninitialized ProgramClass.

Method Detail

getConstant

public Constant getConstant(int constantIndex)
Returns the Constant at the given index in the constant pool.


getAccessFlags

public int getAccessFlags()
Description copied from interface: Clazz
Returns the access flags of this class.

Specified by:
getAccessFlags in interface Clazz
See Also:
ClassConstants

getName

public java.lang.String getName()
Description copied from interface: Clazz
Returns the full internal name of this class.

Specified by:
getName in interface Clazz

getSuperName

public java.lang.String getSuperName()
Description copied from interface: Clazz
Returns the full internal name of the super class of this class, or null if this class represents java.lang.Object.

Specified by:
getSuperName in interface Clazz

getInterfaceCount

public int getInterfaceCount()
Description copied from interface: Clazz
Returns the number of interfaces that this class implements.

Specified by:
getInterfaceCount in interface Clazz

getInterfaceName

public java.lang.String getInterfaceName(int index)
Description copied from interface: Clazz
Returns the full internal name of the interface at the given index of this class.

Specified by:
getInterfaceName in interface Clazz

getTag

public int getTag(int constantIndex)
Description copied from interface: Clazz
Returns the tag value of the Constant at the specified index.

Specified by:
getTag in interface Clazz

getString

public java.lang.String getString(int constantIndex)
Description copied from interface: Clazz
Returns the String value of the Utf8Constant at the specified index.

Specified by:
getString in interface Clazz

getStringString

public java.lang.String getStringString(int constantIndex)
Description copied from interface: Clazz
Returns the String value of the StringConstant at the specified index.

Specified by:
getStringString in interface Clazz

getClassName

public java.lang.String getClassName(int constantIndex)
Description copied from interface: Clazz
Returns the class name of ClassConstant at the specified index.

Specified by:
getClassName in interface Clazz

getName

public java.lang.String getName(int constantIndex)
Description copied from interface: Clazz
Returns the name of the NameAndTypeConstant at the specified index.

Specified by:
getName in interface Clazz

getType

public java.lang.String getType(int constantIndex)
Description copied from interface: Clazz
Returns the type of the NameAndTypeConstant at the specified index.

Specified by:
getType in interface Clazz

addSubClass

public void addSubClass(Clazz clazz)
Description copied from interface: Clazz
Notifies this Clazz that it is being subclassed by another class.

Specified by:
addSubClass in interface Clazz

getSuperClass

public Clazz getSuperClass()
Description copied from interface: Clazz
Returns the super class of this class.

Specified by:
getSuperClass in interface Clazz

getInterface

public Clazz getInterface(int index)
Description copied from interface: Clazz
Returns the interface at the given index.

Specified by:
getInterface in interface Clazz

extends_

public boolean extends_(Clazz clazz)
Description copied from interface: Clazz
Returns whether this class extends the given class. A class is always considered to extend itself. Interfaces are considered to only extend the root Object class.

Specified by:
extends_ in interface Clazz

extendsOrImplements

public boolean extendsOrImplements(Clazz clazz)
Description copied from interface: Clazz
Returns whether this class implements the given class. A class is always considered to implement itself. Interfaces are considered to implement all their superinterfaces.

Specified by:
extendsOrImplements in interface Clazz

findField

public Field findField(java.lang.String name,
                       java.lang.String descriptor)
Description copied from interface: Clazz
Returns the field with the given name and descriptor.

Specified by:
findField in interface Clazz

findMethod

public Method findMethod(java.lang.String name,
                         java.lang.String descriptor)
Description copied from interface: Clazz
Returns the method with the given name and descriptor.

Specified by:
findMethod in interface Clazz

accept

public void accept(ClassVisitor classVisitor)
Description copied from interface: Clazz
Accepts the given class visitor.

Specified by:
accept in interface Clazz

hierarchyAccept

public void hierarchyAccept(boolean visitThisClass,
                            boolean visitSuperClass,
                            boolean visitInterfaces,
                            boolean visitSubclasses,
                            ClassVisitor classVisitor)
Description copied from interface: Clazz
Accepts the given class visitor in the class hierarchy.

Specified by:
hierarchyAccept in interface Clazz
Parameters:
visitThisClass - specifies whether to visit this class.
visitSuperClass - specifies whether to visit the super classes.
visitInterfaces - specifies whether to visit the interfaces.
visitSubclasses - specifies whether to visit the subclasses.
classVisitor - the ClassVisitor that will visit the class hierarchy.

subclassesAccept

public void subclassesAccept(ClassVisitor classVisitor)
Description copied from interface: Clazz
Lets the given class visitor visit all known subclasses.

Specified by:
subclassesAccept in interface Clazz
Parameters:
classVisitor - the ClassVisitor that will visit the subclasses.

constantPoolEntriesAccept

public void constantPoolEntriesAccept(ConstantVisitor constantVisitor)
Description copied from interface: Clazz
Lets the given constant pool entry visitor visit all constant pool entries of this class.

Specified by:
constantPoolEntriesAccept in interface Clazz

constantPoolEntryAccept

public void constantPoolEntryAccept(int index,
                                    ConstantVisitor constantVisitor)
Description copied from interface: Clazz
Lets the given constant pool entry visitor visit the constant pool entry at the specified index.

Specified by:
constantPoolEntryAccept in interface Clazz

thisClassConstantAccept

public void thisClassConstantAccept(ConstantVisitor constantVisitor)
Description copied from interface: Clazz
Lets the given constant pool entry visitor visit the class constant pool entry of this class.

Specified by:
thisClassConstantAccept in interface Clazz

superClassConstantAccept

public void superClassConstantAccept(ConstantVisitor constantVisitor)
Description copied from interface: Clazz
Lets the given constant pool entry visitor visit the class constant pool entry of the super class of this class, if there is one.

Specified by:
superClassConstantAccept in interface Clazz

interfaceConstantsAccept

public void interfaceConstantsAccept(ConstantVisitor constantVisitor)
Description copied from interface: Clazz
Lets the given constant pool entry visitor visit the class constant pool entries for all interfaces of this class.

Specified by:
interfaceConstantsAccept in interface Clazz

fieldsAccept

public void fieldsAccept(MemberVisitor memberVisitor)
Description copied from interface: Clazz
Lets the given member info visitor visit all fields of this class.

Specified by:
fieldsAccept in interface Clazz

fieldAccept

public void fieldAccept(java.lang.String name,
                        java.lang.String descriptor,
                        MemberVisitor memberVisitor)
Description copied from interface: Clazz
Lets the given member info visitor visit the specified field.

Specified by:
fieldAccept in interface Clazz

methodsAccept

public void methodsAccept(MemberVisitor memberVisitor)
Description copied from interface: Clazz
Lets the given member info visitor visit all methods of this class.

Specified by:
methodsAccept in interface Clazz

methodAccept

public void methodAccept(java.lang.String name,
                         java.lang.String descriptor,
                         MemberVisitor memberVisitor)
Description copied from interface: Clazz
Lets the given member info visitor visit the specified method.

Specified by:
methodAccept in interface Clazz

mayHaveImplementations

public boolean mayHaveImplementations(Method method)
Description copied from interface: Clazz
Returns whether the given method may possibly have implementing or overriding methods down the class hierarchy. This can only be true if the class is not final, and the method is not private, static, or final, or a constructor.

Specified by:
mayHaveImplementations in interface Clazz
Parameters:
method - the method that may have implementations.
Returns:
whether it may have implementations.

attributesAccept

public void attributesAccept(AttributeVisitor attributeVisitor)
Description copied from interface: Clazz
Lets the given attribute info visitor visit all attributes of this class.

Specified by:
attributesAccept in interface Clazz

getVisitorInfo

public java.lang.Object getVisitorInfo()
Description copied from interface: VisitorAccepter
Gets the visitor information of the visitor accepter.

Specified by:
getVisitorInfo in interface VisitorAccepter

setVisitorInfo

public void setVisitorInfo(java.lang.Object visitorInfo)
Description copied from interface: VisitorAccepter
Sets the visitor information of the visitor accepter.

Specified by:
setVisitorInfo in interface VisitorAccepter

toString

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