10 #ifndef LLVM_DEBUGINFO_PDB_UDTLAYOUT_H 11 #define LLVM_DEBUGINFO_PDB_UDTLAYOUT_H 31 class BaseClassLayout;
54 virtual bool isVBPtr()
const {
return false; }
59 return (Off >= Begin && Off < End);
70 bool IsElided =
false;
79 bool isVBPtr()
const override {
return true; }
82 std::unique_ptr<PDBSymbolTypeBuiltin>
Type;
88 std::unique_ptr<PDBSymbolData> DataMember);
91 bool hasUDTLayout()
const;
95 std::unique_ptr<PDBSymbolData> DataMember;
96 std::unique_ptr<ClassLayout> UdtLayout;
102 std::unique_ptr<PDBSymbolTypeVTable>
VTable);
108 std::unique_ptr<PDBSymbolTypeVTable>
VTable;
112 template <
typename T>
using UniquePtrVector = std::vector<std::unique_ptr<T>>;
129 bool hasVBPtrAtOffset(
uint32_t Off)
const;
130 void initializeChildren(
const PDBSymbol &Sym);
132 void addChildToLayout(std::unique_ptr<LayoutItemBase> Child);
137 UniquePtrVector<PDBSymbolFunc>
Funcs;
152 bool Elide, std::unique_ptr<PDBSymbolTypeBaseClass>
Base);
159 std::unique_ptr<PDBSymbolTypeBaseClass> Base;
166 explicit ClassLayout(std::unique_ptr<PDBSymbolTypeUDT> UDT);
175 std::unique_ptr<PDBSymbolTypeUDT> OwnedStorage;
182 #endif // LLVM_DEBUGINFO_PDB_UDTLAYOUT_H ArrayRef< std::unique_ptr< PDBSymbolFunc > > funcs() const
bool isVBPtr() const override
UniquePtrVector< PDBSymbolFunc > Funcs
This class represents lattice values for constants.
const UDTLayoutBase * Parent
const PDBSymbolTypeBaseClass & getBase() const
UniquePtrVector< PDBSymbol > Other
uint32_t directVirtualBaseCount() const
UniquePtrVector< LayoutItemBase > ChildStorage
const PDBSymbol * getSymbol() const
uint32_t containsOffset(uint32_t Off) const
virtual uint32_t immediatePadding() const
ArrayRef< BaseClassLayout * > regular_bases() const
virtual ~LayoutItemBase()=default
virtual bool isVBPtr() const
ArrayRef< BaseClassLayout * > VirtualBases
uint32_t getOffsetInParent() const
uint32_t getElementSize() const
const UDTLayoutBase * getParent() const
std::vector< LayoutItemBase * > LayoutItems
ArrayRef< BaseClassLayout * > virtual_bases() const
uint32_t deepPaddingSize() const
ArrayRef - Represent a constant reference to an array (0 or more elements consecutively in memory)...
StringRef getName() const
std::vector< BaseClassLayout * > AllBases
ArrayRef< BaseClassLayout * > NonVirtualBases
uint32_t getLayoutSize() const
virtual uint32_t tailPadding() const
ArrayRef< std::unique_ptr< PDBSymbol > > other_items() const
PDBSymbol defines the base of the inheritance hierarchy for concrete symbol types (e...
const BitVector & usedBytes() const
ArrayRef< BaseClassLayout * > bases() const
StringRef - Represent a constant reference to a string, i.e.
ArrayRef< LayoutItemBase * > layout_items() const
bool isVirtualBase() const
const PDBSymbolTypeUDT & getClass() const
LayoutItemBase(const UDTLayoutBase *Parent, const PDBSymbol *Symbol, const std::string &Name, uint32_t OffsetInParent, uint32_t Size, bool IsElided)