Package org.objectweb.asm.signature
Class SignatureWriter
- java.lang.Object
-
- org.objectweb.asm.signature.SignatureVisitor
-
- org.objectweb.asm.signature.SignatureWriter
-
public class SignatureWriter extends SignatureVisitor
A SignatureVisitor that generates signature literals, as defined in the Java Virtual Machine Specification (JVMS).- See Also:
- JVMS 4.7.9.1
-
-
Field Summary
Fields Modifier and Type Field Description private intargumentStackThe stack used to keep track of class types that have arguments.private booleanhasFormalsWhether the visited signature contains formal type parameters.private booleanhasParametersWhether the visited signature contains method parameter types.private java.lang.StringBuilderstringBuilderThe builder used to construct the visited signature.-
Fields inherited from class org.objectweb.asm.signature.SignatureVisitor
api, EXTENDS, INSTANCEOF, SUPER
-
-
Constructor Summary
Constructors Constructor Description SignatureWriter()Constructs a newSignatureWriter.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description private voidendArguments()Ends the type arguments of a class or inner class type.private voidendFormals()Ends the formal type parameters section of the signature.java.lang.StringtoString()Returns the signature that was built by this signature writer.SignatureVisitorvisitArrayType()Visits a signature corresponding to an array type.voidvisitBaseType(char descriptor)Visits a signature corresponding to a primitive type.SignatureVisitorvisitClassBound()Visits the class bound of the last visited formal type parameter.voidvisitClassType(java.lang.String name)Starts the visit of a signature corresponding to a class or interface type.voidvisitEnd()Ends the visit of a signature corresponding to a class or interface type.SignatureVisitorvisitExceptionType()Visits the type of a method exception.voidvisitFormalTypeParameter(java.lang.String name)Visits a formal type parameter.voidvisitInnerClassType(java.lang.String name)Visits an inner class.SignatureVisitorvisitInterface()Visits the type of an interface implemented by the class.SignatureVisitorvisitInterfaceBound()Visits an interface bound of the last visited formal type parameter.SignatureVisitorvisitParameterType()Visits the type of a method parameter.SignatureVisitorvisitReturnType()Visits the return type of the method.SignatureVisitorvisitSuperclass()Visits the type of the super class.voidvisitTypeArgument()Visits an unbounded type argument of the last visited class or inner class type.SignatureVisitorvisitTypeArgument(char wildcard)Visits a type argument of the last visited class or inner class type.voidvisitTypeVariable(java.lang.String name)Visits a signature corresponding to a type variable.
-
-
-
Field Detail
-
stringBuilder
private final java.lang.StringBuilder stringBuilder
The builder used to construct the visited signature.
-
hasFormals
private boolean hasFormals
Whether the visited signature contains formal type parameters.
-
hasParameters
private boolean hasParameters
Whether the visited signature contains method parameter types.
-
argumentStack
private int argumentStack
The stack used to keep track of class types that have arguments. Each element of this stack is a boolean encoded in one bit. The top of the stack is the least significant bit. Pushing false = *2, pushing true = *2+1, popping = /2.Class type arguments must be surrounded with '<' and '>' and, because
- class types can be nested (because type arguments can themselves be class types),
- SignatureWriter always returns 'this' in each visit* method (to avoid allocating new SignatureWriter instances),
we need a stack to properly balance these 'parentheses'. A new element is pushed on this stack for each new visited type, and popped when the visit of this type ends (either is visitEnd, or because visitInnerClassType is called).
-
-
Constructor Detail
-
SignatureWriter
public SignatureWriter()
Constructs a newSignatureWriter.
-
-
Method Detail
-
visitFormalTypeParameter
public void visitFormalTypeParameter(java.lang.String name)
Description copied from class:SignatureVisitorVisits a formal type parameter.- Overrides:
visitFormalTypeParameterin classSignatureVisitor- Parameters:
name- the name of the formal parameter.
-
visitClassBound
public SignatureVisitor visitClassBound()
Description copied from class:SignatureVisitorVisits the class bound of the last visited formal type parameter.- Overrides:
visitClassBoundin classSignatureVisitor- Returns:
- a non null visitor to visit the signature of the class bound.
-
visitInterfaceBound
public SignatureVisitor visitInterfaceBound()
Description copied from class:SignatureVisitorVisits an interface bound of the last visited formal type parameter.- Overrides:
visitInterfaceBoundin classSignatureVisitor- Returns:
- a non null visitor to visit the signature of the interface bound.
-
visitSuperclass
public SignatureVisitor visitSuperclass()
Description copied from class:SignatureVisitorVisits the type of the super class.- Overrides:
visitSuperclassin classSignatureVisitor- Returns:
- a non null visitor to visit the signature of the super class type.
-
visitInterface
public SignatureVisitor visitInterface()
Description copied from class:SignatureVisitorVisits the type of an interface implemented by the class.- Overrides:
visitInterfacein classSignatureVisitor- Returns:
- a non null visitor to visit the signature of the interface type.
-
visitParameterType
public SignatureVisitor visitParameterType()
Description copied from class:SignatureVisitorVisits the type of a method parameter.- Overrides:
visitParameterTypein classSignatureVisitor- Returns:
- a non null visitor to visit the signature of the parameter type.
-
visitReturnType
public SignatureVisitor visitReturnType()
Description copied from class:SignatureVisitorVisits the return type of the method.- Overrides:
visitReturnTypein classSignatureVisitor- Returns:
- a non null visitor to visit the signature of the return type.
-
visitExceptionType
public SignatureVisitor visitExceptionType()
Description copied from class:SignatureVisitorVisits the type of a method exception.- Overrides:
visitExceptionTypein classSignatureVisitor- Returns:
- a non null visitor to visit the signature of the exception type.
-
visitBaseType
public void visitBaseType(char descriptor)
Description copied from class:SignatureVisitorVisits a signature corresponding to a primitive type.- Overrides:
visitBaseTypein classSignatureVisitor- Parameters:
descriptor- the descriptor of the primitive type, or 'V' forvoid.
-
visitTypeVariable
public void visitTypeVariable(java.lang.String name)
Description copied from class:SignatureVisitorVisits a signature corresponding to a type variable.- Overrides:
visitTypeVariablein classSignatureVisitor- Parameters:
name- the name of the type variable.
-
visitArrayType
public SignatureVisitor visitArrayType()
Description copied from class:SignatureVisitorVisits a signature corresponding to an array type.- Overrides:
visitArrayTypein classSignatureVisitor- Returns:
- a non null visitor to visit the signature of the array element type.
-
visitClassType
public void visitClassType(java.lang.String name)
Description copied from class:SignatureVisitorStarts the visit of a signature corresponding to a class or interface type.- Overrides:
visitClassTypein classSignatureVisitor- Parameters:
name- the internal name of the class or interface.
-
visitInnerClassType
public void visitInnerClassType(java.lang.String name)
Description copied from class:SignatureVisitorVisits an inner class.- Overrides:
visitInnerClassTypein classSignatureVisitor- Parameters:
name- the local name of the inner class in its enclosing class.
-
visitTypeArgument
public void visitTypeArgument()
Description copied from class:SignatureVisitorVisits an unbounded type argument of the last visited class or inner class type.- Overrides:
visitTypeArgumentin classSignatureVisitor
-
visitTypeArgument
public SignatureVisitor visitTypeArgument(char wildcard)
Description copied from class:SignatureVisitorVisits a type argument of the last visited class or inner class type.- Overrides:
visitTypeArgumentin classSignatureVisitor- Parameters:
wildcard- '+', '-' or '='.- Returns:
- a non null visitor to visit the signature of the type argument.
-
visitEnd
public void visitEnd()
Description copied from class:SignatureVisitorEnds the visit of a signature corresponding to a class or interface type.- Overrides:
visitEndin classSignatureVisitor
-
toString
public java.lang.String toString()
Returns the signature that was built by this signature writer.- Overrides:
toStringin classjava.lang.Object- Returns:
- the signature that was built by this signature writer.
-
endFormals
private void endFormals()
Ends the formal type parameters section of the signature.
-
endArguments
private void endArguments()
Ends the type arguments of a class or inner class type.
-
-