public void Write(EndianBinaryWriter writer)
        {
            var modifierValue = (short) ((int) Modifiers & 0xAF);

            writer.Write(modifierValue);
            writer.Write(Name);
            writer.Write(Descriptor);

            writer.Write((short) Attributes.Count());

            foreach (CompileAttribute attr in Attributes)
            {
                attr.Write(writer);
            }
        }
        public void Write(EndianBinaryWriter writer)
        {
            var modifierValue = (short) ((int) Modifiers & 0xD3F);

            writer.Write(modifierValue);
            writer.Write(Name);
            writer.Write(Descriptor);

            writer.Write((short) Attributes.Count());

            foreach (CompileAttribute attribute in Attributes)
            {
                writer.Write(attribute.NameIndex);
                writer.Write(attribute.Length);

                attribute.Write(writer);
            }
        }
 private static void WriteElementValue(ElementValue value, EndianBinaryWriter writer)
 {
     switch ((char)value.Tag)
     {
         case 'B':
         case 'C':
         case 'D':
         case 'F':
         case 'I':
         case 'J':
         case 'S':
         case 'Z':
         case 's':
             writer.Write(value.ConstValueIndex);
             break;
         case 'e':
             writer.Write(value.TypeNameIndex);
             writer.Write(value.ConstNameIndex);
             break;
         case 'c':
             writer.Write(value.ClassInfoIndex);
             break;
         case '@':
             WriteAnnotation(value.AnnotationValue, writer);
             break;
         case '[':
             writer.Write((short)value.Values.Count());
             foreach (ElementValue ev in value.Values)
             {
                 WriteElementValue(ev, writer);
             }
             break;
     }
 }
 public override void Write(EndianBinaryWriter writer)
 {
     writer.Write((short)Annotations.Count());
     foreach (Annotation annotation in Annotations)
     {
         WriteAnnotation(annotation, writer);
     }
 }
        internal static void WriteAnnotation(Annotation annotation, EndianBinaryWriter writer)
        {
            writer.Write(annotation.TypeIndex);

            writer.Write((short)annotation.ElementValues.Count());
            foreach (var value in annotation.ElementValues)
            {
                writer.Write(value.Item1);

                WriteElementValue(value.Item2, writer);
            }
        }
 public override void Write(EndianBinaryWriter writer)
 {
     writer.Write(NameIndex);
 }
 public override void Write(EndianBinaryWriter writer)
 {
     writer.Write(DebugExtension);
 }
 public override void Write(EndianBinaryWriter writer)
 {
     throw new NotImplementedException();
 }
 public override void Write(EndianBinaryWriter writer)
 {
     writer.Write(StringIndex);
 }
 public override void Write(EndianBinaryWriter writer)
 {
     writer.Write(ClassIndex);
     writer.Write(MethodIndex);
 }
 public override void Write(EndianBinaryWriter writer)
 {
     writer.Write((short)ExceptionTable.Count());
     foreach (short ex in ExceptionTable)
     {
         writer.Write(ex);
     }
 }
        public override void Write(EndianBinaryWriter writer)
        {
            writer.Write(MaxStack);
            writer.Write(MaxLocals);

            writer.Write(Code.Length);
            writer.Write(Code);

            writer.Write((short)ExceptionTable.Count());
            foreach (ExceptionTableEntry ex in ExceptionTable)
            {
                writer.Write(ex.StartPC);
                writer.Write(ex.EndPC);
                writer.Write(ex.HandlerPC);
                writer.Write(ex.CatchType);
            }

            writer.Write((short)Attributes.Count());
            foreach (var attr in Attributes)
            {
                writer.Write(attr.NameIndex);
                writer.Write(attr.Length);

                attr.Write(writer);
            }
        }
 public override void Write(EndianBinaryWriter writer)
 {
 }
            public void Write(EndianBinaryWriter writer)
            {
                writer.Write((byte)Tag);

                if (Tag == VerificationType.Uninitialized ||
                    Tag == VerificationType.Object)
                {
                    writer.Write(Value);
                }
            }
        public override void Write(EndianBinaryWriter writer)
        {
            writer.Write((short)Entries.Count());

            foreach (var entry in Entries)
            {
                writer.Write(entry.Type);
                if (entry.Type <= 63)
                {
                    // SAME
                }
                else if (entry.Type >= 64 && entry.Type <= 127)
                {
                    // SAME_LOCALS_1_STACK_ITEM
                    entry.Stack[0].Write(writer);
                }
                else if (entry.Type == 247)
                {
                    // SAME_LOCALS_1_STACK_ITEM_EXTENDED
                    writer.Write((short)entry.OffsetDelta);
                    entry.Stack[0].Write(writer);
                }
                else if (entry.Type >= 248 && entry.Type <= 250)
                {
                    // CHOP
                    writer.Write((short)entry.OffsetDelta);
                }
                else if (entry.Type == 251)
                {
                    // SAME_FRAME_EXTENDED
                    writer.Write((short)entry.OffsetDelta);
                }
                else if (entry.Type >= 252 && entry.Type <= 254)
                {
                    // APPEND
                    writer.Write((short)entry.OffsetDelta);
                    var type = (short)entry.Type;
                    for (int i = 251; i < type; i++)
                    {
                        entry.Locals[i - 251].Write(writer);

                        if (entry.Locals[i - 251].Tag == VerificationType.Long ||
                            entry.Locals[i - 251].Tag == VerificationType.Double)
                        {

                        }
                    }
                }
                else if (entry.Type == 255)
                {
                    // FULL_FRAME
                    writer.Write((short)entry.OffsetDelta);

                    writer.Write((short)entry.Locals.Count());
                    for (int i = 0; i < entry.Locals.Count(); i++)
                    {
                        entry.Locals[i].Write(writer);
                    }

                    writer.Write((short)entry.Stack.Count());
                    for (int i = 0; i < entry.Stack.Count(); i++)
                    {
                        entry.Stack[i].Write(writer);
                    }
                }
            }
        }
 public override void Write(EndianBinaryWriter writer)
 {
     writer.Write(SourceFile);
 }
 public override void Write(EndianBinaryWriter writer)
 {
     writer.Write(Value);
 }
 public override void Write(EndianBinaryWriter writer)
 {
     writer.Write(Data);
 }
 public override void Write(EndianBinaryWriter writer)
 {
     writer.Write(ClassIndex);
     writer.Write(NameAndTypeIndex);
 }
        public override void Write(EndianBinaryWriter writer)
        {
            writer.Write((short)Classes.Count());
            foreach (InnerClass c in Classes)
            {
                int modifierValue = (short)c.InnerModifier & 0x631;

                writer.Write(c.InnerClassInfo);
                writer.Write(c.OuterClassInfo);
                writer.Write(c.InnerName);
                writer.Write(modifierValue);
            }
        }
 public abstract void Write(EndianBinaryWriter writer);
 public override void Write(EndianBinaryWriter writer)
 {
     writer.Write((byte)ParameterAnnotations.Count());
     foreach (var annotations in ParameterAnnotations)
     {
         writer.Write((short)annotations.Count());
         foreach (var annotation in annotations)
         {
             CompileAttributeRuntimeVisibleAnnotations.WriteAnnotation(annotation, writer);
         }
     }
 }
 public override void Write(EndianBinaryWriter writer)
 {
     writer.Write((short) Value.Length);
     writer.Write(Value);
 }
 public override void Write(EndianBinaryWriter writer)
 {
     writer.Write((short)Variables.Count());
     foreach (VariableTypeTableEntry ln in Variables)
     {
         writer.Write(ln.StartPC);
         writer.Write(ln.Length);
         writer.Write(ln.Name);
         writer.Write(ln.Signature);
         writer.Write(ln.Index);
     }
 }
 public override void Write(EndianBinaryWriter writer)
 {
     writer.Write((short)LineNumbers.Count());
     foreach (LineNumberTableEntry ln in LineNumbers)
     {
         writer.Write(ln.StartPC);
         writer.Write(ln.LineNumber);
     }
 }
 public override void Write(EndianBinaryWriter writer)
 {
     writer.Write(SignatureIndex);
 }