public static ConstantPoolDescription ParseData(byte[] data, ref int pos) { ConstantPoolDescription res = new ConstantPoolDescription(); res.Tag = (ConstantPoolTag)data[pos++]; switch (res.Tag) { case ConstantPoolTag.CONSTANT_Class: res.Info = CONSTANT_Class_info.ParseData(data, ref pos); break; case ConstantPoolTag.CONSTANT_Fieldref: case ConstantPoolTag.CONSTANT_Methodref: case ConstantPoolTag.CONSTANT_InterfaceMethodref: res.Info = CONSTANT_GeneralRef_info.ParseData(data, ref pos); break; case ConstantPoolTag.CONSTANT_String: res.Info = CONSTANT_String_info.ParseData(data, ref pos); break; case ConstantPoolTag.CONSTANT_Integer: case ConstantPoolTag.CONSTANT_Float: res.Info = CONSTANT_B4_info.ParseData(data, ref pos); break; case ConstantPoolTag.CONSTANT_Long: case ConstantPoolTag.CONSTANT_Double: res.Info = CONSTANT_B8_info.ParseData(data, ref pos); break; case ConstantPoolTag.CONSTANT_NameAndType: res.Info = CONSTANT_NameAndType_info.ParseData(data, ref pos); break; case ConstantPoolTag.CONSTANT_Utf8: res.Info = CONSTANT_Utf8_info.ParseData(data, ref pos); break; case ConstantPoolTag.CONSTANT_MethodHandle: res.Info = CONSTANT_MethodHandle_info.ParseData(data, ref pos); break; case ConstantPoolTag.CONSTANT_MethodType: res.Info = CONSTANT_MethodType_info.ParseData(data, ref pos); break; case ConstantPoolTag.CONSTANT_InvokeDynamic: res.Info = CONSTANT_InvokeDynamic_info.ParseData(data, ref pos); break; } return(res); }
public static CONSTANT_B8_info ParseData(byte[] data, ref int pos) { CONSTANT_B8_info res = new CONSTANT_B8_info(); for (int i = 0; i < 4; ++i) { res.HighBytes[i] = data[pos++]; } Utils.ReverseIfEndian(res.HighBytes); for (int i = 0; i < 4; ++i) { res.LowBytes[i] = data[pos++]; } Utils.ReverseIfEndian(res.LowBytes); return(res); }