Refactored class_mode diagram class

This commit is contained in:
Bartek Kryza
2021-09-26 23:12:22 +02:00
parent 52c6ebfa19
commit 1ae7a149e9
36 changed files with 68 additions and 51 deletions

View File

@@ -361,7 +361,7 @@ void generator::generate(std::ostream &ostr) const
} }
if (m_config.should_include_entities("classes")) { if (m_config.should_include_entities("classes")) {
for (const auto &c : m_model.classes) { for (const auto &c : m_model.classes()) {
if (!c.is_template_instantiation && if (!c.is_template_instantiation &&
!m_config.should_include(c.name())) !m_config.should_include(c.name()))
continue; continue;
@@ -369,14 +369,14 @@ void generator::generate(std::ostream &ostr) const
ostr << '\n'; ostr << '\n';
} }
for (const auto &e : m_model.enums) { for (const auto &e : m_model.enums()) {
if (!m_config.should_include(e.name())) if (!m_config.should_include(e.name()))
continue; continue;
generate_alias(e, ostr); generate_alias(e, ostr);
ostr << '\n'; ostr << '\n';
} }
for (const auto &c : m_model.classes) { for (const auto &c : m_model.classes()) {
if (!c.is_template_instantiation && if (!c.is_template_instantiation &&
!m_config.should_include(c.name())) !m_config.should_include(c.name()))
continue; continue;
@@ -386,7 +386,7 @@ void generator::generate(std::ostream &ostr) const
} }
if (m_config.should_include_entities("enums")) if (m_config.should_include_entities("enums"))
for (const auto &e : m_model.enums) { for (const auto &e : m_model.enums()) {
generate(e, ostr); generate(e, ostr);
ostr << '\n'; ostr << '\n';
} }
@@ -419,7 +419,7 @@ clanguml::model::class_diagram::diagram generate(
{ {
spdlog::info("Generating diagram {}.puml", name); spdlog::info("Generating diagram {}.puml", name);
clanguml::model::class_diagram::diagram d; clanguml::model::class_diagram::diagram d;
d.name = name; d.set_name(name);
// Get all translation units matching the glob from diagram // Get all translation units matching the glob from diagram
// configuration // configuration

View File

@@ -261,10 +261,17 @@ std::string enum_::full_name(bool relative) const
// //
// diagram // diagram
// //
std::string diagram::name() const { return name_; }
void diagram::set_name(const std::string &name) { name_ = name; }
const std::vector<class_> diagram::classes() const { return classes_; }
const std::vector<enum_> diagram::enums() const { return enums_; }
bool diagram::has_class(const class_ &c) const bool diagram::has_class(const class_ &c) const
{ {
return std::any_of(classes.cbegin(), classes.cend(), return std::any_of(classes_.cbegin(), classes_.cend(),
[&c](const auto &cc) { return cc.full_name() == c.full_name(); }); [&c](const auto &cc) { return cc.full_name() == c.full_name(); });
} }
@@ -272,14 +279,14 @@ void diagram::add_type_alias(type_alias &&ta)
{ {
LOG_DBG("Adding global alias: {} -> {}", ta.alias, ta.underlying_type); LOG_DBG("Adding global alias: {} -> {}", ta.alias, ta.underlying_type);
type_aliases[ta.alias] = std::move(ta); type_aliases_[ta.alias] = std::move(ta);
} }
void diagram::add_class(class_ &&c) void diagram::add_class(class_ &&c)
{ {
LOG_DBG("Adding class: {}, {}", c.name(), c.full_name()); LOG_DBG("Adding class: {}, {}", c.name(), c.full_name());
if (!has_class(c)) if (!has_class(c))
classes.emplace_back(std::move(c)); classes_.emplace_back(std::move(c));
else else
LOG_DBG("Class {} ({}) already in the model", c.name(), c.full_name()); LOG_DBG("Class {} ({}) already in the model", c.name(), c.full_name());
} }
@@ -287,9 +294,9 @@ void diagram::add_class(class_ &&c)
void diagram::add_enum(enum_ &&e) void diagram::add_enum(enum_ &&e)
{ {
LOG_DBG("Adding enum: {}", e.name()); LOG_DBG("Adding enum: {}", e.name());
auto it = std::find(enums.begin(), enums.end(), e); auto it = std::find(enums_.begin(), enums_.end(), e);
if (it == enums.end()) if (it == enums_.end())
enums.emplace_back(std::move(e)); enums_.emplace_back(std::move(e));
else else
LOG_DBG("Enum {} already in the model", e.name()); LOG_DBG("Enum {} already in the model", e.name());
} }
@@ -298,13 +305,13 @@ std::string diagram::to_alias(const std::string &full_name) const
{ {
LOG_DBG("Looking for alias for {}", full_name); LOG_DBG("Looking for alias for {}", full_name);
for (const auto &c : classes) { for (const auto &c : classes_) {
if (c.full_name() == full_name) { if (c.full_name() == full_name) {
return c.alias(); return c.alias();
} }
} }
for (const auto &e : enums) { for (const auto &e : enums_) {
if (e.full_name() == full_name) { if (e.full_name() == full_name) {
return e.alias(); return e.alias();
} }

View File

@@ -219,11 +219,15 @@ private:
std::vector<std::string> constants_; std::vector<std::string> constants_;
}; };
struct diagram { class diagram {
std::string name; public:
std::vector<class_> classes; std::string name() const;
std::vector<enum_> enums;
std::map<std::string, type_alias> type_aliases; void set_name(const std::string& name);
const std::vector<class_> classes() const;
const std::vector<enum_> enums() const;
bool has_class(const class_ &c) const; bool has_class(const class_ &c) const;
@@ -234,6 +238,12 @@ struct diagram {
void add_enum(enum_ &&e); void add_enum(enum_ &&e);
std::string to_alias(const std::string &full_name) const; std::string to_alias(const std::string &full_name) const;
private:
std::string name_;
std::vector<class_> classes_;
std::vector<enum_> enums_;
std::map<std::string, type_alias> type_aliases_;
}; };
} }
} }

View File

@@ -35,7 +35,7 @@ TEST_CASE("t00002", "[test-case][class]")
auto model = generate_class_diagram(db, diagram); auto model = generate_class_diagram(db, diagram);
REQUIRE(model.name == "t00002_class"); REQUIRE(model.name() == "t00002_class");
auto puml = generate_class_puml(diagram, model); auto puml = generate_class_puml(diagram, model);
AliasMatcher _A(puml); AliasMatcher _A(puml);

View File

@@ -34,7 +34,7 @@ TEST_CASE("t00003", "[test-case][class]")
auto model = generate_class_diagram(db, diagram); auto model = generate_class_diagram(db, diagram);
REQUIRE(model.name == "t00003_class"); REQUIRE(model.name() == "t00003_class");
auto puml = generate_class_puml(diagram, model); auto puml = generate_class_puml(diagram, model);
AliasMatcher _A(puml); AliasMatcher _A(puml);

View File

@@ -36,7 +36,7 @@ TEST_CASE("t00004", "[test-case][class]")
auto model = generate_class_diagram(db, diagram); auto model = generate_class_diagram(db, diagram);
REQUIRE(model.name == "t00004_class"); REQUIRE(model.name() == "t00004_class");
auto puml = generate_class_puml(diagram, model); auto puml = generate_class_puml(diagram, model);
AliasMatcher _A(puml); AliasMatcher _A(puml);

View File

@@ -37,7 +37,7 @@ TEST_CASE("t00005", "[test-case][class]")
auto model = generate_class_diagram(db, diagram); auto model = generate_class_diagram(db, diagram);
REQUIRE(model.name == "t00005_class"); REQUIRE(model.name() == "t00005_class");
auto puml = generate_class_puml(diagram, model); auto puml = generate_class_puml(diagram, model);
AliasMatcher _A(puml); AliasMatcher _A(puml);

View File

@@ -38,7 +38,7 @@ TEST_CASE("t00006", "[test-case][class]")
auto model = generate_class_diagram(db, diagram); auto model = generate_class_diagram(db, diagram);
REQUIRE(model.name == "t00006_class"); REQUIRE(model.name() == "t00006_class");
auto puml = generate_class_puml(diagram, model); auto puml = generate_class_puml(diagram, model);
AliasMatcher _A(puml); AliasMatcher _A(puml);

View File

@@ -38,7 +38,7 @@ TEST_CASE("t00007", "[test-case][class]")
auto model = generate_class_diagram(db, diagram); auto model = generate_class_diagram(db, diagram);
REQUIRE(model.name == "t00007_class"); REQUIRE(model.name() == "t00007_class");
auto puml = generate_class_puml(diagram, model); auto puml = generate_class_puml(diagram, model);
AliasMatcher _A(puml); AliasMatcher _A(puml);

View File

@@ -35,7 +35,7 @@ TEST_CASE("t00008", "[test-case][class]")
auto model = generate_class_diagram(db, diagram); auto model = generate_class_diagram(db, diagram);
REQUIRE(model.name == "t00008_class"); REQUIRE(model.name() == "t00008_class");
auto puml = generate_class_puml(diagram, model); auto puml = generate_class_puml(diagram, model);
AliasMatcher _A(puml); AliasMatcher _A(puml);

View File

@@ -35,7 +35,7 @@ TEST_CASE("t00009", "[test-case][class]")
auto model = generate_class_diagram(db, diagram); auto model = generate_class_diagram(db, diagram);
REQUIRE(model.name == "t00009_class"); REQUIRE(model.name() == "t00009_class");
auto puml = generate_class_puml(diagram, model); auto puml = generate_class_puml(diagram, model);
AliasMatcher _A(puml); AliasMatcher _A(puml);

View File

@@ -35,7 +35,7 @@ TEST_CASE("t00010", "[test-case][class]")
auto model = generate_class_diagram(db, diagram); auto model = generate_class_diagram(db, diagram);
REQUIRE(model.name == "t00010_class"); REQUIRE(model.name() == "t00010_class");
auto puml = generate_class_puml(diagram, model); auto puml = generate_class_puml(diagram, model);
AliasMatcher _A(puml); AliasMatcher _A(puml);

View File

@@ -35,7 +35,7 @@ TEST_CASE("t00011", "[test-case][class]")
auto model = generate_class_diagram(db, diagram); auto model = generate_class_diagram(db, diagram);
REQUIRE(model.name == "t00011_class"); REQUIRE(model.name() == "t00011_class");
auto puml = generate_class_puml(diagram, model); auto puml = generate_class_puml(diagram, model);
AliasMatcher _A(puml); AliasMatcher _A(puml);

View File

@@ -35,7 +35,7 @@ TEST_CASE("t00012", "[test-case][class]")
auto model = generate_class_diagram(db, diagram); auto model = generate_class_diagram(db, diagram);
REQUIRE(model.name == "t00012_class"); REQUIRE(model.name() == "t00012_class");
auto puml = generate_class_puml(diagram, model); auto puml = generate_class_puml(diagram, model);
AliasMatcher _A(puml); AliasMatcher _A(puml);

View File

@@ -35,7 +35,7 @@ TEST_CASE("t00013", "[test-case][class]")
auto model = generate_class_diagram(db, diagram); auto model = generate_class_diagram(db, diagram);
REQUIRE(model.name == "t00013_class"); REQUIRE(model.name() == "t00013_class");
auto puml = generate_class_puml(diagram, model); auto puml = generate_class_puml(diagram, model);
AliasMatcher _A(puml); AliasMatcher _A(puml);

View File

@@ -33,7 +33,7 @@ TEST_CASE("t00014", "[test-case][class]")
auto model = generate_class_diagram(db, diagram); auto model = generate_class_diagram(db, diagram);
REQUIRE(model.name == "t00014_class"); REQUIRE(model.name() == "t00014_class");
auto puml = generate_class_puml(diagram, model); auto puml = generate_class_puml(diagram, model);
AliasMatcher _A(puml); AliasMatcher _A(puml);

View File

@@ -34,7 +34,7 @@ TEST_CASE("t00015", "[test-case][class]")
auto model = generate_class_diagram(db, diagram); auto model = generate_class_diagram(db, diagram);
REQUIRE(model.name == "t00015_class"); REQUIRE(model.name() == "t00015_class");
auto puml = generate_class_puml(diagram, model); auto puml = generate_class_puml(diagram, model);
AliasMatcher _A(puml); AliasMatcher _A(puml);

View File

@@ -34,7 +34,7 @@ TEST_CASE("t00016", "[test-case][class]")
auto model = generate_class_diagram(db, diagram); auto model = generate_class_diagram(db, diagram);
REQUIRE(model.name == "t00016_class"); REQUIRE(model.name() == "t00016_class");
auto puml = generate_class_puml(diagram, model); auto puml = generate_class_puml(diagram, model);
AliasMatcher _A(puml); AliasMatcher _A(puml);

View File

@@ -37,7 +37,7 @@ TEST_CASE("t00017", "[test-case][class]")
auto model = generate_class_diagram(db, diagram); auto model = generate_class_diagram(db, diagram);
REQUIRE(model.name == "t00017_class"); REQUIRE(model.name() == "t00017_class");
auto puml = generate_class_puml(diagram, model); auto puml = generate_class_puml(diagram, model);
AliasMatcher _A(puml); AliasMatcher _A(puml);

View File

@@ -34,7 +34,7 @@ TEST_CASE("t00018", "[test-case][class]")
auto model = generate_class_diagram(db, diagram); auto model = generate_class_diagram(db, diagram);
REQUIRE(model.name == "t00018_class"); REQUIRE(model.name() == "t00018_class");
auto puml = generate_class_puml(diagram, model); auto puml = generate_class_puml(diagram, model);
AliasMatcher _A(puml); AliasMatcher _A(puml);

View File

@@ -37,7 +37,7 @@ TEST_CASE("t00019", "[test-case][class]")
auto model = generate_class_diagram(db, diagram); auto model = generate_class_diagram(db, diagram);
REQUIRE(model.name == "t00019_class"); REQUIRE(model.name() == "t00019_class");
auto puml = generate_class_puml(diagram, model); auto puml = generate_class_puml(diagram, model);
AliasMatcher _A(puml); AliasMatcher _A(puml);

View File

@@ -34,7 +34,7 @@ TEST_CASE("t00020", "[test-case][class]")
auto model = generate_class_diagram(db, diagram); auto model = generate_class_diagram(db, diagram);
REQUIRE(model.name == "t00020_class"); REQUIRE(model.name() == "t00020_class");
auto puml = generate_class_puml(diagram, model); auto puml = generate_class_puml(diagram, model);
AliasMatcher _A(puml); AliasMatcher _A(puml);

View File

@@ -34,7 +34,7 @@ TEST_CASE("t00021", "[test-case][class]")
auto model = generate_class_diagram(db, diagram); auto model = generate_class_diagram(db, diagram);
REQUIRE(model.name == "t00021_class"); REQUIRE(model.name() == "t00021_class");
auto puml = generate_class_puml(diagram, model); auto puml = generate_class_puml(diagram, model);
AliasMatcher _A(puml); AliasMatcher _A(puml);

View File

@@ -34,7 +34,7 @@ TEST_CASE("t00022", "[test-case][class]")
auto model = generate_class_diagram(db, diagram); auto model = generate_class_diagram(db, diagram);
REQUIRE(model.name == "t00022_class"); REQUIRE(model.name() == "t00022_class");
auto puml = generate_class_puml(diagram, model); auto puml = generate_class_puml(diagram, model);
AliasMatcher _A(puml); AliasMatcher _A(puml);

View File

@@ -34,7 +34,7 @@ TEST_CASE("t00023", "[test-case][class]")
auto model = generate_class_diagram(db, diagram); auto model = generate_class_diagram(db, diagram);
REQUIRE(model.name == "t00023_class"); REQUIRE(model.name() == "t00023_class");
auto puml = generate_class_puml(diagram, model); auto puml = generate_class_puml(diagram, model);
AliasMatcher _A(puml); AliasMatcher _A(puml);

View File

@@ -34,7 +34,7 @@ TEST_CASE("t00024", "[test-case][class]")
auto model = generate_class_diagram(db, diagram); auto model = generate_class_diagram(db, diagram);
REQUIRE(model.name == "t00024_class"); REQUIRE(model.name() == "t00024_class");
auto puml = generate_class_puml(diagram, model); auto puml = generate_class_puml(diagram, model);
AliasMatcher _A(puml); AliasMatcher _A(puml);

View File

@@ -34,7 +34,7 @@ TEST_CASE("t00025", "[test-case][class]")
auto model = generate_class_diagram(db, diagram); auto model = generate_class_diagram(db, diagram);
REQUIRE(model.name == "t00025_class"); REQUIRE(model.name() == "t00025_class");
auto puml = generate_class_puml(diagram, model); auto puml = generate_class_puml(diagram, model);
AliasMatcher _A(puml); AliasMatcher _A(puml);

View File

@@ -34,7 +34,7 @@ TEST_CASE("t00026", "[test-case][class]")
auto model = generate_class_diagram(db, diagram); auto model = generate_class_diagram(db, diagram);
REQUIRE(model.name == "t00026_class"); REQUIRE(model.name() == "t00026_class");
auto puml = generate_class_puml(diagram, model); auto puml = generate_class_puml(diagram, model);
AliasMatcher _A(puml); AliasMatcher _A(puml);

View File

@@ -34,7 +34,7 @@ TEST_CASE("t00027", "[test-case][class]")
auto model = generate_class_diagram(db, diagram); auto model = generate_class_diagram(db, diagram);
REQUIRE(model.name == "t00027_class"); REQUIRE(model.name() == "t00027_class");
auto puml = generate_class_puml(diagram, model); auto puml = generate_class_puml(diagram, model);
AliasMatcher _A(puml); AliasMatcher _A(puml);

View File

@@ -34,7 +34,7 @@ TEST_CASE("t00028", "[test-case][class]")
auto model = generate_class_diagram(db, diagram); auto model = generate_class_diagram(db, diagram);
REQUIRE(model.name == "t00028_class"); REQUIRE(model.name() == "t00028_class");
auto puml = generate_class_puml(diagram, model); auto puml = generate_class_puml(diagram, model);
AliasMatcher _A(puml); AliasMatcher _A(puml);

View File

@@ -34,7 +34,7 @@ TEST_CASE("t00029", "[test-case][class]")
auto model = generate_class_diagram(db, diagram); auto model = generate_class_diagram(db, diagram);
REQUIRE(model.name == "t00029_class"); REQUIRE(model.name() == "t00029_class");
auto puml = generate_class_puml(diagram, model); auto puml = generate_class_puml(diagram, model);
AliasMatcher _A(puml); AliasMatcher _A(puml);

View File

@@ -34,7 +34,7 @@ TEST_CASE("t00030", "[test-case][class]")
auto model = generate_class_diagram(db, diagram); auto model = generate_class_diagram(db, diagram);
REQUIRE(model.name == "t00030_class"); REQUIRE(model.name() == "t00030_class");
auto puml = generate_class_puml(diagram, model); auto puml = generate_class_puml(diagram, model);
AliasMatcher _A(puml); AliasMatcher _A(puml);

View File

@@ -34,7 +34,7 @@ TEST_CASE("t00031", "[test-case][class]")
auto model = generate_class_diagram(db, diagram); auto model = generate_class_diagram(db, diagram);
REQUIRE(model.name == "t00031_class"); REQUIRE(model.name() == "t00031_class");
auto puml = generate_class_puml(diagram, model); auto puml = generate_class_puml(diagram, model);
AliasMatcher _A(puml); AliasMatcher _A(puml);

View File

@@ -34,7 +34,7 @@ TEST_CASE("t00032", "[test-case][class]")
auto model = generate_class_diagram(db, diagram); auto model = generate_class_diagram(db, diagram);
REQUIRE(model.name == "t00032_class"); REQUIRE(model.name() == "t00032_class");
auto puml = generate_class_puml(diagram, model); auto puml = generate_class_puml(diagram, model);
AliasMatcher _A(puml); AliasMatcher _A(puml);

View File

@@ -34,7 +34,7 @@ TEST_CASE("t00033", "[test-case][class]")
auto model = generate_class_diagram(db, diagram); auto model = generate_class_diagram(db, diagram);
REQUIRE(model.name == "t00033_class"); REQUIRE(model.name() == "t00033_class");
auto puml = generate_class_puml(diagram, model); auto puml = generate_class_puml(diagram, model);
AliasMatcher _A(puml); AliasMatcher _A(puml);

View File

@@ -24,7 +24,7 @@ TEST_CASE("t90000", "[test-case][config]")
auto model = generate_class_diagram(db, diagram); auto model = generate_class_diagram(db, diagram);
REQUIRE(model.name == "t90000_class"); REQUIRE(model.name() == "t90000_class");
auto puml = generate_class_puml(diagram, model); auto puml = generate_class_puml(diagram, model);
AliasMatcher _A(puml); AliasMatcher _A(puml);