示例#1
0
        /// <summary>
        /// Initializes a new instance of the <see cref="PdbSymbolField"/> class.
        /// </summary>
        /// <param name="parentType">The parent type.</param>
        /// <param name="record">Data member type record.</param>
        public PdbSymbolField(PdbSymbol parentType, DataMemberRecord record)
            : base(parentType)
        {
            Name     = record.Name;
            DataKind = DIA.DataKind.Member;
            Offset   = (int)record.FieldOffset;
            TypeRecord typeRecord = !record.Type.IsSimple ? parentType.PdbModule.PdbFile.TpiStream[record.Type] : null;

            if (typeRecord is BitFieldRecord bitFieldRecord)
            {
                LocationType = DIA.LocationType.BitField;
                BitPosition  = bitFieldRecord.BitOffset;
                BitSize      = bitFieldRecord.BitSize;
                Type         = parentType.PdbModule.GetSymbol(bitFieldRecord.Type);
            }
            else
            {
                LocationType = DIA.LocationType.ThisRel;
                Type         = parentType.PdbModule.GetSymbol(record.Type);
                Size         = Type.Size;
            }
        }
示例#2
0
 /// <summary>
 /// Initializes a new instance of the <see cref="PdbTypeField"/> class.
 /// </summary>
 /// <param name="containerType">Type that contains this field.</param>
 /// <param name="dataMemberRecord">The data member record.</param>
 internal PdbTypeField(PdbUserDefinedType containerType, DataMemberRecord dataMemberRecord)
 {
     ContainerType    = containerType;
     DataMemberRecord = dataMemberRecord;
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="PdbTypeBitField"/> class.
 /// </summary>
 /// <param name="containerType">Type that contains this field.</param>
 /// <param name="dataMemberRecord">The data member record.</param>
 /// <param name="bitFieldRecord">The bit field record.</param>
 internal PdbTypeBitField(PdbUserDefinedType containerType, DataMemberRecord dataMemberRecord, BitFieldRecord bitFieldRecord)
     : base(containerType, dataMemberRecord)
 {
     BitFieldRecord = bitFieldRecord;
 }