public class Attribute
extends java.lang.Object
Modifier and Type | Field and Description |
---|---|
(package private) Attribute |
next
The next attribute in this attribute list.
|
java.lang.String |
type
The type of this attribute.
|
(package private) byte[] |
value
The raw value of this attribute, used only for unknown attributes.
|
Modifier | Constructor and Description |
---|---|
protected |
Attribute(java.lang.String type)
Constructs a new empty attribute.
|
Modifier and Type | Method and Description |
---|---|
(package private) int |
getCount()
Returns the length of the attribute list that begins with this attribute.
|
protected Label[] |
getLabels()
Returns the labels corresponding to this attribute.
|
(package private) int |
getSize(ClassWriter cw,
byte[] code,
int len,
int maxStack,
int maxLocals)
Returns the size of all the attributes in this attribute list.
|
boolean |
isCodeAttribute()
Returns true if this type of attribute is a code attribute.
|
boolean |
isUnknown()
Returns true if this type of attribute is unknown.
|
(package private) void |
put(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,
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.
|
public final java.lang.String type
byte[] value
Attribute next
protected Attribute(java.lang.String type)
type
- the type of the attribute.public boolean isUnknown()
public boolean isCodeAttribute()
protected Label[] getLabels()
protected Attribute read(ClassReader cr, int off, int len, char[] buf, int codeOff, Label[] labels)
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.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.Attribute
object corresponding to the given
bytes.protected ByteVector write(ClassWriter cw, byte[] code, int len, int maxStack, int maxLocals)
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.final int getCount()
final int getSize(ClassWriter cw, byte[] code, int len, int maxStack, int maxLocals)
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.final void put(ClassWriter cw, byte[] code, int len, int maxStack, int maxLocals, ByteVector out)
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.