package org.tinylcy.attributeinfo;
import org.tinylcy.basictype.U2;
import org.tinylcy.basictype.U4;
import org.tinylcy.constantpool.ConstantPool;
import java.io.InputStream;
import java.util.Arrays;
/**
* Created by chenyang li.
*/
public class LocalVariableTypeTable extends BasicAttributeInfo {
private short localVariableTypeTableLength;
private LocalVariableTypeTableInfo[] localVariableTypeTable;
public LocalVariableTypeTable(ConstantPool constantPool, short attributeNameIndex) {
super(constantPool);
setAttributeNameIndex(attributeNameIndex);
}
@Override
public void read(InputStream inputStream) {
U4 attributeLengthU4 = U4.read(inputStream);
U2 localVariableTypeTableLengthU2 = U2.read(inputStream);
setAttributeLength(attributeLengthU4.getValue());
this.localVariableTypeTableLength = localVariableTypeTableLengthU2.getValue();
localVariableTypeTable = new LocalVariableTypeTableInfo[localVariableTypeTableLength];
for (int i = 0; i < localVariableTypeTableLength; i++) {
localVariableTypeTable[i] = new LocalVariableTypeTableInfo();
localVariableTypeTable[i].read(inputStream);
}
}
private class LocalVariableTypeTableInfo {
public short startPc;
public short length;
public short nameIndex;
public short signatureIndex;
public short index;
public void read(InputStream inputStream) {
U2 startPcU2 = U2.read(inputStream);
U2 lengthU2 = U2.read(inputStream);
U2 nameIndexU2 = U2.read(inputStream);
U2 signatureIndexU2 = U2.read(inputStream);
U2 indexU2 = U2.read(inputStream);
this.startPc = startPcU2.getValue();
this.length = lengthU2.getValue();
this.nameIndex = nameIndexU2.getValue();
this.signatureIndex = signatureIndexU2.getValue();
this.index = indexU2.getValue();
}
@Override
public String toString() {
return "LocalVariableTypeTableInfo{" +
"startPc=" + startPc +
", length=" + length +
", nameIndex=" + nameIndex +
", signatureIndex=" + signatureIndex +
", index=" + index +
'}';
}
}
@Override
public String toString() {
return "LocalVariableTypeTable{" +
"localVariableTypeTableLength=" + localVariableTypeTableLength +
", localVariableTypeTable=" + Arrays.toString(localVariableTypeTable) +
'}';
}
}