0.6.0
C++ to UML diagram generator based on Clang
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Public Attributes | Private Attributes | List of all members
clanguml::sequence_diagram::visitor::call_expression_context Struct Reference

This class is used to track current context of the call expressions. More...

Detailed Description

This class is used to track current context of the call expressions.

When traversing AST for call expressions, we need to keep the state of the current context, for instance whether we are in a for loop or an if block, as well as the current parent of the call expression e.g. a class method or function.

Definition at line 41 of file call_expression_context.h.

#include <call_expression_context.h>

Public Types

using callexpr_stack_t = std::variant< std::monostate, clang::CallExpr *, clang::CXXConstructExpr *, clang::ObjCMessageExpr * >
 

Public Member Functions

 call_expression_context ()
 
void reset ()
 Reset call expression context to the original state.
 
bool valid () const
 Verify that the context is in a valid state.
 
clang::ASTContext * get_ast_context () const
 
void update (clang::CXXRecordDecl *cls)
 Set the current context to a class.
 
void update (clang::ObjCInterfaceDecl *cls)
 
void update (clang::ObjCProtocolDecl *cls)
 
void update (clang::ClassTemplateSpecializationDecl *clst)
 Set the current context to a class template specialization.
 
void update (clang::ClassTemplateDecl *clst)
 Set the current context to a class template.
 
void update (clang::CXXMethodDecl *method)
 Set the current context to a class method.
 
void update (clang::ObjCMethodDecl *method)
 
void update (clang::FunctionDecl *function)
 Set the current context to a function.
 
void update (clang::FunctionTemplateDecl *function_template)
 Set the current context to a function template.
 
void set_caller_id (eid_t id)
 Set current caller to id of the current participant.
 
eid_t caller_id () const
 Get current caller id.
 
std::optional< eid_tlambda_caller_id () const
 Get the id of the current lambda caller.
 
void enter_lambda_expression (eid_t id)
 Enter a lambda expression.
 
void leave_lambda_expression ()
 Leave current lambda expression.
 
clang::IfStmt * current_ifstmt () const
 Get current if statement block.
 
void enter_ifstmt (clang::IfStmt *stmt)
 Enter if statement block.
 
void leave_ifstmt ()
 Leave if statement block.
 
void enter_elseifstmt (clang::IfStmt *stmt)
 Enter else if statement block.
 
clang::IfStmt * current_elseifstmt () const
 Get current else if statement block.
 
clang::Stmt * current_loopstmt () const
 Get current loop statement block.
 
void enter_loopstmt (clang::Stmt *stmt)
 Enter loop statement block.
 
void leave_loopstmt ()
 Leave loop statement block.
 
clang::Stmt * current_trystmt () const
 Get current try statement block.
 
void enter_trystmt (clang::Stmt *stmt)
 Enter try statement block.
 
void leave_trystmt ()
 Leave try statement block.
 
clang::SwitchStmt * current_switchstmt () const
 Get current switch statement block.
 
void enter_switchstmt (clang::SwitchStmt *stmt)
 Enter switch statement block.
 
void leave_switchstmt ()
 Leave switch statement block.
 
clang::ConditionalOperator * current_conditionaloperator () const
 Get current :? statement block.
 
void enter_conditionaloperator (clang::ConditionalOperator *stmt)
 Enter :? statement block.
 
void leave_conditionaloperator ()
 Leave :? statement block.
 
callexpr_stack_t current_callexpr () const
 Get current call expression.
 
void enter_callexpr (clang::CallExpr *expr)
 Enter a call expression.
 
void enter_callexpr (clang::CXXConstructExpr *expr)
 Enter a constructor call expression.
 
void enter_callexpr (clang::ObjCMessageExpr *expr)
 
void leave_callexpr ()
 Leave call expression.
 
bool is_expr_in_current_control_statement_condition (const clang::Stmt *stmt) const
 Check, if a statement is contained in a control statement.
 
void dump ()
 Print the current call expression stack for debugging.
 

Public Attributes

clang::CXXRecordDecl * current_class_decl_ {nullptr}
 
