diff --git a/docs/common_options.md b/docs/common_options.md index f2535835..e2e30283 100644 --- a/docs/common_options.md +++ b/docs/common_options.md @@ -43,6 +43,17 @@ Effective configuration, including default values can be printed out in YAML for clang-uml --dump-config ``` +## Diagram titles +Each type of diagram can have a `title` property, which will be generated in the +diagram using directives specific to a given diagram generator, for instance: + +```yaml +diagrams: + diagram1: + type: class + title: Some explanatory diagram title +``` + ## Translation unit glob patterns One of the key options of the diagram configuration is the list of translation units, which should be parsed to get all necessary information for a diagram. diff --git a/src/common/generators/json/generator.h b/src/common/generators/json/generator.h index 236b7096..ca81e4aa 100644 --- a/src/common/generators/json/generator.h +++ b/src/common/generators/json/generator.h @@ -110,6 +110,9 @@ void generator::generate(std::ostream &ostr) const nlohmann::json j; j["name"] = generators::generator::model().name(); j["diagram_type"] = to_string(generators::generator::model().type()); + if (generators::generator::config().title) { + j["title"] = generators::generator::config().title(); + } generate_diagram(j); diff --git a/src/common/generators/mermaid/generator.h b/src/common/generators/mermaid/generator.h index 6917b968..bae9752d 100644 --- a/src/common/generators/mermaid/generator.h +++ b/src/common/generators/mermaid/generator.h @@ -136,6 +136,16 @@ public: */ void generate_metadata(std::ostream &ostr) const; + /** + * @brief Generate diagram title + * + * Generates a MermaidJS diagram title directive if diagram title + * is provided in the diagram configuration. + * + * @param ostr Output stream + */ + void generate_title(std::ostream &ostr) const; + /** * @brief Generate hyper link to element * @@ -238,6 +248,8 @@ void generator::generate(std::ostream &ostr) const update_context(); + generate_title(ostr); + generate_diagram_type(ostr); generate_mermaid_directives(ostr, config.mermaid().before); @@ -399,6 +411,18 @@ void generator::generate_metadata(std::ostream &ostr) const } } +template +void generator::generate_title(std::ostream &ostr) const +{ + const auto &config = generators::generator::config(); + + if (config.title) { + ostr << "---\n"; + ostr << "title: " << config.title() << '\n'; + ostr << "---\n"; + } +} + template void generator::print_debug( const common::model::source_location &e, std::ostream &ostr) const diff --git a/src/common/generators/plantuml/generator.h b/src/common/generators/plantuml/generator.h index 7a38ee81..0b670164 100644 --- a/src/common/generators/plantuml/generator.h +++ b/src/common/generators/plantuml/generator.h @@ -131,6 +131,16 @@ public: */ void generate_metadata(std::ostream &ostr) const; + /** + * @brief Generate diagram title + * + * Generates a PlantUML diagram title directive if diagram title + * is provided in the diagram configuration. + * + * @param ostr Output stream + */ + void generate_title(std::ostream &ostr) const; + /** * @brief Generate hyper link to element * @@ -241,6 +251,8 @@ void generator::generate(std::ostream &ostr) const ostr << "@startuml" << '\n'; + generate_title(ostr); + generate_plantuml_directives(ostr, config.puml().before); generate_diagram(ostr); @@ -449,6 +461,16 @@ void generator::generate_metadata(std::ostream &ostr) const } } +template +void generator::generate_title(std::ostream &ostr) const +{ + const auto &config = generators::generator::config(); + + if (config.title) { + ostr << "title " << config.title() << '\n'; + } +} + template template void generator::generate_link(std::ostream &ostr, const E &e) const diff --git a/src/config/config.h b/src/config/config.h index a6c95c35..9f20dca5 100644 --- a/src/config/config.h +++ b/src/config/config.h @@ -537,6 +537,8 @@ struct diagram : public inheritable_diagram_options { void initialize_type_aliases(); std::string name; + + option title{"title"}; }; /** diff --git a/src/config/schema.h b/src/config/schema.h index a14e55fa..adedd86c 100644 --- a/src/config/schema.h +++ b/src/config/schema.h @@ -156,6 +156,7 @@ types: relative_to: !optional string using_namespace: !optional [string, [string]] generate_metadata: !optional bool + title: !optional string # # Class diagram specific options # @@ -192,6 +193,7 @@ types: relative_to: !optional string using_namespace: !optional [string, [string]] generate_metadata: !optional bool + title: !optional string # # Sequence diagram specific options # @@ -226,6 +228,7 @@ types: relative_to: !optional string using_namespace: !optional [string, [string]] generate_metadata: !optional bool + title: !optional string # # Package diagram specific options # @@ -254,6 +257,7 @@ types: relative_to: !optional string using_namespace: !optional [string, [string]] generate_metadata: !optional bool + title: !optional string # # Include diagram specific options # diff --git a/src/config/yaml_decoders.cc b/src/config/yaml_decoders.cc index c281f02b..e625640b 100644 --- a/src/config/yaml_decoders.cc +++ b/src/config/yaml_decoders.cc @@ -551,6 +551,7 @@ template bool decode_diagram(const Node &node, T &rhs) get_option(node, rhs.comment_parser); get_option(node, rhs.debug_mode); get_option(node, rhs.generate_metadata); + get_option(node, rhs.title); return true; } diff --git a/src/config/yaml_emitters.cc b/src/config/yaml_emitters.cc index 1fd80ec0..3f415371 100644 --- a/src/config/yaml_emitters.cc +++ b/src/config/yaml_emitters.cc @@ -297,7 +297,9 @@ YAML::Emitter &operator<<( out << c.using_namespace; out << c.generate_metadata; - if (dynamic_cast(&c) != nullptr) { + if (const auto *cd = dynamic_cast(&c); + cd != nullptr) { + out << cd->title; out << c.generate_method_arguments; out << c.generate_packages; out << c.include_relations_also_as_members; @@ -315,18 +317,24 @@ YAML::Emitter &operator<<( out << c.generate_template_argument_dependencies; out << c.skip_redundant_dependencies; } - else if (dynamic_cast(&c) != nullptr) { + else if (const auto *sd = dynamic_cast(&c); + sd != nullptr) { + out << sd->title; out << c.combine_free_functions_into_file_participants; out << c.generate_condition_statements; out << c.generate_method_arguments; out << c.generate_return_types; out << c.participants_order; } - else if (dynamic_cast(&c) != nullptr) { + else if (const auto *pd = dynamic_cast(&c); + pd != nullptr) { + out << pd->title; out << c.generate_packages; out << c.package_type; } - else if (dynamic_cast(&c) != nullptr) { + else if (const auto *id = dynamic_cast(&c); + id != nullptr) { + out << id->title; out << c.generate_system_headers; } diff --git a/tests/t00002/.clang-uml b/tests/t00002/.clang-uml index 772207d9..259723bc 100644 --- a/tests/t00002/.clang-uml +++ b/tests/t00002/.clang-uml @@ -3,6 +3,7 @@ output_directory: diagrams diagrams: t00002_class: type: class + title: Basic class diagram example glob: - ../../tests/t00002/t00002.cc comment_parser: clang diff --git a/tests/t00002/test_case.h b/tests/t00002/test_case.h index 78eb6e66..8e58d057 100644 --- a/tests/t00002/test_case.h +++ b/tests/t00002/test_case.h @@ -41,6 +41,7 @@ TEST_CASE("t00002", "[test-case][class]") REQUIRE_THAT(puml, StartsWith("@startuml")); REQUIRE_THAT(puml, EndsWith("@enduml\n")); + REQUIRE_THAT(puml, HasTitle("Basic class diagram example")); REQUIRE_THAT(puml, IsAbstractClass(_A("A"))); REQUIRE_THAT(puml, IsClass(_A("B"))); REQUIRE_THAT(puml, IsClass(_A("C"))); @@ -92,6 +93,7 @@ TEST_CASE("t00002", "[test-case][class]") using namespace json; + REQUIRE(HasTitle(j, "Basic class diagram example")); REQUIRE(IsClass(j, "A")); REQUIRE(IsClass(j, "B")); REQUIRE(IsClass(j, "C")); @@ -111,9 +113,11 @@ TEST_CASE("t00002", "[test-case][class]") mermaid::AliasMatcher _A(mmd); using mermaid::HasNote; + using mermaid::HasTitle; using mermaid::IsAbstractClass; - REQUIRE_THAT(mmd, StartsWith("classDiagram")); + REQUIRE_THAT(mmd, HasTitle("Basic class diagram example")); + REQUIRE_THAT(mmd, Contains("classDiagram")); REQUIRE_THAT(mmd, IsAbstractClass(_A("A"))); REQUIRE_THAT(mmd, IsClass(_A("B"))); REQUIRE_THAT(mmd, IsClass(_A("C"))); diff --git a/tests/t20001/.clang-uml b/tests/t20001/.clang-uml index 2124dc35..af58596c 100644 --- a/tests/t20001/.clang-uml +++ b/tests/t20001/.clang-uml @@ -3,6 +3,7 @@ output_directory: diagrams diagrams: t20001_sequence: type: sequence + title: Basic sequence diagram example glob: - ../../tests/t20001/t20001.cc include: diff --git a/tests/t20001/test_case.h b/tests/t20001/test_case.h index 45a315e2..7fea32bd 100644 --- a/tests/t20001/test_case.h +++ b/tests/t20001/test_case.h @@ -35,6 +35,8 @@ TEST_CASE("t20001", "[test-case][sequence]") REQUIRE_THAT(src, StartsWith("@startuml")); REQUIRE_THAT(src, EndsWith("@enduml\n")); + REQUIRE_THAT(src, HasTitle("Basic sequence diagram example")); + REQUIRE_THAT(src, HasCall(_A("B"), _A("A"), "add3(int,int,int)")); REQUIRE_THAT(src, HasCall(_A("A"), "add(int,int)")); REQUIRE_THAT(src, !HasCall(_A("A"), _A("detail::C"), "add(int,int)")); @@ -50,6 +52,8 @@ TEST_CASE("t20001", "[test-case][sequence]") using namespace json; + REQUIRE(HasTitle(j, "Basic sequence diagram example")); + REQUIRE(IsFunctionParticipant(j, "tmain()")); REQUIRE(IsClassParticipant(j, "A")); REQUIRE(IsClassParticipant(j, "B")); @@ -71,6 +75,9 @@ TEST_CASE("t20001", "[test-case][sequence]") mermaid::SequenceDiagramAliasMatcher _A(src); using mermaid::HasCall; using mermaid::HasComment; + using mermaid::HasTitle; + + REQUIRE_THAT(src, HasTitle("Basic sequence diagram example")); REQUIRE_THAT(src, HasCall(_A("B"), _A("A"), "add3(int,int,int)")); REQUIRE_THAT(src, HasCall(_A("A"), "add(int,int)")); diff --git a/tests/t30001/.clang-uml b/tests/t30001/.clang-uml index 05767605..f3ad247d 100644 --- a/tests/t30001/.clang-uml +++ b/tests/t30001/.clang-uml @@ -3,6 +3,7 @@ output_directory: diagrams diagrams: t30001_package: type: package + title: Basic package diagram example glob: - ../../tests/t30001/t30001.cc include: diff --git a/tests/t30001/test_case.h b/tests/t30001/test_case.h index 0b5fab4a..a0118da7 100644 --- a/tests/t30001/test_case.h +++ b/tests/t30001/test_case.h @@ -35,6 +35,8 @@ TEST_CASE("t30001", "[test-case][package]") REQUIRE_THAT(src, StartsWith("@startuml")); REQUIRE_THAT(src, EndsWith("@enduml\n")); + REQUIRE_THAT(src, HasTitle("Basic package diagram example")); + REQUIRE_THAT(src, IsPackage("A")); REQUIRE_THAT(src, IsPackage("AAA")); REQUIRE_THAT(src, IsPackage("AAA")); @@ -69,6 +71,8 @@ TEST_CASE("t30001", "[test-case][package]") using namespace json; + REQUIRE(HasTitle(j, "Basic package diagram example")); + REQUIRE(IsPackage(j, "A")); REQUIRE(IsPackage(j, "A::AA")); REQUIRE(IsPackage(j, "A::AA::AAA")); @@ -90,8 +94,11 @@ TEST_CASE("t30001", "[test-case][package]") using mermaid::HasComment; using mermaid::HasLink; using mermaid::HasPackageNote; + using mermaid::HasTitle; using mermaid::IsPackage; + REQUIRE_THAT(src, HasTitle("Basic package diagram example")); + REQUIRE_THAT(src, IsPackage(_A("A"))); REQUIRE_THAT(src, IsPackage(_A("AAA"))); REQUIRE_THAT(src, IsPackage(_A("AAA"))); diff --git a/tests/t40001/.clang-uml b/tests/t40001/.clang-uml index 14660735..3509f844 100644 --- a/tests/t40001/.clang-uml +++ b/tests/t40001/.clang-uml @@ -3,6 +3,7 @@ output_directory: diagrams diagrams: t40001_include: type: include + title: Basic include diagram example # Provide the files to parse in order to look # for #include directives glob: diff --git a/tests/t40001/test_case.h b/tests/t40001/test_case.h index 545c8cd2..360352de 100644 --- a/tests/t40001/test_case.h +++ b/tests/t40001/test_case.h @@ -35,6 +35,7 @@ TEST_CASE("t40001", "[test-case][include]") REQUIRE_THAT(src, StartsWith("@startuml")); REQUIRE_THAT(src, EndsWith("@enduml\n")); + REQUIRE_THAT(src, HasTitle("Basic include diagram example")); REQUIRE_THAT(src, IsFolder("lib1")); REQUIRE_THAT(src, IsFile("lib1.h")); @@ -60,6 +61,8 @@ TEST_CASE("t40001", "[test-case][include]") using namespace json; + REQUIRE(HasTitle(j, "Basic include diagram example")); + REQUIRE(IsFolder(j, "include")); REQUIRE(IsFolder(j, "include/lib1")); REQUIRE(IsFolder(j, "src")); @@ -84,10 +87,13 @@ TEST_CASE("t40001", "[test-case][include]") mermaid::AliasMatcher _A(src); using mermaid::HasComment; + using mermaid::HasTitle; using mermaid::IsFile; using mermaid::IsFolder; using mermaid::IsIncludeDependency; + REQUIRE_THAT(src, HasTitle("Basic include diagram example")); + REQUIRE_THAT(src, IsFolder(_A("lib1"))); REQUIRE_THAT(src, IsFile(_A("lib1.h"))); REQUIRE_THAT(src, IsFile(_A("t40001.cc"))); diff --git a/tests/test_cases.h b/tests/test_cases.h index 12d4a6de..4620800d 100644 --- a/tests/test_cases.h +++ b/tests/test_cases.h @@ -494,6 +494,20 @@ struct SequenceDiagramAliasMatcher { }; } +ContainsMatcher HasTitle(std::string const &str, + CaseSensitive::Choice caseSensitivity = CaseSensitive::Yes) +{ + return ContainsMatcher(CasedString("title " + str, caseSensitivity)); +} + +namespace mermaid { +ContainsMatcher HasTitle(std::string const &str, + CaseSensitive::Choice caseSensitivity = CaseSensitive::Yes) +{ + return ContainsMatcher(CasedString("title: " + str, caseSensitivity)); +} +} + ContainsMatcher IsClass(std::string const &str, CaseSensitive::Choice caseSensitivity = CaseSensitive::Yes) { @@ -1231,6 +1245,11 @@ std::string expand_name(const nlohmann::json &j, const std::string &name) return fmt::format("{}::{}", j["using_namespace"].get(), name); } +bool HasTitle(const nlohmann::json &j, const std::string &title) +{ + return j.contains("title") && j["title"] == title; +} + bool IsClass(const nlohmann::json &j, const std::string &name) { auto e = get_element(j, expand_name(j, name)); diff --git a/uml/class/architecture_visitors_class.yml b/uml/class/architecture_visitors_class.yml index 7e82625f..a17ee7c3 100644 --- a/uml/class/architecture_visitors_class.yml +++ b/uml/class/architecture_visitors_class.yml @@ -1,4 +1,5 @@ type: class +title: Translation unit AST visitors generate_packages: true glob: - src/docs/architecture.cc diff --git a/uml/class/class_model_class.yml b/uml/class/class_model_class.yml index c8b33ecd..b288516d 100644 --- a/uml/class/class_model_class.yml +++ b/uml/class/class_model_class.yml @@ -1,4 +1,5 @@ type: class +title: Class diagram model include_relations_also_as_members: false generate_method_arguments: none generate_packages: true @@ -13,7 +14,4 @@ exclude: relationships: - dependency using_namespace: - - clanguml -plantuml: - before: - - 'title clang-uml class diagram model' \ No newline at end of file + - clanguml \ No newline at end of file diff --git a/uml/class/comment_visitor_hierarchy_class.yml b/uml/class/comment_visitor_hierarchy_class.yml index b38b4563..bf6d5954 100644 --- a/uml/class/comment_visitor_hierarchy_class.yml +++ b/uml/class/comment_visitor_hierarchy_class.yml @@ -1,4 +1,5 @@ type: class +title: Comment visitor class hierarchy include_relations_also_as_members: true glob: - src/common/visitor/comment/*.cc diff --git a/uml/class/common_model_class.yml b/uml/class/common_model_class.yml index 46d42760..011319cb 100644 --- a/uml/class/common_model_class.yml +++ b/uml/class/common_model_class.yml @@ -1,4 +1,5 @@ type: class +title: Common diagram model include_relations_also_as_members: false glob: - src/common/model/*.cc @@ -16,7 +17,5 @@ exclude: using_namespace: - clanguml::common::model plantuml: - before: - - 'title clang-uml common diagram model' after: - 'note top of {{ alias("diagram") }}: Common class for specific diagram types' \ No newline at end of file diff --git a/uml/class/compilation_database_context_class.yml b/uml/class/compilation_database_context_class.yml index 509ebe09..dc04ae24 100644 --- a/uml/class/compilation_database_context_class.yml +++ b/uml/class/compilation_database_context_class.yml @@ -1,4 +1,5 @@ type: class +title: Compilation database context diagram include_relations_also_as_members: true generate_packages: false glob: diff --git a/uml/class/config_class.yml b/uml/class/config_class.yml index 571e40ae..8cd6ac05 100644 --- a/uml/class/config_class.yml +++ b/uml/class/config_class.yml @@ -1,4 +1,5 @@ type: class +title: Configuration model include_relations_also_as_members: true glob: - src/config/config.cc @@ -15,8 +16,6 @@ exclude: using_namespace: - clanguml::config plantuml: - before: - - 'title clang-uml configuration model' after: - 'note left of {{ alias("inheritable_diagram_options") }}: Options common to all diagram types.' - 'note right of {{ alias("config") }}: General options not used by diagrams.' diff --git a/uml/class/config_context_class.yml b/uml/class/config_context_class.yml index ef0a722e..c81105ba 100644 --- a/uml/class/config_context_class.yml +++ b/uml/class/config_context_class.yml @@ -1,4 +1,5 @@ type: class +title: clanguml::config::config context diagram include_relations_also_as_members: true glob: - src/config/config.cc @@ -8,7 +9,4 @@ include: context: - clanguml::config::config using_namespace: - - clanguml::config -plantuml: - before: - - 'title clanguml::config::config context diagram' \ No newline at end of file + - clanguml::config \ No newline at end of file diff --git a/uml/class/decorated_element_hierarchy_class.yml b/uml/class/decorated_element_hierarchy_class.yml index 0b398573..81c2dedc 100644 --- a/uml/class/decorated_element_hierarchy_class.yml +++ b/uml/class/decorated_element_hierarchy_class.yml @@ -1,4 +1,5 @@ type: class +title: Decorated diagram element class hierarchy include_relations_also_as_members: true generate_packages: true glob: diff --git a/uml/class/decorators_class.yml b/uml/class/decorators_class.yml index 5aa2f02b..ef423c19 100644 --- a/uml/class/decorators_class.yml +++ b/uml/class/decorators_class.yml @@ -1,4 +1,5 @@ type: class +title: Diagram element decorators model include_relations_also_as_members: false glob: - src/decorators/decorators.cc @@ -6,7 +7,4 @@ include: namespaces: - clanguml::decorators using_namespace: - - clanguml::decorators -plantuml: - before: - - 'title clang-uml decorators model' \ No newline at end of file + - clanguml::decorators \ No newline at end of file diff --git a/uml/class/diagram_config_hierarchy_class.yml b/uml/class/diagram_config_hierarchy_class.yml index 2ffb128d..0893f92e 100644 --- a/uml/class/diagram_config_hierarchy_class.yml +++ b/uml/class/diagram_config_hierarchy_class.yml @@ -1,4 +1,5 @@ type: class +title: Configuration model class hierarchy include_relations_also_as_members: true generate_packages: true glob: @@ -13,7 +14,4 @@ include: exclude: access: [public, protected, private] using_namespace: - - clanguml -plantuml: - before: - - 'title clanguml::config::diagram class hierarchy' \ No newline at end of file + - clanguml \ No newline at end of file diff --git a/uml/class/diagram_element_hierarchy_class.yml b/uml/class/diagram_element_hierarchy_class.yml index 3a12c8b0..97b4c691 100644 --- a/uml/class/diagram_element_hierarchy_class.yml +++ b/uml/class/diagram_element_hierarchy_class.yml @@ -1,4 +1,5 @@ type: class +title: Diagram element class hierarchy generate_packages: true glob: - src/common/model/*.cc @@ -22,7 +23,4 @@ exclude: - private - protected using_namespace: - - clanguml -plantuml: - before: - - 'title clang-uml diagram element class inheritance model' \ No newline at end of file + - clanguml \ No newline at end of file diff --git a/uml/class/diagram_filter_context_class.yml b/uml/class/diagram_filter_context_class.yml index 30ecf7b3..00140309 100644 --- a/uml/class/diagram_filter_context_class.yml +++ b/uml/class/diagram_filter_context_class.yml @@ -1,4 +1,5 @@ type: class +title: Diagram filter context model include_relations_also_as_members: true generate_packages: false glob: diff --git a/uml/class/diagram_hierarchy_class.yml b/uml/class/diagram_hierarchy_class.yml index b4ce0a61..55357cd0 100644 --- a/uml/class/diagram_hierarchy_class.yml +++ b/uml/class/diagram_hierarchy_class.yml @@ -1,4 +1,5 @@ type: class +title: Diagram type class hierarchy include_relations_also_as_members: true generate_packages: true generate_method_arguments: none diff --git a/uml/class/diagram_model_class.yml b/uml/class/diagram_model_class.yml index bd4792cf..d18056a3 100644 --- a/uml/class/diagram_model_class.yml +++ b/uml/class/diagram_model_class.yml @@ -1,4 +1,5 @@ type: class +title: Diagram model include_relations_also_as_members: false generate_method_arguments: none glob: @@ -16,7 +17,4 @@ exclude: relationships: - dependency using_namespace: - - clanguml -plantuml: - before: - - 'title clang-uml diagram model' \ No newline at end of file + - clanguml \ No newline at end of file diff --git a/uml/class/filter_visitor_hierarchy_class.yml b/uml/class/filter_visitor_hierarchy_class.yml index e547eca8..1985e5c1 100644 --- a/uml/class/filter_visitor_hierarchy_class.yml +++ b/uml/class/filter_visitor_hierarchy_class.yml @@ -1,4 +1,5 @@ type: class +title: Diagram filter visitor class hierarchy include_relations_also_as_members: true generate_packages: true glob: diff --git a/uml/class/inheritable_diagram_options_context_class.yml b/uml/class/inheritable_diagram_options_context_class.yml index 63864339..a91e32e6 100644 --- a/uml/class/inheritable_diagram_options_context_class.yml +++ b/uml/class/inheritable_diagram_options_context_class.yml @@ -1,4 +1,5 @@ type: class +title: Configuration model inheritable options context include_relations_also_as_members: true glob: - src/config/config.cc @@ -11,5 +12,4 @@ using_namespace: - clanguml::config plantuml: before: - - title clanguml::config::config context diagram - left to right direction \ No newline at end of file diff --git a/uml/class/nested_trait_hierarchy_class.yml b/uml/class/nested_trait_hierarchy_class.yml index e5f0b6fb..4048fadb 100644 --- a/uml/class/nested_trait_hierarchy_class.yml +++ b/uml/class/nested_trait_hierarchy_class.yml @@ -1,4 +1,5 @@ type: class +title: Nested trait model class hierarchy include_relations_also_as_members: true glob: - src/common/model/*.cc diff --git a/uml/class/package_hierarchy_class.yml b/uml/class/package_hierarchy_class.yml index f3492bc6..f0b50b43 100644 --- a/uml/class/package_hierarchy_class.yml +++ b/uml/class/package_hierarchy_class.yml @@ -1,4 +1,5 @@ type: class +title: Package diagram class hierarchy include_relations_also_as_members: true glob: - src/common/model/package.cc diff --git a/uml/class/package_model_class.yml b/uml/class/package_model_class.yml index 600298f8..aa6024ee 100644 --- a/uml/class/package_model_class.yml +++ b/uml/class/package_model_class.yml @@ -1,4 +1,5 @@ type: class +title: Package diagram model include_relations_also_as_members: false generate_method_arguments: none glob: @@ -12,7 +13,4 @@ using_namespace: - clanguml::package_diagram::model exclude: relationships: - - dependency -plantuml: - before: - - 'title clang-uml package diagram model' \ No newline at end of file + - dependency \ No newline at end of file diff --git a/uml/class/relationship_context_class.yml b/uml/class/relationship_context_class.yml index bbc8eba2..daa74351 100644 --- a/uml/class/relationship_context_class.yml +++ b/uml/class/relationship_context_class.yml @@ -1,4 +1,5 @@ type: class +title: Relationship model context include_relations_also_as_members: true generate_packages: true glob: diff --git a/uml/class/sequence_model_class.yml b/uml/class/sequence_model_class.yml index 92916509..b8764a14 100644 --- a/uml/class/sequence_model_class.yml +++ b/uml/class/sequence_model_class.yml @@ -1,4 +1,5 @@ type: class +title: Sequence diagram model include_relations_also_as_members: true generate_method_arguments: none generate_packages: true @@ -23,7 +24,4 @@ exclude: - destructor - operator using_namespace: - - clanguml -plantuml: - before: - - 'title clang-uml sequence diagram model' \ No newline at end of file + - clanguml \ No newline at end of file diff --git a/uml/class/source_file_hierarchy_class.yml b/uml/class/source_file_hierarchy_class.yml index 7e0ce375..00220640 100644 --- a/uml/class/source_file_hierarchy_class.yml +++ b/uml/class/source_file_hierarchy_class.yml @@ -1,4 +1,5 @@ type: class +title: Source file model class hierarchy include_relations_also_as_members: true glob: - src/common/model/source_file.cc diff --git a/uml/class/source_location_hierarchy_class.yml b/uml/class/source_location_hierarchy_class.yml index e703d1a6..4433d5a6 100644 --- a/uml/class/source_location_hierarchy_class.yml +++ b/uml/class/source_location_hierarchy_class.yml @@ -1,4 +1,5 @@ type: class +title: Source location model class hierarchy include_relations_also_as_members: true generate_packages: true glob: diff --git a/uml/class/stylable_element_hierarchy_class.yml b/uml/class/stylable_element_hierarchy_class.yml index 6c56fcc7..3a556a45 100644 --- a/uml/class/stylable_element_hierarchy_class.yml +++ b/uml/class/stylable_element_hierarchy_class.yml @@ -1,4 +1,5 @@ type: class +title: Stylable diagram element class hierarchy include_relations_also_as_members: true generate_packages: true glob: diff --git a/uml/class/template_trait_hierarchy_class.yml b/uml/class/template_trait_hierarchy_class.yml index 974fa7f7..6944eaee 100644 --- a/uml/class/template_trait_hierarchy_class.yml +++ b/uml/class/template_trait_hierarchy_class.yml @@ -1,4 +1,5 @@ type: class +title: Template trait diagram element model class hierarchy include_relations_also_as_members: true generate_packages: true glob: diff --git a/uml/include/include.yml b/uml/include/include.yml index 419a8691..7751c7a7 100644 --- a/uml/include/include.yml +++ b/uml/include/include.yml @@ -1,10 +1,8 @@ type: include +title: Include graph glob: - src/config/*.cc relative_to: . include: paths: - - src -plantuml: - before: - - "title clang-uml include graph diagram" \ No newline at end of file + - src \ No newline at end of file diff --git a/uml/package/architecture_package.yml b/uml/package/architecture_package.yml index 216bfc6c..83937216 100644 --- a/uml/package/architecture_package.yml +++ b/uml/package/architecture_package.yml @@ -1,4 +1,5 @@ type: package +title: High-level namespace dependencies in clang-uml glob: - src/config/config.cc - src/common/model/diagram.cc @@ -15,7 +16,4 @@ include: - r: "clanguml::.+_diagram" - r: "clanguml::.+::model" - r: "clanguml::.+::visitor" - - r: "clanguml::.+::generators" -plantuml: - before: - - 'title clang-uml top level packages' \ No newline at end of file + - r: "clanguml::.+::generators" \ No newline at end of file diff --git a/uml/package/main_package.yml b/uml/package/main_package.yml index 980127c9..5276cec6 100644 --- a/uml/package/main_package.yml +++ b/uml/package/main_package.yml @@ -1,11 +1,9 @@ type: package +title: Namespace (package) diagram glob: - src/**/*.cc include: namespaces: - clanguml using_namespace: - - clanguml -plantuml: - before: - - 'title clang-uml namespaces' \ No newline at end of file + - clanguml \ No newline at end of file diff --git a/uml/sequence/class_diagram_generator_sequence.yml b/uml/sequence/class_diagram_generator_sequence.yml index 36ef6fe6..db9b8f7a 100644 --- a/uml/sequence/class_diagram_generator_sequence.yml +++ b/uml/sequence/class_diagram_generator_sequence.yml @@ -1,4 +1,5 @@ type: sequence +title: PlantUML diagram generator sequence diagram glob: - src/class_diagram/generators/plantuml/*.cc include: @@ -6,8 +7,5 @@ include: - clanguml using_namespace: - clanguml::class_diagram::generators::plantuml -plantuml: - before: - - 'title clang-uml clanguml::class_diagram::generators::plantuml::generator sequence diagram' from: - function: "clanguml::common::generators::plantuml::generator::generate(std::ostream &) const" \ No newline at end of file diff --git a/uml/sequence/cli_handle_options_sequence.yml b/uml/sequence/cli_handle_options_sequence.yml index b228b7f7..341edc60 100644 --- a/uml/sequence/cli_handle_options_sequence.yml +++ b/uml/sequence/cli_handle_options_sequence.yml @@ -1,4 +1,5 @@ type: sequence +title: CLI options handling sequence diagram combine_free_functions_into_file_participants: true generate_method_arguments: none debug_mode: true diff --git a/uml/sequence/diagram_generate_generic_sequence.yml b/uml/sequence/diagram_generate_generic_sequence.yml index f08b5432..01465c8b 100644 --- a/uml/sequence/diagram_generate_generic_sequence.yml +++ b/uml/sequence/diagram_generate_generic_sequence.yml @@ -1,4 +1,5 @@ type: sequence +title: Common sequence diagram generator sequence diagram combine_free_functions_into_file_participants: true generate_method_arguments: none glob: diff --git a/uml/sequence/load_config_sequence.yml b/uml/sequence/load_config_sequence.yml index e5022562..8087d842 100644 --- a/uml/sequence/load_config_sequence.yml +++ b/uml/sequence/load_config_sequence.yml @@ -1,4 +1,5 @@ type: sequence +title: Configuration file loading sequence diagram combine_free_functions_into_file_participants: true generate_method_arguments: none glob: diff --git a/uml/sequence/main_sequence.yml b/uml/sequence/main_sequence.yml index 913e6cd9..c0721a0f 100644 --- a/uml/sequence/main_sequence.yml +++ b/uml/sequence/main_sequence.yml @@ -1,4 +1,5 @@ type: sequence +title: main() function sequence diagram # Group free functions into one participant per file combine_free_functions_into_file_participants: true # Do not generate method or function arguments @@ -19,9 +20,6 @@ exclude: - src/util/util.h using_namespace: - clanguml -plantuml: - before: - - 'title clang-uml main function sequence diagram' # Use clang-uml main function as entry point for this diagram from: - function: main(int,const char **) \ No newline at end of file diff --git a/uml/sequence/sequence_diagram_visitor_sequence.yml b/uml/sequence/sequence_diagram_visitor_sequence.yml index 9996c76e..4f832c01 100644 --- a/uml/sequence/sequence_diagram_visitor_sequence.yml +++ b/uml/sequence/sequence_diagram_visitor_sequence.yml @@ -1,4 +1,5 @@ type: sequence +title: Sequence diagram AST visitor sequence diagram # Group free functions into one participant per file combine_free_functions_into_file_participants: true # Do not generate method or function arguments @@ -21,8 +22,5 @@ exclude: - src/common/model/source_location.h using_namespace: - clanguml -plantuml: - before: - - 'title clang-uml sequence_diagram::visitor::translation_unit_visitor::VisitCXXRecordDecl sequence diagram' from: - function: "clanguml::sequence_diagram::visitor::translation_unit_visitor::VisitCXXRecordDecl(clang::CXXRecordDecl *)" diff --git a/uml/sequence/template_builder_sequence.yml b/uml/sequence/template_builder_sequence.yml index 5c23410c..9c082d74 100644 --- a/uml/sequence/template_builder_sequence.yml +++ b/uml/sequence/template_builder_sequence.yml @@ -1,4 +1,5 @@ type: sequence +title: Diagram element template builder sequence diagram combine_free_functions_into_file_participants: true generate_method_arguments: none glob: @@ -14,8 +15,5 @@ exclude: - src/common/model/source_location.h using_namespace: - clanguml -plantuml: - before: - - 'title clang-uml class_diagram::visitor::template_builder::build sequence diagram' from: - function: "clanguml::class_diagram::visitor::template_builder::build(const clang::NamedDecl *,const clang::TemplateSpecializationType &,std::optional)"