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>,
109 clang::ClassTemplateSpecializationDecl *declaration);
116 clang::FunctionTemplateDecl *function_declaration);
164 template <
typename T = model::participant>
167 assert(decl !=
nullptr);
170 if (!unique_participant_id.has_value())
173 return get_participant<T>(unique_participant_id.value());
183 template <
typename T = model::participant>
186 assert(decl !=
nullptr);
189 if (!unique_participant_id.has_value())
192 return get_participant<T>(unique_participant_id.value());
202 template <
typename T = model::participant>
205 if (
diagram().participants().find(
id) ==
diagram().participants().end())
209 *(
static_cast<T *
>(
diagram().participants().at(
id).get())));
219 template <
typename T = model::participant>
222 if (
diagram().participants().find(
id) ==
diagram().participants().end())
226 *(
static_cast<T *
>(
diagram().participants().at(
id).get())));
254 const clang::NamedDecl *decl)
const;
303 bool should_include(
const clang::FunctionTemplateDecl *decl)
const;
313 std::unique_ptr<clanguml::sequence_diagram::model::class_>
316 std::unique_ptr<clanguml::sequence_diagram::model::method>
319 std::unique_ptr<clanguml::sequence_diagram::model::method>
322 std::unique_ptr<model::function_template>
326 const clang::FunctionDecl &declaration);
329 const clang::FunctionTemplateDecl &declaration);
332 clang::ClassTemplateSpecializationDecl *cls);
361 const clang::SourceLocation &source_location)
const;
378 const clang::CXXDependentScopeMemberExpr *dependent_member_expr)
const;
388 model::message &m,
const clang::CXXConstructExpr *construct_expr);
398 const clang::CXXOperatorCallExpr *operator_call_expr);
401 model::message &m,
const clang::CUDAKernelCallExpr *cuda_call_expr);
411 model::message &m,
const clang::CXXMemberCallExpr *method_call_expr);
471 const clang::SourceManager &sm,
const clang::ASTContext &
context,
472 eid_t caller_id,
const clang::Stmt *stmt);
502 std::map<clang::CXXConstructExpr *, model::message>
505 std::map<eid_t, std::unique_ptr<clanguml::sequence_diagram::model::class_>>
514 mutable std::set<const clang::Expr *>
517 mutable std::set<std::pair<int64_t, const clang::RawComment *>>