package attr;
import iterator.ByteCodeIterator;
import java.util.ArrayList;
import java.util.List;
/**
* Created by william on 2017/4/12.
*/
public class LocalVariableTable extends AttributeInfo {
List<LocalVariableItem> items = new ArrayList<LocalVariableItem>();
public LocalVariableTable(int attrNameIndex, int attrLen) {
super(attrNameIndex, attrLen);
}
public static LocalVariableTable parse(ByteCodeIterator iter, int attributeNameIndex) {
int attributeLength = iter.nextU4ToInt();
int localVariableTableLength = iter.nextU2ToInt();
LocalVariableTable localVariableTable = new LocalVariableTable(attributeNameIndex, attributeLength);
for (int i = 0; i < localVariableTableLength; i++) {
int startPc = iter.nextU2ToInt();
int length = iter.nextU2ToInt();
int nameIndex = iter.nextU2ToInt();
int descIndex = iter.nextU2ToInt();
int index = iter.nextU2ToInt();
LocalVariableItem localVariableItem = new LocalVariableItem();
localVariableItem.setStartPC(startPc);
localVariableItem.setLength(length);
localVariableItem.setNameIndex(nameIndex);
localVariableItem.setDescIndex(descIndex);
localVariableItem.setIndex(index);
localVariableTable.addLocalVariableItem(localVariableItem);
}
return localVariableTable;
}
private void addLocalVariableItem(LocalVariableItem item) {
this.items.add(item);
}
}