clang::ClassTemplateDecl * current_class_template_decl_ {nullptr}
 
clang::ClassTemplateSpecializationDecl * current_class_template_specialization_decl_ {nullptr}
 
clang::CXXMethodDecl * current_method_decl_ {nullptr}
 
clang::ObjCMethodDecl * current_objc_method_decl_ {nullptr}
 
clang::FunctionDecl * current_function_decl_ {nullptr}
 
clang::FunctionTemplateDecl * current_function_template_decl_ {nullptr}
 
clang::ObjCInterfaceDecl * objc_interface_decl_ {nullptr}
 
clang::ObjCProtocolDecl * objc_protocol_decl_ {nullptr}
 

Private Attributes

eid_t current_caller_id_ {}
 
std::stack< eid_tcurrent_lambda_caller_id_
 
std::stack< callexpr_stack_tcall_expr_stack_
 
std::stack< clang::IfStmt * > if_stmt_stack_
 
std::map< clang::IfStmt *, std::stack< clang::IfStmt * > > elseif_stmt_stacks_
 
std::stack< clang::Stmt * > loop_stmt_stack_
 
std::stack< clang::Stmt * > try_stmt_stack_
 
std::stack< clang::SwitchStmt * > switch_stmt_stack_
 
std::stack< clang::ConditionalOperator * > conditional_operator_stack_
 

Member Typedef Documentation

◆ callexpr_stack_t

using clanguml::sequence_diagram::visitor::call_expression_context::callexpr_stack_t = std::variant<std::monostate, clang::CallExpr *, clang::CXXConstructExpr *, clang::ObjCMessageExpr *>

In Clang, call to a class constructor is represented by clang::CXXConstructExpr, which does inherit from clang::CallExpr. So to enable to track calls to constructors, we need to be able to add to the call stack either type.

Definition at line 48 of file call_expression_context.h.

Constructor & Destructor Documentation

◆ call_expression_context()

clanguml::sequence_diagram::visitor::call_expression_context::call_expression_context ( )
default

Member Function Documentation

◆ caller_id()

eid_t clanguml::sequence_diagram::visitor::call_expression_context::caller_id ( ) const

Get current caller id.

Returns
Id of the current caller participant

Definition at line 169 of file call_expression_context.cc.

170{
171 if (lambda_caller_id().has_value())
172 return *lambda_caller_id(); // NOLINT
173
174 return current_caller_id_;
175}

◆ current_callexpr()

call_expression_context::callexpr_stack_t clanguml::sequence_diagram::visitor::call_expression_context::current_callexpr ( ) const

Get current call expression.

Returns
Call expression

Definition at line 270 of file call_expression_context.cc.

271{
272 if (call_expr_stack_.empty())
273 return {};
274
275 return call_expr_stack_.top();
276}

◆ current_conditionaloperator()

clang::ConditionalOperator * clanguml::sequence_diagram::visitor::call_expression_context::current_conditionaloperator ( ) const

Get current :? statement block.

Returns
:? statement block.

Definition at line 339 of file call_expression_context.cc.

340{
341 if (conditional_operator_stack_.empty())
342 return nullptr;
343
344 return conditional_operator_stack_.top();
345}

◆ current_elseifstmt()

clang::IfStmt * clanguml::sequence_diagram::visitor::call_expression_context::current_elseifstmt ( ) const

Get current else if statement block.

Returns
if statement block.

Definition at line 239 of file call_expression_context.cc.

