clang
19.0.0git
|
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. More... | |
CXXCtorInitializer (ASTContext &Context, FieldDecl *Member, SourceLocation MemberLoc, SourceLocation L, Expr *Init, SourceLocation R) | |
Creates a new member initializer. More... | |
CXXCtorInitializer (ASTContext &Context, IndirectFieldDecl *Member, SourceLocation MemberLoc, SourceLocation L, Expr *Init, SourceLocation R) | |
Creates a new anonymous field initializer. More... | |
CXXCtorInitializer (ASTContext &Context, TypeSourceInfo *TInfo, SourceLocation L, Expr *Init, SourceLocation R) | |
Creates a new delegating initializer. More... | |
int64_t | getID (const ASTContext &Context) const |
bool | isBaseInitializer () const |
Determine whether this initializer is initializing a base class. More... | |
bool | isMemberInitializer () const |
Determine whether this initializer is initializing a non-static data member. More... | |
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. More... | |
bool | isDelegatingInitializer () const |
Determine whether this initializer is creating a delegating constructor. More... | |
bool | isPackExpansion () const |
Determine whether this initializer is a pack expansion. More... | |
SourceLocation | getEllipsisLoc () const |
TypeLoc | getBaseClassLoc () const |
If this is a base class initializer, returns the type of the base class with location information. More... | |
const Type * | getBaseClass () const |
If this is a base class initializer, returns the type of the base class. More... | |
bool | isBaseVirtual () const |
Returns whether the base is virtual or not. More... | |
TypeSourceInfo * | getTypeSourceInfo () const |
Returns the declarator information for a base class or delegating initializer. More... | |
FieldDecl * | getMember () const |
If this is a member initializer, returns the declaration of the non-static data member being initialized. More... | |
FieldDecl * | getAnyMember () const |
IndirectFieldDecl * | getIndirectMember () const |
SourceLocation | getMemberLocation () const |
SourceLocation | getSourceLocation () const |
Determine the source location of the initializer. More... | |
SourceRange | getSourceRange () const LLVM_READONLY |
Determine the source range covering the entire initializer. More... | |
bool | isWritten () const |
Determine whether this initializer is explicitly written in the source code. More... | |
int | getSourceOrder () const |
Return the source position of the initializer, counting from 0. More... | |
void | setSourceOrder (int Pos) |
Set the source order of this initializer. More... | |
SourceLocation | getLParenLoc () const |
SourceLocation | getRParenLoc () const |
Expr * | getInit () const |
Get the initializer. More... | |
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:
|
explicit |
Creates a new base-class initializer.
Definition at line 2607 of file DeclCXX.cpp.
|
explicit |
Creates a new member initializer.
Definition at line 2616 of file DeclCXX.cpp.
|
explicit |
Creates a new anonymous field initializer.
Definition at line 2624 of file DeclCXX.cpp.
|
explicit |
Creates a new delegating initializer.
Definition at line 2633 of file DeclCXX.cpp.
|
inline |
Definition at line 2446 of file DeclCXX.h.
References clang::IndirectFieldDecl::getAnonField(), isIndirectMemberInitializer(), and isMemberInitializer().
Referenced by clang::Sema::DiagnoseImmediateEscalatingReason(), EmitLValueForAnyFieldInitialization(), EmitMemberInitializer(), getSourceLocation(), getSourceRange(), and print_initializer().
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 2652 of file DeclCXX.cpp.
References isBaseInitializer().
Referenced by EmitBaseInitializer(), isInitializerOfDynamicClass(), print_initializer(), and clang::ento::ExprEngine::ProcessInitializer().
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 2645 of file DeclCXX.cpp.
References isBaseInitializer().
|
inline |
Definition at line 2410 of file DeclCXX.h.
References isPackExpansion().
Referenced by clang::ASTImporter::Import().
int64_t CXXCtorInitializer::getID | ( | const ASTContext & | Context | ) | const |
Definition at line 2640 of file DeclCXX.cpp.
|
inline |
Definition at line 2454 of file DeclCXX.h.
References isIndirectMemberInitializer().
Referenced by EmitLValueForAnyFieldInitialization(), clang::ASTImporter::Import(), and clang::ento::ExprEngine::ProcessInitializer().
|
inline |
Get the initializer.
Definition at line 2502 of file DeclCXX.h.
Referenced by AllTrivialInitializers(), EmitBaseInitializer(), clang::CodeGen::CodeGenFunction::EmitDelegatingCXXConstructorCall(), EmitMemberInitializer(), clang::ConstructorInitializerConstructionContext::getArrayInitLoop(), clang::ASTImporter::Import(), print_initializer(), and clang::ento::ExprEngine::ProcessInitializer().
|
inline |
Definition at line 2498 of file DeclCXX.h.
Referenced by clang::ASTImporter::Import().
|
inline |
If this is a member initializer, returns the declaration of the non-static data member being initialized.
Otherwise, returns null.
Definition at line 2440 of file DeclCXX.h.
References isMemberInitializer().
Referenced by clang::ASTImporter::Import(), and clang::ento::ExprEngine::ProcessInitializer().
|
inline |
Definition at line 2460 of file DeclCXX.h.
Referenced by getSourceLocation(), and clang::ASTImporter::Import().
|
inline |
Definition at line 2499 of file DeclCXX.h.
Referenced by getSourceRange(), and clang::ASTImporter::Import().
SourceLocation CXXCtorInitializer::getSourceLocation | ( | ) | const |
Determine the source location of the initializer.
Definition at line 2659 of file DeclCXX.cpp.
References getAnyMember(), clang::Decl::getLocation(), getMemberLocation(), isAnyMemberInitializer(), and isInClassMemberInitializer().
Referenced by DiagnoseBaseOrMemInitializerOrder(), EmitMemberInitializer(), getSourceRange(), and clang::ento::ExprEngine::ProcessInitializer().
|
inline |
SourceRange CXXCtorInitializer::getSourceRange | ( | ) | const |
Determine the source range covering the entire initializer.
Definition at line 2672 of file DeclCXX.cpp.
References getAnyMember(), clang::FieldDecl::getInClassInitializer(), getRParenLoc(), getSourceLocation(), and isInClassMemberInitializer().
Referenced by DiagnoseBaseOrMemInitializerOrder(), and clang::Sema::DiagnoseImmediateEscalatingReason().
|
inline |
Returns the declarator information for a base class or delegating initializer.
Definition at line 2434 of file DeclCXX.h.
Referenced by clang::ASTImporter::Import(), and print_initializer().
|
inline |
Definition at line 2380 of file DeclCXX.h.
References isIndirectMemberInitializer(), and isMemberInitializer().
Referenced by EmitMemberInitializer(), getSourceLocation(), and clang::ento::ExprEngine::ProcessInitializer().
|
inline |
Determine whether this initializer is initializing a base class.
Definition at line 2372 of file DeclCXX.h.
Referenced by EmitBaseInitializer(), getBaseClass(), getBaseClassLoc(), clang::ASTImporter::Import(), isBaseVirtual(), isPackExpansion(), print_initializer(), and clang::ento::ExprEngine::ProcessInitializer().
|
inline |
Returns whether the base is virtual or not.
Definition at line 2426 of file DeclCXX.h.
References isBaseInitializer().
Referenced by EmitBaseInitializer(), clang::ASTImporter::Import(), and clang::ento::ExprEngine::ProcessInitializer().
|
inline |
Determine whether this initializer is creating a delegating constructor.
Definition at line 2400 of file DeclCXX.h.
Referenced by clang::ASTImporter::Import(), clang::CXXConstructorDecl::isDelegatingConstructor(), print_initializer(), and clang::ento::ExprEngine::ProcessInitializer().
|
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 2394 of file DeclCXX.h.
Referenced by getSourceLocation(), and getSourceRange().
|
inline |
Definition at line 2384 of file DeclCXX.h.
Referenced by EmitLValueForAnyFieldInitialization(), getAnyMember(), getIndirectMember(), clang::ASTImporter::Import(), isAnyMemberInitializer(), and clang::ento::ExprEngine::ProcessInitializer().
|
inline |
Determine whether this initializer is initializing a non-static data member.
Definition at line 2378 of file DeclCXX.h.
Referenced by getAnyMember(), getMember(), clang::ASTImporter::Import(), and isAnyMemberInitializer().
|
inline |
Determine whether this initializer is a pack expansion.
Definition at line 2405 of file DeclCXX.h.
References isBaseInitializer(), and clang::SourceLocation::isValid().
Referenced by getEllipsisLoc(), and clang::ASTImporter::Import().
|
inline |
Determine whether this initializer is explicitly written in the source code.
Definition at line 2472 of file DeclCXX.h.
Referenced by clang::Sema::DiagnoseImmediateEscalatingReason(), and clang::diff::isSpecializedNodeExcluded().
|
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.