diff --git a/docs/test_cases/t00048.md b/docs/test_cases/t00048.md index 1ddcb1ed..43b9c2d2 100644 --- a/docs/test_cases/t00048.md +++ b/docs/test_cases/t00048.md @@ -11,7 +11,6 @@ diagrams: - ../../tests/t00048/a_t00048.cc - ../../tests/t00048/t00048.cc using_namespace: clanguml::t00048 - parse_includes: true include: namespaces: - clanguml::t00048 diff --git a/src/config/config.cc b/src/config/config.cc index e50d5170..242b07e0 100644 --- a/src/config/config.cc +++ b/src/config/config.cc @@ -140,6 +140,32 @@ std::string to_string(location_t cp) } } +std::string to_string(package_type_t pt) +{ + switch (pt) { + case package_type_t::kNamespace: + return "namespace"; + case package_type_t::kDirectory: + return "directory"; + default: + assert(false); + return ""; + } +} + +std::string to_string(member_order_t mo) +{ + switch (mo) { + case member_order_t::lexical: + return "lexical"; + case member_order_t::as_is: + return "as_is"; + default: + assert(false); + return ""; + } +} + void plantuml::append(const plantuml &r) { before.insert(before.end(), r.before.begin(), r.before.end()); diff --git a/src/config/config.h b/src/config/config.h index 735ca1dd..46f470c2 100644 --- a/src/config/config.h +++ b/src/config/config.h @@ -50,6 +50,8 @@ enum class method_arguments { none /*! Empty string between '(' and ')' */ }; +std::string to_string(method_arguments ma); + /*! Types of methods, which can be used in diagram filters */ enum class method_type { constructor, @@ -84,6 +86,8 @@ enum class package_type_t { kDirectory /*!< From directories */ }; +std::string to_string(package_type_t mt); + /*! How class methods and members should be ordered in diagrams */ enum class member_order_t { lexical, /*! Lexical order based on entire method or member signature @@ -91,7 +95,7 @@ enum class member_order_t { as_is /*! As written in source code */ }; -std::string to_string(method_arguments ma); +std::string to_string(member_order_t mt); /*! Which comment parser should be used */ enum class comment_parser_t { @@ -413,6 +417,8 @@ struct source_location { * @embed{inheritable_diagram_options_context_class.svg} */ struct inheritable_diagram_options { + virtual ~inheritable_diagram_options() = default; + option> glob{"glob"}; option using_namespace{"using_namespace"}; option include_relations_also_as_members{ @@ -424,7 +430,7 @@ struct inheritable_diagram_options { "generate_method_arguments", method_arguments::full}; option group_methods{"group_methods", true}; option member_order{ - "method_order", member_order_t::lexical}; + "member_order", member_order_t::lexical}; option generate_packages{"generate_packages", false}; option package_type{ "package_type", package_type_t::kNamespace}; @@ -622,8 +628,6 @@ config load(const std::string &config_file, std::optional paths_relative_to_pwd = {}, std::optional no_metadata = {}); -config load_plain(const std::string &config_file); - } // namespace config namespace config { diff --git a/src/config/schema.h b/src/config/schema.h new file mode 100644 index 00000000..8e0d608b --- /dev/null +++ b/src/config/schema.h @@ -0,0 +1,216 @@ +/** + * @file src/config/schema.h + * + * Copyright (c) 2021-2023 Bartek Kryza + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#pragma once + +#include + +namespace clanguml::config { + +const std::string schema_str = R"( +types: + map_t: { $K: V } + comment_parser_t: !variant [plain, clang] + diagram_type_t: !variant [class, sequence, include, package] + generate_method_arguments_t: !variant [full, abbreviated, none] + generate_links_t: + link: string + tooltip: string + git_t: map_t + layout_hint_key: !variant [up, left, right, down, row, column, together] + layout_hint_value: [string, [string]] + layout_hint_t: [map_t] + layout_t: map_t + package_type_t: !variant [namespace, directory] + member_order_t: !variant [lexical, as_is] + regex_t: + r: string + regex_or_string_t: [string, regex_t] + namespaces_filter_t: regex_or_string_t + elements_filter_t: regex_or_string_t + function_location_t: + function: string + marker_location_t: + marker: string + source_location_t: + - function_location_t + - marker_location_t + class_diagram_t: + type: !variant [class] + # + # Common options + # + __parent_path: !optional string + base_directory: !optional string + comment_parser: !optional comment_parser_t + debug_mode: !optional bool + exclude: !optional map_t + generate_links: !optional generate_links_t + git: !optional git_t + glob: !optional [string] + include: !optional map_t + plantuml: !optional + before: !optional [string] + after: !optional [string] + relative_to: !optional string + using_namespace: !optional [string, [string]] + generate_metadata: !optional bool + # + # Class diagram specific options + # + generate_method_arguments: !optional generate_method_arguments_t + generate_packages: !optional bool + package_type: !optional package_type_t + method_order: !optional member_order_t + member_order: !optional member_order_t + group_methods: !optional bool + type_aliases: !optional map_t + relationship_hints: !optional map_t + include_relations_also_as_members: !optional bool + layout: !optional layout_t + sequence_diagram_t: + type: !variant [sequence] + # + # Common options + # + __parent_path: !optional string + base_directory: !optional string + comment_parser: !optional comment_parser_t + debug_mode: !optional bool + exclude: !optional map_t + generate_links: !optional generate_links_t + git: !optional git_t + glob: !optional [string] + include: !optional map_t + plantuml: !optional + before: !optional [string] + after: !optional [string] + relative_to: !optional string + using_namespace: !optional [string, [string]] + generate_metadata: !optional bool + # + # Sequence diagram specific options + # + generate_method_arguments: !optional generate_method_arguments_t + combine_free_functions_into_file_participants: !optional bool + generate_return_types: !optional bool + generate_condition_statements: !optional bool + participants_order: !optional [string] + start_from: !optional [source_location_t] + package_diagram_t: + type: !variant [package] + # + # Common options + # + __parent_path: !optional string + base_directory: !optional string + comment_parser: !optional comment_parser_t + debug_mode: !optional bool + exclude: !optional map_t + generate_links: !optional generate_links_t + git: !optional git_t + glob: !optional [string] + include: !optional map_t + plantuml: !optional + before: !optional [string] + after: !optional [string] + relative_to: !optional string + using_namespace: !optional [string, [string]] + generate_metadata: !optional bool + # + # Package diagram specific options + # + generate_packages: !optional bool + package_type: !optional package_type_t + layout: !optional layout_t + include_diagram_t: + type: !variant [include] + # + # Common options + # + __parent_path: !optional string + base_directory: !optional string + comment_parser: !optional comment_parser_t + debug_mode: !optional bool + exclude: !optional map_t + generate_links: !optional generate_links_t + git: !optional git_t + glob: !optional [string] + include: !optional map_t + plantuml: !optional + before: !optional [string] + after: !optional [string] + relative_to: !optional string + using_namespace: !optional [string, [string]] + generate_metadata: !optional bool + # + # Include diagram specific options + # + generate_system_headers: !optional bool + diagram_t: + - class_diagram_t + - sequence_diagram_t + - package_diagram_t + - include_diagram_t + diagram_template_t: + description: !optional string + type: diagram_type_t + template: string + diagram_templates_t: map_t + +root: + # + # Root options + # + compilation_database_dir: !optional string + output_directory: !optional string + add_compile_flags: !optional [string] + remove_compile_flags: !optional [string] + diagram_templates: !optional diagram_templates_t + diagrams: !required map_t + # + # Common options + # + __parent_path: !optional string + base_directory: !optional string + comment_parser: !optional comment_parser_t + debug_mode: !optional bool + exclude: !optional map_t + generate_links: !optional generate_links_t + git: !optional git_t + glob: !optional [string] + include: !optional map_t + plantuml: !optional + before: !optional [string] + after: !optional [string] + relative_to: !optional string + using_namespace: !optional [string, [string]] + generate_metadata: !optional bool + # + # Inheritable custom options + # + include_relations_also_as_members: !optional bool + generate_method_arguments: !optional generate_method_arguments_t + combine_free_functions_into_file_participants: !optional bool + generate_return_types: !optional bool + generate_condition_statements: !optional bool + generate_packages: !optional bool + group_methods: !optional bool + package_type: !optional package_type_t +)"; + +} // namespace clanguml::config \ No newline at end of file diff --git a/src/config/yaml_decoders.cc b/src/config/yaml_decoders.cc index 4f596244..08541326 100644 --- a/src/config/yaml_decoders.cc +++ b/src/config/yaml_decoders.cc @@ -18,6 +18,11 @@ #include "config.h" #include "diagram_templates.h" +#include "schema.h" + +#define MIROIR_IMPLEMENTATION +#define MIROIR_YAMLCPP_SPECIALIZATION +#include namespace YAML { using clanguml::common::namespace_or_regex; @@ -766,28 +771,13 @@ template <> struct convert { auto diagrams = node["diagrams"]; - assert(diagrams.Type() == NodeType::Map); - for (auto d : diagrams) { auto name = d.first.as(); std::shared_ptr diagram_config{}; auto parent_path = node["__parent_path"].as(); + d.second.force_insert("__parent_path", parent_path); - if (has_key(d.second, "include!")) { - auto include_path = std::filesystem::path{parent_path}; - include_path /= d.second["include!"].as(); - - YAML::Node included_node = - YAML::LoadFile(include_path.string()); - included_node.force_insert("__parent_path", parent_path); - - diagram_config = parse_diagram_config(included_node); - } - else { - d.second.force_insert("__parent_path", parent_path); - diagram_config = parse_diagram_config(d.second); - } - + diagram_config = parse_diagram_config(d.second); if (diagram_config) { diagram_config->name = name; diagram_config->inherit(rhs); @@ -844,6 +834,9 @@ config load(const std::string &config_file, std::optional paths_relative_to_pwd, std::optional no_metadata) { try { + auto schema = YAML::Load(clanguml::config::schema_str); + auto schema_validator = miroir::Validator(schema); + YAML::Node doc; std::filesystem::path config_file_path{}; @@ -860,6 +853,8 @@ config load(const std::string &config_file, // Store the parent path of the config_file to properly resolve // the include files paths + if (has_key(doc, "__parent_path")) + doc.remove("__parent_path"); if (config_file == "-") { config_file_path = std::filesystem::current_path(); doc.force_insert("__parent_path", config_file_path.string()); @@ -914,6 +909,38 @@ config load(const std::string &config_file, doc["git"] = git_config; } + // Resolve diagram includes + auto diagrams = doc["diagrams"]; + + assert(diagrams.Type() == YAML::NodeType::Map); + + for (auto d : diagrams) { + auto name = d.first.as(); + std::shared_ptr diagram_config{}; + auto parent_path = doc["__parent_path"].as(); + + if (has_key(d.second, "include!")) { + auto include_path = std::filesystem::path{parent_path}; + include_path /= d.second["include!"].as(); + + YAML::Node included_node = + YAML::LoadFile(include_path.string()); + + diagrams[name] = included_node; + } + } + + auto schema_errors = schema_validator.validate(doc); + + if (schema_errors.size() > 0) { + // print validation errors + for (const auto &err : schema_errors) { + LOG_ERROR("Schema error: {}", err.description()); + } + + throw YAML::Exception({}, "Invalid configuration schema"); + } + auto d = doc.as(); d.initialize_diagram_templates(); @@ -929,25 +956,4 @@ config load(const std::string &config_file, "Cannot parse YAML file {}: {}", config_file, e.what())); } } - -config load_plain(const std::string &config_file) -{ - try { - YAML::Node doc; - std::filesystem::path config_file_path{}; - - doc = YAML::LoadFile(config_file); - - auto d = doc.as(); - return d; - } - catch (YAML::BadFile &e) { - throw std::runtime_error(fmt::format( - "Could not open config file {}: {}", config_file, e.what())); - } - catch (YAML::Exception &e) { - throw std::runtime_error(fmt::format( - "Cannot parse YAML file {}: {}", config_file, e.what())); - } -} } // namespace clanguml::config \ No newline at end of file diff --git a/src/config/yaml_emitters.cc b/src/config/yaml_emitters.cc index 46355f4b..ec3eba8e 100644 --- a/src/config/yaml_emitters.cc +++ b/src/config/yaml_emitters.cc @@ -26,8 +26,10 @@ YAML::Emitter &operator<<(YAML::Emitter &out, const string_or_regex &m) out << std::get(m.value()); } else { + out << YAML::BeginMap; out << YAML::Key << "r" << YAML::Value << std::get(m.value()).pattern; + out << YAML::EndMap; } return out; @@ -39,8 +41,10 @@ YAML::Emitter &operator<<(YAML::Emitter &out, const namespace_or_regex &m) out << std::get(m.value()); } else { + out << YAML::BeginMap; out << YAML::Key << "r" << YAML::Value << std::get(m.value()).pattern; + out << YAML::EndMap; } return out; @@ -88,6 +92,18 @@ YAML::Emitter &operator<<(YAML::Emitter &out, const callee_type &m) return out; } +YAML::Emitter &operator<<(YAML::Emitter &out, const member_order_t &r) +{ + out << to_string(r); + return out; +} + +YAML::Emitter &operator<<(YAML::Emitter &out, const package_type_t &r) +{ + out << to_string(r); + return out; +} + YAML::Emitter &operator<<(YAML::Emitter &out, const filter &f) { out << YAML::BeginMap; @@ -267,32 +283,50 @@ YAML::Emitter &operator<<(YAML::Emitter &out, const config &c) YAML::Emitter &operator<<( YAML::Emitter &out, const inheritable_diagram_options &c) { - out << c.glob; - out << c.using_namespace; - out << c.include_relations_also_as_members; - out << c.include; + // Common options + out << c.base_directory; + out << c.comment_parser; + out << c.debug_mode; out << c.exclude; - out << c.puml; - out << c.generate_method_arguments; - out << c.generate_packages; out << c.generate_links; out << c.git; - out << c.base_directory; + out << c.glob; + out << c.include; + out << c.puml; out << c.relative_to; - out << c.generate_system_headers; - if (c.relationship_hints) { - out << YAML::Key << "relationship_hints" << YAML::Value - << c.relationship_hints(); + out << c.using_namespace; + out << c.generate_metadata; + + if (dynamic_cast(&c) != nullptr) { + out << c.generate_method_arguments; + out << c.generate_packages; + out << c.include_relations_also_as_members; + if (c.relationship_hints) { + out << YAML::Key << "relationship_hints" << YAML::Value + << c.relationship_hints(); + } + + if (c.type_aliases) { + out << YAML::Key << "type_aliases" << YAML::Value + << c.type_aliases(); + } + out << c.member_order; + out << c.package_type; } - if (c.type_aliases) { - out << YAML::Key << "type_aliases" << YAML::Value << c.type_aliases(); + else if (dynamic_cast(&c) != nullptr) { + 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) { + out << c.generate_packages; + out << c.package_type; + } + else if (dynamic_cast(&c) != nullptr) { + out << c.generate_system_headers; } - out << c.comment_parser; - out << c.combine_free_functions_into_file_participants; - out << c.generate_return_types; - out << c.generate_condition_statements; - out << c.participants_order; - out << c.debug_mode; return out; } diff --git a/tests/t00048/.clang-uml b/tests/t00048/.clang-uml index 7236ae46..e3e44fbc 100644 --- a/tests/t00048/.clang-uml +++ b/tests/t00048/.clang-uml @@ -8,7 +8,6 @@ diagrams: - ../../tests/t00048/a_t00048.cc - ../../tests/t00048/t00048.cc using_namespace: clanguml::t00048 - parse_includes: true include: namespaces: - clanguml::t00048 \ No newline at end of file diff --git a/tests/test_config.cc b/tests/test_config.cc index c16970fa..d04cb81c 100644 --- a/tests/test_config.cc +++ b/tests/test_config.cc @@ -15,10 +15,11 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -#define CATCH_CONFIG_MAIN - +#define CATCH_CONFIG_RUNNER +#define CATCH_CONFIG_CONSOLE_WIDTH 512 #include "catch.h" +#include "cli/cli_handler.h" #include "config/config.h" #include "util/util.h" @@ -339,4 +340,45 @@ TEST_CASE("Test config sequence inherited", "[unit-test]") CHECK(def.type() == clanguml::common::model::diagram_t::kSequence); CHECK(def.combine_free_functions_into_file_participants() == false); CHECK(def.generate_return_types() == false); -} \ No newline at end of file +} + +TEST_CASE("Test config full clang uml dump", "[unit-test]") +{ + auto cfg = + clanguml::config::load("./test_config_data/clang_uml_config.yml"); + + CHECK(cfg.diagrams.size() == 32); +} + +/// +/// Main test function +/// +int main(int argc, char *argv[]) +{ + Catch::Session session; + using namespace Catch::clara; + + bool debug_log{false}; + auto cli = session.cli() | + Opt(debug_log, "debug_log")["-u"]["--debug-log"]("Enable debug logs"); + + session.cli(cli); + + int returnCode = session.applyCommandLine(argc, argv); + if (returnCode != 0) + return returnCode; + + clanguml::cli::cli_handler clih; + + std::vector argvv = { + "clang-uml", "--config", "./test_config_data/simple.yml"}; + + if (debug_log) + argvv.push_back("-vvv"); + else + argvv.push_back("-q"); + + clih.handle_options(argvv.size(), argvv.data()); + + return session.run(); +} diff --git a/tests/test_config_data/clang_uml_config.yml b/tests/test_config_data/clang_uml_config.yml new file mode 100644 index 00000000..de01db16 --- /dev/null +++ b/tests/test_config_data/clang_uml_config.yml @@ -0,0 +1,1152 @@ +compilation_database_dir: /home/bartek/devel/clang-uml/debug +output_directory: /home/bartek/devel/clang-uml/docs/diagrams +__parent_path: /home/bartek/devel/clang-uml +comment_parser: clang +debug_mode: false +generate_links: + link: "{% if existsIn(element, \"doxygen_link\") %}{{ element.doxygen_link }}{% endif %}" + tooltip: "{% if existsIn(element, \"comment\") and existsIn(element.comment, \"brief\") %}{{ abbrv(trim(replace(element.comment.brief.0, \"\\n+\", \" \")), 256) }}{% else %}{{ element.name }}{% endif %}" +git: + branch: add-configuration-file-validation + revision: 0.3.8-2-g561a2b16 + commit: 561a2b16fd48052fc284ac598c9b782be3341662 + toplevel: /home/bartek/devel/clang-uml +relative_to: /home/bartek/devel/clang-uml +generate_metadata: true +diagrams: + architecture_package: + type: package + __parent_path: /home/bartek/devel/clang-uml + comment_parser: clang + debug_mode: false + generate_links: + link: "{% if existsIn(element, \"doxygen_link\") %}{{ element.doxygen_link }}{% endif %}" + tooltip: "{% if existsIn(element, \"comment\") and existsIn(element.comment, \"brief\") %}{{ abbrv(trim(replace(element.comment.brief.0, \"\\n+\", \" \")), 256) }}{% else %}{{ element.name }}{% endif %}" + git: + branch: add-configuration-file-validation + revision: 0.3.8-2-g561a2b16 + commit: 561a2b16fd48052fc284ac598c9b782be3341662 + toplevel: /home/bartek/devel/clang-uml + glob: + - src/config/config.cc + - src/common/model/diagram.cc + - src/**/model/diagram.cc + - src/**/visitor/translation_unit_visitor.cc + - src/**/generators/**/*generator.cc + include: + namespaces: + - clanguml + elements: + - clanguml + - clanguml::common + - clanguml::config + - r: clanguml::.+_diagram + - r: clanguml::.+::model + - r: clanguml::.+::visitor + - r: clanguml::.+::generators + plantuml: + before: + - title clang-uml top level packages + relative_to: /home/bartek/devel/clang-uml + generate_metadata: true + generate_packages: false + package_type: namespace + architecture_visitors_class: + type: class + __parent_path: /home/bartek/devel/clang-uml + comment_parser: clang + debug_mode: false + exclude: + access: + - public + - protected + - private + relationships: + - dependency + generate_links: + link: "{% if existsIn(element, \"doxygen_link\") %}{{ element.doxygen_link }}{% endif %}" + tooltip: "{% if existsIn(element, \"comment\") and existsIn(element.comment, \"brief\") %}{{ abbrv(trim(replace(element.comment.brief.0, \"\\n+\", \" \")), 256) }}{% else %}{{ element.name }}{% endif %}" + git: + branch: add-configuration-file-validation + revision: 0.3.8-2-g561a2b16 + commit: 561a2b16fd48052fc284ac598c9b782be3341662 + toplevel: /home/bartek/devel/clang-uml + glob: + - src/docs/architecture.cc + include: + namespaces: + - clanguml + elements: + - r: clanguml::.+::translation_unit_visitor.* + - r: clanguml::.+::model::diagram + plantuml: + before: + - title clang-uml top level architecture - AST visitors + relative_to: /home/bartek/devel/clang-uml + generate_metadata: true + generate_method_arguments: full + generate_packages: true + include_relations_also_as_members: true + method_order: lexical + package_type: namespace + class_diagram_generator_sequence: + type: sequence + start_from: + - function: clanguml::class_diagram::generators::plantuml::generator::generate(std::ostream &) const + __parent_path: /home/bartek/devel/clang-uml + comment_parser: clang + debug_mode: false + generate_links: + link: "{% if existsIn(element, \"doxygen_link\") %}{{ element.doxygen_link }}{% endif %}" + tooltip: "{% if existsIn(element, \"comment\") and existsIn(element.comment, \"brief\") %}{{ abbrv(trim(replace(element.comment.brief.0, \"\\n+\", \" \")), 256) }}{% else %}{{ element.name }}{% endif %}" + git: + branch: add-configuration-file-validation + revision: 0.3.8-2-g561a2b16 + commit: 561a2b16fd48052fc284ac598c9b782be3341662 + toplevel: /home/bartek/devel/clang-uml + glob: + - src/class_diagram/generators/plantuml/*.cc + include: + namespaces: + - clanguml + plantuml: + before: + - title clang-uml clanguml::class_diagram::generators::plantuml::generator sequence diagram + relative_to: /home/bartek/devel/clang-uml + using_namespace: clanguml::class_diagram::generators::plantuml + generate_metadata: true + combine_free_functions_into_file_participants: false + generate_condition_statements: false + generate_method_arguments: full + generate_return_types: false + class_model_class: + type: class + __parent_path: /home/bartek/devel/clang-uml + comment_parser: clang + debug_mode: false + exclude: + relationships: + - dependency + generate_links: + link: "{% if existsIn(element, \"doxygen_link\") %}{{ element.doxygen_link }}{% endif %}" + tooltip: "{% if existsIn(element, \"comment\") and existsIn(element.comment, \"brief\") %}{{ abbrv(trim(replace(element.comment.brief.0, \"\\n+\", \" \")), 256) }}{% else %}{{ element.name }}{% endif %}" + git: + branch: add-configuration-file-validation + revision: 0.3.8-2-g561a2b16 + commit: 561a2b16fd48052fc284ac598c9b782be3341662 + toplevel: /home/bartek/devel/clang-uml + glob: + - src/common/model/*.cc + - src/class_diagram/model/*.cc + include: + namespaces: + - clanguml::common::model + - clanguml::class_diagram::model + plantuml: + before: + - title clang-uml class diagram model + relative_to: /home/bartek/devel/clang-uml + using_namespace: clanguml + generate_metadata: true + generate_method_arguments: none + generate_packages: true + include_relations_also_as_members: false + method_order: lexical + package_type: namespace + cli_handle_options_sequence: + type: sequence + start_from: + - function: clanguml::cli::cli_handler::handle_options(int,const char **) + __parent_path: /home/bartek/devel/clang-uml + comment_parser: clang + debug_mode: true + exclude: + elements: + - r: clanguml::config::option.* + paths: + - src/util/util.h + generate_links: + link: "{% if existsIn(element, \"doxygen_link\") %}{{ element.doxygen_link }}{% endif %}" + tooltip: "{% if existsIn(element, \"comment\") and existsIn(element.comment, \"brief\") %}{{ abbrv(trim(replace(element.comment.brief.0, \"\\n+\", \" \")), 256) }}{% else %}{{ element.name }}{% endif %}" + git: + branch: add-configuration-file-validation + revision: 0.3.8-2-g561a2b16 + commit: 561a2b16fd48052fc284ac598c9b782be3341662 + toplevel: /home/bartek/devel/clang-uml + glob: + - src/cli/cli_handler.cc + - src/config/config.cc + - src/config/yaml_decoders.cc + include: + namespaces: + - clanguml + - YAML + relative_to: /home/bartek/devel/clang-uml + using_namespace: clanguml + generate_metadata: true + combine_free_functions_into_file_participants: true + generate_condition_statements: false + generate_method_arguments: none + generate_return_types: false + comment_visitor_hierarchy_class: + type: class + __parent_path: /home/bartek/devel/clang-uml + comment_parser: clang + debug_mode: false + exclude: + access: + - private + - protected + - public + generate_links: + link: "{% if existsIn(element, \"doxygen_link\") %}{{ element.doxygen_link }}{% endif %}" + tooltip: "{% if existsIn(element, \"comment\") and existsIn(element.comment, \"brief\") %}{{ abbrv(trim(replace(element.comment.brief.0, \"\\n+\", \" \")), 256) }}{% else %}{{ element.name }}{% endif %}" + git: + branch: add-configuration-file-validation + revision: 0.3.8-2-g561a2b16 + commit: 561a2b16fd48052fc284ac598c9b782be3341662 + toplevel: /home/bartek/devel/clang-uml + glob: + - src/common/visitor/comment/*.cc + include: + namespaces: + - clanguml::common::visitor::comment + subclasses: + - clanguml::common::visitor::comment::comment_visitor + relative_to: /home/bartek/devel/clang-uml + using_namespace: clanguml + generate_metadata: true + generate_method_arguments: full + generate_packages: false + include_relations_also_as_members: true + method_order: lexical + package_type: namespace + common_model_class: + type: class + __parent_path: /home/bartek/devel/clang-uml + comment_parser: clang + debug_mode: false + exclude: + access: + - public + - protected + - private + element_types: + - enum + relationships: + - dependency + subclasses: + - clanguml::common::model::filter_visitor + generate_links: + link: "{% if existsIn(element, \"doxygen_link\") %}{{ element.doxygen_link }}{% endif %}" + tooltip: "{% if existsIn(element, \"comment\") and existsIn(element.comment, \"brief\") %}{{ abbrv(trim(replace(element.comment.brief.0, \"\\n+\", \" \")), 256) }}{% else %}{{ element.name }}{% endif %}" + git: + branch: add-configuration-file-validation + revision: 0.3.8-2-g561a2b16 + commit: 561a2b16fd48052fc284ac598c9b782be3341662 + toplevel: /home/bartek/devel/clang-uml + glob: + - src/common/model/*.cc + include: + namespaces: + - clanguml::common::model + plantuml: + before: + - title clang-uml common diagram model + after: + - "note top of {{ alias(\"diagram\") }}: Common class for specific diagram types" + relative_to: /home/bartek/devel/clang-uml + using_namespace: clanguml::common::model + generate_metadata: true + generate_method_arguments: full + generate_packages: false + include_relations_also_as_members: false + method_order: lexical + package_type: namespace + compilation_database_context_class: + type: class + __parent_path: /home/bartek/devel/clang-uml + comment_parser: clang + debug_mode: false + generate_links: + link: "{% if existsIn(element, \"doxygen_link\") %}{{ element.doxygen_link }}{% endif %}" + tooltip: "{% if existsIn(element, \"comment\") and existsIn(element.comment, \"brief\") %}{{ abbrv(trim(replace(element.comment.brief.0, \"\\n+\", \" \")), 256) }}{% else %}{{ element.name }}{% endif %}" + git: + branch: add-configuration-file-validation + revision: 0.3.8-2-g561a2b16 + commit: 561a2b16fd48052fc284ac598c9b782be3341662 + toplevel: /home/bartek/devel/clang-uml + glob: + - src/common/compilation_database.cc + include: + namespaces: + - clanguml + - clang::tooling + context: + - clanguml::common::compilation_database + relative_to: /home/bartek/devel/clang-uml + generate_metadata: true + generate_method_arguments: full + generate_packages: false + include_relations_also_as_members: true + method_order: lexical + package_type: namespace + config_class: + type: class + __parent_path: /home/bartek/devel/clang-uml + comment_parser: clang + debug_mode: false + exclude: + elements: + - r: clanguml::config::option<.*> + generate_links: + link: "{% if existsIn(element, \"doxygen_link\") %}{{ element.doxygen_link }}{% endif %}" + tooltip: "{% if existsIn(element, \"comment\") and existsIn(element.comment, \"brief\") %}{{ abbrv(trim(replace(element.comment.brief.0, \"\\n+\", \" \")), 256) }}{% else %}{{ element.name }}{% endif %}" + git: + branch: add-configuration-file-validation + revision: 0.3.8-2-g561a2b16 + commit: 561a2b16fd48052fc284ac598c9b782be3341662 + toplevel: /home/bartek/devel/clang-uml + glob: + - src/config/config.cc + include: + namespaces: + - clanguml::config + context: + - clanguml::config::inheritable_diagram_options + - clanguml::config::config + - clanguml::config::diagram + 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." + - "note bottom of {{ alias(\"class_diagram\") }}: Options for specific class diagrams" + - "note bottom of {{ alias(\"sequence_diagram\") }}: Options for specific sequence diagrams" + - "note bottom of {{ alias(\"package_diagram\") }}: Options for specific package diagrams" + - "note bottom of {{ alias(\"include_diagram\") }}: Options for specific include diagrams" + relative_to: /home/bartek/devel/clang-uml + using_namespace: clanguml::config + generate_metadata: true + generate_method_arguments: full + generate_packages: false + include_relations_also_as_members: true + method_order: lexical + package_type: namespace + config_context_class: + type: class + __parent_path: /home/bartek/devel/clang-uml + comment_parser: clang + debug_mode: false + generate_links: + link: "{% if existsIn(element, \"doxygen_link\") %}{{ element.doxygen_link }}{% endif %}" + tooltip: "{% if existsIn(element, \"comment\") and existsIn(element.comment, \"brief\") %}{{ abbrv(trim(replace(element.comment.brief.0, \"\\n+\", \" \")), 256) }}{% else %}{{ element.name }}{% endif %}" + git: + branch: add-configuration-file-validation + revision: 0.3.8-2-g561a2b16 + commit: 561a2b16fd48052fc284ac598c9b782be3341662 + toplevel: /home/bartek/devel/clang-uml + glob: + - src/config/config.cc + include: + namespaces: + - clanguml::config + context: + - clanguml::config::config + plantuml: + before: + - title clanguml::config::config context diagram + relative_to: /home/bartek/devel/clang-uml + using_namespace: clanguml::config + generate_metadata: true + generate_method_arguments: full + generate_packages: false + include_relations_also_as_members: true + method_order: lexical + package_type: namespace + decorated_element_hierarchy_class: + type: class + __parent_path: /home/bartek/devel/clang-uml + comment_parser: clang + debug_mode: false + exclude: + access: + - public + - protected + - private + generate_links: + link: "{% if existsIn(element, \"doxygen_link\") %}{{ element.doxygen_link }}{% endif %}" + tooltip: "{% if existsIn(element, \"comment\") and existsIn(element.comment, \"brief\") %}{{ abbrv(trim(replace(element.comment.brief.0, \"\\n+\", \" \")), 256) }}{% else %}{{ element.name }}{% endif %}" + git: + branch: add-configuration-file-validation + revision: 0.3.8-2-g561a2b16 + commit: 561a2b16fd48052fc284ac598c9b782be3341662 + toplevel: /home/bartek/devel/clang-uml + glob: + - src/common/model/*.cc + - src/class_diagram/model/*.cc + - src/sequence_diagram/model/*.cc + - src/include_diagram/model/*.cc + - src/package_diagram/model/*.cc + include: + namespaces: + - clanguml + relationships: + - extension + subclasses: + - clanguml::common::model::decorated_element + relative_to: /home/bartek/devel/clang-uml + using_namespace: clanguml + generate_metadata: true + generate_method_arguments: full + generate_packages: true + include_relations_also_as_members: true + method_order: lexical + package_type: namespace + decorators_class: + type: class + __parent_path: /home/bartek/devel/clang-uml + comment_parser: clang + debug_mode: false + generate_links: + link: "{% if existsIn(element, \"doxygen_link\") %}{{ element.doxygen_link }}{% endif %}" + tooltip: "{% if existsIn(element, \"comment\") and existsIn(element.comment, \"brief\") %}{{ abbrv(trim(replace(element.comment.brief.0, \"\\n+\", \" \")), 256) }}{% else %}{{ element.name }}{% endif %}" + git: + branch: add-configuration-file-validation + revision: 0.3.8-2-g561a2b16 + commit: 561a2b16fd48052fc284ac598c9b782be3341662 + toplevel: /home/bartek/devel/clang-uml + glob: + - src/decorators/decorators.cc + include: + namespaces: + - clanguml::decorators + plantuml: + before: + - title clang-uml decorators model + relative_to: /home/bartek/devel/clang-uml + using_namespace: clanguml::decorators + generate_metadata: true + generate_method_arguments: full + generate_packages: false + include_relations_also_as_members: false + method_order: lexical + package_type: namespace + diagram_config_hierarchy_class: + type: class + __parent_path: /home/bartek/devel/clang-uml + comment_parser: clang + debug_mode: false + exclude: + access: + - public + - protected + - private + generate_links: + link: "{% if existsIn(element, \"doxygen_link\") %}{{ element.doxygen_link }}{% endif %}" + tooltip: "{% if existsIn(element, \"comment\") and existsIn(element.comment, \"brief\") %}{{ abbrv(trim(replace(element.comment.brief.0, \"\\n+\", \" \")), 256) }}{% else %}{{ element.name }}{% endif %}" + git: + branch: add-configuration-file-validation + revision: 0.3.8-2-g561a2b16 + commit: 561a2b16fd48052fc284ac598c9b782be3341662 + toplevel: /home/bartek/devel/clang-uml + glob: + - src/config/config.cc + include: + namespaces: + - clanguml + subclasses: + - clanguml::config::diagram + parents: + - clanguml::config::diagram + plantuml: + before: + - title clanguml::config::diagram class hierarchy + relative_to: /home/bartek/devel/clang-uml + using_namespace: clanguml + generate_metadata: true + generate_method_arguments: full + generate_packages: true + include_relations_also_as_members: true + method_order: lexical + package_type: namespace + diagram_element_hierarchy_class: + type: class + __parent_path: /home/bartek/devel/clang-uml + comment_parser: clang + debug_mode: false + exclude: + access: + - public + - private + - protected + relationships: + - dependency + generate_links: + link: "{% if existsIn(element, \"doxygen_link\") %}{{ element.doxygen_link }}{% endif %}" + tooltip: "{% if existsIn(element, \"comment\") and existsIn(element.comment, \"brief\") %}{{ abbrv(trim(replace(element.comment.brief.0, \"\\n+\", \" \")), 256) }}{% else %}{{ element.name }}{% endif %}" + git: + branch: add-configuration-file-validation + revision: 0.3.8-2-g561a2b16 + commit: 561a2b16fd48052fc284ac598c9b782be3341662 + toplevel: /home/bartek/devel/clang-uml + glob: + - src/common/model/*.cc + - src/class_diagram/model/*.cc + - src/sequence_diagram/model/*.cc + - src/include_diagram/model/*.cc + - src/package_diagram/model/*.cc + include: + namespaces: + - clanguml + subclasses: + - clanguml::common::model::decorated_element + - clanguml::common::model::source_location + plantuml: + before: + - title clang-uml diagram element class inheritance model + relative_to: /home/bartek/devel/clang-uml + using_namespace: clanguml + generate_metadata: true + generate_method_arguments: full + generate_packages: true + include_relations_also_as_members: true + method_order: lexical + package_type: namespace + diagram_filter_context_class: + type: class + __parent_path: /home/bartek/devel/clang-uml + comment_parser: clang + debug_mode: false + exclude: + elements: + - clanguml::common::model::path + method_types: + - constructor + - destructor + - operator + callee_types: + [] + generate_links: + link: "{% if existsIn(element, \"doxygen_link\") %}{{ element.doxygen_link }}{% endif %}" + tooltip: "{% if existsIn(element, \"comment\") and existsIn(element.comment, \"brief\") %}{{ abbrv(trim(replace(element.comment.brief.0, \"\\n+\", \" \")), 256) }}{% else %}{{ element.name }}{% endif %}" + git: + branch: add-configuration-file-validation + revision: 0.3.8-2-g561a2b16 + commit: 561a2b16fd48052fc284ac598c9b782be3341662 + toplevel: /home/bartek/devel/clang-uml + glob: + - src/common/model/diagram_filter.cc + - src/common/model/diagram.cc + include: + namespaces: + - clanguml + context: + - clanguml::common::model::diagram_filter + relative_to: /home/bartek/devel/clang-uml + using_namespace: clanguml + generate_metadata: true + generate_method_arguments: full + generate_packages: false + include_relations_also_as_members: true + method_order: lexical + package_type: namespace + diagram_generate_generic_sequence: + type: sequence + start_from: + - function: clanguml::common::generators::generate_diagram(const std::string &,const std::string &,std::shared_ptr,const common::compilation_database &,const std::vector &,const cli::runtime_config &,std::function &&) + __parent_path: /home/bartek/devel/clang-uml + comment_parser: clang + debug_mode: false + exclude: + paths: + - src/common/model/source_location.h + generate_links: + link: "{% if existsIn(element, \"doxygen_link\") %}{{ element.doxygen_link }}{% endif %}" + tooltip: "{% if existsIn(element, \"comment\") and existsIn(element.comment, \"brief\") %}{{ abbrv(trim(replace(element.comment.brief.0, \"\\n+\", \" \")), 256) }}{% else %}{{ element.name }}{% endif %}" + git: + branch: add-configuration-file-validation + revision: 0.3.8-2-g561a2b16 + commit: 561a2b16fd48052fc284ac598c9b782be3341662 + toplevel: /home/bartek/devel/clang-uml + glob: + - src/common/generators/generators.cc + include: + namespaces: + - clanguml::common::generators + relative_to: /home/bartek/devel/clang-uml + using_namespace: clanguml + generate_metadata: true + combine_free_functions_into_file_participants: true + generate_condition_statements: false + generate_method_arguments: none + generate_return_types: false + diagram_hierarchy_class: + type: class + __parent_path: /home/bartek/devel/clang-uml + comment_parser: clang + debug_mode: false + exclude: + access: + - public + - protected + - private + generate_links: + link: "{% if existsIn(element, \"doxygen_link\") %}{{ element.doxygen_link }}{% endif %}" + tooltip: "{% if existsIn(element, \"comment\") and existsIn(element.comment, \"brief\") %}{{ abbrv(trim(replace(element.comment.brief.0, \"\\n+\", \" \")), 256) }}{% else %}{{ element.name }}{% endif %}" + git: + branch: add-configuration-file-validation + revision: 0.3.8-2-g561a2b16 + commit: 561a2b16fd48052fc284ac598c9b782be3341662 + toplevel: /home/bartek/devel/clang-uml + glob: + - src/common/model/diagram.cc + - src/class_diagram/model/diagram.cc + - src/sequence_diagram/model/diagram.cc + - src/include_diagram/model/diagram.cc + - src/package_diagram/model/diagram.cc + include: + namespaces: + - clanguml + relationships: + - extension + subclasses: + - clanguml::common::model::diagram + relative_to: /home/bartek/devel/clang-uml + using_namespace: clanguml + generate_metadata: true + generate_method_arguments: none + generate_packages: true + include_relations_also_as_members: true + method_order: lexical + package_type: namespace + filter_visitor_hierarchy_class: + type: class + __parent_path: /home/bartek/devel/clang-uml + comment_parser: clang + debug_mode: false + exclude: + access: + - public + - protected + - private + generate_links: + link: "{% if existsIn(element, \"doxygen_link\") %}{{ element.doxygen_link }}{% endif %}" + tooltip: "{% if existsIn(element, \"comment\") and existsIn(element.comment, \"brief\") %}{{ abbrv(trim(replace(element.comment.brief.0, \"\\n+\", \" \")), 256) }}{% else %}{{ element.name }}{% endif %}" + git: + branch: add-configuration-file-validation + revision: 0.3.8-2-g561a2b16 + commit: 561a2b16fd48052fc284ac598c9b782be3341662 + toplevel: /home/bartek/devel/clang-uml + glob: + - src/common/model/diagram_filter.cc + include: + namespaces: + - clanguml + subclasses: + - clanguml::common::model::filter_visitor + plantuml: + before: + - left to right direction + relative_to: /home/bartek/devel/clang-uml + using_namespace: clanguml + generate_metadata: true + generate_method_arguments: full + generate_packages: true + include_relations_also_as_members: true + method_order: lexical + package_type: namespace + include_graph: + type: include + __parent_path: /home/bartek/devel/clang-uml + comment_parser: clang + debug_mode: false + generate_links: + link: "{% if existsIn(element, \"doxygen_link\") %}{{ element.doxygen_link }}{% endif %}" + tooltip: "{% if existsIn(element, \"comment\") and existsIn(element.comment, \"brief\") %}{{ abbrv(trim(replace(element.comment.brief.0, \"\\n+\", \" \")), 256) }}{% else %}{{ element.name }}{% endif %}" + git: + branch: add-configuration-file-validation + revision: 0.3.8-2-g561a2b16 + commit: 561a2b16fd48052fc284ac598c9b782be3341662 + toplevel: /home/bartek/devel/clang-uml + glob: + - src/**/*.cc + include: + paths: + - src + plantuml: + before: + - title clang-uml include graph diagram + relative_to: /home/bartek/devel/clang-uml/ + generate_metadata: true + generate_system_headers: false + inheritable_diagram_options_context_class: + type: class + __parent_path: /home/bartek/devel/clang-uml + comment_parser: clang + debug_mode: false + generate_links: + link: "{% if existsIn(element, \"doxygen_link\") %}{{ element.doxygen_link }}{% endif %}" + tooltip: "{% if existsIn(element, \"comment\") and existsIn(element.comment, \"brief\") %}{{ abbrv(trim(replace(element.comment.brief.0, \"\\n+\", \" \")), 256) }}{% else %}{{ element.name }}{% endif %}" + git: + branch: add-configuration-file-validation + revision: 0.3.8-2-g561a2b16 + commit: 561a2b16fd48052fc284ac598c9b782be3341662 + toplevel: /home/bartek/devel/clang-uml + glob: + - src/config/config.cc + include: + namespaces: + - clanguml::config + context: + - clanguml::config::inheritable_diagram_options + plantuml: + before: + - title clanguml::config::config context diagram + - left to right direction + relative_to: /home/bartek/devel/clang-uml + using_namespace: clanguml::config + generate_metadata: true + generate_method_arguments: full + generate_packages: false + include_relations_also_as_members: true + method_order: lexical + package_type: namespace + load_config_sequence: + type: sequence + start_from: + - function: clanguml::config::load(const std::string &,std::optional,std::optional) + __parent_path: /home/bartek/devel/clang-uml + comment_parser: clang + debug_mode: false + exclude: + elements: + - r: clanguml::config::option.* + paths: + - src/util/util.h + generate_links: + link: "{% if existsIn(element, \"doxygen_link\") %}{{ element.doxygen_link }}{% endif %}" + tooltip: "{% if existsIn(element, \"comment\") and existsIn(element.comment, \"brief\") %}{{ abbrv(trim(replace(element.comment.brief.0, \"\\n+\", \" \")), 256) }}{% else %}{{ element.name }}{% endif %}" + git: + branch: add-configuration-file-validation + revision: 0.3.8-2-g561a2b16 + commit: 561a2b16fd48052fc284ac598c9b782be3341662 + toplevel: /home/bartek/devel/clang-uml + glob: + - src/config/config.cc + - src/config/yaml_decoders.cc + include: + namespaces: + - clanguml + - YAML + relative_to: /home/bartek/devel/clang-uml + using_namespace: clanguml + generate_metadata: true + combine_free_functions_into_file_participants: true + generate_condition_statements: false + generate_method_arguments: none + generate_return_types: false + main_sequence: + type: sequence + start_from: + - function: main(int,const char **) + __parent_path: /home/bartek/devel/clang-uml + comment_parser: clang + debug_mode: false + exclude: + elements: + - clanguml::config::option + paths: + - src/util/util.h + generate_links: + link: "{% if existsIn(element, \"doxygen_link\") %}{{ element.doxygen_link }}{% endif %}" + tooltip: "{% if existsIn(element, \"comment\") and existsIn(element.comment, \"brief\") %}{{ abbrv(trim(replace(element.comment.brief.0, \"\\n+\", \" \")), 256) }}{% else %}{{ element.name }}{% endif %}" + git: + branch: add-configuration-file-validation + revision: 0.3.8-2-g561a2b16 + commit: 561a2b16fd48052fc284ac598c9b782be3341662 + toplevel: /home/bartek/devel/clang-uml + glob: + - src/main.cc + include: + paths: + - src + plantuml: + before: + - title clang-uml main function sequence diagram + relative_to: /home/bartek/devel/clang-uml + using_namespace: clanguml + generate_metadata: true + combine_free_functions_into_file_participants: true + generate_condition_statements: false + generate_method_arguments: none + generate_return_types: false + nested_trait_hierarchy_class: + type: class + __parent_path: /home/bartek/devel/clang-uml + comment_parser: clang + debug_mode: false + exclude: + access: + - private + - protected + - public + generate_links: + link: "{% if existsIn(element, \"doxygen_link\") %}{{ element.doxygen_link }}{% endif %}" + tooltip: "{% if existsIn(element, \"comment\") and existsIn(element.comment, \"brief\") %}{{ abbrv(trim(replace(element.comment.brief.0, \"\\n+\", \" \")), 256) }}{% else %}{{ element.name }}{% endif %}" + git: + branch: add-configuration-file-validation + revision: 0.3.8-2-g561a2b16 + commit: 561a2b16fd48052fc284ac598c9b782be3341662 + toplevel: /home/bartek/devel/clang-uml + glob: + - src/common/model/*.cc + include: + namespaces: + - clanguml + subclasses: + - r: .*nested_trait.* + relative_to: /home/bartek/devel/clang-uml + using_namespace: clanguml + generate_metadata: true + generate_method_arguments: full + generate_packages: false + include_relations_also_as_members: true + method_order: lexical + package_type: namespace + package_hierarchy_class: + type: class + __parent_path: /home/bartek/devel/clang-uml + comment_parser: clang + debug_mode: false + exclude: + access: + - private + - protected + - public + generate_links: + link: "{% if existsIn(element, \"doxygen_link\") %}{{ element.doxygen_link }}{% endif %}" + tooltip: "{% if existsIn(element, \"comment\") and existsIn(element.comment, \"brief\") %}{{ abbrv(trim(replace(element.comment.brief.0, \"\\n+\", \" \")), 256) }}{% else %}{{ element.name }}{% endif %}" + git: + branch: add-configuration-file-validation + revision: 0.3.8-2-g561a2b16 + commit: 561a2b16fd48052fc284ac598c9b782be3341662 + toplevel: /home/bartek/devel/clang-uml + glob: + - src/common/model/package.cc + include: + namespaces: + - clanguml + parents: + - clanguml::common::model::package + relative_to: /home/bartek/devel/clang-uml + using_namespace: clanguml + generate_metadata: true + generate_method_arguments: full + generate_packages: false + include_relations_also_as_members: true + method_order: lexical + package_type: namespace + package_model_class: + type: class + __parent_path: /home/bartek/devel/clang-uml + comment_parser: clang + debug_mode: false + exclude: + relationships: + - dependency + generate_links: + link: "{% if existsIn(element, \"doxygen_link\") %}{{ element.doxygen_link }}{% endif %}" + tooltip: "{% if existsIn(element, \"comment\") and existsIn(element.comment, \"brief\") %}{{ abbrv(trim(replace(element.comment.brief.0, \"\\n+\", \" \")), 256) }}{% else %}{{ element.name }}{% endif %}" + git: + branch: add-configuration-file-validation + revision: 0.3.8-2-g561a2b16 + commit: 561a2b16fd48052fc284ac598c9b782be3341662 + toplevel: /home/bartek/devel/clang-uml + glob: + - src/common/model/*.cc + - src/package_diagram/model/*.cc + include: + namespaces: + - clanguml::common::model + - clanguml::package_diagram::model + plantuml: + before: + - title clang-uml package diagram model + relative_to: /home/bartek/devel/clang-uml + using_namespace: clanguml::package_diagram::model + generate_metadata: true + generate_method_arguments: none + generate_packages: false + include_relations_also_as_members: false + method_order: lexical + package_type: namespace + relationship_context_class: + type: class + __parent_path: /home/bartek/devel/clang-uml + comment_parser: clang + debug_mode: false + exclude: + elements: + - clanguml::common::model::path + relationships: + - dependency + generate_links: + link: "{% if existsIn(element, \"doxygen_link\") %}{{ element.doxygen_link }}{% endif %}" + tooltip: "{% if existsIn(element, \"comment\") and existsIn(element.comment, \"brief\") %}{{ abbrv(trim(replace(element.comment.brief.0, \"\\n+\", \" \")), 256) }}{% else %}{{ element.name }}{% endif %}" + git: + branch: add-configuration-file-validation + revision: 0.3.8-2-g561a2b16 + commit: 561a2b16fd48052fc284ac598c9b782be3341662 + toplevel: /home/bartek/devel/clang-uml + glob: + - src/common/model/relationship.cc + - src/common/model/diagram_element.cc + include: + namespaces: + - clanguml + context: + - clanguml::common::model::relationship + relative_to: /home/bartek/devel/clang-uml + using_namespace: clanguml + generate_metadata: true + generate_method_arguments: full + generate_packages: true + include_relations_also_as_members: true + method_order: lexical + package_type: namespace + sequence_model_class: + type: class + __parent_path: /home/bartek/devel/clang-uml + comment_parser: clang + debug_mode: false + exclude: + method_types: + - constructor + - destructor + - operator + relationships: + - dependency + callee_types: + [] + generate_links: + link: "{% if existsIn(element, \"doxygen_link\") %}{{ element.doxygen_link }}{% endif %}" + tooltip: "{% if existsIn(element, \"comment\") and existsIn(element.comment, \"brief\") %}{{ abbrv(trim(replace(element.comment.brief.0, \"\\n+\", \" \")), 256) }}{% else %}{{ element.name }}{% endif %}" + git: + branch: add-configuration-file-validation + revision: 0.3.8-2-g561a2b16 + commit: 561a2b16fd48052fc284ac598c9b782be3341662 + toplevel: /home/bartek/devel/clang-uml + glob: + - src/common/model/*.cc + - src/sequence_diagram/model/*.cc + include: + namespaces: + - clanguml::common::model + - clanguml::sequence_diagram::model + context: + - clanguml::sequence_diagram::model::diagram + - clanguml::sequence_diagram::model::message + - clanguml::sequence_diagram::model::activity + subclasses: + - clanguml::sequence_diagram::model::participant + plantuml: + before: + - title clang-uml sequence diagram model + relative_to: /home/bartek/devel/clang-uml + using_namespace: clanguml + generate_metadata: true + generate_method_arguments: none + generate_packages: true + include_relations_also_as_members: true + method_order: lexical + package_type: namespace + source_file_hierarchy_class: + type: class + __parent_path: /home/bartek/devel/clang-uml + comment_parser: clang + debug_mode: false + exclude: + access: + - private + - protected + - public + generate_links: + link: "{% if existsIn(element, \"doxygen_link\") %}{{ element.doxygen_link }}{% endif %}" + tooltip: "{% if existsIn(element, \"comment\") and existsIn(element.comment, \"brief\") %}{{ abbrv(trim(replace(element.comment.brief.0, \"\\n+\", \" \")), 256) }}{% else %}{{ element.name }}{% endif %}" + git: + branch: add-configuration-file-validation + revision: 0.3.8-2-g561a2b16 + commit: 561a2b16fd48052fc284ac598c9b782be3341662 + toplevel: /home/bartek/devel/clang-uml + glob: + - src/common/model/source_file.cc + include: + namespaces: + - clanguml + parents: + - clanguml::common::model::source_file + relative_to: /home/bartek/devel/clang-uml + using_namespace: clanguml + generate_metadata: true + generate_method_arguments: full + generate_packages: false + include_relations_also_as_members: true + method_order: lexical + package_type: namespace + source_location_hierarchy_class: + type: class + __parent_path: /home/bartek/devel/clang-uml + comment_parser: clang + debug_mode: false + exclude: + access: + - public + - protected + - private + generate_links: + link: "{% if existsIn(element, \"doxygen_link\") %}{{ element.doxygen_link }}{% endif %}" + tooltip: "{% if existsIn(element, \"comment\") and existsIn(element.comment, \"brief\") %}{{ abbrv(trim(replace(element.comment.brief.0, \"\\n+\", \" \")), 256) }}{% else %}{{ element.name }}{% endif %}" + git: + branch: add-configuration-file-validation + revision: 0.3.8-2-g561a2b16 + commit: 561a2b16fd48052fc284ac598c9b782be3341662 + toplevel: /home/bartek/devel/clang-uml + glob: + - src/common/model/*.cc + - src/class_diagram/model/*.cc + - src/sequence_diagram/model/*.cc + - src/include_diagram/model/*.cc + - src/package_diagram/model/*.cc + include: + namespaces: + - clanguml + relationships: + - extension + subclasses: + - clanguml::common::model::source_location + relative_to: /home/bartek/devel/clang-uml + using_namespace: clanguml + generate_metadata: true + generate_method_arguments: full + generate_packages: true + include_relations_also_as_members: true + method_order: lexical + package_type: namespace + stylable_element_hierarchy_class: + type: class + __parent_path: /home/bartek/devel/clang-uml + comment_parser: clang + debug_mode: false + exclude: + access: + - public + - protected + - private + generate_links: + link: "{% if existsIn(element, \"doxygen_link\") %}{{ element.doxygen_link }}{% endif %}" + tooltip: "{% if existsIn(element, \"comment\") and existsIn(element.comment, \"brief\") %}{{ abbrv(trim(replace(element.comment.brief.0, \"\\n+\", \" \")), 256) }}{% else %}{{ element.name }}{% endif %}" + git: + branch: add-configuration-file-validation + revision: 0.3.8-2-g561a2b16 + commit: 561a2b16fd48052fc284ac598c9b782be3341662 + toplevel: /home/bartek/devel/clang-uml + glob: + - src/common/model/*.cc + - src/class_diagram/model/*.cc + - src/sequence_diagram/model/*.cc + - src/include_diagram/model/*.cc + - src/package_diagram/model/*.cc + include: + namespaces: + - clanguml + relationships: + - extension + subclasses: + - clanguml::common::model::stylable_element + relative_to: /home/bartek/devel/clang-uml + using_namespace: clanguml + generate_metadata: true + generate_method_arguments: full + generate_packages: true + include_relations_also_as_members: true + method_order: lexical + package_type: namespace + template_builder_sequence: + type: sequence + start_from: + - function: clanguml::class_diagram::visitor::template_builder::build(const clang::NamedDecl *,const clang::TemplateSpecializationType &,std::optional) + __parent_path: /home/bartek/devel/clang-uml + comment_parser: clang + debug_mode: false + exclude: + paths: + - src/common/model/source_location.h + generate_links: + link: "{% if existsIn(element, \"doxygen_link\") %}{{ element.doxygen_link }}{% endif %}" + tooltip: "{% if existsIn(element, \"comment\") and existsIn(element.comment, \"brief\") %}{{ abbrv(trim(replace(element.comment.brief.0, \"\\n+\", \" \")), 256) }}{% else %}{{ element.name }}{% endif %}" + git: + branch: add-configuration-file-validation + revision: 0.3.8-2-g561a2b16 + commit: 561a2b16fd48052fc284ac598c9b782be3341662 + toplevel: /home/bartek/devel/clang-uml + glob: + - src/class_diagram/visitor/template_builder.cc + include: + namespaces: + - clanguml + paths: + - src/class_diagram/visitor/template_builder.h + - src/class_diagram/visitor/template_builder.cc + plantuml: + before: + - title clang-uml class_diagram::visitor::template_builder::build sequence diagram + relative_to: /home/bartek/devel/clang-uml + using_namespace: clanguml + generate_metadata: true + combine_free_functions_into_file_participants: true + generate_condition_statements: false + generate_method_arguments: none + generate_return_types: false + template_trait_hierarchy_class: + type: class + __parent_path: /home/bartek/devel/clang-uml + comment_parser: clang + debug_mode: false + exclude: + access: + - public + - protected + - private + relationships: + - dependency + generate_links: + link: "{% if existsIn(element, \"doxygen_link\") %}{{ element.doxygen_link }}{% endif %}" + tooltip: "{% if existsIn(element, \"comment\") and existsIn(element.comment, \"brief\") %}{{ abbrv(trim(replace(element.comment.brief.0, \"\\n+\", \" \")), 256) }}{% else %}{{ element.name }}{% endif %}" + git: + branch: add-configuration-file-validation + revision: 0.3.8-2-g561a2b16 + commit: 561a2b16fd48052fc284ac598c9b782be3341662 + toplevel: /home/bartek/devel/clang-uml + glob: + - src/common/model/*.cc + - src/class_diagram/model/*.cc + - src/sequence_diagram/model/*.cc + - src/include_diagram/model/*.cc + - src/package_diagram/model/*.cc + include: + namespaces: + - clanguml + context: + - clanguml::common::model::template_trait + subclasses: + - clanguml::common::model::template_trait + relative_to: /home/bartek/devel/clang-uml + using_namespace: clanguml + generate_metadata: true + generate_method_arguments: full + generate_packages: true + include_relations_also_as_members: true + method_order: lexical + package_type: namespace diff --git a/tests/test_config_data/diagram_templates.yml b/tests/test_config_data/diagram_templates.yml index e1af0e62..e58a60a6 100644 --- a/tests/test_config_data/diagram_templates.yml +++ b/tests/test_config_data/diagram_templates.yml @@ -6,11 +6,11 @@ diagram_templates: description: Sequence diagram of the main() function type: sequence template: | - main_sequence_diagram: - type: sequence - glob: [ {{ glob }} ] - start_from: - - function: 'main(int,const char**)' + main_sequence_diagram: + type: sequence + glob: [ {{ glob }} ] + start_from: + - function: 'main(int,const char**)' diagrams: diagram1: type: class \ No newline at end of file diff --git a/tests/test_config_data/layout.yml b/tests/test_config_data/layout.yml index 2de084e1..71c395f7 100644 --- a/tests/test_config_data/layout.yml +++ b/tests/test_config_data/layout.yml @@ -28,7 +28,6 @@ diagrams: - src/**/*.h using_namespace: - clanguml - generate_method_arguments: full layout: ABCD: - up: ABCD_SUBCLASS