Package org.vesalainen.bcc
Class ClassFile
- java.lang.Object
-
- org.vesalainen.bcc.ClassFile
-
- All Implemented Interfaces:
javax.lang.model.AnnotatedConstruct,javax.lang.model.element.Element,javax.lang.model.element.Parameterizable,javax.lang.model.element.QualifiedNameable,javax.lang.model.element.TypeElement,Writable
- Direct Known Subclasses:
SubClass
public class ClassFile extends java.lang.Object implements Writable, javax.lang.model.element.TypeElement
ClassFile wraps java classfile
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description classClassFile.ClassType
-
Field Summary
Fields Modifier and Type Field Description protected java.util.List<AttributeInfo>attributesprotected java.util.List<ConstantInfo>constant_poolprotected java.util.Map<ConstantInfo,java.lang.Integer>constantPoolIndexMapprotected java.util.Map<java.lang.Class<? extends ConstantInfo>,java.util.List<ConstantInfo>>constantPoolMapprotected java.util.List<javax.lang.model.element.Element>enclosedElementsprotected java.util.List<FieldInfo>fieldsprotected java.util.Map<java.lang.Integer,java.lang.Object>indexedElementMapprotected java.util.List<java.lang.Short>interfacesprotected intmagicprotected intmajor_versionprotected java.util.List<MethodInfo>methodsprotected intminor_versionprotected java.util.Set<javax.lang.model.element.Modifier>modifiersprotected javax.lang.model.element.PackageElementpackageElementprotected javax.lang.model.element.NamequalifiedNameprivate javax.lang.model.element.NamesimpleNameprotected intsuper_classprotected javax.lang.model.element.TypeElementsuperClassprivate booleansyntheticprotected intthis_classprotected ClassFile.ClassTypetypeprotected java.util.Map<java.lang.String,javax.lang.model.element.TypeParameterElement>typeParameterMap
-
Constructor Summary
Constructors Modifier Constructor Description ClassFile(byte[] bytes)privateClassFile(java.io.DataInputStream oin)ClassFile(java.io.File file)ClassFile(java.io.InputStream in)ClassFile(java.lang.Class<?> cls)protectedClassFile(javax.lang.model.element.TypeElement superClass, java.lang.String qualifiedName, javax.lang.model.element.Modifier... modifiers)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description <R,P>
Raccept(javax.lang.model.element.ElementVisitor<R,P> v, P p)voidaddAttribute(AttributeInfo ai)Adds a new attributeprivate intaddConstantInfo(ConstantInfo ci)protected intaddConstantInfo(ConstantInfo ci, int fromIndex)protected voidaddFieldInfo(FieldInfo fieldInfo)protected voidaddIndexedElement(int index, java.lang.Object type)voidaddInterface(short intf)protected voidaddMethodInfo(MethodInfo methodInfo)javax.lang.model.type.TypeMirrorasType()<A extends java.lang.annotation.Annotation>
AgetAnnotation(java.lang.Class<A> annotationType)java.util.List<? extends javax.lang.model.element.AnnotationMirror>getAnnotationMirrors()<A extends java.lang.annotation.Annotation>
A[]getAnnotationsByType(java.lang.Class<A> annotationType)java.lang.StringgetClassDescription(int index)Returns a descriptor to class at index.private intgetClassIndex(java.lang.String name)protected intgetClassIndex(javax.lang.model.element.TypeElement type)protected intgetClassIndex(javax.lang.model.type.ArrayType at)intgetConstantIndex(double constant)Returns the constant map index to constantintgetConstantIndex(float constant)Returns the constant map index to constantintgetConstantIndex(int constant)Returns the constant map index to integer constantintgetConstantIndex(long constant)Returns the constant map index to constantintgetConstantIndex(java.lang.String constant)Returns the constant map index to constantConstantInfogetConstantInfo(int index)Return constantInfo at index.(package private) intgetConstantPoolSize()java.util.List<? extends javax.lang.model.element.Element>getEnclosedElements()javax.lang.model.element.ElementgetEnclosingElement()java.lang.StringgetFieldDescription(int index)Returns a descriptor to fields at index.(package private) intgetFieldIndex(javax.lang.model.element.TypeElement declaringClass, java.lang.String name, java.lang.String descriptor)Returns the constant map index to field(package private) intgetFieldIndex(javax.lang.model.element.TypeElement declaringClass, java.lang.String name, javax.lang.model.type.TypeMirror type)Returns the constant map index to fieldprotected java.util.List<FieldInfo>getFields()(package private) java.lang.ObjectgetIndexedType(int index)Returns a element from constant mapjava.util.List<? extends javax.lang.model.type.TypeMirror>getInterfaces()javax.lang.model.element.ElementKindgetKind()java.lang.StringgetMethodDescription(int index)Returns a descriptor to method at index.(package private) intgetMethodIndex(javax.lang.model.element.ExecutableElement method)Returns the constant map index to methodprotected java.util.List<MethodInfo>getMethodInfos()java.util.Set<javax.lang.model.element.Modifier>getModifiers()intgetNameAndTypeIndex(java.lang.String name, java.lang.String descriptor)Returns the constant map index to name and typeintgetNameIndex(java.lang.CharSequence name)Returns the constant map index to namejavax.lang.model.element.NestingKindgetNestingKind()javax.lang.model.element.NamegetQualifiedName()java.util.SortedSet<java.lang.String>getReferencedClassnames()Returns all classnames (in internal form) that this class referencesprotected intgetRefIndex(java.lang.Class<? extends ConstantInfo.Ref> refType, java.lang.String fullyQualifiedname, java.lang.String name, java.lang.String descriptor)Returns the constant map index to referencejavax.lang.model.element.NamegetSimpleName()java.lang.StringgetString(int index)Return a constant string at index.javax.lang.model.type.TypeMirrorgetSuperclass()java.util.List<? extends javax.lang.model.element.TypeParameterElement>getTypeParameters()booleanisImplemented(javax.lang.model.element.ExecutableElement method)booleanisSynthetic()private java.util.List<ConstantInfo>listConstantInfo(java.lang.Class<? extends ConstantInfo> cls)booleanreferencesClass(javax.lang.model.element.TypeElement type)booleanreferencesMethod(javax.lang.model.element.ExecutableElement method)Return true if class contains method ref to given methodvoidwrite(java.io.DataOutput out)
-
-
-
Field Detail
-
magic
protected int magic
-
minor_version
protected int minor_version
-
major_version
protected int major_version
-
constant_pool
protected java.util.List<ConstantInfo> constant_pool
-
this_class
protected int this_class
-
super_class
protected int super_class
-
interfaces
protected java.util.List<java.lang.Short> interfaces
-
fields
protected java.util.List<FieldInfo> fields
-
methods
protected java.util.List<MethodInfo> methods
-
attributes
protected java.util.List<AttributeInfo> attributes
-
indexedElementMap
protected java.util.Map<java.lang.Integer,java.lang.Object> indexedElementMap
-
constantPoolMap
protected java.util.Map<java.lang.Class<? extends ConstantInfo>,java.util.List<ConstantInfo>> constantPoolMap
-
constantPoolIndexMap
protected java.util.Map<ConstantInfo,java.lang.Integer> constantPoolIndexMap
-
typeParameterMap
protected java.util.Map<java.lang.String,javax.lang.model.element.TypeParameterElement> typeParameterMap
-
superClass
protected javax.lang.model.element.TypeElement superClass
-
modifiers
protected java.util.Set<javax.lang.model.element.Modifier> modifiers
-
type
protected ClassFile.ClassType type
-
qualifiedName
protected javax.lang.model.element.Name qualifiedName
-
packageElement
protected javax.lang.model.element.PackageElement packageElement
-
enclosedElements
protected java.util.List<javax.lang.model.element.Element> enclosedElements
-
simpleName
private javax.lang.model.element.Name simpleName
-
synthetic
private boolean synthetic
-
-
Constructor Detail
-
ClassFile
protected ClassFile(javax.lang.model.element.TypeElement superClass, java.lang.String qualifiedName, javax.lang.model.element.Modifier... modifiers)
-
ClassFile
public ClassFile(java.lang.Class<?> cls) throws java.io.IOException- Throws:
java.io.IOException
-
ClassFile
public ClassFile(byte[] bytes) throws java.io.IOException- Throws:
java.io.IOException
-
ClassFile
public ClassFile(java.io.InputStream in) throws java.io.IOException- Throws:
java.io.IOException
-
ClassFile
public ClassFile(java.io.File file) throws java.io.IOException- Throws:
java.io.IOException
-
ClassFile
private ClassFile(java.io.DataInputStream oin) throws java.io.IOException- Throws:
java.io.IOException
-
-
Method Detail
-
getConstantPoolSize
int getConstantPoolSize()
-
getFieldIndex
int getFieldIndex(javax.lang.model.element.TypeElement declaringClass, java.lang.String name, javax.lang.model.type.TypeMirror type)Returns the constant map index to field- Parameters:
declaringClass-name-type-- Returns:
-
getFieldIndex
int getFieldIndex(javax.lang.model.element.TypeElement declaringClass, java.lang.String name, java.lang.String descriptor)Returns the constant map index to field- Parameters:
declaringClass-name-descriptor-- Returns:
-
getMethodIndex
int getMethodIndex(javax.lang.model.element.ExecutableElement method)
Returns the constant map index to method- Parameters:
method-- Returns:
-
getRefIndex
protected int getRefIndex(java.lang.Class<? extends ConstantInfo.Ref> refType, java.lang.String fullyQualifiedname, java.lang.String name, java.lang.String descriptor)
Returns the constant map index to reference- Parameters:
refType-fullyQualifiedname-name-descriptor-- Returns:
-
getNameIndex
public int getNameIndex(java.lang.CharSequence name)
Returns the constant map index to name- Parameters:
name-- Returns:
-
getNameAndTypeIndex
public int getNameAndTypeIndex(java.lang.String name, java.lang.String descriptor)Returns the constant map index to name and type- Parameters:
name-descriptor-- Returns:
-
getConstantIndex
public final int getConstantIndex(int constant)
Returns the constant map index to integer constant- Parameters:
constant-- Returns:
-
getConstantIndex
public final int getConstantIndex(float constant)
Returns the constant map index to constant- Parameters:
constant-- Returns:
-
getConstantIndex
public final int getConstantIndex(double constant)
Returns the constant map index to constant- Parameters:
constant-- Returns:
-
getConstantIndex
public final int getConstantIndex(long constant)
Returns the constant map index to constant- Parameters:
constant-- Returns:
-
getConstantIndex
public final int getConstantIndex(java.lang.String constant)
Returns the constant map index to constant- Parameters:
constant-- Returns:
-
addMethodInfo
protected void addMethodInfo(MethodInfo methodInfo)
-
addFieldInfo
protected void addFieldInfo(FieldInfo fieldInfo)
-
getFields
protected java.util.List<FieldInfo> getFields()
-
getMethodInfos
protected java.util.List<MethodInfo> getMethodInfos()
-
getReferencedClassnames
public java.util.SortedSet<java.lang.String> getReferencedClassnames()
Returns all classnames (in internal form) that this class references- Returns:
-
addConstantInfo
private int addConstantInfo(ConstantInfo ci)
-
addConstantInfo
protected int addConstantInfo(ConstantInfo ci, int fromIndex)
-
addIndexedElement
protected void addIndexedElement(int index, java.lang.Object type)
-
listConstantInfo
private java.util.List<ConstantInfo> listConstantInfo(java.lang.Class<? extends ConstantInfo> cls)
-
addInterface
public void addInterface(short intf)
-
addAttribute
public void addAttribute(AttributeInfo ai)
Adds a new attribute- Parameters:
ai-
-
getIndexedType
java.lang.Object getIndexedType(int index)
Returns a element from constant map- Parameters:
index-- Returns:
-
getFieldDescription
public java.lang.String getFieldDescription(int index)
Returns a descriptor to fields at index.- Parameters:
index-- Returns:
-
getMethodDescription
public java.lang.String getMethodDescription(int index)
Returns a descriptor to method at index.- Parameters:
index-- Returns:
-
getClassDescription
public java.lang.String getClassDescription(int index)
Returns a descriptor to class at index.- Parameters:
index-- Returns:
-
isImplemented
public boolean isImplemented(javax.lang.model.element.ExecutableElement method)
-
referencesMethod
public boolean referencesMethod(javax.lang.model.element.ExecutableElement method)
Return true if class contains method ref to given method- Parameters:
method-- Returns:
-
referencesClass
public boolean referencesClass(javax.lang.model.element.TypeElement type)
-
getClassIndex
protected final int getClassIndex(javax.lang.model.element.TypeElement type)
-
getClassIndex
protected final int getClassIndex(javax.lang.model.type.ArrayType at)
-
getClassIndex
private final int getClassIndex(java.lang.String name)
-
getConstantInfo
public final ConstantInfo getConstantInfo(int index)
Return constantInfo at index.- Parameters:
index-- Returns:
-
getString
public final java.lang.String getString(int index)
Return a constant string at index.- Parameters:
index-- Returns:
-
isSynthetic
public boolean isSynthetic()
-
getQualifiedName
public javax.lang.model.element.Name getQualifiedName()
- Specified by:
getQualifiedNamein interfacejavax.lang.model.element.QualifiedNameable- Specified by:
getQualifiedNamein interfacejavax.lang.model.element.TypeElement
-
getAnnotationMirrors
public java.util.List<? extends javax.lang.model.element.AnnotationMirror> getAnnotationMirrors()
- Specified by:
getAnnotationMirrorsin interfacejavax.lang.model.AnnotatedConstruct- Specified by:
getAnnotationMirrorsin interfacejavax.lang.model.element.Element
-
getAnnotation
public <A extends java.lang.annotation.Annotation> A getAnnotation(java.lang.Class<A> annotationType)
- Specified by:
getAnnotationin interfacejavax.lang.model.AnnotatedConstruct- Specified by:
getAnnotationin interfacejavax.lang.model.element.Element
-
getSuperclass
public javax.lang.model.type.TypeMirror getSuperclass()
- Specified by:
getSuperclassin interfacejavax.lang.model.element.TypeElement
-
getEnclosedElements
public java.util.List<? extends javax.lang.model.element.Element> getEnclosedElements()
- Specified by:
getEnclosedElementsin interfacejavax.lang.model.element.Element- Specified by:
getEnclosedElementsin interfacejavax.lang.model.element.TypeElement
-
getNestingKind
public javax.lang.model.element.NestingKind getNestingKind()
- Specified by:
getNestingKindin interfacejavax.lang.model.element.TypeElement
-
getSimpleName
public javax.lang.model.element.Name getSimpleName()
- Specified by:
getSimpleNamein interfacejavax.lang.model.element.Element- Specified by:
getSimpleNamein interfacejavax.lang.model.element.TypeElement
-
getInterfaces
public java.util.List<? extends javax.lang.model.type.TypeMirror> getInterfaces()
- Specified by:
getInterfacesin interfacejavax.lang.model.element.TypeElement
-
getTypeParameters
public java.util.List<? extends javax.lang.model.element.TypeParameterElement> getTypeParameters()
- Specified by:
getTypeParametersin interfacejavax.lang.model.element.Parameterizable- Specified by:
getTypeParametersin interfacejavax.lang.model.element.TypeElement
-
getEnclosingElement
public javax.lang.model.element.Element getEnclosingElement()
- Specified by:
getEnclosingElementin interfacejavax.lang.model.element.Element- Specified by:
getEnclosingElementin interfacejavax.lang.model.element.TypeElement
-
asType
public javax.lang.model.type.TypeMirror asType()
- Specified by:
asTypein interfacejavax.lang.model.element.Element
-
getKind
public javax.lang.model.element.ElementKind getKind()
- Specified by:
getKindin interfacejavax.lang.model.element.Element
-
getModifiers
public java.util.Set<javax.lang.model.element.Modifier> getModifiers()
- Specified by:
getModifiersin interfacejavax.lang.model.element.Element
-
accept
public <R,P> R accept(javax.lang.model.element.ElementVisitor<R,P> v, P p)- Specified by:
acceptin interfacejavax.lang.model.element.Element
-
write
public void write(java.io.DataOutput out) throws java.io.IOException
-
getAnnotationsByType
public <A extends java.lang.annotation.Annotation> A[] getAnnotationsByType(java.lang.Class<A> annotationType)
- Specified by:
getAnnotationsByTypein interfacejavax.lang.model.AnnotatedConstruct
-
-