org.apache.bcel.classfile

## Class LineNumberTable

- java.lang.Object
- - org.apache.bcel.classfile.Attribute
  - - org.apache.bcel.classfile.LineNumberTable

- All Implemented Interfaces:
    Cloneable, Iterable<LineNumber>, Node

      public final class LineNumberTable
      extends Attribute
      implements 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`

- - ### Field Summary

    - ### Fields inherited from class org.apache.bcel.classfile.Attribute

      `constant_pool, EMPTY_ARRAY, length, name_index, tag`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `LineNumberTable(int name_index, int length, LineNumber[] line_number_table, ConstantPool constant_pool)`
    `LineNumberTable(LineNumberTable c)`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `accept(Visitor v)` Called by objects that are traversing the nodes of the tree implicitly defined by the contents of a Java class.
    `Attribute` | `copy(ConstantPool constantPool)`
    `void` | `dump(DataOutputStream file)` Dump line number table attribute to file stream in binary format.
    `LineNumber[]` | `getLineNumberTable()`
    `int` | `getSourceLine(int pos)` Map byte code positions to source code lines.
    `int` | `getTableLength()`
    `Iterator<LineNumber>` | `iterator()`
    `void` | `setLineNumberTable(LineNumber[] lineNumberTable)`
    `String` | `toString()`

    - ### Methods inherited from class org.apache.bcel.classfile.Attribute

      `addAttributeReader, addAttributeReader, clone, getConstantPool, getLength, getName, getNameIndex, getTag, println, readAttribute, readAttribute, removeAttributeReader, setConstantPool, setLength, setNameIndex`

    - ### Methods inherited from class java.lang.Object

      `equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

    - ### Methods inherited from interface java.lang.Iterable

      `forEach, spliterator`

- - ### Constructor Detail

    - #### LineNumberTable

          public LineNumberTable(int name_index,
                                 int length,
                                 LineNumber[] line_number_table,
                                 ConstantPool constant_pool)

    - #### LineNumberTable

          public LineNumberTable(LineNumberTable c)

  - ### 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)

      Specified by:
        `copy` in class `Attribute`
      Returns:
        deep copy of this attribute

    - #### dump

          public void dump(DataOutputStream file)
                    throws IOException

      Dump line number table attribute to file stream in binary format.
      Overrides:
        `dump` in class `Attribute`
      Parameters:
        `file` - Output file stream
      Throws:
        `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 Iterator<LineNumber> iterator()

      Specified by:
        `iterator` in interface `Iterable<LineNumber>`

    - #### setLineNumberTable

          public void setLineNumberTable(LineNumber[] lineNumberTable)

      Parameters:
        `lineNumberTable` - the line number entries for this table

    - #### toString

          public String toString()

      Overrides:
        `toString` in class `Attribute`
      Returns:
        String representation.

Copyright © 2004–2022 The Apache Software Foundation. All rights reserved.