Package org.objectweb.asm.signature
Class SignatureWriter
java.lang.Object
org.objectweb.asm.signature.SignatureVisitor
org.objectweb.asm.signature.SignatureWriter
A SignatureVisitor that generates signature literals, as defined in the Java Virtual Machine
Specification (JVMS).
- See Also:
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate int
The stack used to keep track of class types that have arguments.private boolean
Whether the visited signature contains formal type parameters.private boolean
Whether the visited signature contains method parameter types.private final StringBuilder
The builder used to construct the visited signature.Fields inherited from class org.objectweb.asm.signature.SignatureVisitor
api, EXTENDS, INSTANCEOF, SUPER
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprivate void
Ends the type arguments of a class or inner class type.private void
Ends the formal type parameters section of the signature.toString()
Returns the signature that was built by this signature writer.Visits a signature corresponding to an array type.void
visitBaseType
(char descriptor) Visits a signature corresponding to a primitive type.Visits the class bound of the last visited formal type parameter.void
visitClassType
(String name) Starts the visit of a signature corresponding to a class or interface type.void
visitEnd()
Ends the visit of a signature corresponding to a class or interface type.Visits the type of a method exception.void
Visits a formal type parameter.void
visitInnerClassType
(String name) Visits an inner class.Visits the type of an interface implemented by the class.Visits an interface bound of the last visited formal type parameter.Visits the type of a method parameter.Visits the return type of the method.Visits the type of the super class.void
Visits an unbounded type argument of the last visited class or inner class type.visitTypeArgument
(char wildcard) Visits a type argument of the last visited class or inner class type.void
visitTypeVariable
(String name) Visits a signature corresponding to a type variable.
-
Field Details
-
stringBuilder
The builder used to construct the visited signature. -
hasFormals
private boolean hasFormalsWhether the visited signature contains formal type parameters. -
hasParameters
private boolean hasParametersWhether the visited signature contains method parameter types. -
argumentStack
private int argumentStackThe 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 Details
-
SignatureWriter
public SignatureWriter()Constructs a newSignatureWriter
.
-
-
Method Details
-
visitFormalTypeParameter
Description copied from class:SignatureVisitor
Visits a formal type parameter.- Overrides:
visitFormalTypeParameter
in classSignatureVisitor
- Parameters:
name
- the name of the formal parameter.
-
visitClassBound
Description copied from class:SignatureVisitor
Visits the class bound of the last visited formal type parameter.- Overrides:
visitClassBound
in classSignatureVisitor
- Returns:
- a non null visitor to visit the signature of the class bound.
-
visitInterfaceBound
Description copied from class:SignatureVisitor
Visits an interface bound of the last visited formal type parameter.- Overrides:
visitInterfaceBound
in classSignatureVisitor
- Returns:
- a non null visitor to visit the signature of the interface bound.
-
visitSuperclass
Description copied from class:SignatureVisitor
Visits the type of the super class.- Overrides:
visitSuperclass
in classSignatureVisitor
- Returns:
- a non null visitor to visit the signature of the super class type.
-
visitInterface
Description copied from class:SignatureVisitor
Visits the type of an interface implemented by the class.- Overrides:
visitInterface
in classSignatureVisitor
- Returns:
- a non null visitor to visit the signature of the interface type.
-
visitParameterType
Description copied from class:SignatureVisitor
Visits the type of a method parameter.- Overrides:
visitParameterType
in classSignatureVisitor
- Returns:
- a non null visitor to visit the signature of the parameter type.
-
visitReturnType
Description copied from class:SignatureVisitor
Visits the return type of the method.- Overrides:
visitReturnType
in classSignatureVisitor
- Returns:
- a non null visitor to visit the signature of the return type.
-
visitExceptionType
Description copied from class:SignatureVisitor
Visits the type of a method exception.- Overrides:
visitExceptionType
in classSignatureVisitor
- Returns:
- a non null visitor to visit the signature of the exception type.
-
visitBaseType
public void visitBaseType(char descriptor) Description copied from class:SignatureVisitor
Visits a signature corresponding to a primitive type.- Overrides:
visitBaseType
in classSignatureVisitor
- Parameters:
descriptor
- the descriptor of the primitive type, or 'V' forvoid
.
-
visitTypeVariable
Description copied from class:SignatureVisitor
Visits a signature corresponding to a type variable.- Overrides:
visitTypeVariable
in classSignatureVisitor
- Parameters:
name
- the name of the type variable.
-
visitArrayType
Description copied from class:SignatureVisitor
Visits a signature corresponding to an array type.- Overrides:
visitArrayType
in classSignatureVisitor
- Returns:
- a non null visitor to visit the signature of the array element type.
-
visitClassType
Description copied from class:SignatureVisitor
Starts the visit of a signature corresponding to a class or interface type.- Overrides:
visitClassType
in classSignatureVisitor
- Parameters:
name
- the internal name of the class or interface.
-
visitInnerClassType
Description copied from class:SignatureVisitor
Visits an inner class.- Overrides:
visitInnerClassType
in classSignatureVisitor
- Parameters:
name
- the local name of the inner class in its enclosing class.
-
visitTypeArgument
public void visitTypeArgument()Description copied from class:SignatureVisitor
Visits an unbounded type argument of the last visited class or inner class type.- Overrides:
visitTypeArgument
in classSignatureVisitor
-
visitTypeArgument
Description copied from class:SignatureVisitor
Visits a type argument of the last visited class or inner class type.- Overrides:
visitTypeArgument
in 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:SignatureVisitor
Ends the visit of a signature corresponding to a class or interface type.- Overrides:
visitEnd
in classSignatureVisitor
-
toString
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.
-