Beispiel #1
0
        protected override void UpdateMember(NetBuildingContext context, PropertyMap member)
        {
            var row = member.MetadataRow;

            row.Column1 = member.Parent.MetadataToken.Rid;
            // TODO: update property list
        }
Beispiel #2
0
        protected override void UpdateMember(NetBuildingContext context, EncLog member)
        {
            var row = member.MetadataRow;

            row.Column1 = member.Token;
            row.Column2 = member.FuncCode;
        }
Beispiel #3
0
        protected override void UpdateMember(NetBuildingContext context, MethodSpecification member)
        {
            var row = member.MetadataRow;

            row.Column1 = TableStream.GetIndexEncoder(CodedIndex.MethodDefOrRef).EncodeToken(member.Method.MetadataToken);
            row.Column2 = context.GetStreamBuffer <BlobStreamBuffer>().GetBlobOffset(member.Signature);
        }
Beispiel #4
0
        protected override void UpdateMember(NetBuildingContext context, AssemblyRefProcessor member)
        {
            var row = member.MetadataRow;

            row.Column1 = member.Processor;
            row.Column2 = member.Reference.MetadataToken.Rid;
        }
Beispiel #5
0
        protected override void UpdateMember(NetBuildingContext context, NestedClass member)
        {
            var row = member.MetadataRow;

            row.Column1 = member.Class.MetadataToken.Rid;
            row.Column2 = member.EnclosingClass.MetadataToken.Rid;
        }
Beispiel #6
0
        protected override void UpdateMember(NetBuildingContext context, FieldRva member)
        {
            var row = member.MetadataRow;

            row.Column1 = member.Rva;
            row.Column2 = member.Field.MetadataToken.Rid;
        }
Beispiel #7
0
        protected override void UpdateMember(NetBuildingContext context, FieldMarshal member)
        {
            var row = member.MetadataRow;

            row.Column1 = TableStream.GetIndexEncoder(CodedIndex.HasFieldMarshal).EncodeToken(member.Parent.MetadataToken);
            row.Column2 = context.GetStreamBuffer <BlobStreamBuffer>().GetBlobOffset(member.MarshalDescriptor);
        }
Beispiel #8
0
        protected override void UpdateMember(NetBuildingContext context, MethodSpecification member)
        {
            var row = member.MetadataRow;

            row.Column1 = member.Method.MetadataToken.Rid;
            row.Column2 = context.GetStreamBuffer <BlobStreamBuffer>().GetBlobOffset(member.Signature);
        }
        protected override void UpdateMember(NetBuildingContext context, FieldDefinition member)
        {
            var row = member.MetadataRow;

            row.Column1 = (ushort)member.Attributes;
            row.Column2 = context.GetStreamBuffer <StringStreamBuffer>().GetStringOffset(member.Name);
            row.Column3 = context.GetStreamBuffer <BlobStreamBuffer>().GetBlobOffset(member.Signature);
        }
Beispiel #10
0
        protected override void UpdateMember(NetBuildingContext context, ClassLayout member)
        {
            var row = member.MetadataRow;

            row.Column1 = member.PackingSize;
            row.Column2 = member.ClassSize;
            row.Column3 = member.Parent.MetadataToken.Rid;
        }
Beispiel #11
0
        protected override void UpdateMember(NetBuildingContext context, AssemblyOs member)
        {
            var row = member.MetadataRow;

            row.Column1 = member.PlatformId;
            row.Column2 = member.MajorVersion;
            row.Column3 = member.MinorVersion;
        }
Beispiel #12
0
        protected override void UpdateMember(NetBuildingContext context, Constant member)
        {
            var row = member.MetadataRow;

            row.Column1 = (byte)member.ConstantType;
            row.Column3 = TableStream.GetIndexEncoder(CodedIndex.HasConstant).EncodeToken(member.Parent.MetadataToken);
            row.Column4 = context.GetStreamBuffer <BlobStreamBuffer>().GetBlobOffset(member.Value);
        }
Beispiel #13
0
        protected override void UpdateMember(NetBuildingContext context, GenericParameterConstraint member)
        {
            var row = member.MetadataRow;

            row.Column1 = member.Owner.MetadataToken.Rid;
            row.Column2 = TableStream.GetIndexEncoder(CodedIndex.TypeDefOrRef)
                          .EncodeToken(member.Constraint.MetadataToken);
        }
        protected override void UpdateMember(NetBuildingContext context, InterfaceImplementation member)
        {
            var row = member.MetadataRow;

            row.Column1 = member.Class.MetadataToken.Rid;
            row.Column2 = TableStream.GetIndexEncoder(CodedIndex.TypeDefOrRef)
                          .EncodeToken(member.Interface.MetadataToken);
        }
