internal static void Read(PEReader buff, TableRow[] sigs) { for (int i = 0; i < sigs.Length; i++) { uint sigIx = buff.GetBlobIx(); uint tag = buff.FirstBlobByte(sigIx); if (tag == LocalSig.LocalSigByte) { sigs[i] = new LocalSig(sigIx); } else if (tag == Field.FieldTag) { sigs[i] = new Signature(sigIx); } else { sigs[i] = new CalliSig(sigIx); } sigs[i].Row = (uint)i + 1; } }
internal static void ReadMember(PEReader buff, TableRow[] members) { Contract.Requires(buff != null); Contract.Requires(members != null); for (int i = 0; i < members.Length; i++) { uint parenIx = buff.GetCodedIndex(CIx.MemberRefParent); string memName = buff.GetString(); uint sigIx = buff.GetBlobIx(); if (buff.FirstBlobByte(sigIx) == Field.FieldTag) // got a field members[i] = new FieldRef(parenIx, memName, sigIx); else members[i] = new MethodRef(parenIx, memName, sigIx); } }