bcel API: Class Attribute

org.apache.bcel.classfile
Class Attribute

java.lang.Object
  |
  +--org.apache.bcel.classfile.Attribute
All Implemented Interfaces:
java.lang.Cloneable, Node
Direct Known Subclasses:
Code, ConstantValue, Deprecated, ExceptionTable, InnerClasses, LineNumberTable, LocalVariableTable, PMGClass, Signature, SourceFile, StackMap, Synthetic, Unknown

public abstract class Attribute
extends java.lang.Object
implements java.lang.Cloneable, Node

Abstract super class for Attribute objects. Currently the ConstantValue, SourceFile, Code, Exceptiontable, LineNumberTable, LocalVariableTable, InnerClasses and Synthetic attributes are supported. The Unknown attribute stands for non-standard-attributes.

Version:
$Id: Attribute.java,v 1.2 2001/11/20 11:41:05 mdahm Exp $
Author:
M. Dahm
See Also:
ConstantValue, SourceFile, Code, Unknown, ExceptionTable, LineNumberTable, LocalVariableTable, InnerClasses, Synthetic, Deprecated

Field Summary
protected  ConstantPool constant_pool
           
protected  int length
           
protected  int name_index
           
protected  byte tag
           
 
Method Summary
abstract  void accept(Visitor v)
          Called by objects that are traversing the nodes of the tree implicitely defined by the contents of a Java class.
static void addAttributeReader(java.lang.String name, AttributeReader r)
          Add an Attribute reader capable of parsing (user-defined) attributes named "name".
 java.lang.Object clone()
          Use copy() if you want to have a deep copy(), i.e., with all references copied correctly.
abstract  Attribute copy(ConstantPool constant_pool)
           
 void dump(java.io.DataOutputStream file)
          Dump attribute to file stream in binary format.
 ConstantPool getConstantPool()
           
 int getLength()
           
 int getNameIndex()
           
 byte getTag()
           
static void removeAttributeReader(java.lang.String name)
          Remove attribute reader
 void setConstantPool(ConstantPool constant_pool)
           
 void setLength(int length)
           
 void setNameIndex(int name_index)
           
 java.lang.String toString()
           
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

name_index

protected int name_index

length

protected int length

tag

protected byte tag

constant_pool

protected ConstantPool constant_pool
Method Detail

accept

public abstract void accept(Visitor v)
Called by objects that are traversing the nodes of the tree implicitely defined by the contents of a Java class. I.e., the hierarchy of methods, fields, attributes, etc. spawns a tree of objects.
Specified by:
accept in interface Node
Parameters:
v - Visitor object

dump

public void dump(java.io.DataOutputStream file)
          throws java.io.IOException
Dump attribute to file stream in binary format.
Parameters:
file - Output file stream

addAttributeReader

public static void addAttributeReader(java.lang.String name,
                                      AttributeReader r)
Add an Attribute reader capable of parsing (user-defined) attributes named "name". You should not add readers for the standard attributes such as "LineNumberTable", because those are handled internally.
Parameters:
name - the name of the attribute as stored in the class file
r - the reader object

removeAttributeReader

public static void removeAttributeReader(java.lang.String name)
Remove attribute reader
Parameters:
name - the name of the attribute as stored in the class file

getLength

public final int getLength()
Returns:
Length of attribute field in bytes.

setLength

public final void setLength(int length)
Parameters:
Attribute - length in bytes.

setNameIndex

public final void setNameIndex(int name_index)
Parameters:
name_index - of attribute.

getNameIndex

public final int getNameIndex()
Returns:
Name index in constant pool of attribute name.

getTag

public final byte getTag()
Returns:
Tag of attribute, i.e., its type. Value may not be altered, thus there is no setTag() method.

getConstantPool

public final ConstantPool getConstantPool()
Returns:
Constant pool used by this object.
See Also:
ConstantPool

setConstantPool

public final void setConstantPool(ConstantPool constant_pool)
Parameters:
constant_pool - Constant pool to be used for this object.
See Also:
ConstantPool

clone

public java.lang.Object clone()
Use copy() if you want to have a deep copy(), i.e., with all references copied correctly.
Overrides:
clone in class java.lang.Object
Returns:
shallow copy of this attribute

copy

public abstract Attribute copy(ConstantPool constant_pool)
Returns:
deep copy of this attribute

toString

public java.lang.String toString()
Overrides:
toString in class java.lang.Object
Returns:
attribute name.