Package gnu.bytecode

Class Attribute

java.lang.Object
gnu.bytecode.Attribute
Direct Known Subclasses:
AnnotationDefaultAttr, CodeAttr, ConstantValueAttr, EnclosingMethodAttr, ExceptionsAttr, InnerClassesAttr, LineNumbersAttr, LocalVarsAttr, MiscAttr, RuntimeAnnotationsAttr, SignatureAttr, SourceDebugExtAttr, SourceFileAttr

public abstract class Attribute extends Object
Represents an Attribute of an AttrContainer.

Various sub-classses are used for standard attributes, or you can use MiscAttr for a generic attribute.

  • Constructor Details

    • Attribute

      public Attribute(String name)
      Create a new Attribute.
      Parameters:
      name - - an interned String that names the Attribute.
  • Method Details

    • getContainer

      public final AttrContainer getContainer()
      Return the Attribute container that contains this Attribute.
    • setContainer

      public final void setContainer(AttrContainer container)
    • getNext

      public final Attribute getNext()
      Get the next Attribute belonging to getContainer().
    • setNext

      public final void setNext(Attribute next)
      Set the next Attribute in the chain belonging to getContainer().
    • getConstants

      public ConstantPool getConstants()
    • addToFrontOf

      public void addToFrontOf(AttrContainer container)
      Add this to (the front of) of the specified attribute container.
    • isSkipped

      public final boolean isSkipped()
      Returns true if this attribute should be skipped on output.
    • setSkipped

      public final void setSkipped(boolean skip)
      Iff skip, cause this attributed to be skipped on output.
    • setSkipped

      public final void setSkipped()
      Cause this attributed to be skipped on output.
    • getName

      public final String getName()
    • setName

      public final void setName(String name)
    • getNameIndex

      public final int getNameIndex()
    • setNameIndex

      public final void setNameIndex(int index)
    • get

      public static Attribute get(AttrContainer container, String name)
      Find an Attribute by name, in an attribute cointainer.
      Parameters:
      container - the attribute container to search
      name - the (interned) name of the attribute we are seeking
      Returns:
      the matching Attribute, or null if the search failed.
    • assignConstants

      public void assignConstants(ClassType cl)
      Add any needed constant pool entries for this Attribute. Overridden by sub-classes. Do any other cleanup needed before writing out a .class file.
    • assignConstants

      public static void assignConstants(AttrContainer container, ClassType cl)
      Add any needed constant pool entries for all attributes in a container. Do any other cleanup needed before writing out a .class file.
    • getLength

      public abstract int getLength()
      Return the length of the attribute in bytes. Does not include the 6-byte header (for the name_index and the length).
    • getLengthAll

      public static int getLengthAll(AttrContainer container)
      Return the length of all the attributes (with headers) in bytes.
    • write

      public abstract void write(DataOutputStream dstr) throws IOException
      Write out the contents of the Attribute. Does not write the 6-byte attribute header.
      Throws:
      IOException
    • count

      public static int count(AttrContainer container)
    • writeAll

      public static void writeAll(AttrContainer container, DataOutputStream dstr) throws IOException
      Throws:
      IOException
    • print

      public void print(ClassTypeWriter dst)