LLVM  16.0.0git
NativeTypeEnum.h
Go to the documentation of this file.
1 //===- NativeTypeEnum.h - info about enum type ------------------*- C++ -*-===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8 
9 #ifndef LLVM_DEBUGINFO_PDB_NATIVE_NATIVETYPEENUM_H
10 #define LLVM_DEBUGINFO_PDB_NATIVE_NATIVETYPEENUM_H
11 
17 
18 namespace llvm {
19 class raw_ostream;
20 namespace pdb {
21 
22 class NativeTypeBuiltin;
23 
25 public:
28 
31  codeview::ModifierRecord Modifier);
32  ~NativeTypeEnum() override;
33 
34  void dump(raw_ostream &OS, int Indent, PdbSymbolIdField ShowIdFields,
35  PdbSymbolIdField RecurseIdFields) const override;
36 
37  std::unique_ptr<IPDBEnumSymbols>
38  findChildren(PDB_SymType Type) const override;
39 
40  PDB_BuiltinType getBuiltinType() const override;
41  PDB_SymType getSymTag() const override;
42  SymIndexId getUnmodifiedTypeId() const override;
43  bool hasConstructor() const override;
44  bool hasAssignmentOperator() const override;
45  bool hasCastOperator() const override;
46  uint64_t getLength() const override;
47  std::string getName() const override;
48  bool isConstType() const override;
49  bool isVolatileType() const override;
50  bool isUnalignedType() const override;
51  bool isNested() const override;
52  bool hasOverloadedOperator() const override;
53  bool hasNestedTypes() const override;
54  bool isIntrinsic() const override;
55  bool isPacked() const override;
56  bool isScoped() const override;
57  SymIndexId getTypeId() const override;
58  bool isRefUdt() const override;
59  bool isValueUdt() const override;
60  bool isInterfaceUdt() const override;
61 
63  const codeview::EnumRecord &getEnumRecord() const { return *Record; }
64 
65 protected:
67  std::optional<codeview::EnumRecord> Record;
69  std::optional<codeview::ModifierRecord> Modifiers;
70 };
71 
72 } // namespace pdb
73 } // namespace llvm
74 
75 #endif // LLVM_DEBUGINFO_PDB_NATIVE_NATIVETYPEENUM_H
llvm::pdb::NativeTypeEnum::isVolatileType
bool isVolatileType() const override
Definition: NativeTypeEnum.cpp:366
llvm::pdb::NativeTypeEnum::getSymTag
PDB_SymType getSymTag() const override
Definition: NativeTypeEnum.cpp:179
llvm
This is an optimization pass for GlobalISel generic memory operations.
Definition: AddressRanges.h:18
llvm::pdb::NativeTypeEnum::isPacked
bool isPacked() const override
Definition: NativeTypeEnum.cpp:331
llvm::pdb::NativeTypeEnum::isScoped
bool isScoped() const override
Definition: NativeTypeEnum.cpp:338
IPDBRawSymbol.h
llvm::pdb::NativeTypeEnum::getLength
uint64_t getLength() const override
Definition: NativeTypeEnum.cpp:298
llvm::pdb::NativeTypeEnum::isUnalignedType
bool isUnalignedType() const override
Definition: NativeTypeEnum.cpp:373
llvm::pdb::NativeTypeEnum::isValueUdt
bool isValueUdt() const override
Definition: NativeTypeEnum.cpp:355
llvm::Type
The instances of the Type class are immutable: once they are created, they are never changed.
Definition: Type.h:45
llvm::pdb::NativeTypeEnum::Modifiers
std::optional< codeview::ModifierRecord > Modifiers
Definition: NativeTypeEnum.h:69
llvm::pdb::NativeTypeEnum::getEnumRecord
const codeview::EnumRecord & getEnumRecord() const
Definition: NativeTypeEnum.h:63
llvm::pdb::PDB_SymType
PDB_SymType
These values correspond to the SymTagEnum enumeration, and are documented here: https://msdn....
Definition: PDBTypes.h:243
llvm::codeview::EnumRecord
Definition: TypeRecord.h:519
llvm::pdb::NativeTypeEnum::findChildren
std::unique_ptr< IPDBEnumSymbols > findChildren(PDB_SymType Type) const override
Definition: NativeTypeEnum.cpp:167
llvm::pdb::NativeTypeEnum::~NativeTypeEnum
~NativeTypeEnum() override
llvm::raw_ostream
This class implements an extremely fast bulk output stream that can only output to a stream.
Definition: raw_ostream.h:52
llvm::codeview::ModifierRecord
Definition: TypeRecord.h:130
llvm::pdb::NativeTypeEnum::NativeTypeEnum
NativeTypeEnum(NativeSession &Session, SymIndexId Id, codeview::TypeIndex TI, codeview::EnumRecord Record)
Definition: NativeTypeEnum.cpp:118
llvm::pdb::NativeTypeEnum::isRefUdt
bool isRefUdt() const override
Definition: NativeTypeEnum.cpp:353
PDBTypes.h
llvm::pdb::NativeTypeEnum::hasAssignmentOperator
bool hasAssignmentOperator() const override
Definition: NativeTypeEnum.cpp:267
llvm::pdb::NativeTypeEnum::UnmodifiedType
NativeTypeEnum * UnmodifiedType
Definition: NativeTypeEnum.h:68
llvm::pdb::NativeTypeEnum::isNested
bool isNested() const override
Definition: NativeTypeEnum.cpp:316
llvm::pdb::NativeTypeEnum
Definition: NativeTypeEnum.h:24
llvm::pdb::NativeTypeEnum::hasConstructor
bool hasConstructor() const override
Definition: NativeTypeEnum.cpp:259
uint64_t
TypeRecord.h
llvm::pdb::NativeTypeEnum::getUnmodifiedTypeId
SymIndexId getUnmodifiedTypeId() const override
Definition: NativeTypeEnum.cpp:255
llvm::pdb::NativeTypeEnum::dump
void dump(raw_ostream &OS, int Indent, PdbSymbolIdField ShowIdFields, PdbSymbolIdField RecurseIdFields) const override
Definition: NativeTypeEnum.cpp:131
llvm::pdb::NativeTypeEnum::isConstType
bool isConstType() const override
Definition: NativeTypeEnum.cpp:359
llvm::pdb::NativeTypeEnum::hasCastOperator
bool hasCastOperator() const override
Definition: NativeTypeEnum.cpp:290
llvm::Record
Definition: Record.h:1573
llvm::pdb::NativeTypeEnum::isInterfaceUdt
bool isInterfaceUdt() const override
Definition: NativeTypeEnum.cpp:357
uint32_t
llvm::pdb::PDB_BuiltinType
PDB_BuiltinType
These values correspond to the Basictype enumeration, and are documented here: https://msdn....
Definition: PDBTypes.h:335
llvm::pdb::NativeTypeEnum::hasOverloadedOperator
bool hasOverloadedOperator() const override
Definition: NativeTypeEnum.cpp:323
llvm::pdb::NativeTypeEnum::getBuiltinType
PDB_BuiltinType getBuiltinType() const override
Definition: NativeTypeEnum.cpp:181
llvm::pdb::NativeTypeEnum::getTypeId
SymIndexId getTypeId() const override
Definition: NativeTypeEnum.cpp:345
llvm::pdb::NativeTypeBuiltin
Definition: NativeTypeBuiltin.h:21
llvm::pdb::NativeTypeEnum::Index
codeview::TypeIndex Index
Definition: NativeTypeEnum.h:66
llvm::pdb::NativeTypeEnum::getName
std::string getName() const override
Definition: NativeTypeEnum.cpp:309
NativeRawSymbol.h
TypeIndex.h
llvm::pdb::NativeSession
Definition: NativeSession.h:32
llvm::pdb::NativeTypeEnum::Record
std::optional< codeview::EnumRecord > Record
Definition: NativeTypeEnum.h:67
llvm::pdb::PdbSymbolIdField
PdbSymbolIdField
Definition: IPDBRawSymbol.h:24
llvm::pdb::NativeTypeEnum::hasNestedTypes
bool hasNestedTypes() const override
Definition: NativeTypeEnum.cpp:275
llvm::codeview::TypeIndex
A 32-bit type reference.
Definition: TypeIndex.h:96
llvm::pdb::NativeRawSymbol::Session
NativeSession & Session
Definition: NativeRawSymbol.h:232
llvm::pdb::NativeTypeEnum::isIntrinsic
bool isIntrinsic() const override
Definition: NativeTypeEnum.cpp:283
llvm::AMDGPU::VGPRIndexMode::Id
Id
Definition: SIDefines.h:244
llvm::pdb::NativeTypeEnum::getUnderlyingBuiltinType
const NativeTypeBuiltin & getUnderlyingBuiltinType() const
Definition: NativeTypeEnum.cpp:380
llvm::pdb::NativeRawSymbol
Definition: NativeRawSymbol.h:21