public override void Write(BigEndianStream bes) { base.Write(bes); bes.WriteUInt32((uint)(2 + 2 + 4 + code.Length + 2 + 2)); bes.WriteUInt16(max_stack); bes.WriteUInt16(max_locals); bes.WriteUInt32((uint)code.Length); for (int i = 0; i < code.Length; i++) { bes.WriteByte(code[i]); } bes.WriteUInt16(0); // no exceptions bes.WriteUInt16(0); // no attributes }
private static void WriteMethods(BigEndianStream bes, TypeWrapper tw) { List <MethodWrapper> list = new List <MethodWrapper>(); foreach (MethodWrapper mw in tw.GetMethods()) { if (!mw.IsConstructor && !mw.IsHideFromReflection && !mw.IsPrivate) { list.Add(mw); } } list.Sort(delegate(MethodWrapper mw1, MethodWrapper mw2) { if (mw1.Name == mw2.Name) { return(String.CompareOrdinal(mw1.Signature, mw2.Signature)); } return(String.CompareOrdinal(mw1.Name, mw2.Name)); }); foreach (MethodWrapper mw in list) { Modifiers mods = mw.Modifiers & (Modifiers.Public | Modifiers.Private | Modifiers.Protected | Modifiers.Static | Modifiers.Final | Modifiers.Synchronized | Modifiers.Native | Modifiers.Abstract | Modifiers.Strictfp); bes.WriteUtf8(mw.Name); bes.WriteUInt32((uint)mods); bes.WriteUtf8(mw.Signature); } }
public override void Write(BigEndianStream bes) { base.Write(bes); if (flags == null || names == null || flags.Length != names.Length) { // write a malformed MethodParameters attribute bes.WriteUInt32(0); return; } bes.WriteUInt32((uint)(1 + names.Length * 4)); bes.WriteByte((byte)names.Length); for (int i = 0; i < names.Length; i++) { bes.WriteUInt16(names[i]); bes.WriteUInt16(flags[i]); } }
public override void Write(BigEndianStream bes) { base.Write(bes); bes.WriteUInt32((uint)(buf.Length)); foreach (byte b in buf) { bes.WriteByte(b); } }
public override void Write(BigEndianStream bes) { base.Write(bes); bes.WriteUInt32((uint)(mem.Length + 2)); bes.WriteUInt16(count); foreach (byte b in mem.ToArray()) { bes.WriteByte(b); } }
public override void Write(BigEndianStream bes) { base.Write(bes); bes.WriteUInt32((uint)(2 + 2 * classes.Count)); bes.WriteUInt16((ushort)classes.Count); foreach (ushort idx in classes) { bes.WriteUInt16(idx); } }
public override void Write(BigEndianStream bes) { base.Write(bes); bes.WriteUInt32((uint)(1 + names.Length * 4)); bes.WriteByte((byte)names.Length); foreach (ushort idx in names) { bes.WriteUInt16(idx); bes.WriteUInt16(0); } }
public override void Write(BigEndianStream bes) { base.Write(bes); bes.WriteUInt32((uint)(2 + 8 * classes.Count)); bes.WriteUInt16((ushort)classes.Count); foreach (Item i in classes) { bes.WriteUInt16(i.inner_class_info_index); bes.WriteUInt16(i.outer_class_info_index); bes.WriteUInt16(i.inner_name_index); bes.WriteUInt16(i.inner_class_access_flags); } }
private static void WriteModifiers(BigEndianStream bes, TypeWrapper tw) { Modifiers mods = tw.ReflectiveModifiers & (Modifiers.Public | Modifiers.Final | Modifiers.Interface | Modifiers.Abstract); if ((mods & Modifiers.Interface) != 0) { mods &= ~Modifiers.Abstract; if (HasJavaMethods(tw)) { mods |= Modifiers.Abstract; } } bes.WriteUInt32((uint)mods); }
private static void WriteStaticInitializer(BigEndianStream bes, TypeWrapper tw) { Type type = tw.TypeAsTBD; if (!type.IsArray && type.TypeInitializer != null) { if (!AttributeHelper.IsHideFromJava(type.TypeInitializer)) { bes.WriteUtf8("<clinit>"); bes.WriteUInt32((uint)Modifiers.Static); bes.WriteUtf8("()V"); } } }
private static void WriteModifiers(BigEndianStream bes, TypeWrapper tw) { Modifiers mods = tw.ReflectiveModifiers & (Modifiers.Public | Modifiers.Final | Modifiers.Interface | Modifiers.Abstract); if ((mods & Modifiers.Interface) != 0) { mods &= ~Modifiers.Abstract; if (HasJavaMethods(tw)) { mods |= Modifiers.Abstract; } } bes.WriteUInt32((uint)mods); }
public override void Write(BigEndianStream bes) { base.Write(bes); uint length = 1; foreach (RuntimeVisibleAnnotationsAttribute attr in parameters) { length += attr.Length; } bes.WriteUInt32(length); bes.WriteByte((byte)parameters.Count); foreach (RuntimeVisibleAnnotationsAttribute attr in parameters) { attr.WriteImpl(bes); } }
private static void WriteStaticInitializer(BigEndianStream bes, TypeWrapper tw) { #if !WINRT Type type = tw.TypeAsTBD; if (!type.IsArray && type.TypeInitializer != null) { if (!AttributeHelper.IsHideFromJava(type.TypeInitializer)) { bes.WriteUtf8("<clinit>"); bes.WriteUInt32((uint)Modifiers.Static); bes.WriteUtf8("()V"); } } #else throw new NotImplementedException(); #endif }
public void Write(Stream stream) { BigEndianStream bes = new BigEndianStream(stream); bes.WriteUInt32(0xCAFEBABE); bes.WriteUInt16(minorVersion); bes.WriteUInt16(majorVersion); bes.WriteUInt16((ushort)cplist.Count); for (int i = 1; i < cplist.Count; i++) { ConstantPoolItem cpi = (ConstantPoolItem)cplist[i]; if (cpi != null) { cpi.Write(bes); } } bes.WriteUInt16((ushort)access_flags); bes.WriteUInt16(this_class); bes.WriteUInt16(super_class); // interfaces count bes.WriteUInt16((ushort)interfaces.Count); for (int i = 0; i < interfaces.Count; i++) { bes.WriteUInt16((ushort)interfaces[i]); } // fields count bes.WriteUInt16((ushort)fields.Count); for (int i = 0; i < fields.Count; i++) { ((FieldOrMethod)fields[i]).Write(bes); } // methods count bes.WriteUInt16((ushort)methods.Count); for (int i = 0; i < methods.Count; i++) { ((FieldOrMethod)methods[i]).Write(bes); } // attributes count bes.WriteUInt16((ushort)attribs.Count); for (int i = 0; i < attribs.Count; i++) { ((ClassFileAttribute)attribs[i]).Write(bes); } }
private static void WriteFields(BigEndianStream bes, TypeWrapper tw) { List <FieldWrapper> list = new List <FieldWrapper>(); foreach (FieldWrapper fw in tw.GetFields()) { if (!fw.IsHideFromReflection) { list.Add(fw); } } list.Sort(delegate(FieldWrapper fw1, FieldWrapper fw2) { return(String.CompareOrdinal(fw1.Name, fw2.Name)); }); foreach (FieldWrapper fw in list) { Modifiers mods = fw.Modifiers & (Modifiers.Public | Modifiers.Private | Modifiers.Protected | Modifiers.Static | Modifiers.Final | Modifiers.Volatile | Modifiers.Transient); if (((mods & Modifiers.Private) == 0) || ((mods & (Modifiers.Static | Modifiers.Transient)) == 0)) { bes.WriteUtf8(fw.Name); bes.WriteUInt32((uint)mods); bes.WriteUtf8(fw.Signature.Replace('.', '/')); } } }
private static void WriteStaticInitializer(BigEndianStream bes, TypeWrapper tw) { Type type = tw.TypeAsTBD; if (!type.IsArray && type.TypeInitializer != null) { if (!AttributeHelper.IsHideFromJava(type.TypeInitializer)) { bes.WriteUtf8("<clinit>"); bes.WriteUInt32((uint)Modifiers.Static); bes.WriteUtf8("()V"); } } }
public override void Write(BigEndianStream bes) { base.Write(bes); bes.WriteUInt32((uint)data.Length); bes.WriteBytes(data); }
public override void Write(BigEndianStream bes) { base.Write(bes); if (flags == null || names == null || flags.Length != names.Length) { // write a malformed MethodParameters attribute bes.WriteUInt32(0); return; } bes.WriteUInt32((uint)(1 + names.Length * 4)); bes.WriteByte((byte)names.Length); for (int i = 0; i < names.Length; i++) { bes.WriteUInt16(names[i]); bes.WriteUInt16(flags[i]); } }
public override void Write(BigEndianStream bes) { base.Write(bes); bes.WriteUInt32((uint)(1 + names.Length * 4)); bes.WriteByte((byte)names.Length); foreach (ushort idx in names) { bes.WriteUInt16(idx); bes.WriteUInt16(0); } }
public override void Write(BigEndianStream bes) { bes.WriteByte((byte)Constant.Integer); bes.WriteUInt32((uint)v); }
private static void WriteFields(BigEndianStream bes, TypeWrapper tw) { List<FieldWrapper> list = new List<FieldWrapper>(); foreach (FieldWrapper fw in tw.GetFields()) { if (!fw.IsHideFromReflection) { list.Add(fw); } } list.Sort(delegate(FieldWrapper fw1, FieldWrapper fw2) { return String.CompareOrdinal(fw1.Name, fw2.Name); }); foreach (FieldWrapper fw in list) { Modifiers mods = fw.Modifiers & (Modifiers.Public | Modifiers.Private | Modifiers.Protected | Modifiers.Static | Modifiers.Final | Modifiers.Volatile | Modifiers.Transient); if (((mods & Modifiers.Private) == 0) || ((mods & (Modifiers.Static | Modifiers.Transient)) == 0)) { bes.WriteUtf8(fw.Name); bes.WriteUInt32((uint)mods); bes.WriteUtf8(fw.Signature.Replace('.', '/')); } } }
public override void Write(BigEndianStream bes) { base.Write(bes); bes.WriteUInt32(2); bes.WriteUInt16(string_index); }
public override void Write(BigEndianStream bes) { base.Write(bes); bes.WriteUInt32(0); }
public override void Write(BigEndianStream bes) { bes.WriteByte((byte)Constant.Integer); bes.WriteUInt32((uint)v); }
public override void Write(BigEndianStream bes) { base.Write(bes); uint length = 1; foreach (RuntimeVisibleAnnotationsAttribute attr in parameters) { length += attr.Length; } bes.WriteUInt32(length); bes.WriteByte((byte)parameters.Count); foreach (RuntimeVisibleAnnotationsAttribute attr in parameters) { attr.WriteImpl(bes); } }
public void Write(Stream stream) { BigEndianStream bes = new BigEndianStream(stream); bes.WriteUInt32(0xCAFEBABE); bes.WriteUInt16(minorVersion); bes.WriteUInt16(majorVersion); bes.WriteUInt16((ushort)cplist.Count); foreach (ConstantPoolItem cpi in cplist) { if (cpi != null) { cpi.Write(bes); } } bes.WriteUInt16((ushort)access_flags); bes.WriteUInt16(this_class); bes.WriteUInt16(super_class); // interfaces count bes.WriteUInt16((ushort)interfaces.Count); for (int i = 0; i < interfaces.Count; i++) { bes.WriteUInt16(interfaces[i]); } // fields count bes.WriteUInt16((ushort)fields.Count); for (int i = 0; i < fields.Count; i++) { fields[i].Write(bes); } // methods count bes.WriteUInt16((ushort)methods.Count); for (int i = 0; i < methods.Count; i++) { methods[i].Write(bes); } // attributes count bes.WriteUInt16((ushort)attribs.Count); for (int i = 0; i < attribs.Count; i++) { attribs[i].Write(bes); } }
public override void Write(BigEndianStream bes) { base.Write(bes); bes.WriteUInt32(2); bes.WriteUInt16(constant_index); }
public override void Write(BigEndianStream bes) { base.Write(bes); bes.WriteUInt32((uint)(buf.Length)); foreach (byte b in buf) { bes.WriteByte(b); } }
private static void WriteMethods(BigEndianStream bes, TypeWrapper tw) { List<MethodWrapper> list = new List<MethodWrapper>(); foreach (MethodWrapper mw in tw.GetMethods()) { if (mw.Name != StringConstants.INIT && !mw.IsHideFromReflection && !mw.IsPrivate) { list.Add(mw); } } list.Sort(delegate(MethodWrapper mw1, MethodWrapper mw2) { if (mw1.Name == mw2.Name) return String.CompareOrdinal(mw1.Signature, mw2.Signature); return String.CompareOrdinal(mw1.Name, mw2.Name); }); foreach (MethodWrapper mw in list) { Modifiers mods = mw.Modifiers & (Modifiers.Public | Modifiers.Private | Modifiers.Protected | Modifiers.Static | Modifiers.Final | Modifiers.Synchronized | Modifiers.Native | Modifiers.Abstract | Modifiers.Strictfp); bes.WriteUtf8(mw.Name); bes.WriteUInt32((uint)mods); bes.WriteUtf8(mw.Signature); } }
public override void Write(BigEndianStream bes) { base.Write(bes); bes.WriteUInt32((uint)data.Length); bes.WriteBytes(data); }
public override void Write(BigEndianStream bes) { base.Write(bes); bes.WriteUInt32(Length); WriteImpl(bes); }
public override void Write(BigEndianStream bes) { base.Write(bes); bes.WriteUInt32((uint)(2 + 8 * classes.Count)); bes.WriteUInt16((ushort)classes.Count); foreach (Item i in classes) { bes.WriteUInt16(i.inner_class_info_index); bes.WriteUInt16(i.outer_class_info_index); bes.WriteUInt16(i.inner_name_index); bes.WriteUInt16(i.inner_class_access_flags); } }
public override void Write(BigEndianStream bes) { base.Write(bes); bes.WriteUInt32(Length); WriteImpl(bes); }
public override void Write(BigEndianStream bes) { base.Write(bes); bes.WriteUInt32(0); }
public override void Write(BigEndianStream bes) { base.Write(bes); bes.WriteUInt32((uint)(2 + 2 + 4 + code.Length + 2 + 2)); bes.WriteUInt16(max_stack); bes.WriteUInt16(max_locals); bes.WriteUInt32((uint)code.Length); for (int i = 0; i < code.Length; i++) { bes.WriteByte(code[i]); } bes.WriteUInt16(0); // no exceptions bes.WriteUInt16(0); // no attributes }
public override void Write(BigEndianStream bes) { base.Write(bes); bes.WriteUInt32((uint)(2 + 2 * classes.Count)); bes.WriteUInt16((ushort)classes.Count); foreach (ushort idx in classes) { bes.WriteUInt16(idx); } }
public override void Write(BigEndianStream bes) { base.Write(bes); bes.WriteUInt32((uint)(mem.Length + 2)); bes.WriteUInt16(count); foreach (byte b in mem.ToArray()) { bes.WriteByte(b); } }