// dnlib: See LICENSE.txt for more info
using dnlib.DotNet.MD;
using dnlib.Protection;
using dnlib.Utils;
namespace dnlib.DotNet.Writer {
///
/// Writes s
///
public static class MDTableWriter {
///
/// Writes a Module table
///
/// Writer
/// Metadata
/// Table
public static void Write(this DataWriter writer, Metadata metadata, MDTable table) {
var columns = table.TableInfo.Columns;
var columns1 = columns[1];
var columns2 = columns[2];
var columns3 = columns[3];
var columns4 = columns[4];
var stringsHeap = metadata.StringsHeap;
for (int i = 0; i < table.Rows; i++) {
var row = table[(uint)i + 1];
writer.WriteUInt16(row.Generation);
columns1.Write24(writer, stringsHeap.GetOffset(row.Name));
columns2.Write24(writer, row.Mvid);
columns3.Write24(writer, row.EncId);
columns4.Write24(writer, row.EncBaseId);
}
}
///
/// Writes a TypeRef table
///
/// Writer
/// Metadata
/// Table
public static void Write(this DataWriter writer, Metadata metadata, MDTable table) {
var columns = table.TableInfo.Columns;
var columns0 = columns[0];
var columns1 = columns[1];
var columns2 = columns[2];
var stringsHeap = metadata.StringsHeap;
for (int i = 0; i < table.Rows; i++) {
var row = table[(uint)i + 1];
columns0.Write24(writer, row.ResolutionScope);
columns1.Write24(writer, stringsHeap.GetOffset(row.Name));
columns2.Write24(writer, stringsHeap.GetOffset(row.Namespace));
}
}
///
/// Writes a TypeDef table
///
/// Writer
/// Metadata
/// Table
public static void Write(this DataWriter writer, Metadata metadata, MDTable table) {
var columns = table.TableInfo.Columns;
var columns1 = columns[1];
var columns2 = columns[2];
var columns3 = columns[3];
var columns4 = columns[4];
var columns5 = columns[5];
var stringsHeap = metadata.StringsHeap;
for (int i = 0; i < table.Rows; i++) {
var row = table[(uint)i + 1];
EncryptionUtil.WriteWithNotSegmentEncIfNeed(writer, w => {
w.WriteUInt32(row.Flags);
columns1.Write24(w, stringsHeap.GetOffset(row.Name));
columns2.Write24(w, stringsHeap.GetOffset(row.Namespace));
columns3.Write24(w, row.Extends);
columns4.Write24(w, row.FieldList);
columns5.Write24(w, row.MethodList);
}, enc => enc.LazyTableEnc);
//writer.WriteUInt32(row.Flags);
//columns1.Write24(writer, stringsHeap.GetOffset(row.Name));
//columns2.Write24(writer, stringsHeap.GetOffset(row.Namespace));
//columns3.Write24(writer, row.Extends);
//columns4.Write24(writer, row.FieldList);
//columns5.Write24(writer, row.MethodList);
}
}
///
/// Writes a FieldPtr table
///
/// Writer
/// Metadata
/// Table
public static void Write(this DataWriter writer, Metadata metadata, MDTable table) {
var columns = table.TableInfo.Columns;
var columns0 = columns[0];
for (int i = 0; i < table.Rows; i++) {
var row = table[(uint)i + 1];
columns0.Write24(writer, row.Field);
}
}
///
/// Writes a Field table
///
/// Writer
/// Metadata
/// Table
public static void Write(this DataWriter writer, Metadata metadata, MDTable table) {
var columns = table.TableInfo.Columns;
var columns1 = columns[1];
var columns2 = columns[2];
var stringsHeap = metadata.StringsHeap;
for (int i = 0; i < table.Rows; i++) {
var row = table[(uint)i + 1];
writer.WriteUInt16(row.Flags);
columns1.Write24(writer, stringsHeap.GetOffset(row.Name));
columns2.Write24(writer, row.Signature);
}
}
///
/// Writes a MethodPtr table
///
/// Writer
/// Metadata
/// Table
public static void Write(this DataWriter writer, Metadata metadata, MDTable table) {
var columns = table.TableInfo.Columns;
var columns0 = columns[0];
for (int i = 0; i < table.Rows; i++) {
var row = table[(uint)i + 1];
columns0.Write24(writer, row.Method);
}
}
///
/// Writes a Method table
///
/// Writer
/// Metadata
/// Table
public static void Write(this DataWriter writer, Metadata metadata, MDTable table) {
var columns = table.TableInfo.Columns;
var columns3 = columns[3];
var columns4 = columns[4];
var columns5 = columns[5];
var stringsHeap = metadata.StringsHeap;
for (int i = 0; i < table.Rows; i++) {
var row = table[(uint)i + 1];
writer.WriteUInt32(row.RVA);
writer.WriteUInt16(row.ImplFlags);
writer.WriteUInt16(row.Flags);
columns3.Write24(writer, stringsHeap.GetOffset(row.Name));
columns4.Write24(writer, row.Signature);
columns5.Write24(writer, row.ParamList);
}
}
///
/// Writes a ParamPtr table
///
/// Writer
/// Metadata
/// Table
public static void Write(this DataWriter writer, Metadata metadata, MDTable table) {
var columns = table.TableInfo.Columns;
var columns0 = columns[0];
for (int i = 0; i < table.Rows; i++) {
var row = table[(uint)i + 1];
columns0.Write24(writer, row.Param);
}
}
///
/// Writes a Param table
///
/// Writer
/// Metadata
/// Table
public static void Write(this DataWriter writer, Metadata metadata, MDTable table) {
var columns = table.TableInfo.Columns;
var columns2 = columns[2];
var stringsHeap = metadata.StringsHeap;
for (int i = 0; i < table.Rows; i++) {
var row = table[(uint)i + 1];
writer.WriteUInt16(row.Flags);
writer.WriteUInt16(row.Sequence);
columns2.Write24(writer, stringsHeap.GetOffset(row.Name));
}
}
///
/// Writes a InterfaceImpl table
///
/// Writer
/// Metadata
/// Table
public static void Write(this DataWriter writer, Metadata metadata, MDTable table) {
var columns = table.TableInfo.Columns;
var columns0 = columns[0];
var columns1 = columns[1];
for (int i = 0; i < table.Rows; i++) {
var row = table[(uint)i + 1];
columns0.Write24(writer, row.Class);
columns1.Write24(writer, row.Interface);
}
}
///
/// Writes a MemberRef table
///
/// Writer
/// Metadata
/// Table
public static void Write(this DataWriter writer, Metadata metadata, MDTable table) {
var columns = table.TableInfo.Columns;
var columns0 = columns[0];
var columns1 = columns[1];
var columns2 = columns[2];
var stringsHeap = metadata.StringsHeap;
for (int i = 0; i < table.Rows; i++) {
var row = table[(uint)i + 1];
columns0.Write24(writer, row.Class);
columns1.Write24(writer, stringsHeap.GetOffset(row.Name));
columns2.Write24(writer, row.Signature);
}
}
///
/// Writes a Constant table
///
/// Writer
/// Metadata
/// Table
public static void Write(this DataWriter writer, Metadata metadata, MDTable table) {
var columns = table.TableInfo.Columns;
var columns2 = columns[2];
var columns3 = columns[3];
for (int i = 0; i < table.Rows; i++) {
var row = table[(uint)i + 1];
writer.WriteByte(row.Type);
writer.WriteByte(row.Padding);
columns2.Write24(writer, row.Parent);
columns3.Write24(writer, row.Value);
}
}
///
/// Writes a CustomAttribute table
///
/// Writer
/// Metadata
/// Table
public static void Write(this DataWriter writer, Metadata metadata, MDTable table) {
var columns = table.TableInfo.Columns;
var columns0 = columns[0];
var columns1 = columns[1];
var columns2 = columns[2];
for (int i = 0; i < table.Rows; i++) {
var row = table[(uint)i + 1];
columns0.Write24(writer, row.Parent);
columns1.Write24(writer, row.Type);
columns2.Write24(writer, row.Value);
}
}
///
/// Writes a FieldMarshal table
///
/// Writer
/// Metadata
/// Table
public static void Write(this DataWriter writer, Metadata metadata, MDTable table) {
var columns = table.TableInfo.Columns;
var columns0 = columns[0];
var columns1 = columns[1];
for (int i = 0; i < table.Rows; i++) {
var row = table[(uint)i + 1];
columns0.Write24(writer, row.Parent);
columns1.Write24(writer, row.NativeType);
}
}
///
/// Writes a DeclSecurity table
///
/// Writer
/// Metadata
/// Table
public static void Write(this DataWriter writer, Metadata metadata, MDTable table) {
var columns = table.TableInfo.Columns;
var columns1 = columns[1];
var columns2 = columns[2];
for (int i = 0; i < table.Rows; i++) {
var row = table[(uint)i + 1];
writer.WriteInt16(row.Action);
columns1.Write24(writer, row.Parent);
columns2.Write24(writer, row.PermissionSet);
}
}
///
/// Writes a ClassLayout table
///
/// Writer
/// Metadata
/// Table
public static void Write(this DataWriter writer, Metadata metadata, MDTable table) {
var columns = table.TableInfo.Columns;
var columns2 = columns[2];
for (int i = 0; i < table.Rows; i++) {
var row = table[(uint)i + 1];
writer.WriteUInt16(row.PackingSize);
writer.WriteUInt32(row.ClassSize);
columns2.Write24(writer, row.Parent);
}
}
///
/// Writes a FieldLayout table
///
/// Writer
/// Metadata
/// Table
public static void Write(this DataWriter writer, Metadata metadata, MDTable table) {
var columns = table.TableInfo.Columns;
var columns1 = columns[1];
for (int i = 0; i < table.Rows; i++) {
var row = table[(uint)i + 1];
writer.WriteUInt32(row.OffSet);
columns1.Write24(writer, row.Field);
}
}
///
/// Writes a StandAloneSig table
///
/// Writer
/// Metadata
/// Table
public static void Write(this DataWriter writer, Metadata metadata, MDTable table) {
var columns = table.TableInfo.Columns;
var columns0 = columns[0];
for (int i = 0; i < table.Rows; i++) {
var row = table[(uint)i + 1];
columns0.Write24(writer, row.Signature);
}
}
///
/// Writes a EventMap table
///
/// Writer
/// Metadata
/// Table
public static void Write(this DataWriter writer, Metadata metadata, MDTable table) {
var columns = table.TableInfo.Columns;
var columns0 = columns[0];
var columns1 = columns[1];
for (int i = 0; i < table.Rows; i++) {
var row = table[(uint)i + 1];
columns0.Write24(writer, row.Parent);
columns1.Write24(writer, row.EventList);
}
}
///
/// Writes a EventPtr table
///
/// Writer
/// Metadata
/// Table
public static void Write(this DataWriter writer, Metadata metadata, MDTable table) {
var columns = table.TableInfo.Columns;
var columns0 = columns[0];
for (int i = 0; i < table.Rows; i++) {
var row = table[(uint)i + 1];
columns0.Write24(writer, row.Event);
}
}
///
/// Writes a Event table
///
/// Writer
/// Metadata
/// Table
public static void Write(this DataWriter writer, Metadata metadata, MDTable table) {
var columns = table.TableInfo.Columns;
var columns1 = columns[1];
var columns2 = columns[2];
var stringsHeap = metadata.StringsHeap;
for (int i = 0; i < table.Rows; i++) {
var row = table[(uint)i + 1];
writer.WriteUInt16(row.EventFlags);
columns1.Write24(writer, stringsHeap.GetOffset(row.Name));
columns2.Write24(writer, row.EventType);
}
}
///
/// Writes a PropertyMap table
///
/// Writer
/// Metadata
/// Table
public static void Write(this DataWriter writer, Metadata metadata, MDTable table) {
var columns = table.TableInfo.Columns;
var columns0 = columns[0];
var columns1 = columns[1];
for (int i = 0; i < table.Rows; i++) {
var row = table[(uint)i + 1];
columns0.Write24(writer, row.Parent);
columns1.Write24(writer, row.PropertyList);
}
}
///
/// Writes a PropertyPtr table
///
/// Writer
/// Metadata
/// Table
public static void Write(this DataWriter writer, Metadata metadata, MDTable table) {
var columns = table.TableInfo.Columns;
var columns0 = columns[0];
for (int i = 0; i < table.Rows; i++) {
var row = table[(uint)i + 1];
columns0.Write24(writer, row.Property);
}
}
///
/// Writes a Property table
///
/// Writer
/// Metadata
/// Table
public static void Write(this DataWriter writer, Metadata metadata, MDTable table) {
var columns = table.TableInfo.Columns;
var columns1 = columns[1];
var columns2 = columns[2];
var stringsHeap = metadata.StringsHeap;
for (int i = 0; i < table.Rows; i++) {
var row = table[(uint)i + 1];
writer.WriteUInt16(row.PropFlags);
columns1.Write24(writer, stringsHeap.GetOffset(row.Name));
columns2.Write24(writer, row.Type);
}
}
///
/// Writes a MethodSemantics table
///
/// Writer
/// Metadata
/// Table
public static void Write(this DataWriter writer, Metadata metadata, MDTable table) {
var columns = table.TableInfo.Columns;
var columns1 = columns[1];
var columns2 = columns[2];
for (int i = 0; i < table.Rows; i++) {
var row = table[(uint)i + 1];
writer.WriteUInt16(row.Semantic);
columns1.Write24(writer, row.Method);
columns2.Write24(writer, row.Association);
}
}
///
/// Writes a MethodImpl table
///
/// Writer
/// Metadata
/// Table
public static void Write(this DataWriter writer, Metadata metadata, MDTable table) {
var columns = table.TableInfo.Columns;
var columns0 = columns[0];
var columns1 = columns[1];
var columns2 = columns[2];
for (int i = 0; i < table.Rows; i++) {
var row = table[(uint)i + 1];
columns0.Write24(writer, row.Class);
columns1.Write24(writer, row.MethodBody);
columns2.Write24(writer, row.MethodDeclaration);
}
}
///
/// Writes a ModuleRef table
///
/// Writer
/// Metadata
/// Table
public static void Write(this DataWriter writer, Metadata metadata, MDTable table) {
var columns = table.TableInfo.Columns;
var columns0 = columns[0];
var stringsHeap = metadata.StringsHeap;
for (int i = 0; i < table.Rows; i++) {
var row = table[(uint)i + 1];
columns0.Write24(writer, stringsHeap.GetOffset(row.Name));
}
}
///
/// Writes a TypeSpec table
///
/// Writer
/// Metadata
/// Table
public static void Write(this DataWriter writer, Metadata metadata, MDTable table) {
var columns = table.TableInfo.Columns;
var columns0 = columns[0];
for (int i = 0; i < table.Rows; i++) {
var row = table[(uint)i + 1];
columns0.Write24(writer, row.Signature);
}
}
///
/// Writes a ImplMap table
///
/// Writer
/// Metadata
/// Table
public static void Write(this DataWriter writer, Metadata metadata, MDTable table) {
var columns = table.TableInfo.Columns;
var columns1 = columns[1];
var columns2 = columns[2];
var columns3 = columns[3];
var stringsHeap = metadata.StringsHeap;
for (int i = 0; i < table.Rows; i++) {
var row = table[(uint)i + 1];
writer.WriteUInt16(row.MappingFlags);
columns1.Write24(writer, row.MemberForwarded);
columns2.Write24(writer, stringsHeap.GetOffset(row.ImportName));
columns3.Write24(writer, row.ImportScope);
}
}
///
/// Writes a FieldRVA table
///
/// Writer
/// Metadata
/// Table
public static void Write(this DataWriter writer, Metadata metadata, MDTable table) {
var columns = table.TableInfo.Columns;
var columns1 = columns[1];
for (int i = 0; i < table.Rows; i++) {
var row = table[(uint)i + 1];
writer.WriteUInt32(row.RVA);
columns1.Write24(writer, row.Field);
}
}
///
/// Writes a ENCLog table
///
/// Writer
/// Metadata
/// Table
public static void Write(this DataWriter writer, Metadata metadata, MDTable table) {
for (int i = 0; i < table.Rows; i++) {
var row = table[(uint)i + 1];
writer.WriteUInt32(row.Token);
writer.WriteUInt32(row.FuncCode);
}
}
///
/// Writes a ENCMap table
///
/// Writer
/// Metadata
/// Table
public static void Write(this DataWriter writer, Metadata metadata, MDTable table) {
for (int i = 0; i < table.Rows; i++) {
var row = table[(uint)i + 1];
writer.WriteUInt32(row.Token);
}
}
///
/// Writes a Assembly table
///
/// Writer
/// Metadata
/// Table
public static void Write(this DataWriter writer, Metadata metadata, MDTable table) {
var columns = table.TableInfo.Columns;
var columns6 = columns[6];
var columns7 = columns[7];
var columns8 = columns[8];
var stringsHeap = metadata.StringsHeap;
for (int i = 0; i < table.Rows; i++) {
var row = table[(uint)i + 1];
writer.WriteUInt32(row.HashAlgId);
writer.WriteUInt16(row.MajorVersion);
writer.WriteUInt16(row.MinorVersion);
writer.WriteUInt16(row.BuildNumber);
writer.WriteUInt16(row.RevisionNumber);
writer.WriteUInt32(row.Flags);
columns6.Write24(writer, row.PublicKey);
columns7.Write24(writer, stringsHeap.GetOffset(row.Name));
columns8.Write24(writer, stringsHeap.GetOffset(row.Locale));
}
}
///
/// Writes a AssemblyProcessor table
///
/// Writer
/// Metadata
/// Table
public static void Write(this DataWriter writer, Metadata metadata, MDTable table) {
for (int i = 0; i < table.Rows; i++) {
var row = table[(uint)i + 1];
writer.WriteUInt32(row.Processor);
}
}
///
/// Writes a AssemblyOS table
///
/// Writer
/// Metadata
/// Table
public static void Write(this DataWriter writer, Metadata metadata, MDTable table) {
for (int i = 0; i < table.Rows; i++) {
var row = table[(uint)i + 1];
writer.WriteUInt32(row.OSPlatformId);
writer.WriteUInt32(row.OSMajorVersion);
writer.WriteUInt32(row.OSMinorVersion);
}
}
///
/// Writes a AssemblyRef table
///
/// Writer
/// Metadata
/// Table
public static void Write(this DataWriter writer, Metadata metadata, MDTable table) {
var columns = table.TableInfo.Columns;
var columns5 = columns[5];
var columns6 = columns[6];
var columns7 = columns[7];
var columns8 = columns[8];
var stringsHeap = metadata.StringsHeap;
for (int i = 0; i < table.Rows; i++) {
var row = table[(uint)i + 1];
writer.WriteUInt16(row.MajorVersion);
writer.WriteUInt16(row.MinorVersion);
writer.WriteUInt16(row.BuildNumber);
writer.WriteUInt16(row.RevisionNumber);
writer.WriteUInt32(row.Flags);
columns5.Write24(writer, row.PublicKeyOrToken);
columns6.Write24(writer, stringsHeap.GetOffset(row.Name));
columns7.Write24(writer, stringsHeap.GetOffset(row.Locale));
columns8.Write24(writer, row.HashValue);
}
}
///
/// Writes a AssemblyRefProcessor table
///
/// Writer
/// Metadata
/// Table
public static void Write(this DataWriter writer, Metadata metadata, MDTable table) {
var columns = table.TableInfo.Columns;
var columns1 = columns[1];
for (int i = 0; i < table.Rows; i++) {
var row = table[(uint)i + 1];
writer.WriteUInt32(row.Processor);
columns1.Write24(writer, row.AssemblyRef);
}
}
///
/// Writes a AssemblyRefOS table
///
/// Writer
/// Metadata
/// Table
public static void Write(this DataWriter writer, Metadata metadata, MDTable table) {
var columns = table.TableInfo.Columns;
var columns3 = columns[3];
for (int i = 0; i < table.Rows; i++) {
var row = table[(uint)i + 1];
writer.WriteUInt32(row.OSPlatformId);
writer.WriteUInt32(row.OSMajorVersion);
writer.WriteUInt32(row.OSMinorVersion);
columns3.Write24(writer, row.AssemblyRef);
}
}
///
/// Writes a File table
///
/// Writer
/// Metadata
/// Table
public static void Write(this DataWriter writer, Metadata metadata, MDTable table) {
var columns = table.TableInfo.Columns;
var columns1 = columns[1];
var columns2 = columns[2];
var stringsHeap = metadata.StringsHeap;
for (int i = 0; i < table.Rows; i++) {
var row = table[(uint)i + 1];
writer.WriteUInt32(row.Flags);
columns1.Write24(writer, stringsHeap.GetOffset(row.Name));
columns2.Write24(writer, row.HashValue);
}
}
///
/// Writes a ExportedType table
///
/// Writer
/// Metadata
/// Table
public static void Write(this DataWriter writer, Metadata metadata, MDTable table) {
var columns = table.TableInfo.Columns;
var columns2 = columns[2];
var columns3 = columns[3];
var columns4 = columns[4];
var stringsHeap = metadata.StringsHeap;
for (int i = 0; i < table.Rows; i++) {
var row = table[(uint)i + 1];
writer.WriteUInt32(row.Flags);
writer.WriteUInt32(row.TypeDefId);
columns2.Write24(writer, stringsHeap.GetOffset(row.TypeName));
columns3.Write24(writer, stringsHeap.GetOffset(row.TypeNamespace));
columns4.Write24(writer, row.Implementation);
}
}
///
/// Writes a ManifestResource table
///
/// Writer
/// Metadata
/// Table
public static void Write(this DataWriter writer, Metadata metadata, MDTable table) {
var columns = table.TableInfo.Columns;
var columns2 = columns[2];
var columns3 = columns[3];
var stringsHeap = metadata.StringsHeap;
for (int i = 0; i < table.Rows; i++) {
var row = table[(uint)i + 1];
writer.WriteUInt32(row.Offset);
writer.WriteUInt32(row.Flags);
columns2.Write24(writer, stringsHeap.GetOffset(row.Name));
columns3.Write24(writer, row.Implementation);
}
}
///
/// Writes a NestedClass table
///
/// Writer
/// Metadata
/// Table
public static void Write(this DataWriter writer, Metadata metadata, MDTable table) {
var columns = table.TableInfo.Columns;
var columns0 = columns[0];
var columns1 = columns[1];
for (int i = 0; i < table.Rows; i++) {
var row = table[(uint)i + 1];
columns0.Write24(writer, row.NestedClass);
columns1.Write24(writer, row.EnclosingClass);
}
}
///
/// Writes a GenericParam table
///
/// Writer
/// Metadata
/// Table
public static void Write(this DataWriter writer, Metadata metadata, MDTable table) {
var columns = table.TableInfo.Columns;
var columns2 = columns[2];
var columns3 = columns[3];
var stringsHeap = metadata.StringsHeap;
if (columns.Length >= 5) {
var columns4 = columns[4];
for (int i = 0; i < table.Rows; i++) {
var row = table[(uint)i + 1];
writer.WriteUInt16(row.Number);
writer.WriteUInt16(row.Flags);
columns2.Write24(writer, row.Owner);
columns3.Write24(writer, stringsHeap.GetOffset(row.Name));
columns4.Write24(writer, row.Kind);
}
}
else {
for (int i = 0; i < table.Rows; i++) {
var row = table[(uint)i + 1];
writer.WriteUInt16(row.Number);
writer.WriteUInt16(row.Flags);
columns2.Write24(writer, row.Owner);
columns3.Write24(writer, stringsHeap.GetOffset(row.Name));
}
}
}
///
/// Writes a MethodSpec table
///
/// Writer
/// Metadata
/// Table
public static void Write(this DataWriter writer, Metadata metadata, MDTable table) {
var columns = table.TableInfo.Columns;
var columns0 = columns[0];
var columns1 = columns[1];
for (int i = 0; i < table.Rows; i++) {
var row = table[(uint)i + 1];
columns0.Write24(writer, row.Method);
columns1.Write24(writer, row.Instantiation);
}
}
///
/// Writes a GenericParamConstraint table
///
/// Writer
/// Metadata
/// Table
public static void Write(this DataWriter writer, Metadata metadata, MDTable table) {
var columns = table.TableInfo.Columns;
var columns0 = columns[0];
var columns1 = columns[1];
for (int i = 0; i < table.Rows; i++) {
var row = table[(uint)i + 1];
columns0.Write24(writer, row.Owner);
columns1.Write24(writer, row.Constraint);
}
}
///
/// Writes a Document table
///
/// Writer
/// Metadata
/// Table
public static void Write(this DataWriter writer, Metadata metadata, MDTable table) {
var columns = table.TableInfo.Columns;
var columns0 = columns[0];
var columns1 = columns[1];
var columns2 = columns[2];
var columns3 = columns[3];
for (int i = 0; i < table.Rows; i++) {
var row = table[(uint)i + 1];
columns0.Write24(writer, row.Name);
columns1.Write24(writer, row.HashAlgorithm);
columns2.Write24(writer, row.Hash);
columns3.Write24(writer, row.Language);
}
}
///
/// Writes a MethodDebugInformation table
///
/// Writer
/// Metadata
/// Table
public static void Write(this DataWriter writer, Metadata metadata, MDTable table) {
var columns = table.TableInfo.Columns;
var columns0 = columns[0];
var columns1 = columns[1];
for (int i = 0; i < table.Rows; i++) {
var row = table[(uint)i + 1];
columns0.Write24(writer, row.Document);
columns1.Write24(writer, row.SequencePoints);
}
}
///
/// Writes a LocalScope table
///
/// Writer
/// Metadata
/// Table
public static void Write(this DataWriter writer, Metadata metadata, MDTable table) {
var columns = table.TableInfo.Columns;
var columns0 = columns[0];
var columns1 = columns[1];
var columns2 = columns[2];
var columns3 = columns[3];
for (int i = 0; i < table.Rows; i++) {
var row = table[(uint)i + 1];
columns0.Write24(writer, row.Method);
columns1.Write24(writer, row.ImportScope);
columns2.Write24(writer, row.VariableList);
columns3.Write24(writer, row.ConstantList);
writer.WriteUInt32(row.StartOffset);
writer.WriteUInt32(row.Length);
}
}
///
/// Writes a LocalVariable table
///
/// Writer
/// Metadata
/// Table
public static void Write(this DataWriter writer, Metadata metadata, MDTable table) {
var columns = table.TableInfo.Columns;
var columns2 = columns[2];
var stringsHeap = metadata.StringsHeap;
for (int i = 0; i < table.Rows; i++) {
var row = table[(uint)i + 1];
writer.WriteUInt16(row.Attributes);
writer.WriteUInt16(row.Index);
columns2.Write24(writer, stringsHeap.GetOffset(row.Name));
}
}
///
/// Writes a LocalConstant table
///
/// Writer
/// Metadata
/// Table
public static void Write(this DataWriter writer, Metadata metadata, MDTable table) {
var columns = table.TableInfo.Columns;
var columns0 = columns[0];
var columns1 = columns[1];
var stringsHeap = metadata.StringsHeap;
for (int i = 0; i < table.Rows; i++) {
var row = table[(uint)i + 1];
columns0.Write24(writer, stringsHeap.GetOffset(row.Name));
columns1.Write24(writer, row.Signature);
}
}
///
/// Writes a ImportScope table
///
/// Writer
/// Metadata
/// Table
public static void Write(this DataWriter writer, Metadata metadata, MDTable table) {
var columns = table.TableInfo.Columns;
var columns0 = columns[0];
var columns1 = columns[1];
for (int i = 0; i < table.Rows; i++) {
var row = table[(uint)i + 1];
columns0.Write24(writer, row.Parent);
columns1.Write24(writer, row.Imports);
}
}
///
/// Writes a StateMachineMethod table
///
/// Writer
/// Metadata
/// Table
public static void Write(this DataWriter writer, Metadata metadata, MDTable table) {
var columns = table.TableInfo.Columns;
var columns0 = columns[0];
var columns1 = columns[1];
for (int i = 0; i < table.Rows; i++) {
var row = table[(uint)i + 1];
columns0.Write24(writer, row.MoveNextMethod);
columns1.Write24(writer, row.KickoffMethod);
}
}
///
/// Writes a CustomDebugInformation table
///
/// Writer
/// Metadata
/// Table
public static void Write(this DataWriter writer, Metadata metadata, MDTable table) {
var columns = table.TableInfo.Columns;
var columns0 = columns[0];
var columns1 = columns[1];
var columns2 = columns[2];
for (int i = 0; i < table.Rows; i++) {
var row = table[(uint)i + 1];
columns0.Write24(writer, row.Parent);
columns1.Write24(writer, row.Kind);
columns2.Write24(writer, row.Value);
}
}
}
}