104 return Class->getSize();
106 return Union->getSize();
114 case TypeRecordKind::Class:
116 case TypeRecordKind::Union:
118 case TypeRecordKind::Struct:
120 case TypeRecordKind::Interface:
131 return (
Tag->
Options & ClassOptions::HasConstructorOrDestructor) !=
138 return (
Modifiers->Modifiers & ModifierOptions::Const) !=
139 ModifierOptions::None;
146 return (
Tag->
Options & ClassOptions::HasOverloadedAssignmentOperator) !=
154 return (
Tag->
Options & ClassOptions::HasConversionOperator) !=
162 return (
Tag->
Options & ClassOptions::ContainsNestedClass) !=
170 return (
Tag->
Options & ClassOptions::HasOverloadedOperator) !=
180 return (
Tag->
Options & ClassOptions::Intrinsic) != ClassOptions::None;
187 return (
Tag->
Options & ClassOptions::Nested) != ClassOptions::None;
194 return (
Tag->
Options & ClassOptions::Packed) != ClassOptions::None;
203 return (
Tag->
Options & ClassOptions::Scoped) != ClassOptions::None;
211 return (
Modifiers->Modifiers & ModifierOptions::Unaligned) !=
212 ModifierOptions::None;
218 return (
Modifiers->Modifiers & ModifierOptions::Volatile) !=
219 ModifierOptions::None;
StringRef getName() const
SymIndexId getSymIndexId() const override
void dump(raw_ostream &OS, int Indent, PdbSymbolIdField ShowIdFields, PdbSymbolIdField RecurseIdFields) const override
SymbolCache & getSymbolCache()
PDB_UdtType getUdtKind() const override
SymIndexId getVirtualTableShapeId() const override
bool hasNestedTypes() const override
bool isPacked() const override
bool isRefUdt() const override
bool isUnalignedType() const override
uint64_t getLength() const override
bool isVolatileType() const override
bool isValueUdt() const override
void dump(raw_ostream &OS, int Indent, PdbSymbolIdField ShowIdFields, PdbSymbolIdField RecurseIdFields) const override
bool isScoped() const override
NativeTypeUDT * UnmodifiedType
~NativeTypeUDT() override
SymIndexId getUnmodifiedTypeId() const override
NativeTypeUDT(NativeSession &Session, SymIndexId Id, codeview::TypeIndex TI, codeview::ClassRecord Class)
SymIndexId getLexicalParentId() const override
std::optional< codeview::UnionRecord > Union
std::optional< codeview::ClassRecord > Class
bool hasAssignmentOperator() const override
bool hasCastOperator() const override
std::optional< codeview::ModifierRecord > Modifiers
codeview::TagRecord * Tag
bool hasConstructor() const override
std::string getName() const override
bool isConstType() const override
bool hasOverloadedOperator() const override
bool isNested() const override
bool isIntrinsic() const override
bool isInterfaceUdt() const override
SymIndexId findSymbolByTypeIndex(codeview::TypeIndex TI) const
This class implements an extremely fast bulk output stream that can only output to a stream.
#define llvm_unreachable(msg)
Marks that the current location is not supposed to be reachable.
void dumpSymbolField(raw_ostream &OS, StringRef Name, T Value, int Indent)
PDB_UdtType
These values correspond to the UdtKind enumeration, and are documented here: https://msdn....
PDB_SymType
These values correspond to the SymTagEnum enumeration, and are documented here: https://msdn....
void dumpSymbolIdField(raw_ostream &OS, StringRef Name, SymIndexId Value, int Indent, const IPDBSession &Session, PdbSymbolIdField FieldId, PdbSymbolIdField ShowFlags, PdbSymbolIdField RecurseFlags)
This is an optimization pass for GlobalISel generic memory operations.
OutputIt move(R &&Range, OutputIt Out)
Provide wrappers to std::move which take ranges instead of having to pass begin/end explicitly.
Implement std::hash so that hash_code can be used in STL containers.