org.objectweb.asm

## Class Attribute

- java.lang.Object
- - org.objectweb.asm.Attribute

-     public class Attribute
      extends Object

  A non standard class, field, method or code attribute.
  Author:
    Eric Bruneton, Eugene Kuleshov

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `String` | `type` The type of this attribute.

  - ### Constructor Summary

    Constructors
    Modifier | Constructor and Description
    --- | ---
    `protected` | `Attribute(String type)` Constructs a new empty attribute.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected Label[]` | `getLabels()` Returns the labels corresponding to this attribute.
    `boolean` | `isCodeAttribute()` Returns `true` if this type of attribute is a code attribute.
    `boolean` | `isUnknown()` Returns `true` if this type of attribute is unknown.
    `protected Attribute` | `read(ClassReader cr, int off, int len, char[] buf, int codeOff, Label[] labels)` Reads a `type` attribute.
    `protected ByteVector` | `write(ClassWriter cw, byte[] code, int len, int maxStack, int maxLocals)` Returns the byte array form of this attribute.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### type

          public final String type

      The type of this attribute.

  - ### Constructor Detail

    - #### Attribute

          protected Attribute(String type)

      Constructs a new empty attribute.
      Parameters:
        `type` - the type of the attribute.

  - ### Method Detail

    - #### isUnknown

          public boolean isUnknown()

      Returns `true` if this type of attribute is unknown. The default implementation of this method always returns `true`.
      Returns:
        `true` if this type of attribute is unknown.

    - #### isCodeAttribute

          public boolean isCodeAttribute()

      Returns `true` if this type of attribute is a code attribute.
      Returns:
        `true` if this type of attribute is a code attribute.

    - #### getLabels

          protected Label[] getLabels()

      Returns the labels corresponding to this attribute.
      Returns:
        the labels corresponding to this attribute, or `null` if this attribute is not a code attribute that contains labels.

    - #### read

          protected Attribute read(ClassReader cr,
                                   int off,
                                   int len,
                                   char[] buf,
                                   int codeOff,
                                   Label[] labels)

      Reads a `type` attribute. This method must return a new `Attribute` object, of type `type`, corresponding to the `len` bytes starting at the given offset, in the given class reader.
      Parameters:
        `cr` - the class that contains the attribute to be read.
        `off` - index of the first byte of the attribute's content in `cr.b`. The 6 attribute header bytes, containing the type and the length of the attribute, are not taken into account here.
        `len` - the length of the attribute's content.
        `buf` - buffer to be used to call `readUTF8`, `readClass` or `readConst`.
        `codeOff` - index of the first byte of code's attribute content in `cr.b`, or -1 if the attribute to be read is not a code attribute. The 6 attribute header bytes, containing the type and the length of the attribute, are not taken into account here.
        `labels` - the labels of the method's code, or `null` if the attribute to be read is not a code attribute.
      Returns:
        a new `Attribute` object corresponding to the given bytes.

    - #### write

          protected ByteVector write(ClassWriter cw,
                                     byte[] code,
                                     int len,
                                     int maxStack,
                                     int maxLocals)

      Returns the byte array form of this attribute.
      Parameters:
        `cw` - the class to which this attribute must be added. This parameter can be used to add to the constant pool of this class the items that corresponds to this attribute.
        `code` - the bytecode of the method corresponding to this code attribute, or `null` if this attribute is not a code attributes.
        `len` - the length of the bytecode of the method corresponding to this code attribute, or `null` if this attribute is not a code attribute.
        `maxStack` - the maximum stack size of the method corresponding to this code attribute, or -1 if this attribute is not a code attribute.
        `maxLocals` - the maximum number of local variables of the method corresponding to this code attribute, or -1 if this attribute is not a code attribute.
      Returns:
        the byte array form of this attribute.