1 21 package proguard.classfile.attribute; 22 23 import proguard.classfile.attribute.visitor.*; 24 import proguard.classfile.*; 25 26 import java.io.*; 27 28 33 public class LineNumberTableAttribute extends Attribute 34 { 35 public int u2lineNumberTableLength; 36 public LineNumberInfo[] lineNumberTable; 37 38 39 42 public LineNumberTableAttribute() 43 { 44 } 45 46 47 51 public int getLineNumber(int pc) 52 { 53 for (int index = u2lineNumberTableLength-1 ; index >= 0 ; index--) 54 { 55 LineNumberInfo info = lineNumberTable[index]; 56 if (pc >= info.u2startPC) 57 { 58 return info.u2lineNumber; 59 } 60 } 61 62 return u2lineNumberTableLength > 0 ? 63 lineNumberTable[0].u2lineNumber : 64 0; 65 } 66 67 68 70 public void accept(Clazz clazz, Method method, CodeAttribute codeAttribute, AttributeVisitor attributeVisitor) 71 { 72 attributeVisitor.visitLineNumberTableAttribute(clazz, method, codeAttribute, this); 73 } 74 75 76 79 public void lineNumbersAccept(Clazz clazz, Method method, CodeAttribute codeAttribute, LineNumberInfoVisitor lineNumberInfoVisitor) 80 { 81 for (int index = 0; index < u2lineNumberTableLength; index++) 82 { 83 lineNumberInfoVisitor.visitLineNumberInfo(clazz, method, codeAttribute, lineNumberTable[index]); 86 } 87 } 88 } 89 | Popular Tags |