package me.lzb.jvm.print;
import me.lzb.common.utils.StringUtils;
import me.lzb.jvm.clz.ClassFile;
import me.lzb.jvm.constant.*;
/**
* Created by LZB on 2017/4/23.
*/
public class PrintFormat implements PrintVisitor {
private int FOURTEENTH = 14;
@Override
public void visitBasicMsg(ClassFile info) {
System.out.println("Access flag : " + info.getAccessFlag().getFlagString());
System.out.println("Class name:" + info.getClassName());
System.out.println("Super Class name:" + info.getSuperClassName());
System.out.println("minor version:" + info.getMinorVersion());
System.out.println("major version:" + info.getMajorVersion());
System.out.println();
}
@Override
public void visistUTF8(UTF8Info info) {
System.out.println("UTF8 " + info.getValue());
}
@Override
public void visitClassInfo(ClassInfo info) {
System.out.println("Class #" + StringUtils.appendSpace(FOURTEENTH, info.getUtf8Index() + "") + "// " + info.getClassName());
}
@Override
public void visitFieldRef(FieldRefInfo info) {
System.out.println("FieldRef #" + StringUtils.appendSpace(FOURTEENTH, info.getClassInfoIndex() + ".#" + info.getNameAndTypeIndex()) + "// " + info.getClassName() + ". " + info.toString());
}
@Override
public void visitMethodRef(MethodRefInfo info) {
System.out.println("MethodRef #" + StringUtils.appendSpace(FOURTEENTH, info.getClassInfoIndex() + ".#" + info.getNameAndTypeIndex()) + "// " + info.getClassName() + ". " + info.toString());
}
@Override
public void visitNameAndType(NameAndTypeInfo info) {
// //
System.out.println("NameAndType #" + StringUtils.appendSpace(FOURTEENTH, info.getIndex1() + ":#" + info.getIndex2()) + "// " + info.toString());
}
@Override
public void visitString(StringInfo info) {
System.out.println("String #" + StringUtils.appendSpace(FOURTEENTH, info.getIndex() + "") + "// " + info.toString());
}
}