Beispiel #15
0
        protected override void UpdateMember(NetBuildingContext context, ParameterDefinition member)
        {
            var row = member.MetadataRow;

            row.Column1 = (ushort)member.Attributes;
            row.Column2 = (ushort)member.Sequence;
            row.Column3 = context.GetStreamBuffer <StringStreamBuffer>().GetStringOffset(member.Name);
        }
Beispiel #16
0
        protected override void UpdateMember(NetBuildingContext context, EventDefinition member)
        {
            var row = member.MetadataRow;

            row.Column1 = (ushort)member.Attributes;
            row.Column2 = context.GetStreamBuffer <StringStreamBuffer>().GetStringOffset(member.Name);
            row.Column3 = TableStream.GetIndexEncoder(CodedIndex.TypeDefOrRef)
                          .EncodeToken(member.EventType.MetadataToken);
        }
Beispiel #17
0
        protected override void UpdateMember(NetBuildingContext context, MethodSemantics member)
        {
            var row = member.MetadataRow;

            row.Column1 = (ushort)member.Attributes;
            row.Column2 = member.Method.MetadataToken.Rid;
            row.Column3 = TableStream.GetIndexEncoder(CodedIndex.HasSemantics)
                          .EncodeToken(member.Association.MetadataToken);
        }
Beispiel #18
0
        protected override void UpdateMember(NetBuildingContext context, MemberReference member)
        {
            var row = member.MetadataRow;

            row.Column1 = TableStream.GetIndexEncoder(CodedIndex.MemberRefParent)
                          .EncodeToken(member.Parent.MetadataToken);
            row.Column2 = context.GetStreamBuffer <StringStreamBuffer>().GetStringOffset(member.Name);
            row.Column3 = context.GetStreamBuffer <BlobStreamBuffer>().GetBlobOffset(member.Signature);
        }
        protected override void UpdateMember(NetBuildingContext context, MethodImplementation member)
        {
            var encoder = TableStream.GetIndexEncoder(CodedIndex.MethodDefOrRef);
            var row     = member.MetadataRow;

            row.Column1 = member.Class.MetadataToken.Rid;
            row.Column2 = encoder.EncodeToken(member.MethodBody.MetadataToken);
            row.Column3 = encoder.EncodeToken(member.MethodDeclaration.MetadataToken);
        }
        protected override void UpdateMember(NetBuildingContext context, SecurityDeclaration member)
        {
            var row = member.MetadataRow;

            row.Column1 = (ushort)member.Action;
            row.Column2 = TableStream.GetIndexEncoder(CodedIndex.HasDeclSecurity)
                          .EncodeToken(member.Parent.MetadataToken);
            row.Column3 = context.GetStreamBuffer <BlobStreamBuffer>().GetBlobOffset(member.PermissionSet);
        }
Beispiel #21
0
        protected override void UpdateMember(NetBuildingContext context, CustomAttribute member)
        {
            var row = member.MetadataRow;

            row.Column1 = TableStream.GetIndexEncoder(CodedIndex.HasCustomAttribute)
                          .EncodeToken(member.Parent.MetadataToken);
            row.Column2 = TableStream.GetIndexEncoder(CodedIndex.CustomAttributeType)
                          .EncodeToken(member.Constructor.MetadataToken);
            row.Column3 = context.GetStreamBuffer <BlobStreamBuffer>().GetBlobOffset(member.Signature);
        }
        protected override void UpdateMember(NetBuildingContext context, PInvokeImplementation member)
        {
            var row = member.MetadataRow;

            row.Column1 = (ushort)member.Attributes;
            row.Column2 = TableStream.GetIndexEncoder(CodedIndex.MemberForwarded)
                          .EncodeToken(member.MemberForwarded.MetadataToken);
            row.Column3 = context.GetStreamBuffer <StringStreamBuffer>().GetStringOffset(member.ImportName);
            row.Column4 = member.ImportScope.MetadataToken.Rid;
        }
Beispiel #23
0
        /// <summary>
        /// Rebuilds and writes the assembly to a destination, using the specified building parameters.
        /// </summary>
        /// <param name="parameters">The parameters to use for building the assembly image.</param>
        public void Write(BuildingParameters parameters)
        {
            var builder = new NetAssemblyBuilder(this, parameters);
            var context = new NetBuildingContext(builder);

            builder.Build(context);
            builder.UpdateOffsets(context);
            builder.UpdateReferences(context);
            builder.Write(new WritingContext(this, parameters.Writer, context));
        }
