clang 20.0.0git
|
Describes the capture of a variable or of this
, or of a C++1y init-capture.
More...
#include "clang/AST/LambdaCapture.h"
Public Member Functions | |
LambdaCapture (SourceLocation Loc, bool Implicit, LambdaCaptureKind Kind, ValueDecl *Var=nullptr, SourceLocation EllipsisLoc=SourceLocation()) | |
Create a new capture of a variable or of this . | |
LambdaCaptureKind | getCaptureKind () const |
Determine the kind of capture. | |
bool | capturesThis () const |
Determine whether this capture handles the C++ this pointer. | |
bool | capturesVariable () const |
Determine whether this capture handles a variable. | |
bool | capturesVLAType () const |
Determine whether this captures a variable length array bound expression. | |
ValueDecl * | getCapturedVar () const |
Retrieve the declaration of the local variable being captured. | |
bool | isImplicit () const |
Determine whether this was an implicit capture (not written between the square brackets introducing the lambda). | |
bool | isExplicit () const |
Determine whether this was an explicit capture (written between the square brackets introducing the lambda). | |
SourceLocation | getLocation () const |
Retrieve the source location of the capture. | |
bool | isPackExpansion () const |
Determine whether this capture is a pack expansion, which captures a function parameter pack. | |
SourceLocation | getEllipsisLoc () const |
Retrieve the location of the ellipsis for a capture that is a pack expansion. | |
Friends | |
class | ASTStmtReader |
class | ASTStmtWriter |
Describes the capture of a variable or of this
, or of a C++1y init-capture.
Definition at line 25 of file LambdaCapture.h.
LambdaCapture::LambdaCapture | ( | SourceLocation | Loc, |
bool | Implicit, | ||
LambdaCaptureKind | Kind, | ||
ValueDecl * | Var = nullptr , |
||
SourceLocation | EllipsisLoc = SourceLocation() |
||
) |
Create a new capture of a variable or of this
.
Loc | The source location associated with this capture. |
Kind | The kind of capture (this, byref, bycopy), which must not be init-capture. |
Implicit | Whether the capture was implicit or explicit. |
Var | The local variable being captured, or null if capturing this . |
EllipsisLoc | The location of the ellipsis (...) for a capture that is a pack expansion, or an invalid source location to indicate that this is not a pack expansion. |
Definition at line 1215 of file ExprCXX.cpp.
References clang::Implicit, clang::LCK_ByCopy, clang::LCK_ByRef, clang::LCK_StarThis, clang::LCK_This, and clang::LCK_VLAType.
|
inline |
Determine whether this capture handles the C++ this
pointer.
Definition at line 82 of file LambdaCapture.h.
Referenced by getCaptureKind().
|
inline |
Determine whether this capture handles a variable.
Definition at line 88 of file LambdaCapture.h.
Referenced by getCapturedVar(), clang::ASTNodeImporter::import(), and clang::sema::visitLocalsRetainedByInitializer().
|
inline |
Determine whether this captures a variable length array bound expression.
Definition at line 94 of file LambdaCapture.h.
Referenced by getCaptureKind().
|
inline |
Retrieve the declaration of the local variable being captured.
This operation is only valid if this capture is a variable capture (other than a capture of this
).
Definition at line 104 of file LambdaCapture.h.
References capturesVariable().
Referenced by clang::ASTNodeImporter::import().
LambdaCaptureKind LambdaCapture::getCaptureKind | ( | ) | const |
Determine the kind of capture.
Definition at line 1245 of file ExprCXX.cpp.
References capturesThis(), capturesVLAType(), clang::LCK_ByCopy, clang::LCK_ByRef, clang::LCK_StarThis, clang::LCK_This, and clang::LCK_VLAType.
Referenced by clang::ASTNodeImporter::import(), and clang::ASTDeclMerger::MergeDefinitionData().
|
inline |
Retrieve the location of the ellipsis for a capture that is a pack expansion.
Definition at line 133 of file LambdaCapture.h.
References isPackExpansion().
Referenced by clang::ASTNodeImporter::import().
|
inline |
Retrieve the source location of the capture.
For an explicit capture, this returns the location of the explicit capture in the source. For an implicit capture, this returns the location at which the variable or this
was first used.
Definition at line 125 of file LambdaCapture.h.
References Loc.
Referenced by clang::ASTNodeImporter::import().
|
inline |
Determine whether this was an explicit capture (written between the square brackets introducing the lambda).
Definition at line 117 of file LambdaCapture.h.
References isImplicit().
|
inline |
Determine whether this was an implicit capture (not written between the square brackets introducing the lambda).
Definition at line 111 of file LambdaCapture.h.
Referenced by clang::ASTNodeImporter::import(), and isExplicit().
|
inline |
Determine whether this capture is a pack expansion, which captures a function parameter pack.
Definition at line 129 of file LambdaCapture.h.
References clang::SourceLocation::isValid().
Referenced by getEllipsisLoc(), and clang::ASTNodeImporter::import().
|
friend |
Definition at line 54 of file LambdaCapture.h.
|
friend |
Definition at line 55 of file LambdaCapture.h.