void InitializeRawRow() { if (rawRow != null) { return; } rawRow = readerModule.TablesStream.ReadAssemblyRefRow(rid); }
public int GetHashCode(RawAssemblyRefRow obj) => (int)obj.MajorVersion + rol(obj.MinorVersion, 3) + rol(obj.BuildNumber, 7) + rol(obj.RevisionNumber, 11) + rol(obj.Flags, 15) + rol(obj.PublicKeyOrToken, 19) + rol(obj.Name, 23) + rol(obj.Locale, 27) + rol(obj.HashValue, 31);
public bool Equals(RawAssemblyRefRow x, RawAssemblyRefRow y) => x.MajorVersion == y.MajorVersion && x.MinorVersion == y.MinorVersion && x.BuildNumber == y.BuildNumber && x.RevisionNumber == y.RevisionNumber && x.Flags == y.Flags && x.PublicKeyOrToken == y.PublicKeyOrToken && x.Name == y.Name && x.Locale == y.Locale && x.HashValue == y.HashValue;
public uint CreateAssemblyRef(IAssembly assembly) { var rid = TablesHeap.AssemblyRefTable.Create(); var row = new RawAssemblyRefRow((ushort)assembly.Version.Major, (ushort)assembly.Version.Minor, (ushort)assembly.Version.Build, (ushort)assembly.Version.Revision, (uint)assembly.Attributes, BlobHeap.Create(GetPublicKeyOrTokenBytes(assembly.PublicKeyOrToken)), StringsHeap.Create(assembly.Name), StringsHeap.Create(assembly.Culture), BlobHeap.Create((assembly as AssemblyRef)?.Hash)); TablesHeap.AssemblyRefTable.Set(rid, ref row); return(rid); }
/// <summary> /// Reads a raw <c>AssemblyRef</c> row or returns false if the row doesn't exist /// </summary> /// <param name="rid">Row ID</param> /// <param name="row">Row data</param> /// <returns></returns> public bool TryReadAssemblyRefRow(uint rid, out RawAssemblyRefRow row) { var table = AssemblyRefTable; if (table.IsInvalidRID(rid)) { row = default; return(false); } var reader = table.DataReader; reader.Position = (rid - 1) * (uint)table.TableInfo.RowSize; row = new RawAssemblyRefRow( reader.Unsafe_ReadUInt16(), reader.Unsafe_ReadUInt16(), reader.Unsafe_ReadUInt16(), reader.Unsafe_ReadUInt16(), reader.Unsafe_ReadUInt32(), table.Column5.Unsafe_Read24(ref reader), table.Column6.Unsafe_Read24(ref reader), table.Column7.Unsafe_Read24(ref reader), table.Column8.Unsafe_Read24(ref reader)); return(true); }
static uint ReadAssemblyRefColumnMethod(ref RawAssemblyRefRow row, int index) => row[index];
void InitializeRawRow_NoLock() { if (rawRow != null) return; rawRow = readerModule.TablesStream.ReadAssemblyRefRow(origRid); }