File indexing completed on 2026-05-10 08:43:45
0001
0002
0003
0004
0005
0006
0007
0008
0009 #ifndef LLVM_DEBUGINFO_PDB_NATIVE_NATIVETYPEUDT_H
0010 #define LLVM_DEBUGINFO_PDB_NATIVE_NATIVETYPEUDT_H
0011
0012 #include "llvm/DebugInfo/CodeView/TypeIndex.h"
0013 #include "llvm/DebugInfo/CodeView/TypeRecord.h"
0014 #include "llvm/DebugInfo/PDB/IPDBRawSymbol.h"
0015 #include "llvm/DebugInfo/PDB/Native/NativeRawSymbol.h"
0016 #include "llvm/DebugInfo/PDB/PDBTypes.h"
0017
0018 namespace llvm {
0019
0020 class raw_ostream;
0021 namespace pdb {
0022 class NativeSession;
0023
0024 class NativeTypeUDT : public NativeRawSymbol {
0025 public:
0026 NativeTypeUDT(NativeSession &Session, SymIndexId Id, codeview::TypeIndex TI,
0027 codeview::ClassRecord Class);
0028
0029 NativeTypeUDT(NativeSession &Session, SymIndexId Id, codeview::TypeIndex TI,
0030 codeview::UnionRecord Union);
0031
0032 NativeTypeUDT(NativeSession &Session, SymIndexId Id,
0033 NativeTypeUDT &UnmodifiedType,
0034 codeview::ModifierRecord Modifier);
0035
0036 ~NativeTypeUDT() override;
0037
0038 void dump(raw_ostream &OS, int Indent, PdbSymbolIdField ShowIdFields,
0039 PdbSymbolIdField RecurseIdFields) const override;
0040
0041 std::string getName() const override;
0042 SymIndexId getLexicalParentId() const override;
0043 SymIndexId getUnmodifiedTypeId() const override;
0044 SymIndexId getVirtualTableShapeId() const override;
0045 uint64_t getLength() const override;
0046 PDB_UdtType getUdtKind() const override;
0047 bool hasConstructor() const override;
0048 bool isConstType() const override;
0049 bool hasAssignmentOperator() const override;
0050 bool hasCastOperator() const override;
0051 bool hasNestedTypes() const override;
0052 bool hasOverloadedOperator() const override;
0053 bool isInterfaceUdt() const override;
0054 bool isIntrinsic() const override;
0055 bool isNested() const override;
0056 bool isPacked() const override;
0057 bool isRefUdt() const override;
0058 bool isScoped() const override;
0059 bool isValueUdt() const override;
0060 bool isUnalignedType() const override;
0061 bool isVolatileType() const override;
0062
0063 protected:
0064 codeview::TypeIndex Index;
0065
0066 std::optional<codeview::ClassRecord> Class;
0067 std::optional<codeview::UnionRecord> Union;
0068 NativeTypeUDT *UnmodifiedType = nullptr;
0069 codeview::TagRecord *Tag = nullptr;
0070 std::optional<codeview::ModifierRecord> Modifiers;
0071 };
0072
0073 }
0074 }
0075
0076 #endif