|
clang 23.0.0git
|
Holds information about the inheritance path to a virtual base or function table pointer. More...
#include "clang/AST/VTableBuilder.h"
Public Types | |
| typedef SmallVector< const CXXRecordDecl *, 1 > | BasePath |
Public Member Functions | |
| VPtrInfo (const CXXRecordDecl *RD) | |
| const CXXRecordDecl * | getVBaseWithVPtr () const |
| The vptr is stored inside the non-virtual component of this virtual base. | |
Public Attributes | |
| const CXXRecordDecl * | ObjectWithVPtr |
| This is the most derived class that has this vptr at offset zero. | |
| const CXXRecordDecl * | IntroducingObject |
| This is the class that introduced the vptr by declaring new virtual methods or virtual bases. | |
| CharUnits | NonVirtualOffset |
| IntroducingObject is at this offset from its containing complete object or virtual base. | |
| BasePath | MangledPath |
| The bases from the inheritance path that got used to mangle the vbtable name. | |
| const CXXRecordDecl * | NextBaseToMangle |
| The next base to push onto the mangled path if this path is ambiguous in a derived class. | |
| BasePath | ContainingVBases |
| The set of possibly indirect vbases that contain this vbtable. | |
| BasePath | PathToIntroducingObject |
| This holds the base classes path from the complete type to the first base with the given vfptr offset, in the base-to-derived order. | |
| CharUnits | FullOffsetInMDC |
| Static offset from the top of the most derived class to this vfptr, including any virtual base offset. | |
Holds information about the inheritance path to a virtual base or function table pointer.
A record may contain as many vfptrs or vbptrs as there are base subobjects.
Definition at line 464 of file VTableBuilder.h.
| typedef SmallVector<const CXXRecordDecl *, 1> clang::VPtrInfo::BasePath |
Definition at line 465 of file VTableBuilder.h.
|
inline |
Definition at line 467 of file VTableBuilder.h.
References IntroducingObject, NextBaseToMangle, and ObjectWithVPtr.
|
inline |
The vptr is stored inside the non-virtual component of this virtual base.
Definition at line 508 of file VTableBuilder.h.
References ContainingVBases, and clang::nullptr.
| BasePath clang::VPtrInfo::ContainingVBases |
The set of possibly indirect vbases that contain this vbtable.
When a derived class indirectly inherits from the same vbase twice, we only keep vtables and their paths from the first instance.
Definition at line 496 of file VTableBuilder.h.
Referenced by getVBaseWithVPtr().
| CharUnits clang::VPtrInfo::FullOffsetInMDC |
Static offset from the top of the most derived class to this vfptr, including any virtual base offset.
Only used for vftables.
Definition at line 505 of file VTableBuilder.h.
| const CXXRecordDecl* clang::VPtrInfo::IntroducingObject |
This is the class that introduced the vptr by declaring new virtual methods or virtual bases.
Definition at line 477 of file VTableBuilder.h.
Referenced by selectBestPath(), and VPtrInfo().
| BasePath clang::VPtrInfo::MangledPath |
The bases from the inheritance path that got used to mangle the vbtable name.
This is not really a full path like a CXXBasePath. It holds the subset of records that need to be mangled into the vbtable symbol name in order to get a unique name.
Definition at line 487 of file VTableBuilder.h.
Referenced by extendPath(), mangleVFTableName(), and rebucketPaths().
| const CXXRecordDecl* clang::VPtrInfo::NextBaseToMangle |
The next base to push onto the mangled path if this path is ambiguous in a derived class.
If it's null, then it's already been pushed onto the path.
Definition at line 491 of file VTableBuilder.h.
Referenced by extendPath(), and VPtrInfo().
| CharUnits clang::VPtrInfo::NonVirtualOffset |
IntroducingObject is at this offset from its containing complete object or virtual base.
Definition at line 481 of file VTableBuilder.h.
| const CXXRecordDecl* clang::VPtrInfo::ObjectWithVPtr |
This is the most derived class that has this vptr at offset zero.
When single inheritance is used, this is always the most derived class. If multiple inheritance is used, it may be any direct or indirect base.
Definition at line 473 of file VTableBuilder.h.
Referenced by VPtrInfo().
| BasePath clang::VPtrInfo::PathToIntroducingObject |
This holds the base classes path from the complete type to the first base with the given vfptr offset, in the base-to-derived order.
Only used for vftables.
Definition at line 501 of file VTableBuilder.h.