diff --git a/src/sequence_diagram/model/diagram.cc b/src/sequence_diagram/model/diagram.cc index 3909e708..260dfbac 100644 --- a/src/sequence_diagram/model/diagram.cc +++ b/src/sequence_diagram/model/diagram.cc @@ -276,14 +276,14 @@ std::unordered_set diagram::get_all_from_to_message_chains( continue; if (m.to() == to_activity) { - message_chains.push_back(message_chain_t{}); + message_chains.emplace_back(); message_chains.back().push_back(m); } } } - std::map> calls_to_current_chain; - std::map current_chain; + std::map> calls_to_current_chain; + std::map current_chain; int iter = 0; while (true) { @@ -294,11 +294,11 @@ std::unordered_set diagram::get_all_from_to_message_chains( if (!calls_to_current_chain.empty()) { for (auto &[message_chain_index, messages] : calls_to_current_chain) { - for (auto i = 0U; i < messages.size(); i++) { + for (auto &m : messages) { message_chains.push_back( current_chain[message_chain_index]); - message_chains.back().push_back(std::move(messages[i])); + message_chains.back().push_back(std::move(m)); } } calls_to_current_chain.clear(); @@ -342,7 +342,7 @@ std::unordered_set diagram::get_all_from_to_message_chains( // If there are more than one call to the current chain, // duplicate it as many times as there are calls - 1 if (calls_to_current_chain.count(i) > 0 && - calls_to_current_chain[i].size() >= 1) { + !calls_to_current_chain[i].empty()) { mc.push_back(calls_to_current_chain[i][0]); calls_to_current_chain[i].erase( calls_to_current_chain[i].begin()); diff --git a/src/sequence_diagram/model/diagram.h b/src/sequence_diagram/model/diagram.h index 03204652..eb30b432 100644 --- a/src/sequence_diagram/model/diagram.h +++ b/src/sequence_diagram/model/diagram.h @@ -246,8 +246,8 @@ public: * @return List of message chains */ std::unordered_set get_all_from_to_message_chains( - const common::model::diagram_element::id_t from_activity, - const common::model::diagram_element::id_t to_activity) const; + common::model::diagram_element::id_t from_activity, + common::model::diagram_element::id_t to_activity) const; /** * @brief Get ids of from and to activities in from_to constraint diff --git a/src/sequence_diagram/model/message.h b/src/sequence_diagram/model/message.h index ac0a55fd..5a3a3e83 100644 --- a/src/sequence_diagram/model/message.h +++ b/src/sequence_diagram/model/message.h @@ -169,7 +169,7 @@ template <> struct hash { std::size_t operator()( const clanguml::sequence_diagram::model::message &m) const { - std::size_t seed = m.from() << 2; + std::size_t seed = clanguml::util::hash_seed(m.from()); seed ^= m.to(); seed += std::hash{}(m.full_name(true)); @@ -183,7 +183,7 @@ struct hash> { const std::vector &msgs) const { - std::size_t seed = msgs.size() << 8; + std::size_t seed = clanguml::util::hash_seed(msgs.size()); for (const auto &m : msgs) { seed ^= std::hash{}(m); }