package jvm.util;
import jvm.classfile.field.Field;
import jvm.engine.Heap;
import jvm.engine.JavaObject;
/**
* Created by Haochen on 2017/4/30.
* TODO:
*/
public class TypeUtils {
private static final String INT = "I";
private static final String FLOAT = "F";
private static final String LONG = "J";
private static final String DOUBLE = "D";
private static final String CHAR = "C";
private static final String BYTE = "B";
private static final String BOOLEAN = "Z";
private static final String SHORT = "S";
private static final String REFERENCE = "ref";
public static String parse(String inClassFile) {
switch (inClassFile) {
case INT:
return "int";
case FLOAT:
return "float";
case LONG:
return "long";
case DOUBLE:
return "double";
case CHAR:
return "char";
case BYTE:
return "byte";
case BOOLEAN:
return "boolean";
case SHORT:
return "short";
}
return REFERENCE;
}
public static JavaObject getDefaultValue(Field field) {
switch (field.getDescriptor()) {
case INT:
return Heap.getInstance().newInt(0);
case FLOAT:
return Heap.getInstance().newFloat(0);
}
return null;
}
}