Package serp.bytecode

Class Attribute

All Implemented Interfaces:
BCEntity, VisitAcceptor
Direct Known Subclasses:
Annotations, BootstrapMethods, Code, ConstantValue, Deprecated, Exceptions, InnerClasses, LineNumberTable, LocalTable, SourceFile, Synthetic, UnknownAttribute

public abstract class Attribute extends Attributes implements VisitAcceptor
In bytecode attributes are used to represent anything that is not part of the class structure. This includes the source file name, code of methods, the line number table, etc. All attributes contain at a minimum an immutable name that also determines the attribute's type.
  • Field Details

    • _nameIndex

      private int _nameIndex
    • _owner

      private Attributes _owner
  • Constructor Details

    • Attribute

      Attribute(int nameIndex, Attributes owner)
  • Method Details

    • create

      static Attribute create(String name, Attributes owner)
      Create an attribute of the appropriate type based on the the attribute name.
    • getOwner

      public Attributes getOwner()
      Return the Attributes that owns this attribute. The entity might be a BCClass, BCField, BCMethod, or other attribute.
    • getNameIndex

      public int getNameIndex()
      Return the index in the ConstantPool of the UTF8Entry holding the name of this attribute.
    • getName

      public String getName()
      Return the name of this attribute.
    • getProject

      public Project getProject()
      Description copied from interface: BCEntity
      Return the project of the current class.
      Specified by:
      getProject in interface BCEntity
    • getPool

      public ConstantPool getPool()
      Description copied from interface: BCEntity
      Return the constant pool of the current class.
      Specified by:
      getPool in interface BCEntity
    • getClassLoader

      public ClassLoader getClassLoader()
      Description copied from interface: BCEntity
      Return the class loader to use when loading related classes.
      Specified by:
      getClassLoader in interface BCEntity
    • isValid

      public boolean isValid()
      Description copied from interface: BCEntity
      Return false if this entity has been removed from its parent; in this case the results of any operations on the entity are undefined.
      Specified by:
      isValid in interface BCEntity
    • getAttributesHolder

      Collection getAttributesHolder()
      Description copied from class: Attributes
      Return the collection used to hold the attributes of this entity.
      Specified by:
      getAttributesHolder in class Attributes
    • invalidate

      void invalidate()
      Invalidate this attribute.
    • getLength

      int getLength()
      Return the length of the bytecode representation of this attribute in bytes, excluding the name index.
    • read

      void read(Attribute other)
      Copy the information from the given attribute to this one. Does nothing by default.
    • read

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

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