TechTrader Bytecode Toolkit

com.techtrader.modules.tools.bytecode
Class LineNumberTableAttribute

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

public class LineNumberTableAttribute
extends Attribute

A LineNumberTableAttributs holds a table of line number to program counter mappings, so that errors can be reported with the correct line number. TODO: Allow high-level manipulation of the line numbers.

Author:
Abe White

Fields inherited from class com.techtrader.modules.tools.bytecode.Attribute
_nameIndex, _owner
 
Constructor Summary
LineNumberTableAttribute(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.
 LineNumber addLineNumber()
          Add a new line number to this table.
 void clearLineNumbers()
          Clear the line numbers.
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.
 LineNumber[] getLineNumbers()
          Get the line numbers held in this table.
 LineNumber importLineNumber(LineNumber ln)
          Import a line number from another method.
 void importLineNumbers(LineNumberTableAttribute lns)
          Import all line numbers 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 removeLineNumber(LineNumber ln)
          Remove the given LineNumber.
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

LineNumberTableAttribute

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

getLineNumbers

public LineNumber[] getLineNumbers()
Get the line numbers held in this table.

importLineNumber

public LineNumber importLineNumber(LineNumber ln)
Import a line number from another method.

importLineNumbers

public void importLineNumbers(LineNumberTableAttribute lns)
Import all line numbers from another method.

addLineNumber

public LineNumber addLineNumber()
Add a new line number to this table.
Returns:
the index into the list at which the line number was added

clearLineNumbers

public void clearLineNumbers()
Clear the line numbers.

removeLineNumber

public boolean removeLineNumber(LineNumber ln)
Remove the given LineNumber.

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