private static MetadataJavaMethod ReadJavaMethod(this DataInputStream stream) { var method = new MetadataJavaMethod { Name = stream.ReadUtfAndIntern(), ReturnType = stream.ReadUtfAndIntern(), AccessFlags = stream.ReadAccessFlagsParameter(), Parameters = stream.ReadArray(stream.ReadJavaParameter) }; return(method); }
private static (string, MetadataJavaClass) ReadJarArchiveClass(this DataInputStream stream) { var name = stream.ReadUtfAndIntern(); var @class = stream.ReadJarClass(); return(name, @class); }
private static MetadataJavaField ReadJavaField(this DataInputStream stream) { var field = new MetadataJavaField { Name = stream.ReadUtfAndIntern(), Type = stream.ReadUtfAndIntern(), AccessFlags = stream.ReadAccessFlagsParameter() }; var hasConstantValue = stream.ReadBoolean(); if (hasConstantValue) { field.ConstantValue = stream.ReadArray(stream.ReadByte); } return(field); }
private static MetadataJavaClass ReadJarClass(this DataInputStream stream) { var @class = new MetadataJavaClass { ClassName = stream.ReadUtfAndIntern(), AccessFlags = stream.ReadAccessFlagsParameter(), Interfaces = stream.ReadArray(stream.ReadUtfAndIntern), AllInterfaces = stream.ReadArray(stream.ReadUtfAndIntern) }; @class.Interfaces = stream.ReadArray(stream.ReadUtfAndIntern); @class.AllSuperClasses = stream.ReadArray(stream.ReadUtfAndIntern); @class.Methods = stream.ReadArray(stream.ReadJavaMethod); @class.Fields = stream.ReadArray(stream.ReadJavaField); return(@class); }
private Constant LoadConstantValue(byte[] metaConstantValue) { if (metaConstantValue == null) { return(null); } using var memoryInputStream = new MemoryInputStream(metaConstantValue); using var ms = new DataInputStream(memoryInputStream); var constant = Constant.ReadConstant(ms); //Read the actual string from the data and create a constant pool for it. if (constant is ConstantString constantString) { var originalString = ms.ReadUtfAndIntern(); _metaConstantPool = new ConstantPool(new Constant[] { new ConstantUtf8(originalString) }); constantString.SetStringIndex(0); } return(constant); }
private static MetadataJavaMethodParameter ReadJavaParameter(this DataInputStream stream) { return(new MetadataJavaMethodParameter { Name = stream.ReadUtfAndIntern(), Type = stream.ReadUtfAndIntern() }); }