package com.coderising.jvm.field;
import com.coderising.jvm.constant.ConstantPool;
import com.coderising.jvm.loader.ByteCodeIterator;
public class Field {
private int accessFlag;
private int nameIndex;
private int descriptorIndex;
private ConstantPool pool;
public int getNameIndex(){
return nameIndex;
}
public int getDescIndex(){
return descriptorIndex;
}
public String toString(){
return pool.getUTF8String(nameIndex) + ":" + pool.getUTF8String(descriptorIndex);
}
public Field(int accessFlag, int nameIndex, int descriptorIndex, ConstantPool pool){
this.accessFlag = accessFlag;
this.nameIndex = nameIndex;
this.descriptorIndex = descriptorIndex;
this.pool = pool;
}
public static Field parse(ConstantPool pool, ByteCodeIterator iter){
int accessFlag = iter.nextU2toInt();
int nameIndex = iter.nextU2toInt();
int descriptorIndex = iter.nextU2toInt();
int attrLen = iter.nextU2toInt();
if(attrLen > 0){
throw new RuntimeException("Field attributes has not been implemented");
}
Field field = new Field(accessFlag,nameIndex,descriptorIndex,pool);
return field;
}
}