clang 20.0.0git
|
SwitchStmt - This represents a 'switch' stmt. More...
#include "clang/AST/Stmt.h"
Public Member Functions | |
bool | hasInitStorage () const |
True if this SwitchStmt has storage for an init statement. | |
bool | hasVarStorage () const |
True if this SwitchStmt has storage for a condition variable. | |
Expr * | getCond () |
const Expr * | getCond () const |
void | setCond (Expr *Cond) |
Stmt * | getBody () |
const Stmt * | getBody () const |
void | setBody (Stmt *Body) |
Stmt * | getInit () |
const Stmt * | getInit () const |
void | setInit (Stmt *Init) |
VarDecl * | getConditionVariable () |
Retrieve the variable declared in this "switch" statement, if any. | |
const VarDecl * | getConditionVariable () const |
void | setConditionVariable (const ASTContext &Ctx, VarDecl *VD) |
Set the condition variable in this switch statement. | |
DeclStmt * | getConditionVariableDeclStmt () |
If this SwitchStmt has a condition variable, return the faux DeclStmt associated with the creation of that condition variable. | |
const DeclStmt * | getConditionVariableDeclStmt () const |
void | setConditionVariableDeclStmt (DeclStmt *CondVar) |
SwitchCase * | getSwitchCaseList () |
const SwitchCase * | getSwitchCaseList () const |
void | setSwitchCaseList (SwitchCase *SC) |
SourceLocation | getSwitchLoc () const |
void | setSwitchLoc (SourceLocation L) |
SourceLocation | getLParenLoc () const |
void | setLParenLoc (SourceLocation Loc) |
SourceLocation | getRParenLoc () const |
void | setRParenLoc (SourceLocation Loc) |
void | setBody (Stmt *S, SourceLocation SL) |
void | addSwitchCase (SwitchCase *SC) |
void | setAllEnumCasesCovered () |
Set a flag in the SwitchStmt indicating that if the 'switch (X)' is a switch over an enum value then all cases have been explicitly covered. | |
bool | isAllEnumCasesCovered () const |
Returns true if the SwitchStmt is a switch of an enum value and all cases have been explicitly covered. | |
SourceLocation | getBeginLoc () const |
SourceLocation | getEndLoc () const LLVM_READONLY |
child_range | children () |
const_child_range | children () const |
Public Member Functions inherited from clang::Stmt | |
void * | operator new (size_t bytes, const ASTContext &C, unsigned alignment=8) |
void * | operator new (size_t bytes, const ASTContext *C, unsigned alignment=8) |
void * | operator new (size_t bytes, void *mem) noexcept |
void | operator delete (void *, const ASTContext &, unsigned) noexcept |
void | operator delete (void *, const ASTContext *, unsigned) noexcept |
void | operator delete (void *, size_t) noexcept |
void | operator delete (void *, void *) noexcept |
Stmt ()=delete | |
Stmt (const Stmt &)=delete | |
Stmt (Stmt &&)=delete | |
Stmt & | operator= (const Stmt &)=delete |
Stmt & | operator= (Stmt &&)=delete |
Stmt (StmtClass SC) | |
StmtClass | getStmtClass () const |
const char * | getStmtClassName () const |
SourceRange | getSourceRange () const LLVM_READONLY |
SourceLocation tokens are not useful in isolation - they are low level value objects created/interpreted by SourceManager. | |
SourceLocation | getBeginLoc () const LLVM_READONLY |
SourceLocation | getEndLoc () const LLVM_READONLY |
void | dump () const |
Dumps the specified AST fragment and all subtrees to llvm::errs() . | |
void | dump (raw_ostream &OS, const ASTContext &Context) const |
int64_t | getID (const ASTContext &Context) const |
void | dumpColor () const |
dumpColor - same as dump(), but forces color highlighting. | |
void | dumpPretty (const ASTContext &Context) const |
dumpPretty/printPretty - These two methods do a "pretty print" of the AST back to its original source language syntax. | |
void | printPretty (raw_ostream &OS, PrinterHelper *Helper, const PrintingPolicy &Policy, unsigned Indentation=0, StringRef NewlineSymbol="\n", const ASTContext *Context=nullptr) const |
void | printPrettyControlled (raw_ostream &OS, PrinterHelper *Helper, const PrintingPolicy &Policy, unsigned Indentation=0, StringRef NewlineSymbol="\n", const ASTContext *Context=nullptr) const |
void | printJson (raw_ostream &Out, PrinterHelper *Helper, const PrintingPolicy &Policy, bool AddQuotes) const |
Pretty-prints in JSON format. | |
void | viewAST () const |
viewAST - Visualize an AST rooted at this Stmt* using GraphViz. | |
Stmt * | IgnoreContainers (bool IgnoreCaptured=false) |
Skip no-op (attributed, compound) container stmts and skip captured stmt at the top, if IgnoreCaptured is true. | |
const Stmt * | IgnoreContainers (bool IgnoreCaptured=false) const |
const Stmt * | stripLabelLikeStatements () const |
Strip off all label-like statements. | |
Stmt * | stripLabelLikeStatements () |
child_range | children () |
const_child_range | children () const |
child_iterator | child_begin () |
child_iterator | child_end () |
const_child_iterator | child_begin () const |
const_child_iterator | child_end () const |
void | Profile (llvm::FoldingSetNodeID &ID, const ASTContext &Context, bool Canonical, bool ProfileLambdaExpr=false) const |
Produce a unique representation of the given statement. | |
void | ProcessODRHash (llvm::FoldingSetNodeID &ID, ODRHash &Hash) const |
Calculate a unique representation for a statement that is stable across compiler invocations. | |
Static Public Member Functions | |
static SwitchStmt * | Create (const ASTContext &Ctx, Stmt *Init, VarDecl *Var, Expr *Cond, SourceLocation LParenLoc, SourceLocation RParenLoc) |
Create a switch statement. | |
static SwitchStmt * | CreateEmpty (const ASTContext &Ctx, bool HasInit, bool HasVar) |
Create an empty switch statement optionally with storage for an init expression and a condition variable. | |
static bool | classof (const Stmt *T) |
Static Public Member Functions inherited from clang::Stmt | |
static void | addStmtClass (const StmtClass s) |
static void | EnableStatistics () |
static void | PrintStats () |
static Likelihood | getLikelihood (ArrayRef< const Attr * > Attrs) |
static Likelihood | getLikelihood (const Stmt *S) |
static const Attr * | getLikelihoodAttr (const Stmt *S) |
static Likelihood | getLikelihood (const Stmt *Then, const Stmt *Else) |
static std::tuple< bool, const Attr *, const Attr * > | determineLikelihoodConflict (const Stmt *Then, const Stmt *Else) |
SwitchStmt - This represents a 'switch' stmt.
|
inline |
Definition at line 2551 of file Stmt.h.
References clang::SwitchCase::getNextSwitchCase(), and clang::SwitchCase::setNextSwitchCase().
|
inline |
|
inline |
|
static |
Create a switch statement.
Definition at line 1081 of file Stmt.cpp.
References clang::ASTContext::Allocate(), and clang::Init.
Referenced by clang::Sema::ActOnStartOfSwitchStmt(), and clang::ASTNodeImporter::VisitSwitchStmt().
|
static |
Create an empty switch statement optionally with storage for an init expression and a condition variable.
Definition at line 1092 of file Stmt.cpp.
References clang::ASTContext::Allocate().
|
inline |
Definition at line 2568 of file Stmt.h.
References getSwitchLoc().
|
inline |
Definition at line 2473 of file Stmt.h.
Referenced by EvaluateSwitch(), and getEndLoc().
|
inline |
Definition at line 2461 of file Stmt.h.
Referenced by clang::Sema::ActOnFinishSwitchStmt(), EvaluateSwitch(), getEndLoc(), and clang::ento::ExprEngine::processSwitch().
VarDecl * SwitchStmt::getConditionVariable | ( | ) |
Retrieve the variable declared in this "switch" statement, if any.
In the following example, "x" is the condition variable.
Definition at line 1100 of file Stmt.cpp.
References getConditionVariableDeclStmt().
Referenced by EvaluateSwitch(), and getConditionVariable().
|
inline |
Definition at line 2508 of file Stmt.h.
References getConditionVariable().
|
inline |
If this SwitchStmt has a condition variable, return the faux DeclStmt associated with the creation of that condition variable.
Definition at line 2518 of file Stmt.h.
References hasVarStorage().
Referenced by getConditionVariable().
|
inline |
Definition at line 2524 of file Stmt.h.
References hasVarStorage().
|
inline |
Definition at line 2569 of file Stmt.h.
References getBody(), getCond(), clang::Stmt::getEndLoc(), and getEndLoc().
Referenced by getEndLoc().
|
inline |
Definition at line 2482 of file Stmt.h.
References hasInitStorage().
Referenced by EvaluateSwitch().
|
inline |
Definition at line 2487 of file Stmt.h.
References hasInitStorage().
|
inline |
|
inline |
|
inline |
Definition at line 2535 of file Stmt.h.
Referenced by clang::Sema::ActOnFinishSwitchStmt(), and EvaluateSwitch().
|
inline |
|
inline |
Definition at line 2539 of file Stmt.h.
References clang::Stmt::SwitchStmtBits.
Referenced by getBeginLoc().
|
inline |
True if this SwitchStmt has storage for an init statement.
Definition at line 2456 of file Stmt.h.
References clang::Stmt::SwitchStmtBits.
Referenced by getInit(), setInit(), and clang::JSONNodeDumper::VisitSwitchStmt().
|
inline |
True if this SwitchStmt has storage for a condition variable.
Definition at line 2459 of file Stmt.h.
References clang::Stmt::SwitchStmtBits.
Referenced by getConditionVariableDeclStmt(), setConditionVariable(), setConditionVariableDeclStmt(), and clang::JSONNodeDumper::VisitSwitchStmt().
|
inline |
Returns true if the SwitchStmt is a switch of an enum value and all cases have been explicitly covered.
Definition at line 2564 of file Stmt.h.
References clang::Stmt::SwitchStmtBits.
Referenced by clang::ento::ExprEngine::processSwitch().
|
inline |
Set a flag in the SwitchStmt indicating that if the 'switch (X)' is a switch over an enum value then all cases have been explicitly covered.
Definition at line 2560 of file Stmt.h.
References clang::Stmt::SwitchStmtBits.
Referenced by clang::Sema::ActOnFinishSwitchStmt().
|
inline |
Definition at line 2478 of file Stmt.h.
Referenced by clang::Sema::ActOnFinishSwitchStmt(), and setBody().
|
inline |
Definition at line 2546 of file Stmt.h.
References setBody(), and setSwitchLoc().
void SwitchStmt::setConditionVariable | ( | const ASTContext & | Ctx, |
VarDecl * | VD | ||
) |
Set the condition variable in this switch statement.
The switch statement must have storage for it.
Definition at line 1107 of file Stmt.cpp.
References clang::SourceRange::getBegin(), clang::SourceRange::getEnd(), hasVarStorage(), and V.
|
inline |
Definition at line 2530 of file Stmt.h.
References hasVarStorage().
|
inline |
Definition at line 2492 of file Stmt.h.
References hasInitStorage(), and clang::Init.
|
inline |
|
inline |
|
inline |
|
inline |
Definition at line 2540 of file Stmt.h.
References clang::Stmt::SwitchStmtBits.
Referenced by setBody().