Class ClassSignature

java.lang.Object
org.spongepowered.asm.util.ClassSignature

public class ClassSignature extends Object
Represents an object-oriented view of a generic class signature. We use ASM's SignatureVisitor to walk over an incoming signature in order to parse out our internal tree. This is done so that incoming signatures from mixins can be merged into the target class.
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    protected static final String
     
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    Add a raw interface declaration to this signature
    protected void
    addInterface(org.spongepowered.asm.util.ClassSignature.Token iface)
    Add an interface to this signature
    protected void
    Add a raw interface which was previously enqueued
    protected void
    addTypeVar(org.spongepowered.asm.util.ClassSignature.TypeVar typeVar, org.spongepowered.asm.util.ClassSignature.TokenHandle handle)
    Add a type var to this signature, the type var must not exist
    org.objectweb.asm.signature.SignatureVisitor
    Get a remapper for type vars in this signature
    Get the raw superclass type of this signature as a string
    protected org.spongepowered.asm.util.ClassSignature.TokenHandle
    getType(String varName)
    Get the token for the specified type var name, creating it if necessary
    protected org.spongepowered.asm.util.ClassSignature.TypeVar
    getTypeVar(String varName)
    Get the type var for the specified var name
    protected String
    getTypeVar(org.spongepowered.asm.util.ClassSignature.TokenHandle handle)
    Get the type var matching the supplied type token, or the raw token type if no mapping exists for the supplied token handle
    void
    Merges another class signature into this one.
    of(String signature)
    Parse a generic class signature from the supplied string
    of(org.objectweb.asm.tree.ClassNode classNode)
    Parse a generic class signature from the supplied class node, uses the declared signature if present, else falls back to generating a raw signature from the class itself
    ofLazy(org.objectweb.asm.tree.ClassNode classNode)
    Returns a lazy-evaluated signature object.
    protected void
    setSuperClass(org.spongepowered.asm.util.ClassSignature.Token superClass)
    Set the superclass for this signature
    Converts this signature into a string representation compatible with the signature attribute of a Java class
    Wake up this signature if it is lazy-loaded

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
  • Field Details

  • Method Details

    • getTypeVar

      protected org.spongepowered.asm.util.ClassSignature.TypeVar getTypeVar(String varName)
      Get the type var for the specified var name
      Parameters:
      varName - type var to lookup
      Returns:
      type var for the supplied type var name
    • getType

      protected org.spongepowered.asm.util.ClassSignature.TokenHandle getType(String varName)
      Get the token for the specified type var name, creating it if necessary
      Parameters:
      varName - type var to lookup
      Returns:
      type token for the supplied type var name
    • getTypeVar

      protected String getTypeVar(org.spongepowered.asm.util.ClassSignature.TokenHandle handle)
      Get the type var matching the supplied type token, or the raw token type if no mapping exists for the supplied token handle
      Parameters:
      handle - type token handle to lookup
      Returns:
      type var (with prefix and suffix) or raw type name
    • addTypeVar

      protected void addTypeVar(org.spongepowered.asm.util.ClassSignature.TypeVar typeVar, org.spongepowered.asm.util.ClassSignature.TokenHandle handle) throws IllegalArgumentException
      Add a type var to this signature, the type var must not exist
      Parameters:
      typeVar - type var to add
      handle - type var's type token
      Throws:
      IllegalArgumentException - if the specified type var already exists
    • setSuperClass

      protected void setSuperClass(org.spongepowered.asm.util.ClassSignature.Token superClass)
      Set the superclass for this signature
      Parameters:
      superClass - super class to set
    • getSuperClass

      public String getSuperClass()
      Get the raw superclass type of this signature as a string
      Returns:
      superclass type as a string
    • addInterface

      protected void addInterface(org.spongepowered.asm.util.ClassSignature.Token iface)
      Add an interface to this signature
      Parameters:
      iface - interface to add
    • addInterface

      public void addInterface(String iface)
      Add a raw interface declaration to this signature
      Parameters:
      iface - interface name to add (bin format)
    • addRawInterface

      protected void addRawInterface(String iface)
      Add a raw interface which was previously enqueued
      Parameters:
      iface - interface to add
    • merge

      public void merge(ClassSignature other)
      Merges another class signature into this one. The other signature is first conformed so that no formal type parameters overlap with formal type parameters defined on this signature. No attempt is made to combine formal type parameters, this method merely ensures that parameters do not overlap.
      Parameters:
      other - Class signature to merge into this one
    • getRemapper

      public org.objectweb.asm.signature.SignatureVisitor getRemapper()
      Get a remapper for type vars in this signature
      Returns:
      signature visitor
    • toString

      public String toString()
      Converts this signature into a string representation compatible with the signature attribute of a Java class
      Overrides:
      toString in class Object
      See Also:
    • wake

      public ClassSignature wake()
      Wake up this signature if it is lazy-loaded
    • of

      public static ClassSignature of(String signature)
      Parse a generic class signature from the supplied string
      Parameters:
      signature - signature string to parse
      Returns:
      parsed signature object
    • of

      public static ClassSignature of(org.objectweb.asm.tree.ClassNode classNode)
      Parse a generic class signature from the supplied class node, uses the declared signature if present, else falls back to generating a raw signature from the class itself
      Parameters:
      classNode - class node to parse
      Returns:
      parsed signature
    • ofLazy

      public static ClassSignature ofLazy(org.objectweb.asm.tree.ClassNode classNode)
      Returns a lazy-evaluated signature object. For classes with a signature present this saves having to do the parse until we actually need it. For classes with no signature we just go ahead and generate it from the supplied ClassNode while we have it
      Parameters:
      classNode - class node to parse
      Returns:
      parsed signature or lazy-load handle