Package: org.grails.asm

## [Java] Class Attribute

- org.grails.asm.Attribute

-     class Attribute
      extends java.lang.Object

  A non standard class, field, method or code attribute.

  Authors:
    Eric Bruneton
    Eugene Kuleshov

- - ### Field Summary

    Fields
    Modifiers | Name | Description
    --- | --- | ---
    `Attribute` | `next` | The next attribute in this attribute list.
    `java.lang.String` | `type` | The type of this attribute.
    `byte[]` | `value` | The raw value of this attribute, used only for unknown attributes.

  - ### Constructor Summary

    Constructors
    Constructor and description
    `protected Attribute (java.lang.String type)` Constructs a new empty attribute.

  - ### Methods Summary

    Methods
    Type Params | Return Type | Name and description
    --- | --- | ---
    `` | `final int` | `getCount()` Returns the length of the attribute list that begins with this attribute.
    `` | `protected org.springframework.asm.Label[]` | `getLabels()` Returns the labels corresponding to this attribute.
    `` | `final int` | `getSize(org.springframework.asm.ClassWriter cw, byte[] code, int len, int maxStack, int maxLocals)` Returns the size of all the attributes in this attribute list.
    `` | `public boolean` | `isCodeAttribute()` Returns `true` if this type of attribute is a code attribute.
    `` | `public boolean` | `isUnknown()` Returns `true` if this type of attribute is unknown.
    `` | `final void` | `put(org.springframework.asm.ClassWriter cw, byte[] code, int len, int maxStack, int maxLocals, ByteVector out)` Writes all the attributes of this attribute list in the given byte vector.
    `` | `protected Attribute` | `read(ClassReader cr, int off, int len, char[] buf, int codeOff, org.springframework.asm.Label[] labels)` Reads a type attribute.
    `` | `protected ByteVector` | `write(org.springframework.asm.ClassWriter cw, byte[] code, int len, int maxStack, int maxLocals)` Returns the byte array form of this attribute.

  - ### Inherited Methods Summary

    Inherited Methods
    Methods inherited from class | Name
    --- | ---
    `class java.lang.Object` | `java.lang.Object#wait(long), java.lang.Object#wait(long, int), java.lang.Object#wait(), java.lang.Object#equals(java.lang.Object), java.lang.Object#toString(), java.lang.Object#hashCode(), java.lang.Object#getClass(), java.lang.Object#notify(), java.lang.Object#notifyAll()`

- - ### Field Detail

    - #### Attribute next

      The next attribute in this attribute list. May be `null`.

    - #### public final java.lang.String type

      The type of this attribute.

    - #### byte[] value

      The raw value of this attribute, used only for unknown attributes.

  - ### Constructor Detail

    - #### protected Attribute(java.lang.String type)

      Constructs a new empty attribute.

      Parameters:
        `type` - the type of the attribute.

  - ### Method Detail

    - #### final int getCount()

      Returns the length of the attribute list that begins with this attribute.

      Returns:
        the length of the attribute list that begins with this attribute.

    - #### protected org.springframework.asm.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.

    - #### final int getSize(org.springframework.asm.ClassWriter cw, byte[] code, int len, int maxStack, int maxLocals)

      Returns the size of all the attributes in this attribute list.

      Parameters:
        `cw` - the class writer to be used to convert the attributes into byte arrays, with the write method.
        `code` - the bytecode of the method corresponding to these code attributes, or `null` if these attributes are not code attributes.
        `len` - the length of the bytecode of the method corresponding to these code attributes, or `null` if these attributes are not code attributes.
        `maxStack` - the maximum stack size of the method corresponding to these code attributes, or -1 if these attributes are not code attributes.
        `maxLocals` - the maximum number of local variables of the method corresponding to these code attributes, or -1 if these attributes are not code attributes.
      Returns:
        the size of all the attributes in this attribute list. This size includes the size of the attribute headers.

    - #### 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.

    - #### 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.

    - #### final void put(org.springframework.asm.ClassWriter cw, byte[] code, int len, int maxStack, int maxLocals, ByteVector out)

      Writes all the attributes of this attribute list in the given byte vector.

      Parameters:
        `cw` - the class writer to be used to convert the attributes into byte arrays, with the write method.
        `code` - the bytecode of the method corresponding to these code attributes, or `null` if these attributes are not code attributes.
        `len` - the length of the bytecode of the method corresponding to these code attributes, or `null` if these attributes are not code attributes.
        `maxStack` - the maximum stack size of the method corresponding to these code attributes, or -1 if these attributes are not code attributes.
        `maxLocals` - the maximum number of local variables of the method corresponding to these code attributes, or -1 if these attributes are not code attributes.
        `out` - where the attributes must be written.

    - #### protected Attribute read(ClassReader cr, int off, int len, char[] buf, int codeOff, org.springframework.asm.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.

    - #### protected ByteVector write(org.springframework.asm.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.