1 32 33 package com.jeantessier.classreader; 34 35 import java.io.*; 36 37 import org.apache.log4j.*; 38 39 public class LocalVariable implements Visitable { 40 private LocalVariableTable_attribute localVariableTable; 41 private int startPC; 42 private int length; 43 private int nameIndex; 44 private int descriptorIndex; 45 private int index; 46 47 public LocalVariable(LocalVariableTable_attribute localVariableTable, DataInputStream in) throws IOException { 48 this.localVariableTable = localVariableTable; 49 50 startPC = in.readUnsignedShort(); 51 Logger.getLogger(getClass()).debug("start PC: " + startPC); 52 53 length = in.readUnsignedShort(); 54 Logger.getLogger(getClass()).debug("length: " + length); 55 56 nameIndex = in.readUnsignedShort(); 57 Logger.getLogger(getClass()).debug("name: " + nameIndex + " (" + getName() + ")"); 58 59 descriptorIndex = in.readUnsignedShort(); 60 Logger.getLogger(getClass()).debug("descriptor: " + descriptorIndex + " (" + getDescriptor() + ")"); 61 62 index = in.readUnsignedShort(); 63 Logger.getLogger(getClass()).debug("index: " + index); 64 } 65 66 public LocalVariableTable_attribute getLocalVariableTable() { 67 return localVariableTable; 68 } 69 70 public int getStartPC() { 71 return startPC; 72 } 73 74 public int getLength() { 75 return length; 76 } 77 78 public int getNameIndex() { 79 return nameIndex; 80 } 81 82 public UTF8_info getRawName() { 83 return (UTF8_info) getLocalVariableTable().getClassfile().getConstantPool().get(getNameIndex()); 84 } 85 86 public String getName() { 87 return getRawName().toString(); 88 } 89 90 public int getDescriptorIndex() { 91 return descriptorIndex; 92 } 93 94 public UTF8_info getRawDescriptor() { 95 return (UTF8_info) getLocalVariableTable().getClassfile().getConstantPool().get(getDescriptorIndex()); 96 } 97 98 public String getDescriptor() { 99 return getRawDescriptor().toString(); 100 } 101 102 public int getIndex() { 103 return index; 104 } 105 106 public String toString() { 107 return "Local variable " + getDescriptor() + " " + getName(); 108 } 109 110 public void accept(Visitor visitor) { 111 visitor.visitLocalVariable(this); 112 } 113 } 114 | Popular Tags |