Beispiel #1
0
        private MethodInfo CreateMethodInfo(BuildingContext context, MethodDefinition definition)
        {
            // Basic structure.
            var info = new MethodInfo
            {
                AccessFlags     = definition.AccessFlags,
                NameIndex       = (ushort)ConstantPoolBuffer.GetUtf8Index(definition.Name),
                DescriptorIndex = (ushort)ConstantPoolBuffer.GetDescriptorIndex(definition.Descriptor),
            };

            // Body.
            if (definition.Body != null)
            {
                info.Attributes.Add(CreateAttribute(context, definition.Body.Serialize(context)));
            }

            // Exceptions
            if (definition.Exceptions.Count > 0)
            {
                var attribute = new ExceptionsAttribute();
                foreach (var exception in definition.Exceptions)
                {
                    attribute.Exceptions.Add((ushort)context.Builder.ConstantPoolBuffer.GetClassIndex(exception));
                }
                info.Attributes.Add(CreateAttribute(context, attribute));
            }

            AddAttributes(context, info, definition);
            return(info);
        }
Beispiel #2
0
        private FieldInfo CreateFieldInfo(BuildingContext context, FieldDefinition definition)
        {
            // Basic structure.
            var info = new FieldInfo
            {
                AccessFlags     = definition.AccessFlags,
                NameIndex       = (ushort)ConstantPoolBuffer.GetUtf8Index(definition.Name),
                DescriptorIndex = (ushort)ConstantPoolBuffer.GetDescriptorIndex(definition.Descriptor),
            };

            // Constant
            if (definition.Constant != null)
            {
                info.Attributes.Add(CreateAttribute(context, new SingleIndexAttribute(
                                                        SingleIndexAttribute.ConstantValueAttribute,
                                                        (ushort)ConstantPoolBuffer.GetLiteralIndex(definition.Constant))));
            }

            AddAttributes(context, info, definition);

            return(info);
        }