clang API Documentation

Public Types | Public Member Functions | Public Attributes
clang::VPtrInfo Struct Reference

#include <VTableBuilder.h>

Collaboration diagram for clang::VPtrInfo:
Collaboration graph
[legend]

List of all members.

Public Types

typedef SmallVector< const
CXXRecordDecl *, 1 > 
BasePath

Public Member Functions

 VPtrInfo (const CXXRecordDecl *RD)
const CXXRecordDeclgetVBaseWithVPtr () const
 The vptr is stored inside the non-virtual component of this virtual base.

Public Attributes

const CXXRecordDeclReusingBase
CharUnits NonVirtualOffset
const CXXRecordDeclBaseWithVPtr
 The vptr is stored inside this subobject.
BasePath MangledPath
const CXXRecordDeclNextBaseToMangle
BasePath ContainingVBases
BasePath PathToBaseWithVPtr
CharUnits FullOffsetInMDC

Detailed Description

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 373 of file VTableBuilder.h.


Member Typedef Documentation

typedef SmallVector<const CXXRecordDecl *, 1> clang::VPtrInfo::BasePath

Definition at line 374 of file VTableBuilder.h.


Constructor & Destructor Documentation

clang::VPtrInfo::VPtrInfo ( const CXXRecordDecl RD) [inline]

Definition at line 376 of file VTableBuilder.h.


Member Function Documentation

The vptr is stored inside the non-virtual component of this virtual base.

Definition at line 421 of file VTableBuilder.h.

References ContainingVBases.


Member Data Documentation

The vptr is stored inside this subobject.

Definition at line 394 of file VTableBuilder.h.

Referenced by findPathForVPtr().

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 409 of file VTableBuilder.h.

Referenced by getVBaseWithVPtr().

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 418 of file VTableBuilder.h.

Referenced by findPathForVPtr().

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 400 of file VTableBuilder.h.

Referenced by extendPath(), mangleVFTableName(), and rebucketPaths().

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 404 of file VTableBuilder.h.

Referenced by extendPath().

BaseWithVPtr is at this offset from its containing complete object or virtual base.

Definition at line 391 of file VTableBuilder.h.

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 414 of file VTableBuilder.h.

Referenced by findPathForVPtr().

The vtable will hold all of the virtual bases or virtual methods of ReusingBase. This may or may not be the same class as VPtrSubobject.Base. A derived class will reuse the vptr of the first non-virtual base subobject that has one.

Definition at line 387 of file VTableBuilder.h.


The documentation for this struct was generated from the following file: