
org.opalj.br.LineNumberTable.scala Maven / Gradle / Ivy
The newest version!
/* BSD 2-Clause License - see OPAL/LICENSE for details. */
package org.opalj
package br
/**
* A method's line number table.
*
* @author Michael Eichberg
*/
trait LineNumberTable extends CodeAttribute {
def lineNumbers: LineNumbers
def lookupLineNumber(pc: PC): Option[Int]
def firstLineNumber(): Option[Int]
override def remapPCs(codeSize: PC, f: PC => PC): LineNumberTable = {
UnpackedLineNumberTable(lineNumbers.flatMap[LineNumber](ln => ln.remapPCs(codeSize, f)))
}
override def kindId: Int = LineNumberTable.KindId
override def similar(other: Attribute, config: SimilarityTestConfiguration): Boolean = {
other match {
case that: LineNumberTable => this.similar(that)
case _ => false
}
}
def similar(other: LineNumberTable): Boolean = {
val thisLineNumbers = this.lineNumbers
val otherLineNumbers = other.lineNumbers
// the order of two line number tables need to be identical
thisLineNumbers.size == otherLineNumbers.size && thisLineNumbers == otherLineNumbers
}
}
object LineNumberTable {
final val KindId = 19
def unapply(lnt: LineNumberTable): Option[LineNumbers] = Some(lnt.lineNumbers)
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy