void InitializeRawRow()
 {
     if (rawRow != null)
     {
         return;
     }
     rawRow = readerModule.TablesStream.ReadAssemblyRefRow(rid);
 }
Beispiel #2
0
 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);
Beispiel #3
0
 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;
Beispiel #4
0
        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);
        }
Beispiel #5
0
        /// <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);
        }
Beispiel #6
0
 static uint ReadAssemblyRefColumnMethod(ref RawAssemblyRefRow row, int index) => row[index];
Beispiel #7
0
 void InitializeRawRow_NoLock()
 {
     if (rawRow != null)
         return;
     rawRow = readerModule.TablesStream.ReadAssemblyRefRow(origRid);
 }