Refactored sequence diagram call expression processing

This commit is contained in:
Bartek Kryza
2022-12-04 14:41:23 +01:00
parent b87c6acd44
commit 10da4ad164
3 changed files with 250 additions and 253 deletions

View File

@@ -64,6 +64,19 @@ public:
static_cast<T *>(participants.at(id).get()));
}
template <typename T>
const common::optional_ref<T> get_participant(
common::model::diagram_element::id_t id) const
{
if (participants.find(id) == participants.end()) {
return {};
}
return common::optional_ref<T>(
static_cast<T *>(participants.at(id).get()));
}
void add_participant(std::unique_ptr<participant> p)
{
const auto participant_id = p->id();

File diff suppressed because it is too large Load Diff

View File

@@ -42,22 +42,22 @@ public:
bool shouldVisitTemplateInstantiations();
virtual bool VisitCallExpr(clang::CallExpr *expr);
bool VisitCallExpr(clang::CallExpr *expr);
virtual bool VisitLambdaExpr(clang::LambdaExpr *expr);
bool VisitLambdaExpr(clang::LambdaExpr *expr);
virtual bool TraverseLambdaExpr(clang::LambdaExpr *expr);
bool TraverseLambdaExpr(clang::LambdaExpr *expr);
virtual bool VisitCXXMethodDecl(clang::CXXMethodDecl *method);
bool VisitCXXMethodDecl(clang::CXXMethodDecl *method);
virtual bool VisitCXXRecordDecl(clang::CXXRecordDecl *cls);
bool VisitCXXRecordDecl(clang::CXXRecordDecl *cls);
virtual bool VisitClassTemplateDecl(clang::ClassTemplateDecl *cls);
bool VisitClassTemplateDecl(clang::ClassTemplateDecl *cls);
virtual bool VisitClassTemplateSpecializationDecl(
bool VisitClassTemplateSpecializationDecl(
clang::ClassTemplateSpecializationDecl *cls);
virtual bool VisitFunctionDecl(clang::FunctionDecl *function_declaration);
bool VisitFunctionDecl(clang::FunctionDecl *function_declaration);
bool VisitFunctionTemplateDecl(
clang::FunctionTemplateDecl *function_declaration);
@@ -203,6 +203,21 @@ private:
const clang::CXXDependentScopeMemberExpr *dependent_member_callee)
const;
bool process_operator_call_expression(model::message &m,
const clang::CXXOperatorCallExpr *operator_call_expr);
bool process_class_method_call_expression(
model::message &m, const clang::CXXMemberCallExpr *operator_call_expr);
bool process_class_template_method_call_expression(
model::message &m, const clang::CallExpr *expr);
bool process_function_call_expression(
model::message &m, const clang::CallExpr *expr);
bool process_unresolved_lookup_call_expression(
model::message &m, const clang::CallExpr *expr);
// Reference to the output diagram model
clanguml::sequence_diagram::model::diagram &diagram_;