clang 20.0.0git
Public Member Functions | Friends | List of all members
clang::LambdaCapture Class Reference

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.
 
ValueDeclgetCapturedVar () 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
 

Detailed Description

Describes the capture of a variable or of this, or of a C++1y init-capture.

Definition at line 25 of file LambdaCapture.h.

Constructor & Destructor Documentation

◆ LambdaCapture()

LambdaCapture::LambdaCapture ( SourceLocation  Loc,
bool  Implicit,
LambdaCaptureKind  Kind,
ValueDecl Var = nullptr,
SourceLocation  EllipsisLoc = SourceLocation() 
)

Create a new capture of a variable or of this.

Parameters
LocThe source location associated with this capture.
KindThe kind of capture (this, byref, bycopy), which must not be init-capture.
ImplicitWhether the capture was implicit or explicit.
VarThe local variable being captured, or null if capturing this.
EllipsisLocThe 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.

Member Function Documentation

◆ capturesThis()

bool clang::LambdaCapture::capturesThis ( ) const
inline

Determine whether this capture handles the C++ this pointer.

Definition at line 82 of file LambdaCapture.h.

Referenced by getCaptureKind().

◆ capturesVariable()

bool clang::LambdaCapture::capturesVariable ( ) const
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().

◆ capturesVLAType()

bool clang::LambdaCapture::capturesVLAType ( ) const
inline

Determine whether this captures a variable length array bound expression.

Definition at line 94 of file LambdaCapture.h.

Referenced by getCaptureKind().

◆ getCapturedVar()

ValueDecl * clang::LambdaCapture::getCapturedVar ( ) const
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().

◆ getCaptureKind()

LambdaCaptureKind LambdaCapture::getCaptureKind ( ) const

◆ getEllipsisLoc()

SourceLocation clang::LambdaCapture::getEllipsisLoc ( ) const
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().

◆ getLocation()

SourceLocation clang::LambdaCapture::getLocation ( ) const
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().

◆ isExplicit()

bool clang::LambdaCapture::isExplicit ( ) const
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().

◆ isImplicit()

bool clang::LambdaCapture::isImplicit ( ) const
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().

◆ isPackExpansion()

bool clang::LambdaCapture::isPackExpansion ( ) const
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().

Friends And Related Function Documentation

◆ ASTStmtReader

friend class ASTStmtReader
friend

Definition at line 54 of file LambdaCapture.h.

◆ ASTStmtWriter

friend class ASTStmtWriter
friend

Definition at line 55 of file LambdaCapture.h.


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