File indexing completed on 2026-05-10 08:43:45
0001
0002
0003
0004
0005
0006
0007
0008
0009 #ifndef LLVM_DEBUGINFO_PDB_NATIVE_NATIVETYPEENUM_H
0010 #define LLVM_DEBUGINFO_PDB_NATIVE_NATIVETYPEENUM_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 class raw_ostream;
0020 namespace pdb {
0021
0022 class NativeTypeBuiltin;
0023
0024 class NativeTypeEnum : public NativeRawSymbol {
0025 public:
0026 NativeTypeEnum(NativeSession &Session, SymIndexId Id, codeview::TypeIndex TI,
0027 codeview::EnumRecord Record);
0028
0029 NativeTypeEnum(NativeSession &Session, SymIndexId Id,
0030 NativeTypeEnum &UnmodifiedType,
0031 codeview::ModifierRecord Modifier);
0032 ~NativeTypeEnum() override;
0033
0034 void dump(raw_ostream &OS, int Indent, PdbSymbolIdField ShowIdFields,
0035 PdbSymbolIdField RecurseIdFields) const override;
0036
0037 std::unique_ptr<IPDBEnumSymbols>
0038 findChildren(PDB_SymType Type) const override;
0039
0040 PDB_BuiltinType getBuiltinType() const override;
0041 PDB_SymType getSymTag() const override;
0042 SymIndexId getUnmodifiedTypeId() const override;
0043 bool hasConstructor() const override;
0044 bool hasAssignmentOperator() const override;
0045 bool hasCastOperator() const override;
0046 uint64_t getLength() const override;
0047 std::string getName() const override;
0048 bool isConstType() const override;
0049 bool isVolatileType() const override;
0050 bool isUnalignedType() const override;
0051 bool isNested() const override;
0052 bool hasOverloadedOperator() const override;
0053 bool hasNestedTypes() const override;
0054 bool isIntrinsic() const override;
0055 bool isPacked() const override;
0056 bool isScoped() const override;
0057 SymIndexId getTypeId() const override;
0058 bool isRefUdt() const override;
0059 bool isValueUdt() const override;
0060 bool isInterfaceUdt() const override;
0061
0062 const NativeTypeBuiltin &getUnderlyingBuiltinType() const;
0063 const codeview::EnumRecord &getEnumRecord() const { return *Record; }
0064
0065 protected:
0066 codeview::TypeIndex Index;
0067 std::optional<codeview::EnumRecord> Record;
0068 NativeTypeEnum *UnmodifiedType = nullptr;
0069 std::optional<codeview::ModifierRecord> Modifiers;
0070 };
0071
0072 }
0073 }
0074
0075 #endif