clang 20.0.0git
|
Describes an entity that is being initialized. More...
#include "clang/Sema/Initialization.h"
Public Types | |
enum | EntityKind { EK_Variable , EK_Parameter , EK_TemplateParameter , EK_Result , EK_StmtExprResult , EK_Exception , EK_Member , EK_ArrayElement , EK_New , EK_Temporary , EK_Base , EK_Delegating , EK_VectorElement , EK_BlockElement , EK_LambdaToBlockConversionBlockElement , EK_ComplexElement , EK_LambdaCapture , EK_CompoundLiteralInit , EK_RelatedResult , EK_Parameter_CF_Audited , EK_Binding , EK_ParenAggInitMember } |
Specifies the kind of entity being initialized. More... | |
Public Member Functions | |
EntityKind | getKind () const |
Determine the kind of initialization. | |
const InitializedEntity * | getParent () const |
Retrieve the parent of the entity being initialized, when the initialization itself is occurring within the context of a larger initialization. | |
QualType | getType () const |
Retrieve type being initialized. | |
TypeSourceInfo * | getTypeSourceInfo () const |
Retrieve complete type-source information for the object being constructed, if known. | |
DeclarationName | getName () const |
Retrieve the name of the entity being initialized. | |
ValueDecl * | getDecl () const |
Retrieve the variable, parameter, or field being initialized. | |
ObjCMethodDecl * | getMethodDecl () const |
Retrieve the ObjectiveC method being initialized. | |
bool | allowsNRVO () const |
Determine whether this initialization allows the named return value optimization, which also applies to thrown objects. | |
bool | isParameterKind () const |
bool | isParamOrTemplateParamKind () const |
bool | isParameterConsumed () const |
Determine whether this initialization consumes the parameter. | |
const CXXBaseSpecifier * | getBaseSpecifier () const |
Retrieve the base specifier. | |
bool | isInheritedVirtualBase () const |
Return whether the base is an inherited virtual base. | |
bool | isVariableLengthArrayNew () const |
Determine whether this is an array new with an unknown bound. | |
bool | isImplicitMemberInitializer () const |
Is this the implicit initialization of a member of a class from a defaulted constructor? | |
bool | isDefaultMemberInitializer () const |
Is this the default member initializer of a member (specified inside the class definition)? | |
SourceLocation | getReturnLoc () const |
Determine the location of the 'return' keyword when initializing the result of a function call. | |
SourceLocation | getThrowLoc () const |
Determine the location of the 'throw' keyword when initializing an exception object. | |
unsigned | getElementIndex () const |
If this is an array, vector, or complex number element, get the element's index. | |
void | setElementIndex (unsigned Index) |
If this is already the initializer for an array or vector element, sets the element index. | |
StringRef | getCapturedVarName () const |
For a lambda capture, return the capture's name. | |
SourceLocation | getCaptureLoc () const |
Determine the location of the capture when initializing field from a captured variable in a lambda. | |
void | setParameterCFAudited () |
unsigned | allocateManglingNumber () const |
void | dump () const |
Dump a representation of the initialized entity to standard error, for debugging purposes. | |
Static Public Member Functions | |
static InitializedEntity | InitializeVariable (VarDecl *Var) |
Create the initialization entity for a variable. | |
static InitializedEntity | InitializeParameter (ASTContext &Context, ParmVarDecl *Parm) |
Create the initialization entity for a parameter. | |
static InitializedEntity | InitializeParameter (ASTContext &Context, ParmVarDecl *Parm, QualType Type) |
Create the initialization entity for a parameter, but use another type. | |
static InitializedEntity | InitializeParameter (ASTContext &Context, QualType Type, bool Consumed) |
Create the initialization entity for a parameter that is only known by its type. | |
static InitializedEntity | InitializeTemplateParameter (QualType T, NonTypeTemplateParmDecl *Param) |
Create the initialization entity for a template parameter. | |
static InitializedEntity | InitializeResult (SourceLocation ReturnLoc, QualType Type) |
Create the initialization entity for the result of a function. | |
static InitializedEntity | InitializeStmtExprResult (SourceLocation ReturnLoc, QualType Type) |
static InitializedEntity | InitializeBlock (SourceLocation BlockVarLoc, QualType Type) |
static InitializedEntity | InitializeLambdaToBlock (SourceLocation BlockVarLoc, QualType Type) |
static InitializedEntity | InitializeException (SourceLocation ThrowLoc, QualType Type) |
Create the initialization entity for an exception object. | |
static InitializedEntity | InitializeNew (SourceLocation NewLoc, QualType Type) |
Create the initialization entity for an object allocated via new. | |
static InitializedEntity | InitializeTemporary (QualType Type) |
Create the initialization entity for a temporary. | |
static InitializedEntity | InitializeTemporary (ASTContext &Context, TypeSourceInfo *TypeInfo) |
Create the initialization entity for a temporary. | |
static InitializedEntity | InitializeTemporary (TypeSourceInfo *TypeInfo, QualType Type) |
Create the initialization entity for a temporary. | |
static InitializedEntity | InitializeRelatedResult (ObjCMethodDecl *MD, QualType Type) |
Create the initialization entity for a related result. | |
static InitializedEntity | InitializeBase (ASTContext &Context, const CXXBaseSpecifier *Base, bool IsInheritedVirtualBase, const InitializedEntity *Parent=nullptr) |
Create the initialization entity for a base class subobject. | |
static InitializedEntity | InitializeDelegation (QualType Type) |
Create the initialization entity for a delegated constructor. | |
static InitializedEntity | InitializeMember (FieldDecl *Member, const InitializedEntity *Parent=nullptr, bool Implicit=false) |
Create the initialization entity for a member subobject. | |
static InitializedEntity | InitializeMember (IndirectFieldDecl *Member, const InitializedEntity *Parent=nullptr, bool Implicit=false) |
Create the initialization entity for a member subobject. | |
static InitializedEntity | InitializeMemberFromParenAggInit (FieldDecl *Member) |
Create the initialization entity for a member subobject initialized via parenthesized aggregate init. | |
static InitializedEntity | InitializeMemberFromDefaultMemberInitializer (FieldDecl *Member) |
Create the initialization entity for a default member initializer. | |
static InitializedEntity | InitializeElement (ASTContext &Context, unsigned Index, const InitializedEntity &Parent) |
Create the initialization entity for an array element. | |
static InitializedEntity | InitializeBinding (VarDecl *Binding) |
Create the initialization entity for a structured binding. | |
static InitializedEntity | InitializeLambdaCapture (IdentifierInfo *VarID, QualType FieldType, SourceLocation Loc) |
Create the initialization entity for a lambda capture. | |
static InitializedEntity | InitializeCompoundLiteralInit (TypeSourceInfo *TSI) |
Create the entity for a compound literal initializer. | |
Describes an entity that is being initialized.
Definition at line 47 of file Initialization.h.
Specifies the kind of entity being initialized.
Definition at line 50 of file Initialization.h.
|
inline |
Definition at line 567 of file Initialization.h.
Referenced by clang::Sema::BuildCXXForRangeStmt(), and clang::sema::checkExprLifetimeImpl().
bool InitializedEntity::allowsNRVO | ( | ) | const |
Determine whether this initialization allows the named return value optimization, which also applies to thrown objects.
Definition at line 3689 of file SemaInit.cpp.
References EK_ArrayElement, EK_Base, EK_Binding, EK_BlockElement, EK_ComplexElement, EK_CompoundLiteralInit, EK_Delegating, EK_Exception, EK_LambdaCapture, EK_LambdaToBlockConversionBlockElement, EK_Member, EK_New, EK_Parameter, EK_Parameter_CF_Audited, EK_ParenAggInitMember, EK_RelatedResult, EK_Result, EK_StmtExprResult, EK_TemplateParameter, EK_Temporary, EK_Variable, EK_VectorElement, getKind(), and LocAndNRVO.
Referenced by PerformConstructorInitialization().
LLVM_DUMP_METHOD void InitializedEntity::dump | ( | ) | const |
Dump a representation of the initialized entity to standard error, for debugging purposes.
Definition at line 3770 of file SemaInit.cpp.
|
inline |
Retrieve the base specifier.
Definition at line 491 of file Initialization.h.
References EK_Base, and getKind().
Referenced by clang::Sema::CheckConstructorAccess(), clang::InitializationSequence::Diagnose(), and PerformConstructorInitialization().
|
inline |
For a lambda capture, return the capture's name.
Definition at line 551 of file Initialization.h.
References EK_LambdaCapture, and getKind().
Referenced by clang::Sema::CheckConstructorAccess().
|
inline |
Determine the location of the capture when initializing field from a captured variable in a lambda.
Definition at line 558 of file Initialization.h.
References EK_LambdaCapture, and