240{
241 assert(current_ifstmt() != nullptr);
242
243 if (elseif_stmt_stacks_.count(current_ifstmt()) == 0 ||
245 return nullptr;
246
247 return elseif_stmt_stacks_.at(current_ifstmt()).top();
248}

◆ current_ifstmt()

clang::IfStmt * clanguml::sequence_diagram::visitor::call_expression_context::current_ifstmt ( ) const

Get current if statement block.

Returns
if statement block.

Definition at line 211 of file call_expression_context.cc.

212{
213 if (if_stmt_stack_.empty())
214 return nullptr;
215
216 return if_stmt_stack_.top();
217}

◆ current_loopstmt()

clang::Stmt * clanguml::sequence_diagram::visitor::call_expression_context::current_loopstmt ( ) const

Get current loop statement block.

Returns
Loop statement block.

Definition at line 250 of file call_expression_context.cc.

251{
252 if (loop_stmt_stack_.empty())
253 return nullptr;
254
255 return loop_stmt_stack_.top();
256}

◆ current_switchstmt()

clang::SwitchStmt * clanguml::sequence_diagram::visitor::call_expression_context::current_switchstmt ( ) const

Get current switch statement block.

Returns
switch statement block.

Definition at line 319 of file call_expression_context.cc.

320{
321 if (switch_stmt_stack_.empty())
322 return nullptr;
323
324 return switch_stmt_stack_.top();
325}

◆ current_trystmt()

clang::Stmt * clanguml::sequence_diagram::visitor::call_expression_context::current_trystmt ( ) const

Get current try statement block.

Returns
try statement block.

Definition at line 300 of file call_expression_context.cc.

301{
302 if (try_stmt_stack_.empty())
303 return nullptr;
304
305 return try_stmt_stack_.top();
306}

◆ dump()

void clanguml::sequence_diagram::visitor::call_expression_context::dump ( )

Print the current call expression stack for debugging.

Definition at line 38 of file call_expression_context.cc.

39{
40 LOG_DBG("current_caller_id_ = {}", current_caller_id_);
41 LOG_DBG("current_class_decl_ = {}", (void *)current_class_decl_);
42 LOG_DBG("current_class_template_decl_ = {}",
44 LOG_DBG("current_class_template_specialization_decl_ = {}",
46 LOG_DBG("current_method_decl_ = {}", (void *)current_method_decl_);
47 LOG_DBG("current_function_decl_ = {}", (void *)current_function_decl_);
48 LOG_DBG("current_function_template_decl_ = {}",
50 LOG_DBG("objc_interface_decl_ = {}", (void *)objc_interface_decl_);
51 LOG_DBG(
52 "current_objc_method_decl_ = {}", (void *)current_objc_method_decl_);
53 LOG_DBG("objc_protocol_decl_ = {}", (void *)objc_protocol_decl_);
54}

◆ enter_callexpr() [1/3]

void clanguml::sequence_diagram::visitor::call_expression_context::enter_callexpr ( clang::CallExpr *  expr)

Enter a call expression.

Parameters
exprCall expression

Definition at line 278 of file call_expression_context.cc.

279{
280 call_expr_stack_.emplace(expr);
281}

◆ enter_callexpr() [2/3]

void clanguml::sequence_diagram::visitor::call_expression_context::enter_callexpr ( clang::CXXConstructExpr *  expr)

Enter a constructor call expression.

Parameters
exprConstructor call expression

Definition at line 283 of file call_expression_context.cc.

284{
285 call_expr_stack_.emplace(expr);
286}

◆ enter_callexpr() [3/3]

void clanguml::sequence_diagram::visitor::call_expression_context::enter_callexpr ( clang::ObjCMessageExpr *  expr)

Definition at line 288 of file call_expression_context.cc.

289{
290 call_expr_stack_.emplace(expr);
291}

◆ enter_conditionaloperator()

void clanguml::sequence_diagram::visitor::call_expression_context::enter_conditionaloperator ( clang::ConditionalOperator *  stmt)

Enter :? statement block.

Parameters
stmt:? statement block

Definition at line 347 of file call_expression_context.cc.

349{
350 conditional_operator_stack_.emplace(stmt);
351}

◆ enter_elseifstmt()

void clanguml::sequence_diagram::visitor::call_expression_context::enter_elseifstmt ( clang::IfStmt *  stmt)

Enter else if statement block.

Parameters
stmtif statement block

Definition at line 232 of file call_expression_context.cc.

233{
234 assert(current_ifstmt() != nullptr);
235
236 elseif_stmt_stacks_[current_ifstmt()].emplace(stmt);
237}

◆ enter_ifstmt()

void clanguml::sequence_diagram::visitor::call_expression_context::enter_ifstmt ( clang::IfStmt *  stmt)

Enter if statement block.

Parameters
stmtif statement block

Definition at line 219 of file call_expression_context.cc.

220{
221 if_stmt_stack_.emplace(stmt);
222}

◆ enter_lambda_expression()

void clanguml::sequence_diagram::visitor::call_expression_context::enter_lambda_expression ( eid_t  id)

Enter a lambda expression.

Parameters
idLambda id

Definition at line 191 of file call_expression_context.cc.

192{
193 LOG_DBG("Setting current lambda caller id to {}", id);
194
195 assert(id.value() != 0);
196
197 current_lambda_caller_id_.emplace(id);
198}

◆ enter_loopstmt()

void clanguml::sequence_diagram::visitor::call_expression_context::enter_loopstmt ( clang::Stmt *  stmt)

Enter loop statement block.

Parameters
stmtLoop statement block

Definition at line 258 of file call_expression_context.cc.

259{
260 loop_stmt_stack_.emplace(stmt);
261}

◆ enter_switchstmt()

void clanguml::sequence_diagram::visitor::call_expression_context::enter_switchstmt ( clang::SwitchStmt *  stmt)

Enter switch statement block.

Parameters
stmtswitch statement block

Definition at line 327 of file call_expression_context.cc.

328{
329 switch_stmt_stack_.emplace(stmt);
330}

◆ enter_trystmt()

void clanguml::sequence_diagram::visitor::call_expression_context::enter_trystmt ( clang::Stmt *  stmt)

Enter try statement block.

Parameters
stmttry statement block

Definition at line 308 of file call_expression_context.cc.

309{
310 try_stmt_stack_.emplace(stmt);
311}

◆ get_ast_context()

clang::ASTContext * clanguml::sequence_diagram::visitor::call_expression_context::get_ast_context ( ) const
Returns
Current AST context

Definition at line 69 of file call_expression_context.cc.

70{
72 return &current_class_template_specialization_decl_->getASTContext();
73
74 if (current_class_template_decl_ != nullptr)
75 return &current_class_template_decl_->getASTContext();
76
77 if (current_class_decl_ != nullptr)
78 return &current_class_decl_->getASTContext();
79
81 return &current_function_template_decl_->getASTContext();
82
83 if (current_function_decl_ != nullptr) {
84 return &current_function_decl_->getASTContext();
85 }
86
87 if (current_method_decl_ != nullptr) {
88 return &current_method_decl_->getASTContext();
89 }
90
91 if (objc_interface_decl_ != nullptr) {
92 return &objc_interface_decl_->getASTContext();
93 }
94
95 if (objc_protocol_decl_ != nullptr) {
96 return &objc_protocol_decl_->getASTContext();
97 }
98
99 if (current_objc_method_decl_ != nullptr) {
100 return &current_objc_method_decl_->getASTContext();
101 }
102
103 return nullptr;
104}

◆ is_expr_in_current_control_statement_condition()

bool clanguml::sequence_diagram::visitor::call_expression_context::is_expr_in_current_control_statement_condition ( const clang::Stmt *  stmt) const

Check, if a statement is contained in a control statement.

This method is used to check if stmt is contained in control statement of a block, for instance:

if(a.method1()) {}

it will return true for stmt representing method1() call expression.

Parameters
stmtStatement
Returns
True, if stmt is contained in control expression of a statement block

Definition at line 359 of file call_expression_context.cc.

361{
362 if (current_ifstmt() != nullptr) {
363 if (common::is_subexpr_of(current_ifstmt()->getCond(), stmt))
364 return true;
365
366 if (const auto *condition_decl_stmt = current_ifstmt()->getInit();
367 condition_decl_stmt != nullptr) {
368 if (common::is_subexpr_of(condition_decl_stmt, stmt))
369 return true;
370 }
371
372 if (current_elseifstmt() != nullptr) {
373 if (common::is_subexpr_of(current_elseifstmt()->getCond(), stmt))
374 return true;
375 }
376 }
377
378 if (current_conditionaloperator() != nullptr) {
380 current_conditionaloperator()->getCond(), stmt))
381 return true;
382 }
383
384 if (const auto *loop_stmt = current_loopstmt(); loop_stmt != nullptr) {
385 if (const auto *for_stmt = clang::dyn_cast<clang::ForStmt>(loop_stmt);
386 for_stmt != nullptr) {
387 if (common::is_subexpr_of(for_stmt->getCond(), stmt)) {
388 return true;
389 }
390 if (common::is_subexpr_of(for_stmt->getInit(), stmt)) {
391 return true;
392 }
393 if (common::is_subexpr_of(for_stmt->getInc(), stmt)) {
394 return true;
395 }
396 }
397
398 if (const auto *range_for_stmt =
399 clang::dyn_cast<clang::CXXForRangeStmt>(loop_stmt);
400 range_for_stmt != nullptr) {
401 if (common::is_subexpr_of(range_for_stmt->getRangeInit(), stmt)) {
402 return true;
403 }
404 }
405
406 if (const auto *while_stmt =
407 clang::dyn_cast<clang::WhileStmt>(loop_stmt);
408 while_stmt != nullptr) {
409 if (common::is_subexpr_of(while_stmt->getCond(), stmt)) {
410 return true;
411 }
412 }
413
414 if (const auto *do_stmt = clang::dyn_cast<clang::DoStmt>(loop_stmt);
415 do_stmt != nullptr) {
416 if (common::is_subexpr_of(do_stmt->getCond(), stmt)) {
417 return true;
418 }
419 }
420
421 if (current_conditionaloperator() != nullptr) {
423 current_conditionaloperator()->getCond(), stmt)) {
424 return true;
425 }
426 }
427 }
428
429 return false;
430}

