clang 22.0.0git
clang::CXXCtorInitializer Class Referencefinal

Represents a C++ base or member initializer. More...

#include "clang/AST/DeclCXX.h"

Public Member Functions

 CXXCtorInitializer (ASTContext &Context, TypeSourceInfo *TInfo, bool IsVirtual, SourceLocation L, Expr *Init, SourceLocation R, SourceLocation EllipsisLoc)
 Creates a new base-class initializer.
 CXXCtorInitializer (ASTContext &Context, FieldDecl *Member, SourceLocation MemberLoc, SourceLocation L, Expr *Init, SourceLocation R)
 Creates a new member initializer.
 CXXCtorInitializer (ASTContext &Context, IndirectFieldDecl *Member, SourceLocation MemberLoc, SourceLocation L, Expr *Init, SourceLocation R)
 Creates a new anonymous field initializer.
 CXXCtorInitializer (ASTContext &Context, TypeSourceInfo *TInfo, SourceLocation L, Expr *Init, SourceLocation R)
 Creates a new delegating initializer.
int64_t getID (const ASTContext &Context) const
bool isBaseInitializer () const
 Determine whether this initializer is initializing a base class.
bool isMemberInitializer () const
 Determine whether this initializer is initializing a non-static data member.
bool isAnyMemberInitializer () const
bool isIndirectMemberInitializer () const
bool isInClassMemberInitializer () const
 Determine whether this initializer is an implicit initializer generated for a field with an initializer defined on the member declaration.
bool isDelegatingInitializer () const
 Determine whether this initializer is creating a delegating constructor.
bool isPackExpansion () const
 Determine whether this initializer is a pack expansion.
SourceLocation getEllipsisLoc () const
TypeLoc getBaseClassLoc () const
 If this is a base class initializer, returns the type of the base class with location information.
const TypegetBaseClass () const
 If this is a base class initializer, returns the type of the base class.
bool isBaseVirtual () const
 Returns whether the base is virtual or not.
TypeSourceInfogetTypeSourceInfo () const
 Returns the declarator information for a base class or delegating initializer.
FieldDeclgetMember () const
 If this is a member initializer, returns the declaration of the non-static data member being initialized.
FieldDeclgetAnyMember () const
IndirectFieldDeclgetIndirectMember () const
SourceLocation getMemberLocation () const
SourceLocation getSourceLocation () const
 Determine the source location of the initializer.
SourceRange getSourceRange () const LLVM_READONLY
 Determine the source range covering the entire initializer.
bool isWritten () const
 Determine whether this initializer is explicitly written in the source code.
int getSourceOrder () const
 Return the source position of the initializer, counting from 0.
void setSourceOrder (int Pos)
 Set the source order of this initializer.
SourceLocation getLParenLoc () const
SourceLocation getRParenLoc () const
ExprgetInit () const
 Get the initializer.

Detailed Description

Represents a C++ base or member initializer.

This is part of a constructor initializer that initializes one non-static member variable or one base class. For example, in the following, both 'A(a)' and 'f(3.14159)' are member initializers:

class A { };
class B : public A {
float f;
public:
B(A& a) : A(a), f(3.14159) { }
};

Definition at line 2369 of file DeclCXX.h.

Constructor & Destructor Documentation

◆ CXXCtorInitializer() [1/4]

CXXCtorInitializer::CXXCtorInitializer ( ASTContext & Context,
TypeSourceInfo * TInfo,
bool IsVirtual,
SourceLocation L,
Expr * Init,
SourceLocation R,
SourceLocation EllipsisLoc )
explicit

Creates a new base-class initializer.

Definition at line 2851 of file DeclCXX.cpp.

References false.

Referenced by getID().

◆ CXXCtorInitializer() [2/4]

CXXCtorInitializer::CXXCtorInitializer ( ASTContext & Context,
FieldDecl * Member,
SourceLocation MemberLoc,
SourceLocation L,
Expr * Init,
SourceLocation R )
explicit

Creates a new member initializer.

Definition at line 2860 of file DeclCXX.cpp.

References false, and clang::Member.

◆ CXXCtorInitializer() [3/4]

CXXCtorInitializer::CXXCtorInitializer ( ASTContext & Context,
IndirectFieldDecl * Member,
SourceLocation MemberLoc,
SourceLocation L,
Expr * Init,
SourceLocation R )
explicit

Creates a new anonymous field initializer.

Definition at line 2868 of file DeclCXX.cpp.

References false, and clang::Member.

◆ CXXCtorInitializer() [4/4]

CXXCtorInitializer::CXXCtorInitializer ( ASTContext & Context,
TypeSourceInfo * TInfo,
SourceLocation L,
Expr * Init,
SourceLocation R )
explicit

Creates a new delegating initializer.

Definition at line 2877 of file DeclCXX.cpp.

References false, and true.

Member Function Documentation

◆ getAnyMember()

◆ getBaseClass()

const Type * CXXCtorInitializer::getBaseClass ( ) const

If this is a base class initializer, returns the type of the base class.

Otherwise, returns null.

Definition at line 2896 of file DeclCXX.cpp.

References clang::cast(), and isBaseInitializer().

Referenced by EmitBaseInitializer(), clang::CIRGen::CIRGenFunction::emitBaseInitializer(), isInitializerOfDynamicClass(), isInitializerOfDynamicClass(), print_initializer(), and clang::ento::ExprEngine::ProcessInitializer().

◆ getBaseClassLoc()

TypeLoc CXXCtorInitializer::getBaseClassLoc ( ) const

If this is a base class initializer, returns the type of the base class with location information.

Otherwise, returns an NULL type location.

Definition at line 2889 of file DeclCXX.cpp.

References clang::cast(), and isBaseInitializer().

◆ getEllipsisLoc()

SourceLocation clang::CXXCtorInitializer::getEllipsisLoc ( ) const
inline

Definition at line 2479 of file DeclCXX.h.

References isPackExpansion().

Referenced by clang::ASTImporter::Import().

◆ getID()

int64_t CXXCtorInitializer::getID ( const ASTContext & Context) const
Returns
Unique reproducible object identifier.

Definition at line 2884 of file DeclCXX.cpp.

References CXXCtorInitializer().

◆ getIndirectMember()

◆ getInit()

◆ getLParenLoc()

SourceLocation clang::CXXCtorInitializer::getLParenLoc ( ) const
inline

Definition at line 2567 of file DeclCXX.h.

Referenced by clang::ASTImporter::Import().

◆ getMember()

FieldDecl * clang::CXXCtorInitializer::getMember ( ) const
inline

If this is a member initializer, returns the declaration of the non-static data member being initialized.

Otherwise, returns null.

Definition at line 2509 of file DeclCXX.h.

References clang::cast(), and isMemberInitializer().

Referenced by clang::ASTImporter::Import(), and clang::ento::ExprEngine::ProcessInitializer().

◆ getMemberLocation()

SourceLocation clang::CXXCtorInitializer::getMemberLocation ( ) const
inline

Definition at line 2529 of file DeclCXX.h.

Referenced by getSourceLocation(), and clang::ASTImporter::Import().

◆ getRParenLoc()

SourceLocation clang::CXXCtorInitializer::getRParenLoc ( ) const
inline

Definition at line 2568 of file DeclCXX.h.

Referenced by getSourceRange(), and clang::ASTImporter::Import().

◆ getSourceLocation()

SourceLocation CXXCtorInitializer::getSourceLocation ( ) const

◆ getSourceOrder()

int clang::CXXCtorInitializer::getSourceOrder ( ) const
inline

Return the source position of the initializer, counting from 0.

If the initializer was implicit, -1 is returned.

Definition at line 2545 of file DeclCXX.h.

◆ getSourceRange()

SourceRange CXXCtorInitializer::getSourceRange ( ) const

◆ getTypeSourceInfo()

TypeSourceInfo * clang::CXXCtorInitializer::getTypeSourceInfo ( ) const
inline

Returns the declarator information for a base class or delegating initializer.

Definition at line 2503 of file DeclCXX.h.

Referenced by AddInitializerToDiag(), clang::ASTImporter::Import(), and print_initializer().

◆ isAnyMemberInitializer()

bool clang::CXXCtorInitializer::isAnyMemberInitializer ( ) const
inline

◆ isBaseInitializer()

bool clang::CXXCtorInitializer::isBaseInitializer ( ) const
inline

◆ isBaseVirtual()

bool clang::CXXCtorInitializer::isBaseVirtual ( ) const
inline

◆ isDelegatingInitializer()

bool clang::CXXCtorInitializer::isDelegatingInitializer ( ) const
inline

Determine whether this initializer is creating a delegating constructor.

Definition at line 2469 of file DeclCXX.h.

References clang::isa().

Referenced by clang::ASTImporter::Import(), clang::CXXConstructorDecl::isDelegatingConstructor(), print_initializer(), and clang::ento::ExprEngine::ProcessInitializer().

◆ isInClassMemberInitializer()

bool clang::CXXCtorInitializer::isInClassMemberInitializer ( ) const
inline

Determine whether this initializer is an implicit initializer generated for a field with an initializer defined on the member declaration.

In-class member initializers (also known as "non-static data member initializations", NSDMIs) were introduced in C++11.

Definition at line 2463 of file DeclCXX.h.

Referenced by getSourceLocation(), and getSourceRange().

◆ isIndirectMemberInitializer()

◆ isMemberInitializer()

bool clang::CXXCtorInitializer::isMemberInitializer ( ) const
inline

Determine whether this initializer is initializing a non-static data member.

Definition at line 2447 of file DeclCXX.h.

References clang::isa().

Referenced by getAnyMember(), getMember(), clang::ASTImporter::Import(), and isAnyMemberInitializer().

◆ isPackExpansion()

bool clang::CXXCtorInitializer::isPackExpansion ( ) const
inline

Determine whether this initializer is a pack expansion.

Definition at line 2474 of file DeclCXX.h.

References isBaseInitializer().

Referenced by getEllipsisLoc(), and clang::ASTImporter::Import().

◆ isWritten()

bool clang::CXXCtorInitializer::isWritten ( ) const
inline

Determine whether this initializer is explicitly written in the source code.

Definition at line 2541 of file DeclCXX.h.

References isWritten().

Referenced by clang::Sema::DiagnoseImmediateEscalatingReason(), clang::diff::isSpecializedNodeExcluded(), and isWritten().

◆ setSourceOrder()

void clang::CXXCtorInitializer::setSourceOrder ( int Pos)
inline

Set the source order of this initializer.

This can only be called once for each initializer; it cannot be called on an initializer having a positive number of (implicit) array indices.

This assumes that the initializer was written in the source code, and ensures that isWritten() returns true.

Definition at line 2556 of file DeclCXX.h.

Referenced by clang::ASTRecordReader::readCXXCtorInitializers().


The documentation for this class was generated from the following files: