TechTrader Bytecode Toolkit

com.techtrader.modules.tools.bytecode
Class LocalVariableTableAttribute

java.lang.Object
  |
  +--com.techtrader.modules.tools.bytecode.BCEntity
        |
        +--com.techtrader.modules.tools.bytecode.Attribute
              |
              +--com.techtrader.modules.tools.bytecode.LocalVariableTableAttribute

public class LocalVariableTableAttribute
extends Attribute

Represents a local variable table for a method. TODO: Variables of type long or double should occupy two indeces; this is not taken into account here.

Author:
Abe White

Fields inherited from class com.techtrader.modules.tools.bytecode.Attribute
_nameIndex, _owner
 
Constructor Summary
LocalVariableTableAttribute(int nameIndex, BCEntity owner)
          Protected constructor.
 
Method Summary
 void acceptVisit(BCVisitor visit)
          Accept a visit from a BCVisitor, calling the appropriate methods to notify the visitor that it has entered this entity, and to provide it with the proper callbacks for each sub-entity owned by this object.
 LocalVariable addLocalVariable()
          Add a local to this method.
 LocalVariable addLocalVariable(String name, Class type)
          Add a local to this method.
 LocalVariable addLocalVariable(String name, String type)
          Add a local to this method.
 void clearLocalVariables()
          Clear all locals from this method.
protected  void copy(Attribute other)
          Copy the information from the given attribute to this one.
 int getLength()
          Return the length of the .class representation of this attribute, in bytes.
 LocalVariable getLocalVariable(String name)
          Get the local with the given name.
 LocalVariable[] getLocalVariables()
          Get all the locals of this method.
 LocalVariable importLocalVariable(LocalVariable local)
          Import a local variable from another method/class.
 void importLocalVariables(LocalVariableTableAttribute other)
          Import all locals from another method.
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.
 boolean removeLocalVariable(LocalVariable local)
          Removes a local from this method.
 boolean removeLocalVariable(String name)
          Removes the local with the given name from this method.
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.Attribute
createAttribute, getName, getNameIndex, getOwner, getPool, invalidate
 
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
 

Constructor Detail

LocalVariableTableAttribute

public LocalVariableTableAttribute(int nameIndex,
                                   BCEntity owner)
Protected constructor.
Method Detail

getLocalVariables

public LocalVariable[] getLocalVariables()
Get all the locals of this method.

getLocalVariable

public LocalVariable getLocalVariable(String name)
Get the local with the given name.

importLocalVariable

public LocalVariable importLocalVariable(LocalVariable local)
Import a local variable from another method/class. Note that the program counter and length from the given local is copied directly, and thus will be incorrect unless this method is the same as the one the local is copied from, or the pc and length are reset.

importLocalVariables

public void importLocalVariables(LocalVariableTableAttribute other)
Import all locals from another method.

addLocalVariable

public LocalVariable addLocalVariable()
Add a local to this method.

addLocalVariable

public LocalVariable addLocalVariable(String name,
                                      String type)
Add a local to this method.

addLocalVariable

public LocalVariable addLocalVariable(String name,
                                      Class type)
Add a local to this method.

clearLocalVariables

public void clearLocalVariables()
Clear all locals from this method.

removeLocalVariable

public boolean removeLocalVariable(String name)
Removes the local with the given name from this method.

removeLocalVariable

public boolean removeLocalVariable(LocalVariable local)
Removes a local from this method. After this method, the local will be invalid, and the result of any operations on it is undefined.

getLength

public int getLength()
Description copied from class: Attribute
Return the length of the .class representation of this attribute, in bytes.
Overrides:
getLength in class Attribute

copy

protected void copy(Attribute other)
Description copied from class: Attribute
Copy the information from the given attribute to this one.
Overrides:
copy in class Attribute

readData

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

writeData

protected void writeData(DataOutput out,
                         int length)
                  throws IOException
Description copied from class: Attribute
Should be overridden by subclasses to write their internal data to the given stream, up to length bytes, excluding the name index.
Overrides:
writeData in class Attribute

acceptVisit

public void acceptVisit(BCVisitor visit)
Description copied from interface: VisitAcceptor
Accept a visit from a BCVisitor, calling the appropriate methods to notify the visitor that it has entered this entity, and to provide it with the proper callbacks for each sub-entity owned by this object.

TechTrader Bytecode Toolkit