◆ lambda_caller_id()

std::optional< eid_t > clanguml::sequence_diagram::visitor::call_expression_context::lambda_caller_id ( ) const

Get the id of the current lambda caller.

Since lambdas can be nested within methods and functions, they have a separate caller id field.

Returns
Current lambda caller id, or 0 if current caller is not lambda.

Definition at line 177 of file call_expression_context.cc.

178{
179 if (current_lambda_caller_id_.empty())
180 return {};
181
182 return current_lambda_caller_id_.top();
183}

◆ leave_callexpr()

void clanguml::sequence_diagram::visitor::call_expression_context::leave_callexpr ( )

Leave call expression.

Definition at line 293 of file call_expression_context.cc.

294{
295 if (!call_expr_stack_.empty()) {
296 return call_expr_stack_.pop();
297 }
298}

◆ leave_conditionaloperator()

void clanguml::sequence_diagram::visitor::call_expression_context::leave_conditionaloperator ( )

Leave :? statement block.

Definition at line 353 of file call_expression_context.cc.

354{
355 if (!conditional_operator_stack_.empty())
357}

◆ leave_ifstmt()

void clanguml::sequence_diagram::visitor::call_expression_context::leave_ifstmt ( )

Leave if statement block.

Definition at line 224 of file call_expression_context.cc.

225{
226 if (!if_stmt_stack_.empty()) {
228 if_stmt_stack_.pop();
229 }
230}

◆ leave_lambda_expression()

void clanguml::sequence_diagram::visitor::call_expression_context::leave_lambda_expression ( )

Leave current lambda expression.

Definition at line 200 of file call_expression_context.cc.

201{
202 if (current_lambda_caller_id_.empty())
203 return;
204
205 LOG_DBG("Leaving current lambda expression id to {}",
207
209}

◆ leave_loopstmt()

void clanguml::sequence_diagram::visitor::call_expression_context::leave_loopstmt ( )

Leave loop statement block.

Definition at line 263 of file call_expression_context.cc.

264{
265 if (!loop_stmt_stack_.empty())
266 return loop_stmt_stack_.pop();
267}

◆ leave_switchstmt()

void clanguml::sequence_diagram::visitor::call_expression_context::leave_switchstmt ( )

Leave switch statement block.

Definition at line 332 of file call_expression_context.cc.

333{
334 if (switch_stmt_stack_.empty())
335 switch_stmt_stack_.pop();
336}

◆ leave_trystmt()

void clanguml::sequence_diagram::visitor::call_expression_context::leave_trystmt ( )

Leave try statement block.

Definition at line 313 of file call_expression_context.cc.

314{
315 if (try_stmt_stack_.empty())
316 try_stmt_stack_.pop();
317}

◆ reset()

void clanguml::sequence_diagram::visitor::call_expression_context::reset ( )

Reset call expression context to the original state.

Definition at line 25 of file call_expression_context.cc.

◆ set_caller_id()

void clanguml::sequence_diagram::visitor::call_expression_context::set_caller_id ( eid_t  id)

Set current caller to id of the current participant.

Parameters
idSet current caller id.

Definition at line 185 of file call_expression_context.cc.

186{
187 LOG_DBG("Setting current caller id to {}", id);
189}

◆ update() [1/9]

void clanguml::sequence_diagram::visitor::call_expression_context::update ( clang::ClassTemplateDecl *  clst)

Set the current context to a class template.

Parameters
clstClass template declaration.

Definition at line 127 of file call_expression_context.cc.

128{
130}

◆ update() [2/9]

void clanguml::sequence_diagram::visitor::call_expression_context::update ( clang::ClassTemplateSpecializationDecl *  clst)

Set the current context to a class template specialization.

Parameters
clstClass template specialization declaration.

Definition at line 121 of file call_expression_context.cc.

◆ update() [3/9]

void clanguml::sequence_diagram::visitor::call_expression_context::update ( clang::CXXMethodDecl *  method)

Set the current context to a class method.

Parameters
methodClass method declaration.

Definition at line 132 of file call_expression_context.cc.

133{
135}

◆ update() [4/9]

void clanguml::sequence_diagram::visitor::call_expression_context::update ( clang::CXXRecordDecl *  cls)

Set the current context to a class.

Parameters
clsClass declaration.

Definition at line 106 of file call_expression_context.cc.

107{
109}

◆ update() [5/9]

void clanguml::sequence_diagram::visitor::call_expression_context::update ( clang::FunctionDecl *  function)

Set the current context to a function.

Parameters
functionFunction declaration.

Definition at line 142 of file call_expression_context.cc.

143{
144 if (!function->isCXXClassMember())
145 reset();
146
148
149 // Check if this function is a part of template function declaration,
150 // If no - reset the current_function_template_decl_
151 if ((current_function_template_decl_ != nullptr) &&
152 current_function_template_decl_->getQualifiedNameAsString() !=
153 function->getQualifiedNameAsString()) {
155 }
156}

◆ update() [6/9]

void clanguml::sequence_diagram::visitor::call_expression_context::update ( clang::FunctionTemplateDecl *  function_template)

Set the current context to a function template.

Parameters
function_templateFunction template declaration.

Definition at line 158 of file call_expression_context.cc.

◆ update() [7/9]

void clanguml::sequence_diagram::visitor::call_expression_context::update ( clang::ObjCInterfaceDecl *  cls)

Definition at line 111 of file call_expression_context.cc.

112{
114}

◆ update() [8/9]

void clanguml::sequence_diagram::visitor::call_expression_context::update ( clang::ObjCMethodDecl *  method)

Definition at line 137 of file call_expression_context.cc.

◆ update() [9/9]

void clanguml::sequence_diagram::visitor::call_expression_context::update ( clang::ObjCProtocolDecl *  cls)

Definition at line 116 of file call_expression_context.cc.

117{
119}

◆ valid()

bool clanguml::sequence_diagram::visitor::call_expression_context::valid ( ) const

Verify that the context is in a valid state.

Context can only be in a single state (for instance inside a function).

Returns
True, if the context is in a valid state.

Definition at line 56 of file call_expression_context.cc.

57{
58 return (current_class_decl_ != nullptr) ||
59 (current_class_template_decl_ != nullptr) ||
61 (current_method_decl_ != nullptr) ||
62 (current_function_decl_ != nullptr) ||
64 (objc_interface_decl_ != nullptr) ||
65 (current_objc_method_decl_ != nullptr) ||
66 (objc_protocol_decl_ != nullptr);
67}

Member Data Documentation

◆ call_expr_stack_

std::stack<callexpr_stack_t> clanguml::sequence_diagram::visitor::call_expression_context::call_expr_stack_
private

Definition at line 330 of file call_expression_context.h.

◆ conditional_operator_stack_

std::stack<clang::ConditionalOperator *> clanguml::sequence_diagram::visitor::call_expression_context::conditional_operator_stack_
private

Definition at line 338 of file call_expression_context.h.

◆ current_caller_id_

eid_t clanguml::sequence_diagram::visitor::call_expression_context::current_caller_id_ {}
private

Definition at line 327 of file call_expression_context.h.

◆ current_class_decl_

clang::CXXRecordDecl* clanguml::sequence_diagram::visitor::call_expression_context::current_class_decl_ {nullptr}

Definition at line 315 of file call_expression_context.h.

◆ current_class_template_decl_

clang::ClassTemplateDecl* clanguml::sequence_diagram::visitor::call_expression_context::current_class_template_decl_ {nullptr}

Definition at line 316 of file call_expression_context.h.

◆ current_class_template_specialization_decl_

clang::ClassTemplateSpecializationDecl* clanguml::sequence_diagram::visitor::call_expression_context::current_class_template_specialization_decl_ {nullptr}

Definition at line 318 of file call_expression_context.h.

◆ current_function_decl_

clang::FunctionDecl* clanguml::sequence_diagram::visitor::call_expression_context::current_function_decl_ {nullptr}

Definition at line 321 of file call_expression_context.h.

◆ current_function_template_decl_

clang::FunctionTemplateDecl* clanguml::sequence_diagram::visitor::call_expression_context::current_function_template_decl_ {nullptr}

Definition at line 322 of file call_expression_context.h.

◆ current_lambda_caller_id_

std::stack<eid_t> clanguml::sequence_diagram::visitor::call_expression_context::current_lambda_caller_id_
private

Definition at line 328 of file call_expression_context.h.

◆ current_method_decl_

clang::CXXMethodDecl* clanguml::sequence_diagram::visitor::call_expression_context::current_method_decl_ {nullptr}

Definition at line 319 of file call_expression_context.h.

◆ current_objc_method_decl_

clang::ObjCMethodDecl* clanguml::sequence_diagram::visitor::call_expression_context::current_objc_method_decl_ {nullptr}

Definition at line 320 of file call_expression_context.h.

◆ elseif_stmt_stacks_

std::map<clang::IfStmt *, std::stack<clang::IfStmt *> > clanguml::sequence_diagram::visitor::call_expression_context::elseif_stmt_stacks_
private

Definition at line 333 of file call_expression_context.h.

◆ if_stmt_stack_

std::stack<clang::IfStmt *> clanguml::sequence_diagram::visitor::call_expression_context::if_stmt_stack_
private

Definition at line 332 of file call_expression_context.h.

◆ loop_stmt_stack_

std::stack<clang::Stmt *> clanguml::sequence_diagram::visitor::call_expression_context::loop_stmt_stack_
private

Definition at line 335 of file call_expression_context.h.

◆ objc_interface_decl_

clang::ObjCInterfaceDecl* clanguml::sequence_diagram::visitor::call_expression_context::objc_interface_decl_ {nullptr}

Definition at line 323 of file call_expression_context.h.

◆ objc_protocol_decl_

clang::ObjCProtocolDecl* clanguml::sequence_diagram::visitor::call_expression_context::objc_protocol_decl_ {nullptr}

Definition at line 324 of file call_expression_context.h.

◆ switch_stmt_stack_

std::stack<clang::SwitchStmt *> clanguml::sequence_diagram::visitor::call_expression_context::switch_stmt_stack_
private

Definition at line 337 of file call_expression_context.h.

◆ try_stmt_stack_

std::stack<clang::Stmt *> clanguml::sequence_diagram::visitor::call_expression_context::try_stmt_stack_
private

Definition at line 336 of file call_expression_context.h.


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