proguard.classfile.visitor.LineNumberFinder Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of proguard-core Show documentation
Show all versions of proguard-core Show documentation
ProGuardCORE is a free library to read, analyze, modify, and write Java class files.
/*
* ProGuard -- shrinking, optimization, obfuscation, and preverification
* of Java bytecode.
*
* Copyright (c) 2002-2021 Guardsquare NV
*/
package proguard.classfile.visitor;
import proguard.classfile.Clazz;
import proguard.classfile.Method;
import proguard.classfile.attribute.Attribute;
import proguard.classfile.attribute.CodeAttribute;
import proguard.classfile.attribute.LineNumberTableAttribute;
import proguard.classfile.attribute.visitor.AttributeVisitor;
/**
* Retrieves the lineNumber for a given offset from a codeattribute.
*
* @author James Hamilton
*/
public class LineNumberFinder implements AttributeVisitor {
private final int offset;
public int lineNumber = -1; // -1 == not found
public LineNumberFinder(int offset) {
this.offset = offset;
}
@Override
public void visitAnyAttribute(Clazz clazz, Attribute attribute) {
// not interested in Attributes except LineNumberTableAttributes and CodeAttributes
}
@Override
public void visitLineNumberTableAttribute(
Clazz clazz,
Method method,
CodeAttribute codeAttribute,
LineNumberTableAttribute lineNumberTableAttribute) {
lineNumber = lineNumberTableAttribute.getLineNumber(offset);
}
@Override
public void visitCodeAttribute(Clazz clazz, Method method, CodeAttribute codeAttribute) {
codeAttribute.attributesAccept(clazz, method, this);
}
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy