26#include <clang/AST/Expr.h>
27#include <clang/AST/RecursiveASTVisitor.h>
28#include <clang/Basic/SourceManager.h>
35using common::model::template_parameter;
37std::string to_string(
const clang::FunctionTemplateDecl *decl);
50 :
public clang::RecursiveASTVisitor<translation_unit_visitor>,
137 clang::ClassTemplateSpecializationDecl *declaration);
146 clang::FunctionTemplateDecl *function_declaration);
149 clang::ObjCInterfaceDecl *interface_declaration);
199 template <
typename T = model::participant>
202 assert(decl !=
nullptr);
205 if (!unique_participant_id.has_value())
208 return get_participant<T>(unique_participant_id.value());
218 template <
typename T = model::participant>
221 assert(decl !=
nullptr);
224 if (!unique_participant_id.has_value())
227 return get_participant<T>(unique_participant_id.value());
237 template <
typename T = model::participant>
240 if (
diagram().participants().find(
id) ==
diagram().participants().end())
244 *(
static_cast<T *
>(
diagram().participants().at(
id).get())));
254 template <
typename T = model::participant>
257 if (
diagram().participants().find(
id) ==
diagram().participants().end())
261 *(
static_cast<T *
>(
diagram().participants().at(
id).get())));
289 const clang::NamedDecl *decl)
const;
299 template <
typename T = sequence_diagram::model::
class_>
302 return diagram().get_participant<T>(element_id).has_value()
303 ? *
diagram().get_participant<T>(element_id).get()
371 bool should_include(
const clang::FunctionTemplateDecl *decl)
const;
381 std::unique_ptr<clanguml::sequence_diagram::model::class_>
384 std::unique_ptr<clanguml::sequence_diagram::model::class_>
387 std::unique_ptr<clanguml::sequence_diagram::model::class_>
390 std::unique_ptr<clanguml::sequence_diagram::model::method>
393 std::unique_ptr<clanguml::sequence_diagram::model::objc_method>
396 std::unique_ptr<clanguml::sequence_diagram::model::method>
399 std::unique_ptr<model::function_template>
403 const clang::FunctionDecl &declaration);
406 const clang::FunctionTemplateDecl &declaration);
409 clang::ClassTemplateSpecializationDecl *cls);
438 const clang::SourceLocation &source_location)
const;
455 const clang::CXXDependentScopeMemberExpr *dependent_member_expr)
const;
458 bool generated_message_from_comment);
468 model::message &m,
const clang::CXXConstructExpr *construct_expr);
478 const clang::CXXOperatorCallExpr *operator_call_expr);
481 model::message &m,
const clang::CUDAKernelCallExpr *cuda_call_expr);
491 model::message &m,
const clang::CXXMemberCallExpr *method_call_expr);
564 const clang::SourceManager &sm,
const clang::ASTContext &
context,
565 eid_t caller_id,
const clang::Stmt *stmt);
601 std::map<clang::CallExpr *, std::deque<model::message>>
608 std::map<clang::CXXConstructExpr *, model::message>
612 std::map<eid_t, std::unique_ptr<clanguml::sequence_diagram::model::class_>>
623 mutable std::set<const clang::Expr *>
626 mutable std::set<std::pair<int64_t, const clang::RawComment *>>