/// <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; } }
/// <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; }