Package serp.bytecode

# Class LineNumber

java.lang.Object
serp.bytecode.LineNumber

All Implemented Interfaces:
  `Comparable`, `BCEntity`, `InstructionPtr`, `VisitAcceptor`

public class LineNumber extends Object implements Comparable, InstructionPtr, BCEntity, VisitAcceptor
A line number corresponds to a sequence of opcodes that map logically to a line of source code.

Author:
  Abe White

## Method Summary

Modifier and Type
Method
Description
`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 one.
`int`
`compareTo(Object other)`
`ClassLoader`
`getClassLoader()`
Return the class loader to use when loading related classes.
`Code`
`getCode()`
Returns the Code block that owns the Instruction(s) this InstructionPtr points to.
`int`
`getLine()`
Return source line number.
`ConstantPool`
`getPool()`
Return the constant pool of the current class.
`Project`
`getProject()`
Return the project of the current class.
`Instruction`
`getStart()`
Return the instruction marking the beginning of this line.
`int`
`getStartPc()`
Return the index into the code byte array at which this line starts.
`LineNumberTable`
`getTable()`
Line numbers are stored in a `LineNumberTable`.
`boolean`
`isValid()`
Return false if this entity has been removed from its parent; in this case the results of any operations on the entity are undefined.
`void`
`replaceTarget(Instruction oldTarget, Instruction newTarget)`
Replace the given old, likely invalid, target with a new target.
`void`
`setLine(int lineNumber)`
Set the source line number.
`void`
`setStart(Instruction instruction)`
Set the `Instruction` marking the beginning this line.
`void`
`setStartPc(int startPc)`
Set the index into the code byte array at which this line starts.
`void`
`updateTargets()`
Use the byte indexes read from the class file to calculate and set references to the target instruction(s) for this ptr.

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

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

## Method Details

### getTable

public LineNumberTable getTable()
Line numbers are stored in a `LineNumberTable`.

### getLine

public int getLine()
Return source line number.

### setLine

public void setLine(int lineNumber)
Set the source line number.

### getStart

public Instruction getStart()
Return the instruction marking the beginning of this line.

### getStartPc

public int getStartPc()
Return the index into the code byte array at which this line starts.

### setStartPc

public void setStartPc(int startPc)
Set the index into the code byte array at which this line starts.

### setStart

public void setStart(Instruction instruction)
Set the `Instruction` marking the beginning this line. The instruction must already be a part of the method.

### updateTargets

public void updateTargets()
Description copied from interface: `InstructionPtr`
Use the byte indexes read from the class file to calculate and set references to the target instruction(s) for this ptr. This method will be called after the byte code has been read in for the first time and before it is written after modification.

Specified by:
  `updateTargets` in interface `InstructionPtr`

### replaceTarget

public void replaceTarget(Instruction oldTarget, Instruction newTarget)
Description copied from interface: `InstructionPtr`
Replace the given old, likely invalid, target with a new target. The new target Instruction is guaranteed to be in the same code block as this InstructionPtr.

Specified by:
  `replaceTarget` in interface `InstructionPtr`

### getProject

public Project getProject()
Description copied from interface: `BCEntity`
Return the project of the current class.

Specified by:
  `getProject` in interface `BCEntity`

### getPool

public ConstantPool getPool()
Description copied from interface: `BCEntity`
Return the constant pool of the current class.

Specified by:
  `getPool` in interface `BCEntity`

### getClassLoader

public ClassLoader getClassLoader()
Description copied from interface: `BCEntity`
Return the class loader to use when loading related classes.

Specified by:
  `getClassLoader` in interface `BCEntity`

### isValid

public boolean isValid()
Description copied from interface: `BCEntity`
Return false if this entity has been removed from its parent; in this case the results of any operations on the entity are undefined.

Specified by:
  `isValid` in interface `BCEntity`

### 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 one.

Specified by:
  `acceptVisit` in interface `VisitAcceptor`

### compareTo

public int compareTo(Object other)

Specified by:
  `compareTo` in interface `Comparable`

### getCode

public Code getCode()
Description copied from interface: `InstructionPtr`
Returns the Code block that owns the Instruction(s) this InstructionPtr points to.

Specified by:
  `getCode` in interface `InstructionPtr`