Refactored JSON sequence diagram generator

This commit is contained in:
Bartek Kryza
2023-03-19 19:08:15 +01:00
parent f0497e934d
commit 44cd7b0484
6 changed files with 335 additions and 227 deletions

View File

@@ -111,6 +111,8 @@ std::string to_string(message_t r)
return "end switch";
case message_t::kConditional:
return "conditional";
case message_t::kConditionalElse:
return "conditional else";
case message_t::kConditionalEnd:
return "end conditional";
default:

View File

@@ -61,6 +61,7 @@ enum class message_t {
kCase,
kSwitchEnd,
kConditional,
kConditionalElse,
kConditionalEnd,
kNone
};

View File

@@ -76,6 +76,28 @@ private:
mutable std::vector<std::reference_wrapper<nlohmann::json>>
block_statements_stack_;
void process_call_message(const model::message &m,
std::vector<common::model::diagram_element::id_t> &visited) const;
void process_if_message(const model::message &m) const;
void process_else_if_message() const;
void process_end_if_message() const;
void process_end_conditional_message() const;
void process_conditional_else_message() const;
void process_conditional_message(const model::message &m) const;
void process_end_switch_message() const;
void process_case_message(const model::message &m) const;
void process_switch_message(const model::message &m) const;
void process_end_try_message() const;
void process_catch_message() const;
void process_try_message(const model::message &m) const;
void process_end_do_message() const;
void process_do_message(const model::message &m) const;
void process_end_for_message() const;
void process_for_message(const model::message &m) const;
void process_end_while_message() const;
void process_while_message(const model::message &m) const;
};
} // namespace clanguml::sequence_diagram::generators::json

View File

@@ -233,7 +233,7 @@ void generator::generate_activity(const activity &a, std::ostream &ostr,
print_debug(m, ostr);
ostr << "alt\n";
}
else if (m.type() == message_t::kElse) {
else if (m.type() == message_t::kConditionalElse) {
print_debug(m, ostr);
ostr << "else\n";
}

View File

@@ -821,7 +821,7 @@ bool translation_unit_visitor::TraverseConditionalOperator(
stmt->getTrueExpr());
if (current_caller_id != 0) {
model::message m{message_t::kElse, current_caller_id};
model::message m{message_t::kConditionalElse, current_caller_id};
set_source_location(*stmt, m);
diagram().add_message(std::move(m));
}