15 #ifndef LLVM_CLANG_AST_VTTBUILDER_H
16 #define LLVM_CLANG_AST_VTTBUILDER_H
28 llvm::PointerIntPair<const CXXRecordDecl *, 1, bool> BaseAndIsVirtual;
34 : BaseAndIsVirtual(Base, BaseIsVirtual), BaseOffset(BaseOffset) {}
36 : BaseAndIsVirtual(Base.
getBase(), BaseIsVirtual),
40 return BaseAndIsVirtual.getPointer();
48 return BaseAndIsVirtual.getInt();
62 : VTableIndex(VTableIndex), VTableBase(VTableBase) {}
86 typedef llvm::SmallPtrSet<const CXXRecordDecl *, 4> VisitedVirtualBasesSetTy;
88 typedef llvm::DenseMap<BaseSubobject, uint64_t> AddressPointsMapTy;
91 llvm::DenseMap<BaseSubobject, uint64_t> SubVTTIndicies;
95 llvm::DenseMap<BaseSubobject, uint64_t> SecondaryVirtualPointerIndices;
98 bool GenerateDefinition;
113 bool BaseIsMorallyVirtual,
114 uint64_t VTableIndex,
116 VisitedVirtualBasesSetTy &VBases);
121 uint64_t VTableIndex);
126 VisitedVirtualBasesSetTy &VBases);
134 bool GenerateDefinition);
138 return VTTComponents;
148 return SubVTTIndicies;
152 const llvm::DenseMap<BaseSubobject, uint64_t> &
154 return SecondaryVirtualPointerIndices;
VTTVTable(const CXXRecordDecl *Base, CharUnits BaseOffset, bool BaseIsVirtual)
Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...
VTTVTable(BaseSubobject Base, bool BaseIsVirtual)
CharUnits - This is an opaque type for sizes expressed in character units.
Enums/classes describing ABI related information about constructors, destructors and thunks...
const llvm::DenseMap< BaseSubobject, uint64_t > & getSubVTTIndicies() const
Returns a reference to the sub-VTT indices.
VTTComponent(uint64_t VTableIndex, BaseSubobject VTableBase)
ASTRecordLayout - This class contains layout information for one RecordDecl, which is a struct/union/...
const CXXRecordDecl * getBase() const
const VTTVTablesVectorTy & getVTTVTables() const
CharUnits getBaseOffset() const
VTTBuilder(ASTContext &Ctx, const CXXRecordDecl *MostDerivedClass, bool GenerateDefinition)
const VTTComponentsVectorTy & getVTTComponents() const
Class for building VTT layout information.
const llvm::DenseMap< BaseSubobject, uint64_t > & getSecondaryVirtualPointerIndices() const
Returns a reference to the secondary virtual pointer indices.
Represents a C++ struct/union/class.
BaseSubobject getBaseSubobject() const