14#ifndef LLVM_CLANG_AST_VTTBUILDER_H
15#define LLVM_CLANG_AST_VTTBUILDER_H
20#include "llvm/ADT/DenseMap.h"
21#include "llvm/ADT/PointerIntPair.h"
22#include "llvm/ADT/SmallPtrSet.h"
23#include "llvm/ADT/SmallVector.h"
33 llvm::PointerIntPair<const CXXRecordDecl *, 1, bool> BaseAndIsVirtual;
39 : BaseAndIsVirtual(
Base, BaseIsVirtual), BaseOffset(BaseOffset) {}
45 return BaseAndIsVirtual.getPointer();
53 return BaseAndIsVirtual.getInt();
92 using AddressPointsMapTy = llvm::DenseMap<BaseSubobject, uint64_t>;
95 llvm::DenseMap<BaseSubobject, uint64_t> SubVTTIndices;
99 llvm::DenseMap<BaseSubobject, uint64_t> SecondaryVirtualPointerIndices;
102 bool GenerateDefinition;
117 bool BaseIsMorallyVirtual,
118 uint64_t VTableIndex,
125 uint64_t VTableIndex);
138 bool GenerateDefinition);
142 return VTTComponents;
152 return SubVTTIndices;
156 const llvm::DenseMap<BaseSubobject, uint64_t> &
158 return SecondaryVirtualPointerIndices;
Forward-declares and imports various common LLVM datatypes that clang wants to use unqualified.
Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...
ASTRecordLayout - This class contains layout information for one RecordDecl, which is a struct/union/...
Represents a C++ struct/union/class.
CharUnits - This is an opaque type for sizes expressed in character units.
Class for building VTT layout information.
const llvm::DenseMap< BaseSubobject, uint64_t > & getSecondaryVirtualPointerIndices() const
Returns a reference to the secondary virtual pointer indices.
const llvm::DenseMap< BaseSubobject, uint64_t > & getSubVTTIndices() const
Returns a reference to the sub-VTT indices.
const VTTComponentsVectorTy & getVTTComponents() const
const VTTVTablesVectorTy & getVTTVTables() const
VTTVTable(BaseSubobject Base, bool BaseIsVirtual)
VTTVTable(const CXXRecordDecl *Base, CharUnits BaseOffset, bool BaseIsVirtual)
CharUnits getBaseOffset() const
const CXXRecordDecl * getBase() const
BaseSubobject getBaseSubobject() const
The JSON file list parser is used to communicate input to InstallAPI.
VTTComponent(uint64_t VTableIndex, BaseSubobject VTableBase)