Package serp.bytecode

Class InnerClasses

All Implemented Interfaces:
BCEntity, VisitAcceptor

public class InnerClasses extends Attribute
Attribute describing all referenced classes that are not package members. This includes all member interfaces and classes.
  • Field Details

    • _innerClasses

      private List _innerClasses
  • Constructor Details

    • InnerClasses

      InnerClasses(int nameIndex, Attributes owner)
  • Method Details

    • getInnerClasses

      public InnerClass[] getInnerClasses()
      Return all referenced inner classes, or empty array if none.
    • getInnerClass

      public InnerClass getInnerClass(String name)
      Return the inner class with the given name. If multiple inner classes share the name, which is returned is undefined. Use null to retrieve anonymous classes.
    • getInnerClasses

      public InnerClass[] getInnerClasses(String name)
      Return all inner classes with the given name, or empty array if none. Use null to retrieve anonymous classes.
    • setInnerClasses

      public void setInnerClasses(InnerClass[] inners)
      Set the inner class references for this class. This method is useful when importing inner class references from another class.
    • addInnerClass

      public InnerClass addInnerClass(InnerClass inner)
      Import an inner class from another entity, or make a copy of one on this entity.
      Returns:
      the newly added inner class
    • addInnerClass

      public InnerClass addInnerClass()
      Add an inner class.
    • addInnerClass

      public InnerClass addInnerClass(String name, String type, String owner)
      Add an inner class.
      Parameters:
      name - the simple name of the class, or null if anonymous
      type - the full class name of the inner class
      owner - the declaring class, or null if not a member class
    • addInnerClass

      public InnerClass addInnerClass(String name, Class type, Class owner)
      Add an inner class.
      Parameters:
      name - the simple name of the class, or null if anonymous
      type - the class of the inner class
      owner - the declaring class, or null if not a member class
    • addInnerClass

      public InnerClass addInnerClass(String name, BCClass type, BCClass owner)
      Add an inner class.
      Parameters:
      name - the simple name of the class, or null if anonymous
      type - the class of the inner class
      owner - the declaring class, or null if not a member class
    • clear

      public void clear()
      Clear all inner classes from this entity.
    • removeInnerClass

      public boolean removeInnerClass(String name)
      Remove the inner class with the given name. Use null for anonymous classes.
      Returns:
      true if an inner class was removed, false otherwise
    • removeInnerClass

      public boolean removeInnerClass(InnerClass innerClass)
      Remove the given inner class. After being removed, the given inner class is invalid, and the result of any operations on it are undefined.
      Returns:
      true if the inner class was removed, false otherwise
    • acceptVisit

      public void acceptVisit(BCVisitor visit)
      Description copied from interface: VisitAcceptor
      Accept a visit from a BCVisitor, calling the appropriate methods to notify the visitor that it has entered this entity, and to provide it with the proper callbacks for each sub-entity owned by this one.
    • getLength

      int getLength()
      Description copied from class: Attribute
      Return the length of the bytecode representation of this attribute in bytes, excluding the name index.
      Overrides:
      getLength in class Attribute
    • read

      void read(Attribute other)
      Description copied from class: Attribute
      Copy the information from the given attribute to this one. Does nothing by default.
      Overrides:
      read in class Attribute
    • read

      void read(DataInput in, int length) throws IOException
      Description copied from class: Attribute
      Read the attribute bytecode from the given stream, up to length bytes, excluding the name index. Does nothing by default.
      Overrides:
      read in class Attribute
      Throws:
      IOException
    • write

      void write(DataOutput out, int length) throws IOException
      Description copied from class: Attribute
      Write the attribute bytecode to the given stream, up to length bytes, excluding the name index. Does nothing by default.
      Overrides:
      write in class Attribute
      Throws:
      IOException