TechTrader Bytecode Toolkit

com.techtrader.modules.tools.bytecode
Class Attribute

java.lang.Object
  |
  +--com.techtrader.modules.tools.bytecode.BCEntity
        |
        +--com.techtrader.modules.tools.bytecode.Attribute
Direct Known Subclasses:
Code, ConstantValueAttribute, DeprecatedAttribute, ExceptionsAttribute, InnerClassesAttribute, LineNumberTableAttribute, LocalVariableTableAttribute, SourceFileAttribute, SyntheticAttribute, UnknownAttribute

public abstract class Attribute
extends BCEntity
implements Constants, VisitAcceptor

Representation of an attribute in a .class file. Attributes are used to represent constants and the code of methods, among other things. All attributes contain at a minimum a name, which is immutable, as it determines the attribute's type.

Author:
Abe White

Field Summary
protected  int _nameIndex
           
protected  BCEntity _owner
           
 
Fields inherited from interface com.techtrader.modules.tools.bytecode.Constants
AALOAD, AASTORE, ACCESS_ABSTRACT, ACCESS_FINAL, ACCESS_INTERFACE, ACCESS_NATIVE, ACCESS_PRIVATE, ACCESS_PROTECTED, ACCESS_PUBLIC, ACCESS_STATIC, ACCESS_STRICT, ACCESS_SUPER, ACCESS_SYNCHRONIZED, ACCESS_TRANSIENT, ACCESS_VOLATILE, ACONST_NULL, ALOAD, ALOAD_0, ALOAD_1, ALOAD_2, ALOAD_3, ANEWARRAY, ARETURN, ARRAY_BOOLEAN, ARRAY_BYTE, ARRAY_CHAR, ARRAY_DOUBLE, ARRAY_FLOAT, ARRAY_INT, ARRAY_LONG, ARRAY_SHORT, ARRAYLENGTH, ASTORE, ASTORE_0, ASTORE_1, ASTORE_2, ASTORE_3, ATHROW, ATTR_CODE, ATTR_CONST, ATTR_DEPRECATED, ATTR_EXCEPTIONS, ATTR_INNERCLASS, ATTR_LINENUMBERS, ATTR_LOCALS, ATTR_SOURCE, ATTR_SYNTHETIC, ATTR_UNKNOWN, BALOAD, BASTORE, BIPUSH, CALOAD, CASTORE, CHECKCAST, D2F, D2I, D2L, DADD, DALOAD, DASTORE, DCMPG, DCMPL, DCONST_0, DCONST_1, DDIV, DLOAD, DLOAD_0, DLOAD_1, DLOAD_2, DLOAD_3, DMUL, DNEG, DREM, DRETURN, DSTORE, DSTORE_0, DSTORE_1, DSTORE_2, DSTORE_3, DSUB, DUP, DUP_X1, DUP_X2, DUP2, DUP2_X1, DUP2_X2, F2D, F2I, F2L, FADD, FALOAD, FASTORE, FCMPG, FCMPL, FCONST_0, FCONST_1, FCONST_2, FDIV, FLOAD, FLOAD_0, FLOAD_1, FLOAD_2, FLOAD_3, FMUL, FNEG, FREM, FRETURN, FSTORE, FSTORE_0, FSTORE_1, FSTORE_2, FSTORE_3, FSUB, GETFIELD, GETSTATIC, GOTO, GOTO_W, I2B, I2C, I2D, I2F, I2L, I2S, IADD, IALOAD, IAND, IASTORE, ICONST_0, ICONST_1, ICONST_2, ICONST_3, ICONST_4, ICONST_5, ICONST_M1, IDIV, IF_ACMPEQ, IF_ACMPNE, IF_EQ, IF_GE, IF_GT, IF_ICMPEQ, IF_ICMPGE, IF_ICMPGT, IF_ICMPLE, IF_ICMPLT, IF_ICMPNE, IF_LE, IF_LT, IF_NE, IF_NONNULL, IF_NULL, IINC, ILOAD, ILOAD_0, ILOAD_1, ILOAD_2, ILOAD_3, IMUL, INEG, INSTANCEOF, INVOKEINTERFACE, INVOKESPECIAL, INVOKESTATIC, INVOKEVIRTUAL, IOR, IREM, IRETURN, ISHL, ISHR, ISTORE, ISTORE_0, ISTORE_1, ISTORE_2, ISTORE_3, ISUB, IUSHR, IXOR, JSR, JSR_W, L2D, L2F, L2I, LADD, LALOAD, LAND, LASTORE, LCMP, LCONST_0, LCONST_1, LDC, LDC_W, LDC2_W, LDIV, LLOAD, LLOAD_0, LLOAD_1, LLOAD_2, LLOAD_3, LMUL, LNEG, LOOKUPSWITCH, LOR, LREM, LRETURN, LSHL, LSHR, LSTORE, LSTORE_0, LSTORE_1, LSTORE_2, LSTORE_3, LSUB, LUSHR, LXOR, MATH_ADD, MATH_AND, MATH_DIV, MATH_MUL, MATH_NEG, MATH_OR, MATH_REM, MATH_SHL, MATH_SHR, MATH_SUB, MATH_USHR, MATH_XOR, MONITORENTER, MONITOREXIT, MULTIANEWARRAY, NEW, NEWARRAY, NOP, OPCODE_NAMES, POP, POP2, PUTFIELD, PUTSTATIC, RET, RETURN, SALOAD, SASTORE, SIPUSH, SWAP, TABLESWITCH, VALID_MAGIC, WIDE
 