Beispiel #24
0
        protected override void UpdateMember(NetBuildingContext context, GenericParameter member)
        {
            var row = member.MetadataRow;

            row.Column1 = (ushort)member.Index;
            row.Column2 = (ushort)member.Attributes;
            row.Column3 = TableStream.GetIndexEncoder(CodedIndex.TypeOrMethodDef)
                          .EncodeToken(member.Owner.MetadataToken);
            row.Column4 = context.GetStreamBuffer <StringStreamBuffer>().GetStringOffset(member.Name);
        }
Beispiel #25
0
        protected override void UpdateMember(NetBuildingContext context, ManifestResource member)
        {
            var row = member.MetadataRow;

            row.Column1 = member.Offset;
            row.Column2 = (uint)member.Attributes;
            row.Column3 = context.GetStreamBuffer <StringStreamBuffer>().GetStringOffset(member.Name);
            row.Column4 = member.Implementation == null ? 0 : TableStream.GetIndexEncoder(CodedIndex.Implementation)
                          .EncodeToken(member.Implementation.MetadataToken);
        }
Beispiel #26
0
        protected override void UpdateMember(NetBuildingContext context, TypeReference member)
        {
            var stringStream = context.GetStreamBuffer <StringStreamBuffer>();

            var row = member.MetadataRow;

            row.Column1 = TableStream.GetIndexEncoder(CodedIndex.ResolutionScope)
                          .EncodeToken(member.ResolutionScope.MetadataToken);
            row.Column2 = stringStream.GetStringOffset(member.Name);
            row.Column3 = stringStream.GetStringOffset(member.Namespace);
        }
Beispiel #27
0
        protected override void UpdateMember(NetBuildingContext context, ModuleDefinition member)
        {
            var guidStream = context.GetStreamBuffer <GuidStreamBuffer>();

            var row = member.MetadataRow;

            row.Column1 = member.Generation;
            row.Column2 = context.GetStreamBuffer <StringStreamBuffer>().GetStringOffset(member.Name);
            row.Column3 = guidStream.GetGuidOffset(member.Mvid);
            row.Column4 = guidStream.GetGuidOffset(member.EncId);
            row.Column5 = guidStream.GetGuidOffset(member.EncBaseId);
        }
Beispiel #28
0
        protected override void UpdateMember(NetBuildingContext context, TypeDefinition member)
        {
            var stringStream = context.GetStreamBuffer <StringStreamBuffer>();

            var row = member.MetadataRow;

            row.Column1 = (uint)member.Attributes;
            row.Column2 = stringStream.GetStringOffset(member.Name);
            row.Column3 = stringStream.GetStringOffset(member.Namespace);
            row.Column4 = member.BaseType == null ? 0 : TableStream.GetIndexEncoder(CodedIndex.TypeDefOrRef)
                          .EncodeToken(member.BaseType.MetadataToken);
            // TODO: update field and method list.
        }
Beispiel #29
0
 public MethodBodyOperandBuilder(NetBuildingContext buildingContext, MethodBody owner)
 {
     if (buildingContext == null)
     {
         throw new ArgumentNullException("buildingContext");
     }
     if (owner == null)
     {
         throw new ArgumentNullException("owner");
     }
     _buildingContext = buildingContext;
     _owner           = owner;
 }
Beispiel #30
0
        protected override void UpdateMember(NetBuildingContext context, ExportedType member)
        {
            var stringStream = context.GetStreamBuffer <StringStreamBuffer>();

            var row = member.MetadataRow;

            row.Column1 = (uint)member.Attributes;
            row.Column2 = member.TypeDefId;
            row.Column3 = stringStream.GetStringOffset(member.TypeName);
            row.Column4 = stringStream.GetStringOffset(member.TypeNamespace);
            row.Column5 = TableStream.GetIndexEncoder(CodedIndex.Implementation)
                          .EncodeToken(member.Implementation.MetadataToken);
        }
Beispiel #31
0
 public MethodBodyOperandBuilder(NetBuildingContext buildingContext, MethodBody owner)
 {
     if (buildingContext == null)
         throw new ArgumentNullException("buildingContext");
     if (owner == null)
         throw new ArgumentNullException("owner");
     _buildingContext = buildingContext;
     _owner = owner;
 }
Beispiel #32
0
 /// <summary>
 /// Rebuilds and writes the assembly to a destination, using the specified building parameters.
 /// </summary>
 /// <param name="parameters">The parameters to use for building the assembly image.</param>
 public void Write(BuildingParameters parameters)
 {
     var builder = new NetAssemblyBuilder(this, parameters);
     var context = new NetBuildingContext(builder);
     builder.Build(context);
     builder.UpdateOffsets(context);
     builder.UpdateReferences(context);
     builder.Write(new WritingContext(this, parameters.Writer, context));
 }
Beispiel #33
0
 public abstract void UpdateRows(NetBuildingContext context);