/// <inheritdoc /> public override void Write(MetadataBuffer buffer, IBinaryStreamWriter writer) { writer.WriteByte((byte)ElementType.FnPtr); Signature.Write(buffer, writer); base.Write(buffer, writer); }
public override void Write(MetadataBuffer buffer, IBinaryStreamWriter writer) { if (!Validate()) { throw new InvalidOperationException(); } writer.WriteByte((byte)ElementType); BaseType.Write(buffer, writer); writer.WriteCompressedUInt32((uint)Dimensions.Count); var sizedDimensions = Dimensions.Where(x => x.Size.HasValue).ToArray(); writer.WriteCompressedUInt32((uint)sizedDimensions.Length); foreach (var sizedDimension in sizedDimensions) { writer.WriteCompressedUInt32((uint)sizedDimension.Size.Value); } var boundedDimensions = Dimensions.Where(x => x.LowerBound.HasValue).ToArray(); writer.WriteCompressedUInt32((uint)boundedDimensions.Length); foreach (var boundedDimension in boundedDimensions) { writer.WriteCompressedUInt32((uint)boundedDimension.LowerBound.Value); } base.Write(buffer, writer); }
/// <inheritdoc /> public override void Prepare(MetadataBuffer buffer) { foreach (var variable in Variables) { variable.Prepare(buffer); } }
public override void Write(MetadataBuffer buffer, IBinaryStreamWriter writer) { writer.WriteByte((byte)NativeType); writer.WriteByte((byte)ElementType); base.Write(buffer, writer); }
/// <inheritdoc /> public override void Write(MetadataBuffer buffer, IBinaryStreamWriter writer) { if (ExtraData != null) { writer.WriteBytes(ExtraData); } }
public override void Write(MetadataBuffer buffer, IBinaryStreamWriter writer) { writer.WriteByte((byte)ArgumentMemberType); ArgumentType.Write(buffer, writer); // TODO: write FieldOrPropType instead. writer.WriteSerString(MemberName); Argument.Write(buffer, writer); }
/// <inheritdoc /> public override uint GetPhysicalLength(MetadataBuffer buffer) { return((uint)(sizeof(byte) + GenericArguments.Count.GetCompressedSize() + GenericArguments.Sum(x => x.GetPhysicalLength(buffer))) + base.GetPhysicalLength(buffer)); }
public override uint GetPhysicalLength(MetadataBuffer buffer) { return((uint) (ArgumentType.ElementType != ElementType.SzArray ? Elements[0].GetPhysicalLength(buffer) : sizeof(uint) + Elements.Sum(x => x.GetPhysicalLength(buffer)))); }
/// <inheritdoc /> public override void Prepare(MetadataBuffer buffer) { foreach (var attribute in Attributes) { attribute.Prepare(buffer); } }
public IDictionary <IMetadataMember, MetadataToken> UnlockMetadata() { var buffer = new MetadataBuffer(Image); buffer.TableStreamBuffer.AddAssembly(Image.Assembly); NetDirectory.ResourcesManifest = buffer.ResourcesBuffer.CreateDirectory(); var buffers = new MetadataStreamBuffer[] { buffer.TableStreamBuffer, buffer.BlobStreamBuffer, buffer.GuidStreamBuffer, buffer.StringStreamBuffer, buffer.UserStringStreamBuffer }; foreach (var streamBuffer in buffers) { var header = StreamHeaders.FirstOrDefault(x => x.Name == streamBuffer.Name) ?? new MetadataStreamHeader(streamBuffer.Name); header.Stream = streamBuffer.CreateStream(); } Image = null; return(buffer.TableStreamBuffer.GetNewTokenMapping()); }
/// <inheritdoc /> public override void Write(MetadataBuffer buffer, IBinaryStreamWriter writer) { writer.WriteByte(0x06); FieldType.Write(buffer, writer); base.Write(buffer, writer); }
/// <inheritdoc /> public override void Prepare(MetadataBuffer buffer) { foreach (var argument in GenericArguments) { argument.Prepare(buffer); } }
/// <inheritdoc /> public override uint GetPhysicalLength(MetadataBuffer buffer) { return(sizeof(byte) + ArgumentType.GetPhysicalLength(buffer) + (MemberName?.GetSerStringSize() ?? sizeof(byte)) + Argument.GetPhysicalLength(buffer)); }
public override uint GetPhysicalLength(MetadataBuffer buffer) { if (!Validate()) { throw new InvalidOperationException(); } uint numSizes = 0u; uint numLoBounds = 0u; uint sizesAndLoBoundsLength = 0u; foreach (var dimension in Dimensions) { if (dimension.Size.HasValue) { numSizes++; sizesAndLoBoundsLength += dimension.Size.Value.GetCompressedSize(); } if (dimension.LowerBound.HasValue) { numLoBounds++; sizesAndLoBoundsLength += dimension.LowerBound.Value.GetCompressedSize(); } } return(sizeof(byte) + BaseType.GetPhysicalLength(buffer) + Dimensions.Count.GetCompressedSize() + numSizes.GetCompressedSize() + numLoBounds.GetCompressedSize() + sizesAndLoBoundsLength + base.GetPhysicalLength(buffer)); }
public void Write(MetadataBuffer buffer, IBinaryStreamWriter writer) { if (IsFat) { writer.WriteUInt32((uint)HandlerType); writer.WriteUInt32((uint)TryStart.Offset); writer.WriteUInt32((uint)(TryEnd.Offset - TryStart.Offset)); writer.WriteUInt32((uint)HandlerStart.Offset); writer.WriteUInt32((uint)(HandlerEnd.Offset - HandlerStart.Offset)); } else { writer.WriteUInt16((ushort)HandlerType); writer.WriteUInt16((ushort)TryStart.Offset); writer.WriteByte((byte)(TryEnd.Offset - TryStart.Offset)); writer.WriteUInt16((ushort)HandlerStart.Offset); writer.WriteByte((byte)(HandlerEnd.Offset - HandlerStart.Offset)); } switch (HandlerType) { case ExceptionHandlerType.Exception: writer.WriteUInt32(buffer.TableStreamBuffer.GetTypeToken(CatchType).ToUInt32()); break; case ExceptionHandlerType.Filter: writer.WriteUInt32((uint)FilterStart.Offset); break; default: writer.WriteUInt32(0); break; } }
/// <inheritdoc /> public override uint GetPhysicalLength(MetadataBuffer buffer) { return(sizeof(byte) + NumberOfElements.GetCompressedSize() + sizeof(byte) + base.GetPhysicalLength(buffer)); }
/// <inheritdoc /> public override void Write(MetadataBuffer buffer, IBinaryStreamWriter writer) { writer.WriteByte((byte)ElementType); writer.WriteCompressedUInt32((uint)Index); base.Write(buffer, writer); }
/// <inheritdoc /> public override uint GetPhysicalLength(MetadataBuffer buffer) { return((uint)(sizeof(byte) + Parameters.Count.GetCompressedSize() + PropertyType.GetPhysicalLength(buffer) + Parameters.Sum(x => x.GetPhysicalLength(buffer))) + base.GetPhysicalLength(buffer)); }
/// <inheritdoc /> public override void Prepare(MetadataBuffer buffer) { foreach (var parameter in Parameters) { parameter.Prepare(buffer); } ReturnType.Prepare(buffer); }
/// <inheritdoc /> public override void Prepare(MetadataBuffer buffer) { PropertyType.Prepare(buffer); foreach (var parameter in Parameters) { parameter.Prepare(buffer); } }
/// <inheritdoc /> public override void Prepare(MetadataBuffer buffer) { buffer.TableStreamBuffer.GetTypeToken(GenericType); foreach (var argument in GenericArguments) { argument.Prepare(buffer); } }
/// <inheritdoc /> public override uint GetPhysicalLength(MetadataBuffer buffer) { return((uint)(sizeof(ushort) + FixedArguments.Sum(x => x.GetPhysicalLength(buffer)) + sizeof(ushort) + NamedArguments.Sum(x => x.GetPhysicalLength(buffer))) + base.GetPhysicalLength(buffer)); }
public override void Prepare(MetadataBuffer buffer) { ArgumentType.Prepare(buffer); foreach (var element in Elements) { element.Prepare(buffer); } }
public override void Write(MetadataBuffer buffer, IBinaryStreamWriter writer) { writer.WriteByte((byte)NativeType); writer.WriteSerString(Guid.ToString("B")); writer.WriteSerString(UnmanagedType); writer.WriteSerString(ManagedType); writer.WriteSerString(Cookie); }
/// <inheritdoc /> public override void Write(MetadataBuffer buffer, IBinaryStreamWriter writer) { writer.WriteByte((byte)ElementType); WriteTypeDefOrRef(buffer, writer, ModifierType); BaseType.Write(buffer, writer); base.Write(buffer, writer); }
public override void Write(MetadataBuffer buffer, IBinaryStreamWriter writer) { writer.WriteByte(0x0A); writer.WriteCompressedUInt32((uint)GenericArguments.Count); foreach (var argument in GenericArguments) { argument.Write(buffer, writer); } }
public override uint GetPhysicalLength(MetadataBuffer buffer) { return(sizeof(byte) + sizeof(byte) + 38 + UnmanagedType.GetSerStringSize() + ManagedType.GetSerStringSize() + Cookie.GetSerStringSize() + base.GetPhysicalLength(buffer)); }
public override void Write(MetadataBuffer buffer, IBinaryStreamWriter writer) { writer.WriteByte(0x07); writer.WriteCompressedUInt32((uint)Variables.Count); foreach (var variable in Variables) { variable.Write(buffer, writer); } }
/// <inheritdoc /> public override uint GetPhysicalLength(MetadataBuffer buffer) { var encoder = buffer.TableStreamBuffer .GetIndexEncoder(CodedIndex.TypeDefOrRef); return(sizeof(byte) + encoder.EncodeToken(buffer.TableStreamBuffer.GetTypeToken(Type)).GetCompressedSize() + base.GetPhysicalLength(buffer)); }
/// <inheritdoc /> public override uint GetPhysicalLength(MetadataBuffer buffer) { return(2 * sizeof(byte) + (ParameterIndex.HasValue ? ParameterIndex.Value.GetCompressedSize() + (NumberOfElements.HasValue ? NumberOfElements.Value.GetCompressedSize() : 0) : 0) + base.GetPhysicalLength(buffer)); }