78 return std::string(
Tag->getName());
105 return Class->getSize();
107 return Union->getSize();
115 case TypeRecordKind::Class:
117 case TypeRecordKind::Union:
119 case TypeRecordKind::Struct:
121 case TypeRecordKind::Interface:
132 return (
Tag->Options & ClassOptions::HasConstructorOrDestructor) !=
139 return (
Modifiers->Modifiers & ModifierOptions::Const) !=
140 ModifierOptions::None;
147 return (
Tag->Options & ClassOptions::HasOverloadedAssignmentOperator) !=
155 return (
Tag->Options & ClassOptions::HasConversionOperator) !=
163 return (
Tag->Options & ClassOptions::ContainsNestedClass) !=
171 return (
Tag->Options & ClassOptions::HasOverloadedOperator) !=
181 return (
Tag->Options & ClassOptions::Intrinsic) != ClassOptions::None;
188 return (
Tag->Options & ClassOptions::Nested) != ClassOptions::None;
195 return (
Tag->Options & ClassOptions::Packed) != ClassOptions::None;
204 return (
Tag->Options & ClassOptions::Scoped) != ClassOptions::None;
212 return (
Modifiers->Modifiers & ModifierOptions::Unaligned) !=
213 ModifierOptions::None;
219 return (
Modifiers->Modifiers & ModifierOptions::Volatile) !=
220 ModifierOptions::None;
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
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.