Moved all generated relationships in class diagram to the end
This commit is contained in:
@@ -55,7 +55,8 @@ void generator::generate_alias(const enum_ &e, std::ostream &ostr) const
|
|||||||
ostr << "\" as " << e.alias() << '\n';
|
ostr << "\" as " << e.alias() << '\n';
|
||||||
}
|
}
|
||||||
|
|
||||||
void generator::generate(const class_ &c, std::ostream &ostr) const
|
void generator::generate(
|
||||||
|
const class_ &c, std::ostream &ostr, std::ostream &relationships_ostr) const
|
||||||
{
|
{
|
||||||
namespace plantuml_common = clanguml::common::generators::plantuml;
|
namespace plantuml_common = clanguml::common::generators::plantuml;
|
||||||
|
|
||||||
@@ -222,10 +223,11 @@ void generator::generate(const class_ &c, std::ostream &ostr) const
|
|||||||
generate_notes(ostr, c);
|
generate_notes(ostr, c);
|
||||||
|
|
||||||
// Print relationships
|
// Print relationships
|
||||||
ostr << all_relations_str.str();
|
relationships_ostr << all_relations_str.str();
|
||||||
}
|
}
|
||||||
|
|
||||||
void generator::generate(const enum_ &e, std::ostream &ostr) const
|
void generator::generate(
|
||||||
|
const enum_ &e, std::ostream &ostr, std::ostream &relationships_ostr) const
|
||||||
{
|
{
|
||||||
ostr << "enum " << e.alias();
|
ostr << "enum " << e.alias();
|
||||||
|
|
||||||
@@ -264,7 +266,7 @@ void generator::generate(const enum_ &e, std::ostream &ostr) const
|
|||||||
|
|
||||||
relstr << '\n';
|
relstr << '\n';
|
||||||
|
|
||||||
ostr << relstr.str();
|
relationships_ostr << relstr.str();
|
||||||
}
|
}
|
||||||
catch (error::uml_alias_missing &ex) {
|
catch (error::uml_alias_missing &ex) {
|
||||||
LOG_ERROR("Skipping {} relation from {} to {} due "
|
LOG_ERROR("Skipping {} relation from {} to {} due "
|
||||||
@@ -278,7 +280,8 @@ void generator::generate(const enum_ &e, std::ostream &ostr) const
|
|||||||
generate_notes(ostr, e);
|
generate_notes(ostr, e);
|
||||||
}
|
}
|
||||||
|
|
||||||
void generator::generate(const package &p, std::ostream &ostr) const
|
void generator::generate(const package &p, std::ostream &ostr,
|
||||||
|
std::ostream &relationships_ostr) const
|
||||||
{
|
{
|
||||||
if (m_config.generate_packages()) {
|
if (m_config.generate_packages()) {
|
||||||
LOG_DBG("Generating package {}", p.name());
|
LOG_DBG("Generating package {}", p.name());
|
||||||
@@ -297,15 +300,18 @@ void generator::generate(const package &p, std::ostream &ostr) const
|
|||||||
|
|
||||||
for (const auto &subpackage : p) {
|
for (const auto &subpackage : p) {
|
||||||
if (dynamic_cast<package *>(subpackage.get())) {
|
if (dynamic_cast<package *>(subpackage.get())) {
|
||||||
generate(dynamic_cast<package &>(*subpackage), ostr);
|
generate(
|
||||||
|
dynamic_cast<package &>(*subpackage), ostr, relationships_ostr);
|
||||||
}
|
}
|
||||||
if (dynamic_cast<class_ *>(subpackage.get())) {
|
if (dynamic_cast<class_ *>(subpackage.get())) {
|
||||||
generate_alias(dynamic_cast<class_ &>(*subpackage), ostr);
|
generate_alias(dynamic_cast<class_ &>(*subpackage), ostr);
|
||||||
generate(dynamic_cast<class_ &>(*subpackage), ostr);
|
generate(
|
||||||
|
dynamic_cast<class_ &>(*subpackage), ostr, relationships_ostr);
|
||||||
}
|
}
|
||||||
if (dynamic_cast<enum_ *>(subpackage.get())) {
|
if (dynamic_cast<enum_ *>(subpackage.get())) {
|
||||||
generate_alias(dynamic_cast<enum_ &>(*subpackage), ostr);
|
generate_alias(dynamic_cast<enum_ &>(*subpackage), ostr);
|
||||||
generate(dynamic_cast<enum_ &>(*subpackage), ostr);
|
generate(
|
||||||
|
dynamic_cast<enum_ &>(*subpackage), ostr, relationships_ostr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -320,23 +326,27 @@ void generator::generate(std::ostream &ostr) const
|
|||||||
{
|
{
|
||||||
ostr << "@startuml" << '\n';
|
ostr << "@startuml" << '\n';
|
||||||
|
|
||||||
|
std::stringstream relationship_ostr;
|
||||||
|
|
||||||
generate_plantuml_directives(ostr, m_config.puml().before);
|
generate_plantuml_directives(ostr, m_config.puml().before);
|
||||||
|
|
||||||
for (const auto &p : m_model) {
|
for (const auto &p : m_model) {
|
||||||
if (dynamic_cast<package *>(p.get())) {
|
if (dynamic_cast<package *>(p.get())) {
|
||||||
generate(dynamic_cast<package &>(*p), ostr);
|
generate(dynamic_cast<package &>(*p), ostr, relationship_ostr);
|
||||||
}
|
}
|
||||||
if (dynamic_cast<class_ *>(p.get())) {
|
if (dynamic_cast<class_ *>(p.get())) {
|
||||||
generate_alias(dynamic_cast<class_ &>(*p), ostr);
|
generate_alias(dynamic_cast<class_ &>(*p), ostr);
|
||||||
generate(dynamic_cast<class_ &>(*p), ostr);
|
generate(dynamic_cast<class_ &>(*p), ostr, relationship_ostr);
|
||||||
}
|
}
|
||||||
if (dynamic_cast<enum_ *>(p.get())) {
|
if (dynamic_cast<enum_ *>(p.get())) {
|
||||||
generate_alias(dynamic_cast<enum_ &>(*p), ostr);
|
generate_alias(dynamic_cast<enum_ &>(*p), ostr);
|
||||||
generate(dynamic_cast<enum_ &>(*p), ostr);
|
generate(dynamic_cast<enum_ &>(*p), ostr, relationship_ostr);
|
||||||
}
|
}
|
||||||
ostr << '\n';
|
ostr << '\n';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ostr << relationship_ostr.str();
|
||||||
|
|
||||||
generate_config_layout_hints(ostr);
|
generate_config_layout_hints(ostr);
|
||||||
|
|
||||||
generate_plantuml_directives(ostr, m_config.puml().after);
|
generate_plantuml_directives(ostr, m_config.puml().after);
|
||||||
|
|||||||
@@ -63,11 +63,14 @@ public:
|
|||||||
|
|
||||||
void generate_alias(const enum_ &e, std::ostream &ostr) const;
|
void generate_alias(const enum_ &e, std::ostream &ostr) const;
|
||||||
|
|
||||||
void generate(const class_ &c, std::ostream &ostr) const;
|
void generate(const class_ &c, std::ostream &ostr,
|
||||||
|
std::ostream &relationships_ostr) const;
|
||||||
|
|
||||||
void generate(const enum_ &e, std::ostream &ostr) const;
|
void generate(const enum_ &e, std::ostream &ostr,
|
||||||
|
std::ostream &relationships_ostr) const;
|
||||||
|
|
||||||
void generate(const package &p, std::ostream &ostr) const;
|
void generate(const package &p, std::ostream &ostr,
|
||||||
|
std::ostream &relationships_ostr) const;
|
||||||
|
|
||||||
void generate(std::ostream &ostr) const override;
|
void generate(std::ostream &ostr) const override;
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user