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())); 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) void add_participant(std::unique_ptr<participant> p)
{ {
const auto participant_id = p->id(); 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(); 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); clang::ClassTemplateSpecializationDecl *cls);
virtual bool VisitFunctionDecl(clang::FunctionDecl *function_declaration); bool VisitFunctionDecl(clang::FunctionDecl *function_declaration);
bool VisitFunctionTemplateDecl( bool VisitFunctionTemplateDecl(
clang::FunctionTemplateDecl *function_declaration); clang::FunctionTemplateDecl *function_declaration);
@@ -203,6 +203,21 @@ private:
const clang::CXXDependentScopeMemberExpr *dependent_member_callee) const clang::CXXDependentScopeMemberExpr *dependent_member_callee)
const; 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 // Reference to the output diagram model
clanguml::sequence_diagram::model::diagram &diagram_; clanguml::sequence_diagram::model::diagram &diagram_;