Constructor Summary
protected Attribute(int nameIndex, BCEntity owner)
          Protected Constructor.
 
Method Summary
protected  void copy(Attribute other)
          Copy the information from the given attribute to this one.
protected static Attribute createAttribute(String name, BCEntity owner)
          Create an attribute of the appropriate type based on the the attribute name.
 int getLength()
          Return the length of the .class representation of this attribute, in bytes.
 String getName()
          Return the name of this attribute.
 int getNameIndex()
          Return the constant pool index of the UTF entry holding the name of this attribute.
 BCEntity getOwner()
          Each Attribute references the entity that owns it.
 ConstantPool getPool()
          Implementation of the BCEntity abstract method; delegates to the owning entity.
protected  void invalidate()
          Invalidate this Attribute.
protected  void readData(DataInput in, int length)
          Should be overridden by subclasses to read their internal data from the given stream, up to length bytes, excluding the name index.
protected  void writeData(DataOutput out, int length)
          Should be overridden by subclasses to write their internal data to the given stream, up to length bytes, excluding the name index.
 
Methods inherited from class com.techtrader.modules.tools.bytecode.BCEntity
addAttribute, clearAttributes, getAttribute, getAttributes, getAttributes, importAttribute, importAttributes, readAttributes, removeAttribute, removeAttribute, visitAttributes, writeAttributes
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

_nameIndex

protected int _nameIndex

_owner

protected BCEntity _owner
Constructor Detail

Attribute

protected Attribute(int nameIndex,
                    BCEntity owner)
Protected Constructor.
Method Detail

createAttribute

protected static Attribute createAttribute(String name,
                                           BCEntity owner)
Create an attribute of the appropriate type based on the the attribute name.

invalidate

protected void invalidate()
Invalidate this Attribute.

getOwner

public BCEntity getOwner()
Each Attribute references the entity that owns it.

getNameIndex

public int getNameIndex()
Return the constant pool index of the UTF entry holding the name of this attribute.

getName

public String getName()
Return the name of this attribute.

getPool

public ConstantPool getPool()
Implementation of the BCEntity abstract method; delegates to the owning entity.
Overrides:
getPool in class BCEntity

getLength

public int getLength()
Return the length of the .class representation of this attribute, in bytes.

copy

protected void copy(Attribute other)
Copy the information from the given attribute to this one.

readData

protected void readData(DataInput in,
                        int length)
                 throws IOException
Should be overridden by subclasses to read their internal data from the given stream, up to length bytes, excluding the name index.

writeData

protected void writeData(DataOutput out,
                         int length)
                  throws IOException
Should be overridden by subclasses to write their internal data to the given stream, up to length bytes, excluding the name index.

TechTrader Bytecode Toolkit