예제 #1
0
 public int GetHashCode(RawLocalScopeRow obj) =>
 (int)obj.Method +
 rol(obj.ImportScope, 3) +
 rol(obj.VariableList, 7) +
 rol(obj.ConstantList, 11) +
 rol(obj.StartOffset, 15) +
 rol(obj.Length, 19);
예제 #2
0
 public bool Equals(RawLocalScopeRow x, RawLocalScopeRow y) =>
 x.Method == y.Method &&
 x.ImportScope == y.ImportScope &&
 x.VariableList == y.VariableList &&
 x.ConstantList == y.ConstantList &&
 x.StartOffset == y.StartOffset &&
 x.Length == y.Length;
예제 #3
0
        /// <summary>
        /// Reads a raw <c>LocalScope</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 TryReadLocalScopeRow(uint rid, out RawLocalScopeRow row)
        {
            var table = LocalScopeTable;

            if (table.IsInvalidRID(rid))
            {
                row = default;
                return(false);
            }
            var reader = table.DataReader;

            reader.Position = (rid - 1) * (uint)table.TableInfo.RowSize;
            row             = new RawLocalScopeRow(
                table.Column0.Unsafe_Read24(ref reader),
                table.Column1.Unsafe_Read24(ref reader),
                table.Column2.Unsafe_Read24(ref reader),
                table.Column3.Unsafe_Read24(ref reader),
                reader.Unsafe_ReadUInt32(),
                reader.Unsafe_ReadUInt32());
            return(true);
        }
예제 #4
0
 static uint ReadLocalScopeColumnMethod(ref RawLocalScopeRow row, int index) => row[index];