package week567_miniJVM.clz;
import week567_miniJVM.constant.ClassInfo;
import week567_miniJVM.constant.ConstantPool;
import week567_miniJVM.field.Field;
import week567_miniJVM.method.Method;
import structure.week1.ArrayList;
public class ClassFile {
public int minorVersion,majorVersion;
private AccessFlag accessFlag = null;
private ClassIndex clzIndex = null;
private ConstantPool constPool = null;
private ArrayList<Method> methods = null;
private ArrayList<Field> fields = null;
public ClassIndex getClzIndex() {
return clzIndex;
}
public void setClzIndex(ClassIndex clz){
clzIndex = clz;
}
public AccessFlag getAccessFlag() {
return accessFlag;
}
public void setAccessFlag(AccessFlag acsFlag){
accessFlag = acsFlag;
}
public ConstantPool getConstantPool() {
return constPool;
}
public void setConstantPool(ConstantPool pool){
constPool = pool;
}
public int getMinorVersion() {
return minorVersion;
}
public int getMajorVersion() {
return majorVersion;
}
public void setVersion(int minor,int major){
minorVersion = minor;
majorVersion = major;
}
public void print(){
if(this.accessFlag.isPublicClass()){
System.out.println("Access flag:public");
}
System.out.println("Class Name:"+ getClassName());
System.out.println("Super Class Name:"+ getSuperClassName());
}
private String getClassName(){
int thisClassIndex = this.clzIndex.getThisClassIndex();
ClassInfo thisClass = (ClassInfo)this.getConstantPool().getConstantInfo(thisClassIndex);
return thisClass.getClassName();
}
private String getSuperClassName(){
ClassInfo superClass = (ClassInfo)this.getConstantPool().getConstantInfo(this.clzIndex.getSuperClassIndex());
return superClass.getClassName();
}
public ArrayList<Method> getMethods() {
return methods;
}
public ArrayList<Field> getFields() {
return fields;
}
public void setClassIndex(ClassIndex parseClassIndex) {
clzIndex = parseClassIndex;
}
public void setFields(ArrayList<Field> parseFields) {
fields = parseFields;
}
public void setMethods(ArrayList<Method> parseMethods) {
methods = parseMethods;
}
}