private static void WriteJarClass(this DataOutputStream stream, MetadataJavaClass @class) { stream.WriteUTF(@class.ClassName); stream.WriteAccessFlagsParameter(@class.AccessFlags); stream.WriteArray(@class.Interfaces, stream.WriteUTF); stream.WriteArray(@class.AllInterfaces, stream.WriteUTF); stream.WriteArray(@class.Interfaces, stream.WriteUTF); stream.WriteArray(@class.AllSuperClasses, stream.WriteUTF); stream.WriteArray(@class.Methods, stream.WriteJavaMethod); stream.WriteArray(@class.Fields, stream.WriteJavaField); }
public void PrepareProperties(MetadataJavaClass meta) { ClassName = meta.ClassName.Substring(meta.ClassName.LastIndexOf('.') + 1); PackageName = meta.ClassName.Substring(0, meta.ClassName.LastIndexOf('.')); _metaFlags = (AccessFlags)meta.AccessFlags; _metaSuperClasses ??= meta.AllSuperClasses.Select(c => LoadedClassRepository.Instance[c]).ToArray(); _metaInterfaces ??= meta.Interfaces.Select(c => LoadedClassRepository.Instance[c]).ToArray(); _metaAllInterfaces ??= meta.AllInterfaces.Select(c => LoadedClassRepository.Instance[c]).ToArray(); _metaFields ??= meta.Fields.Select(c => c.ToDataClass()).ToArray(); _metaMethods ??= meta.Methods.Select(c => c.ToDataClass()).ToArray(); }
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); }
public static DataJavaClass ToDataClass(this MetadataJavaClass meta) { return(new DataJavaClass(meta)); }
private static void WriteJarArchiveClass(this DataOutputStream stream, string name, MetadataJavaClass @class) { stream.WriteUTF(name); stream.WriteJarClass(@class); }
public DataJavaClass(MetadataJavaClass meta) { FullClassName = meta.ClassName; CanLoad += (_, __) => PrepareProperties(meta); }