class VTTBuilder

Declaration

class VTTBuilder { /* full declaration omitted */ };

Description

Class for building VTT layout information.

Declared at: clang/include/clang/AST/VTTBuilder.h:71

Member Variables

private clang::ASTContext& Ctx
private const clang::CXXRecordDecl* MostDerivedClass
The most derived class for which we're building this vtable.
private clang::VTTBuilder::VTTVTablesVectorTy VTTVTables
The VTT vtables.
private clang::VTTBuilder::VTTComponentsVectorTy VTTComponents
The VTT components.
private const clang::ASTRecordLayout& MostDerivedClassLayout
The AST record layout of the most derived class.
private llvm::DenseMap<BaseSubobject, uint64_t> SubVTTIndicies
The sub-VTT indices for the bases of the most derived class.
private llvm::DenseMap<BaseSubobject, uint64_t> SecondaryVirtualPointerIndices
The secondary virtual pointer indices of all subobjects of the most derived class.
private bool GenerateDefinition
Whether the VTT builder should generate LLVM IR for the VTT.

Method Overview

  • private void AddVTablePointer(clang::BaseSubobject Base, uint64_t VTableIndex, const clang::CXXRecordDecl * VTableClass)
  • private void LayoutSecondaryVTTs(clang::BaseSubobject Base)
  • private void LayoutSecondaryVirtualPointers(clang::BaseSubobject Base, bool BaseIsMorallyVirtual, uint64_t VTableIndex, const clang::CXXRecordDecl * VTableClass, clang::VTTBuilder::VisitedVirtualBasesSetTy & VBases)
  • private void LayoutSecondaryVirtualPointers(clang::BaseSubobject Base, uint64_t VTableIndex)
  • private void LayoutVTT(clang::BaseSubobject Base, bool BaseIsVirtual)
  • private void LayoutVirtualVTTs(const clang::CXXRecordDecl * RD, clang::VTTBuilder::VisitedVirtualBasesSetTy & VBases)
  • public VTTBuilder(clang::ASTContext & Ctx, const clang::CXXRecordDecl * MostDerivedClass, bool GenerateDefinition)
  • public const llvm::DenseMap<BaseSubobject, uint64_t> & getSecondaryVirtualPointerIndices() const
  • public const llvm::DenseMap<BaseSubobject, uint64_t> & getSubVTTIndicies() const
  • public const clang::VTTBuilder::VTTComponentsVectorTy & getVTTComponents() const
  • public const clang::VTTBuilder::VTTVTablesVectorTy & getVTTVTables() const

Methods

void AddVTablePointer(
    clang::BaseSubobject Base,
    uint64_t VTableIndex,
    const clang::CXXRecordDecl* VTableClass)

Description

Add a vtable pointer to the VTT currently being built.

Declared at: clang/include/clang/AST/VTTBuilder.h:105

Parameters

clang::BaseSubobject Base
uint64_t VTableIndex
const clang::CXXRecordDecl* VTableClass

void LayoutSecondaryVTTs(
    clang::BaseSubobject Base)

Description

Lay out the secondary VTTs of the given base subobject.

Declared at: clang/include/clang/AST/VTTBuilder.h:109

Parameters

clang::BaseSubobject Base

void LayoutSecondaryVirtualPointers(
    clang::BaseSubobject Base,
    bool BaseIsMorallyVirtual,
    uint64_t VTableIndex,
    const clang::CXXRecordDecl* VTableClass,
    clang::VTTBuilder::VisitedVirtualBasesSetTy&
        VBases)

Description

Lay out the secondary virtual pointers for the given base subobject.

Declared at: clang/include/clang/AST/VTTBuilder.h:116

Parameters

clang::BaseSubobject Base
bool BaseIsMorallyVirtual
whether the base subobject is a virtual base or a direct or indirect base of a virtual base.
uint64_t VTableIndex
const clang::CXXRecordDecl* VTableClass
clang::VTTBuilder::VisitedVirtualBasesSetTy& VBases

void LayoutSecondaryVirtualPointers(
    clang::BaseSubobject Base,
    uint64_t VTableIndex)

Description

Lay out the secondary virtual pointers for the given base subobject.

Declared at: clang/include/clang/AST/VTTBuilder.h:124

Parameters

clang::BaseSubobject Base
uint64_t VTableIndex

void LayoutVTT(clang::BaseSubobject Base,
               bool BaseIsVirtual)

Description

Lay out the VTT for the given subobject, including any secondary VTTs, secondary virtual pointers and virtual VTTs.

Declared at: clang/include/clang/AST/VTTBuilder.h:134

Parameters

clang::BaseSubobject Base
bool BaseIsVirtual

void LayoutVirtualVTTs(
    const clang::CXXRecordDecl* RD,
    clang::VTTBuilder::VisitedVirtualBasesSetTy&
        VBases)

Description

Lay out the VTTs for the virtual base classes of the given record declaration.

Declared at: clang/include/clang/AST/VTTBuilder.h:129

Parameters

const clang::CXXRecordDecl* RD
clang::VTTBuilder::VisitedVirtualBasesSetTy& VBases

VTTBuilder(
    clang::ASTContext& Ctx,
    const clang::CXXRecordDecl* MostDerivedClass,
    bool GenerateDefinition)

Declared at: clang/include/clang/AST/VTTBuilder.h:137

Parameters

clang::ASTContext& Ctx
const clang::CXXRecordDecl* MostDerivedClass
bool GenerateDefinition

const llvm::DenseMap<BaseSubobject, uint64_t>&
getSecondaryVirtualPointerIndices() const

Description

Returns a reference to the secondary virtual pointer indices.

Declared at: clang/include/clang/AST/VTTBuilder.h:157

const llvm::DenseMap<BaseSubobject, uint64_t>&
getSubVTTIndicies() const

Description

Returns a reference to the sub-VTT indices.

Declared at: clang/include/clang/AST/VTTBuilder.h:151

const clang::VTTBuilder::VTTComponentsVectorTy&
getVTTComponents() const

Declared at: clang/include/clang/AST/VTTBuilder.h:141

const clang::VTTBuilder::VTTVTablesVectorTy&
getVTTVTables() const

Declared at: clang/include/clang/AST/VTTBuilder.h:146