From 8791706a862eee66037ed1e2127bd61324700e38 Mon Sep 17 00:00:00 2001 From: Bartek Kryza Date: Wed, 31 Mar 2021 22:10:44 +0200 Subject: [PATCH] Ensure unique class instances in diagram --- src/uml/class_diagram_model.h | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/uml/class_diagram_model.h b/src/uml/class_diagram_model.h index 7b00c0d8..76771b33 100644 --- a/src/uml/class_diagram_model.h +++ b/src/uml/class_diagram_model.h @@ -226,11 +226,16 @@ struct diagram { std::vector classes; std::vector enums; + bool has_class(const std::string &usr) const + { + return std::any_of(classes.cbegin(), classes.cend(), + [&usr](const auto &c) { return c.usr == usr; }); + } + void add_class(class_ &&c) { spdlog::debug("Adding class: {}, {}", c.name, c.usr); - auto it = std::find(classes.begin(), classes.end(), c); - if (it == classes.end()) + if (!has_class(c.usr)) classes.emplace_back(std::move(c)); else spdlog::debug("Class {} already in the model", c.name);