Class LineNumberTable

  • All Implemented Interfaces:
    java.lang.Cloneable, java.lang.Iterable<LineNumber>, Node

    public final class LineNumberTable
    extends Attribute
    implements java.lang.Iterable<LineNumber>
    This class represents a table of line numbers for debugging purposes. This attribute is used by the Code attribute. It contains pairs of PCs and line numbers.
    See Also:
    Code, LineNumber
    • Constructor Detail

      • LineNumberTable

        LineNumberTable​(int nameIndex,
                        int length,
                        java.io.DataInput input,
                        ConstantPool constantPool)
                 throws java.io.IOException
        Constructs a new instance from a data input stream.
        Parameters:
        nameIndex - Index of name.
        length - Content length in bytes.
        input - Input stream.
        constantPool - Array of constants.
        Throws:
        java.io.IOException - if an I/O Exception occurs in readUnsignedShort.
      • LineNumberTable

        public LineNumberTable​(int nameIndex,
                               int length,
                               LineNumber[] lineNumberTable,
                               ConstantPool constantPool)
        Constructs a new instance.
        Parameters:
        nameIndex - Index of name.
        length - Content length in bytes.
        lineNumberTable - Table of line/numbers pairs.
        constantPool - Array of constants.
      • LineNumberTable

        public LineNumberTable​(LineNumberTable c)
        Constructs a new instance from another.

        Note that both objects use the same references (shallow copy). Use copy() for a physical copy.

    • Method Detail

      • accept

        public void accept​(Visitor v)
        Called by objects that are traversing the nodes of the tree implicitly 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
        Specified by:
        accept in class Attribute
        Parameters:
        v - Visitor object.
      • copy

        public Attribute copy​(ConstantPool constantPool)
        Description copied from class: Attribute
        Creates a deep copy of this attribute.
        Specified by:
        copy in class Attribute
        Parameters:
        constantPool - constant pool to save.
        Returns:
        deep copy of this attribute.
      • dump

        public void dump​(java.io.DataOutputStream file)
                  throws java.io.IOException
        Dumps line number table attribute to file stream in binary format.
        Overrides:
        dump in class Attribute
        Parameters:
        file - Output file stream.
        Throws:
        java.io.IOException - if an I/O Exception occurs in writeShort.
      • getLineNumberTable

        public LineNumber[] getLineNumberTable()
        Returns:
        Array of (pc offset, line number) pairs.
      • getSourceLine

        public int getSourceLine​(int pos)
        Map byte code positions to source code lines.
        Parameters:
        pos - byte code offset.
        Returns:
        corresponding line in source code.
      • getTableLength

        public int getTableLength()
      • iterator

        public java.util.Iterator<LineNumber> iterator()
        Specified by:
        iterator in interface java.lang.Iterable<LineNumber>
      • setLineNumberTable

        public void setLineNumberTable​(LineNumber[] lineNumberTable)
        Parameters:
        lineNumberTable - the line number entries for this table.
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class Attribute
        Returns:
        String representation.