37 internal struct Record : IRecord
41 internal int Interface;
43 readonly
int IRecord.FilterKey =>
Class;
45 public readonly
int CompareTo(Record other) => Comparer<int>.Default.Compare(
Class, other.Class);
49 internal const int Index = (int)TableIndex.InterfaceImpl;
51 internal override void Read(Reader.MetadataReader mr)
53 for (
int i = 0; i < records.Length; i++)
55 records[i].Class = mr.ReadTypeDef();
56 records[i].Interface = mr.ReadTypeDefOrRef();
60 internal override void Write(ModuleBuilder module)
62 for (
int i = 0; i < rowCount; i++)
64 var h = module.Metadata.AddInterfaceImplementation(
65 (TypeDefinitionHandle)MetadataTokens.EntityHandle(records[i].Class),
66 MetadataTokens.EntityHandle(records[i].Interface));
68 Debug.Assert(h == MetadataTokens.InterfaceImplementationHandle(i + 1));
72 internal void Fixup(ModuleBuilder module)
74 for (
int i = 0; i < rowCount; i++)
76 module.FixupPseudoToken(
ref records[i].
Class);
77 module.FixupPseudoToken(
ref records[i].Interface);