net.sf.retrotranslator.runtime.asm.signature
Class SignatureWriter

java.lang.Object
  extended by net.sf.retrotranslator.runtime.asm.signature.SignatureWriter
All Implemented Interfaces:
SignatureVisitor

public class SignatureWriter
extends java.lang.Object
implements SignatureVisitor

A signature visitor that generates signatures in string format.

Author:
Thomas Hallgren, Eric Bruneton

Field Summary
private  int argumentStack
          Stack used to keep track of class types that have arguments.
private  java.lang.StringBuffer buf
          Buffer used to construct the signature.
private  boolean hasFormals
          Indicates if the signature contains formal type parameters.
private  boolean hasParameters
          Indicates if the signature contains method parameter types.
 
Fields inherited from interface net.sf.retrotranslator.runtime.asm.signature.SignatureVisitor
EXTENDS, INSTANCEOF, SUPER
 
Constructor Summary
SignatureWriter()
          Constructs a new SignatureWriter object.
 
Method Summary
private  void endArguments()
          Ends the type arguments of a class or inner class type.
private  void endFormals()
          Ends the formal type parameters section of the signature.
 java.lang.String toString()
          Returns the signature that was built by this signature writer.
 SignatureVisitor visitArrayType()
          Visits a signature corresponding to an array type.
 void visitBaseType(char descriptor)
          Visits a signature corresponding to a primitive type.
 SignatureVisitor visitClassBound()
          Visits the class bound of the last visited formal type parameter.
 void visitClassType(java.lang.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.
 SignatureVisitor visitExceptionType()
          Visits the type of a method exception.
 void visitFormalTypeParameter(java.lang.String name)
          Visits a formal type parameter.
 void visitInnerClassType(java.lang.String name)
          Visits an inner class.
 SignatureVisitor visitInterface()
          Visits the type of an interface implemented by the class.
 SignatureVisitor visitInterfaceBound()
          Visits an interface bound of the last visited formal type parameter.
 SignatureVisitor visitParameterType()
          Visits the type of a method parameter.
 SignatureVisitor visitReturnType()
          Visits the return type of the method.
 SignatureVisitor visitSuperclass()
          Visits the type of the super class.
 void visitTypeArgument()
          Visits an unbounded type argument of the last visited class or inner class type.
 SignatureVisitor visitTypeArgument(char wildcard)
          Visits a type argument of the last visited class or inner class type.
 void visitTypeVariable(java.lang.String name)
          Visits a signature corresponding to a type variable.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

buf

private final java.lang.StringBuffer buf
Buffer used to construct the signature.


hasFormals

private boolean hasFormals
Indicates if the signature contains formal type parameters.


hasParameters

private boolean hasParameters
Indicates if the signature contains method parameter types.


argumentStack

private int argumentStack
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 lowest order bit. Pushing false = *2, pushing true = *2+1, popping = /2.

Constructor Detail

SignatureWriter

public SignatureWriter()
Constructs a new SignatureWriter object.

Method Detail

visitFormalTypeParameter

public void visitFormalTypeParameter(java.lang.String name)
Description copied from interface: SignatureVisitor
Visits a formal type parameter.

Specified by:
visitFormalTypeParameter in interface SignatureVisitor
Parameters:
name - the name of the formal parameter.

visitClassBound

public SignatureVisitor visitClassBound()
Description copied from interface: SignatureVisitor
Visits the class bound of the last visited formal type parameter.

Specified by:
visitClassBound in interface SignatureVisitor
Returns:
a non null visitor to visit the signature of the class bound.

visitInterfaceBound

public SignatureVisitor visitInterfaceBound()
Description copied from interface: SignatureVisitor
Visits an interface bound of the last visited formal type parameter.

Specified by:
visitInterfaceBound in interface SignatureVisitor
Returns:
a non null visitor to visit the signature of the interface bound.

visitSuperclass

public SignatureVisitor visitSuperclass()
Description copied from interface: SignatureVisitor
Visits the type of the super class.

Specified by:
visitSuperclass in interface SignatureVisitor
Returns:
a non null visitor to visit the signature of the super class type.

visitInterface

public SignatureVisitor visitInterface()
Description copied from interface: SignatureVisitor
Visits the type of an interface implemented by the class.

Specified by:
visitInterface in interface SignatureVisitor
Returns:
a non null visitor to visit the signature of the interface type.

visitParameterType

public SignatureVisitor visitParameterType()
Description copied from interface: SignatureVisitor
Visits the type of a method parameter.

Specified by:
visitParameterType in interface SignatureVisitor
Returns:
a non null visitor to visit the signature of the parameter type.

visitReturnType

public SignatureVisitor visitReturnType()
Description copied from interface: SignatureVisitor
Visits the return type of the method.

Specified by:
visitReturnType in interface SignatureVisitor
Returns:
a non null visitor to visit the signature of the return type.

visitExceptionType

public SignatureVisitor visitExceptionType()
Description copied from interface: SignatureVisitor
Visits the type of a method exception.

Specified by:
visitExceptionType in interface SignatureVisitor
Returns:
a non null visitor to visit the signature of the exception type.

visitBaseType

public void visitBaseType(char descriptor)
Description copied from interface: SignatureVisitor
Visits a signature corresponding to a primitive type.

Specified by:
visitBaseType in interface SignatureVisitor
Parameters:
descriptor - the descriptor of the primitive type, or 'V' for void.

visitTypeVariable

public void visitTypeVariable(java.lang.String name)
Description copied from interface: SignatureVisitor
Visits a signature corresponding to a type variable.

Specified by:
visitTypeVariable in interface SignatureVisitor
Parameters:
name - the name of the type variable.

visitArrayType

public SignatureVisitor visitArrayType()
Description copied from interface: SignatureVisitor
Visits a signature corresponding to an array type.

Specified by:
visitArrayType in interface SignatureVisitor
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 interface: SignatureVisitor
Starts the visit of a signature corresponding to a class or interface type.

Specified by:
visitClassType in interface SignatureVisitor
Parameters:
name - the internal name of the class or interface.

visitInnerClassType

public void visitInnerClassType(java.lang.String name)
Description copied from interface: SignatureVisitor
Visits an inner class.

Specified by:
visitInnerClassType in interface SignatureVisitor
Parameters:
name - the local name of the inner class in its enclosing class.

visitTypeArgument

public void visitTypeArgument()
Description copied from interface: SignatureVisitor
Visits an unbounded type argument of the last visited class or inner class type.

Specified by:
visitTypeArgument in interface SignatureVisitor

visitTypeArgument

public SignatureVisitor visitTypeArgument(char wildcard)
Description copied from interface: SignatureVisitor
Visits a type argument of the last visited class or inner class type.

Specified by:
visitTypeArgument in interface SignatureVisitor
Parameters:
wildcard - '+', '-' or '='.
Returns:
a non null visitor to visit the signature of the type argument.

visitEnd

public void visitEnd()
Description copied from interface: SignatureVisitor
Ends the visit of a signature corresponding to a class or interface type.

Specified by:
visitEnd in interface SignatureVisitor

toString

public java.lang.String toString()
Returns the signature that was built by this signature writer.

Overrides:
toString in class java.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.