From 14a13b45aa38c8291210686e03615dccfca55571 Mon Sep 17 00:00:00 2001 From: Bartek Kryza Date: Fri, 3 May 2024 14:42:15 +0200 Subject: [PATCH 1/6] Added option inline_lambda_messages to omit lambda expressions from sequence diagrams (#261) --- docs/sequence_diagrams.md | 11 ++ src/cli/cli_handler.cc | 3 + src/common/model/diagram.h | 10 +- src/config/config.cc | 1 + src/config/config.h | 1 + src/config/schema.h | 2 + src/config/yaml_decoders.cc | 2 + src/config/yaml_emitters.cc | 1 + .../plantuml/sequence_diagram_generator.cc | 15 +- src/sequence_diagram/model/diagram.cc | 30 +-- src/sequence_diagram/model/diagram.h | 9 +- .../visitor/translation_unit_visitor.cc | 151 +++++++++++++-- .../visitor/translation_unit_visitor.h | 7 + tests/t20052/.clang-uml | 12 ++ tests/t20052/t20052.cc | 105 +++++++++++ tests/t20052/test_case.h | 176 ++++++++++++++++++ tests/test_cases.cc | 1 + tests/test_cases.yaml | 3 + 18 files changed, 498 insertions(+), 42 deletions(-) create mode 100644 tests/t20052/.clang-uml create mode 100644 tests/t20052/t20052.cc create mode 100644 tests/t20052/test_case.h diff --git a/docs/sequence_diagrams.md b/docs/sequence_diagrams.md index a75a4619..d07574e0 100644 --- a/docs/sequence_diagrams.md +++ b/docs/sequence_diagrams.md @@ -252,6 +252,17 @@ results in the following diagram: ![extension](test_cases/t20012_sequence.svg) +In case lambda expressions are redundant and we are only interested in the calls +generate from the lambda expressions, it is possible to inline lambda +expressions in the generated diagrams by specifying the following option: + +```yaml +inline_lambda_messages: true +``` + +For example compare the test cases [t20012](test_cases/t20012.md) and +[t20052](test_cases/t20052.md). + ## Customizing participants order The default participant order in the sequence diagram can be suboptimal in the sense that consecutive calls can go right, then left, then right again diff --git a/src/cli/cli_handler.cc b/src/cli/cli_handler.cc index 36d343ca..f536fcc4 100644 --- a/src/cli/cli_handler.cc +++ b/src/cli/cli_handler.cc @@ -561,6 +561,9 @@ cli_flow_t cli_handler::add_config_diagram( doc["diagrams"][name]["glob"] = std::vector{{"src/*.cpp"}}; doc["diagrams"][name]["combine_free_functions_into_file_participants"] = true; + doc["diagrams"][name]["inline_lambda_messages"] = false; + doc["diagrams"][name]["generate_message_comments"] = false; + doc["diagrams"][name]["generate_condition_statements"] = false; doc["diagrams"][name]["using_namespace"] = std::vector{{"myproject"}}; doc["diagrams"][name]["include"]["paths"] = diff --git a/src/common/model/diagram.h b/src/common/model/diagram.h index 89161d6d..0c1b497d 100644 --- a/src/common/model/diagram.h +++ b/src/common/model/diagram.h @@ -40,6 +40,11 @@ class diagram { public: diagram(); + diagram(const diagram &) = delete; + diagram(diagram && /*unused*/) noexcept; + diagram &operator=(const diagram &) = delete; + diagram &operator=(diagram && /*unused*/) noexcept; + virtual ~diagram(); /** @@ -77,11 +82,6 @@ public: virtual common::optional_ref get_with_namespace(const std::string &name, const namespace_ &ns) const; - diagram(const diagram &) = delete; - diagram(diagram && /*unused*/) noexcept; - diagram &operator=(const diagram &) = delete; - diagram &operator=(diagram && /*unused*/) noexcept; - /** * Set diagram name. * diff --git a/src/config/config.cc b/src/config/config.cc index 627b8ce3..603cfb8b 100644 --- a/src/config/config.cc +++ b/src/config/config.cc @@ -236,6 +236,7 @@ void inheritable_diagram_options::inherit( comment_parser.override(parent.comment_parser); combine_free_functions_into_file_participants.override( parent.combine_free_functions_into_file_participants); + inline_lambda_messages.override(parent.inline_lambda_messages); generate_return_types.override(parent.generate_return_types); generate_condition_statements.override( parent.generate_condition_statements); diff --git a/src/config/config.h b/src/config/config.h index ee69c0a1..82dd454b 100644 --- a/src/config/config.h +++ b/src/config/config.h @@ -570,6 +570,7 @@ struct inheritable_diagram_options { "comment_parser", comment_parser_t::plain}; option combine_free_functions_into_file_participants{ "combine_free_functions_into_file_participants", false}; + option inline_lambda_messages{"inline_lambda_messages", false}; option generate_return_types{"generate_return_types", false}; option generate_condition_statements{ "generate_condition_statements", false}; diff --git a/src/config/schema.h b/src/config/schema.h index 1768774c..c1fcd8f5 100644 --- a/src/config/schema.h +++ b/src/config/schema.h @@ -218,6 +218,7 @@ types: # generate_method_arguments: !optional generate_method_arguments_t combine_free_functions_into_file_participants: !optional bool + inline_lambda_messages: !optional bool generate_return_types: !optional bool generate_condition_statements: !optional bool generate_message_comments: !optional bool @@ -340,6 +341,7 @@ root: include_relations_also_as_members: !optional bool generate_method_arguments: !optional generate_method_arguments_t combine_free_functions_into_file_participants: !optional bool + inline_lambda_messages: !optional bool generate_concept_requirements: !optional bool generate_return_types: !optional bool generate_condition_statements: !optional bool diff --git a/src/config/yaml_decoders.cc b/src/config/yaml_decoders.cc index 6f4e4c1b..b73eed32 100644 --- a/src/config/yaml_decoders.cc +++ b/src/config/yaml_decoders.cc @@ -665,6 +665,7 @@ template <> struct convert { get_option(node, rhs.from_to); get_option(node, rhs.to); get_option(node, rhs.combine_free_functions_into_file_participants); + get_option(node, rhs.inline_lambda_messages); get_option(node, rhs.generate_return_types); get_option(node, rhs.generate_condition_statements); get_option(node, rhs.participants_order); @@ -844,6 +845,7 @@ template <> struct convert { get_option(node, rhs.debug_mode); get_option(node, rhs.generate_metadata); get_option(node, rhs.combine_free_functions_into_file_participants); + get_option(node, rhs.inline_lambda_messages); get_option(node, rhs.generate_return_types); get_option(node, rhs.generate_condition_statements); get_option(node, rhs.generate_message_comments); diff --git a/src/config/yaml_emitters.cc b/src/config/yaml_emitters.cc index a28ea4f3..bb6e77af 100644 --- a/src/config/yaml_emitters.cc +++ b/src/config/yaml_emitters.cc @@ -347,6 +347,7 @@ YAML::Emitter &operator<<( sd != nullptr) { out << sd->title; out << c.combine_free_functions_into_file_participants; + out << c.inline_lambda_messages; out << c.generate_condition_statements; out << c.generate_method_arguments; out << c.generate_return_types; diff --git a/src/sequence_diagram/generators/plantuml/sequence_diagram_generator.cc b/src/sequence_diagram/generators/plantuml/sequence_diagram_generator.cc index 7134e891..b46bc00b 100644 --- a/src/sequence_diagram/generators/plantuml/sequence_diagram_generator.cc +++ b/src/sequence_diagram/generators/plantuml/sequence_diagram_generator.cc @@ -125,8 +125,8 @@ void generator::generate_call(const message &m, std::ostream &ostr) const void generator::generate_return(const message &m, std::ostream &ostr) const { - // Add return activity only for messages between different actors and - // only if the return type is different than void + // Add return activity only for messages between different actors + // and only if the return type is different than void if (m.from() == m.to()) return; @@ -338,7 +338,8 @@ void generator::generate_participant( auto p = model().get(name); if (!p.has_value()) { - LOG_WARN("Cannot find participant {} from `participants_order` option", + LOG_WARN("Cannot find participant {} from `participants_order` " + "option", name); return; } @@ -629,10 +630,10 @@ void generator::generate_diagram(std::ostream &ostr) const model::function::message_render_mode render_mode = select_method_arguments_render_mode(); - // For methods or functions in diagrams where they are combined into - // file participants, we need to add an 'entry' point call to know - // which method relates to the first activity for this 'start_from' - // condition + // For methods or functions in diagrams where they are + // combined into file participants, we need to add an + // 'entry' point call to know which method relates to the + // first activity for this 'start_from' condition if (from.value().type_name() == "method" || config().combine_free_functions_into_file_participants()) { ostr << "[->" diff --git a/src/sequence_diagram/model/diagram.cc b/src/sequence_diagram/model/diagram.cc index 03253968..11bb1e04 100644 --- a/src/sequence_diagram/model/diagram.cc +++ b/src/sequence_diagram/model/diagram.cc @@ -95,22 +95,22 @@ void diagram::add_active_participant(common::id_t id) const activity &diagram::get_activity(common::id_t id) const { - return sequences_.at(id); + return activities_.at(id); } bool diagram::has_activity(common::id_t id) const { - return sequences_.count(id) > 0; + return activities_.count(id) > 0; } -activity &diagram::get_activity(common::id_t id) { return sequences_.at(id); } +activity &diagram::get_activity(common::id_t id) { return activities_.at(id); } void diagram::add_message(model::message &&message) { const auto caller_id = message.from(); - if (sequences_.find(caller_id) == sequences_.end()) { + if (activities_.find(caller_id) == activities_.end()) { activity a{caller_id}; - sequences_.insert({caller_id, std::move(a)}); + activities_.insert({caller_id, std::move(a)}); } get_activity(caller_id).add_message(std::move(message)); @@ -126,7 +126,7 @@ void diagram::end_block_message( { const auto caller_id = message.from(); - if (sequences_.find(caller_id) != sequences_.end()) { + if (activities_.find(caller_id) != activities_.end()) { auto ¤t_messages = get_activity(caller_id).messages(); fold_or_end_block_statement( @@ -139,7 +139,7 @@ void diagram::add_case_stmt_message(model::message &&m) using clanguml::common::model::message_t; const auto caller_id = m.from(); - if (sequences_.find(caller_id) != sequences_.end()) { + if (activities_.find(caller_id) != activities_.end()) { auto ¤t_messages = get_activity(caller_id).messages(); if (current_messages.back().type() == message_t::kCase) { @@ -151,11 +151,11 @@ void diagram::add_case_stmt_message(model::message &&m) } } -std::map &diagram::sequences() { return sequences_; } +std::map &diagram::sequences() { return activities_; } const std::map &diagram::sequences() const { - return sequences_; + return activities_; } std::map> &diagram::participants() @@ -191,7 +191,7 @@ std::vector diagram::list_from_values() const { std::vector result; - for (const auto &[from_id, act] : sequences_) { + for (const auto &[from_id, act] : activities_) { const auto &from_activity = *(participants_.at(from_id)); const auto &full_name = from_activity.full_name(false); @@ -209,7 +209,7 @@ std::vector diagram::list_to_values() const { std::vector result; - for (const auto &[from_id, act] : sequences_) { + for (const auto &[from_id, act] : activities_) { for (const auto &m : act.messages()) { if (participants_.count(m.to()) > 0) { const auto &to_activity = *(participants_.at(m.to())); @@ -406,7 +406,7 @@ std::vector diagram::get_all_from_to_message_chains( bool diagram::is_empty() const { - return sequences_.empty() || participants_.empty(); + return activities_.empty() || participants_.empty(); } void diagram::print() const @@ -417,7 +417,7 @@ void diagram::print() const } LOG_TRACE(" --- Activities ---"); - for (const auto &[from_id, act] : sequences_) { + for (const auto &[from_id, act] : activities_) { if (participants_.count(from_id) == 0) continue; @@ -487,7 +487,7 @@ void diagram::finalize() // First in each sequence (activity) filter out any remaining // uninteresting calls - for (auto &[id, act] : sequences_) { + for (auto &[id, act] : activities_) { util::erase_if(act.messages(), [this](auto &m) { if (m.type() != message_t::kCall) return false; @@ -507,7 +507,7 @@ void diagram::finalize() } // Now remove any empty block statements, e.g. if/endif - for (auto &[id, act] : sequences_) { + for (auto &[id, act] : activities_) { int64_t block_nest_level{0}; std::vector> block_message_stack; // Add first stack level - this level will contain the filtered diff --git a/src/sequence_diagram/model/diagram.h b/src/sequence_diagram/model/diagram.h index f8aa3740..30e9f714 100644 --- a/src/sequence_diagram/model/diagram.h +++ b/src/sequence_diagram/model/diagram.h @@ -295,6 +295,13 @@ public: */ bool is_empty() const override; + void update_sequences_from_diagram(diagram &other) + { + activities_ = std::move(other.activities_); + participants_ = std::move(other.participants_); + active_participants_ = std::move(other.active_participants_); + } + private: /** * This method checks the last messages in sequence (current_messages), @@ -337,7 +344,7 @@ private: return block_end_types.count(mt) > 0; }; - std::map sequences_; + std::map activities_; std::map> participants_; diff --git a/src/sequence_diagram/visitor/translation_unit_visitor.cc b/src/sequence_diagram/visitor/translation_unit_visitor.cc index af8454be..1bc9a7b8 100644 --- a/src/sequence_diagram/visitor/translation_unit_visitor.cc +++ b/src/sequence_diagram/visitor/translation_unit_visitor.cc @@ -630,7 +630,7 @@ bool translation_unit_visitor::TraverseCXXConstructExpr( translation_unit_visitor::VisitCXXConstructExpr(expr); - LOG_TRACE("Leaving member call expression at {}", + LOG_TRACE("Leaving cxx construct call expression at {}", expr->getBeginLoc().printToString(source_manager())); context().leave_callexpr(); @@ -2018,6 +2018,38 @@ void translation_unit_visitor::pop_message_to_diagram( } void translation_unit_visitor::finalize() +{ + resolve_ids_to_global(); + + // Change all messages with target set to an id of a lambda expression to + // to the ID of their operator() - this is necessary, as some calls to + // lambda expressions are visited before the actual lambda expressions + // are visited... + ensure_lambda_messages_have_operator_as_target(); + + if (config().inline_lambda_messages()) + inline_lambda_operator_calls(); +} + +void translation_unit_visitor::ensure_lambda_messages_have_operator_as_target() +{ + for (auto &[id, activity] : diagram().sequences()) { + for (auto &m : activity.messages()) { + auto participant = diagram().get_participant(m.to()); + + if (participant && participant.value().is_lambda() && + participant.value().lambda_operator_id() != 0) { + LOG_DBG("Changing lambda expression target id from {} to {}", + m.to(), participant.value().lambda_operator_id()); + + m.set_to(participant.value().lambda_operator_id()); + m.set_message_name("operator()"); + } + } + } +} + +void translation_unit_visitor::resolve_ids_to_global() { std::set active_participants_unique; @@ -2041,25 +2073,116 @@ void translation_unit_visitor::finalize() } } } +} - // Change all messages with target set to an id of a lambda expression to - // to the ID of their operator() - this is necessary, as some calls to - // lambda expressions are visited before the actual lambda expressions - // are visited... - for (auto &[id, activity] : diagram().sequences()) { - for (auto &m : activity.messages()) { - auto participant = diagram().get_participant(m.to()); +void translation_unit_visitor::inline_lambda_operator_calls() +{ // If option to inline lambda calls is enabled, we need to modify the + // sequences to skip the lambda calls. In case lambda call does not lead + // to a non-lambda call, omit it entirely - if (participant && participant.value().is_lambda() && - participant.value().lambda_operator_id() != 0) { - LOG_DBG("Changing lambda expression target id from {} to {}", - m.to(), participant.value().lambda_operator_id()); + model::diagram lambdaless_diagram; - m.set_to(participant.value().lambda_operator_id()); - m.set_message_name("operator()"); + for (auto &[id, act] : diagram().sequences()) { + model::activity new_activity{id}; + + // If activity is a lambda operator() - skip it + auto maybe_lambda_activity = + diagram().get_participant(id); + + if (maybe_lambda_activity) { + const auto parent_class_id = + maybe_lambda_activity.value().class_id(); + auto maybe_parent_class = + diagram().get_participant(parent_class_id); + + if (maybe_parent_class && maybe_parent_class.value().is_lambda()) { + continue; } } + + // For other activities, check each message - if it calls lambda + // operator() - reattach the message to the next activity in the chain + // (assuming it's not lambda) + for (auto &m : act.messages()) { + + auto message_call_to_lambda{false}; + + message_call_to_lambda = + inline_lambda_operator_call(id, new_activity, m); + + if (!message_call_to_lambda) + new_activity.add_message(m); + } + + // Add activity + lambdaless_diagram.sequences().insert({id, std::move(new_activity)}); } + + for (auto &&[id, p] : diagram().participants()) { + // Skip participants which are lambda classes + if (const auto *maybe_class = + dynamic_cast(p.get()); + maybe_class && maybe_class->is_lambda()) { + continue; + } + + // Skip participants which are lambda operator methods + if (const auto *maybe_method = + dynamic_cast(p.get()); + maybe_method) { + auto maybe_class = diagram().get_participant( + maybe_method->class_id()); + if (maybe_class && maybe_class.value().is_lambda()) + continue; + } + + // Otherwise move the participant to the new diagram model + lambdaless_diagram.add_participant(std::move(p)); + } + + // Skip active participants which are not in lambdaless_diagram participants + for (auto id : diagram().active_participants()) { + if (lambdaless_diagram.participants().count(id)) { + lambdaless_diagram.add_active_participant(id); + } + } + + diagram().update_sequences_from_diagram(lambdaless_diagram); +} + +bool translation_unit_visitor::inline_lambda_operator_call( + const long id, model::activity &new_activity, const model::message &m) +{ + bool message_call_to_lambda{false}; + auto maybe_lambda_operator = + diagram().get_participant(m.to()); + + if (maybe_lambda_operator) { + const auto parent_class_id = maybe_lambda_operator.value().class_id(); + auto maybe_parent_class = + diagram().get_participant(parent_class_id); + + if (maybe_parent_class && maybe_parent_class.value().is_lambda()) { + // auto new_message{m}; + // new_message.set_ + auto lambda_operator_activity = diagram().get_activity(m.to()); + + // For each call in that lambda activity - reattach this + // call to the current activity + for (auto &mm : lambda_operator_activity.messages()) { + if (!inline_lambda_operator_call(id, new_activity, mm)) { + auto new_message{mm}; + + new_message.set_from(id); + new_activity.add_message(new_message); + } + } + + message_call_to_lambda = true; + } + } + + return message_call_to_lambda; } std::unique_ptr diff --git a/src/sequence_diagram/visitor/translation_unit_visitor.h b/src/sequence_diagram/visitor/translation_unit_visitor.h index 7678fb98..f404816a 100644 --- a/src/sequence_diagram/visitor/translation_unit_visitor.h +++ b/src/sequence_diagram/visitor/translation_unit_visitor.h @@ -487,6 +487,11 @@ private: */ template_builder_t &tbuilder() { return template_builder_; } + void inline_lambda_operator_calls(); + + bool inline_lambda_operator_call( + const long id, model::activity &new_activity, const model::message &m); + call_expression_context call_expression_context_; /** @@ -522,5 +527,7 @@ private: processed_comments_by_caller_id_; template_builder_t template_builder_; + void resolve_ids_to_global(); + void ensure_lambda_messages_have_operator_as_target(); }; } // namespace clanguml::sequence_diagram::visitor diff --git a/tests/t20052/.clang-uml b/tests/t20052/.clang-uml new file mode 100644 index 00000000..3453ae98 --- /dev/null +++ b/tests/t20052/.clang-uml @@ -0,0 +1,12 @@ +diagrams: + t20052_sequence: + type: sequence + glob: + - t20052.cc + include: + namespaces: + - clanguml::t20052 + using_namespace: clanguml::t20052 + inline_lambda_messages: true + from: + - function: "clanguml::t20052::tmain()" \ No newline at end of file diff --git a/tests/t20052/t20052.cc b/tests/t20052/t20052.cc new file mode 100644 index 00000000..e7757e63 --- /dev/null +++ b/tests/t20052/t20052.cc @@ -0,0 +1,105 @@ +#include +#include +#include +#include +#include +#include + +namespace clanguml { +namespace t20052 { +struct A { + void a() { aa(); } + + void aa() { aaa(); } + + void aaa() { } +}; + +struct B { + void b() { bb(); } + + void bb() { bbb(); } + + void bbb() { } + + void eb() { } +}; + +struct C { + void c() { cc(); } + + void cc() { ccc(); } + + void ccc() { } +}; + +struct D { + int add5(int arg) const { return arg + 5; } +}; + +class E { + std::optional> maybe_b; + std::shared_ptr a; + +public: + template void setup(F &&f) { f(maybe_b); } +}; + +template struct R { + R(F &&f) + : f_{std::move(f)} + { + } + + void r() { f_(); } + + F f_; +}; + +void tmain() +{ + A a; + B b; + C c; + + // The activity shouldn't be marked at the lambda definition, but + // wherever it is actually called... + auto alambda = [&a, &b]() { + a.a(); + b.b(); + }; + + // ...like here + alambda(); + + // There should be no call to B in the sequence diagram as the blambda + // is never called + [[maybe_unused]] auto blambda = [&b]() { b.b(); }; + + // Nested lambdas should also work + auto clambda = [alambda, &c]() { + c.c(); + alambda(); + }; + clambda(); + + R r{[&c]() { c.c(); }}; + + r.r(); + + D d; + + std::vector ints{0, 1, 2, 3, 4}; + std::transform(ints.begin(), ints.end(), ints.begin(), + [&d](auto i) { return d.add5(i); }); + + // TODO: Fix naming function call arguments which are lambdas + // E e; + // + // e.setup([](auto &&arg) mutable { + // // We cannot know here what 'arg' might be + // arg.value()->eb(); + // }); +} +} +} \ No newline at end of file diff --git a/tests/t20052/test_case.h b/tests/t20052/test_case.h new file mode 100644 index 00000000..60c38e60 --- /dev/null +++ b/tests/t20052/test_case.h @@ -0,0 +1,176 @@ +/** + * tests/t20052/test_case.h + * + * Copyright (c) 2021-2024 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. + */ + +TEST_CASE("t20052", "[test-case][sequence]") +{ + auto [config, db] = load_config("t20052"); + + auto diagram = config.diagrams["t20052_sequence"]; + + REQUIRE(diagram->name == "t20052_sequence"); + + auto model = generate_sequence_diagram(*db, diagram); + + REQUIRE(model->name() == "t20052_sequence"); + + { + auto src = generate_sequence_puml(diagram, *model); + AliasMatcher _A(src); + + REQUIRE_THAT(src, StartsWith("@startuml")); + REQUIRE_THAT(src, EndsWith("@enduml\n")); + + // Check if all calls exist + REQUIRE_THAT(src, + !HasCall(_A("tmain()"), _A("tmain()::(lambda t20052.cc:67:20)"), + "operator()() const")); + REQUIRE_THAT(src, + !HasCall(_A("tmain()::(lambda t20052.cc:67:20)"), _A("A"), "a()")); + + REQUIRE_THAT(src, HasCall(_A("tmain()"), _A("A"), "a()")); + REQUIRE_THAT(src, HasCall(_A("A"), _A("A"), "aa()")); + REQUIRE_THAT(src, HasCall(_A("A"), _A("A"), "aaa()")); + + REQUIRE_THAT(src, + !HasCall(_A("tmain()::(lambda t20052.cc:67:20)"), _A("B"), "b()")); + + REQUIRE_THAT(src, HasCall(_A("tmain()"), _A("B"), "b()")); + REQUIRE_THAT(src, HasCall(_A("B"), _A("B"), "bb()")); + REQUIRE_THAT(src, HasCall(_A("B"), _A("B"), "bbb()")); + + REQUIRE_THAT(src, + !HasCall(_A("tmain()::(lambda t20052.cc:80:20)"), _A("C"), "c()")); + + REQUIRE_THAT(src, HasCall(_A("tmain()"), _A("C"), "c()")); + REQUIRE_THAT(src, HasCall(_A("C"), _A("C"), "cc()")); + REQUIRE_THAT(src, HasCall(_A("C"), _A("C"), "ccc()")); + + REQUIRE_THAT(src, + !HasCall(_A("tmain()::(lambda t20052.cc:80:20)"), + _A("tmain()::(lambda t20052.cc:67:20)"), "operator()() const")); + + REQUIRE_THAT(src, HasCall(_A("C"), _A("C"), "ccc()")); + + REQUIRE_THAT(src, + HasCall(_A("tmain()"), _A("R<(lambda at t20052.cc:86:9)>"), + "R((lambda at t20052.cc:86:9) &&)")); + REQUIRE_THAT(src, + HasCall(_A("tmain()"), _A("R<(lambda at t20052.cc:86:9)>"), "r()")); + REQUIRE_THAT(src, + !HasCall(_A("R<(lambda at t20052.cc:86:9)>"), + _A("tmain()::(lambda t20052.cc:86:9)"), "operator()() const")); + + REQUIRE_THAT( + src, HasCall(_A("R<(lambda at t20052.cc:86:9)>"), _A("C"), "c()")); + + REQUIRE_THAT(src, + !HasCall(_A("tmain()"), _A("tmain()::(lambda t20052.cc:94:9)"), + "operator()(auto) const")); + REQUIRE_THAT(src, + !HasCall(_A("tmain()::(lambda t20052.cc:94:9)"), _A("D"), + "add5(int) const")); + + REQUIRE_THAT(src, HasCall(_A("tmain()"), _A("D"), "add5(int) const")); + + save_puml(config.output_directory(), diagram->name + ".puml", src); + } + + { + auto j = generate_sequence_json(diagram, *model); + + using namespace json; + + std::vector messages = { + FindMessage(j, "tmain()", "A", "a()"), + FindMessage(j, "A", "A", "aa()"), + FindMessage(j, "A", "A", "aaa()"), + FindMessage(j, "tmain()", "B", "b()"), + FindMessage(j, "B", "B", "bb()"), + FindMessage(j, "B", "B", "bbb()"), + FindMessage(j, "tmain()", "C", "c()"), + FindMessage(j, "C", "C", "cc()"), + FindMessage(j, "C", "C", "ccc()"), + FindMessage(j, "tmain()", "R<(lambda at t20052.cc:86:9)>", "r()"), + FindMessage(j, "R<(lambda at t20052.cc:86:9)>", "C", "c()"), + }; + + REQUIRE(std::is_sorted(messages.begin(), messages.end())); + + save_json(config.output_directory(), diagram->name + ".json", j); + } + + { + auto src = generate_sequence_mermaid(diagram, *model); + + mermaid::SequenceDiagramAliasMatcher _A(src); + using mermaid::HasCall; + + REQUIRE_THAT(src, + !HasCall(_A("tmain()"), _A("tmain()::(lambda t20052.cc:67:20)"), + "operator()() const")); + REQUIRE_THAT(src, + !HasCall(_A("tmain()::(lambda t20052.cc:67:20)"), _A("A"), "a()")); + + REQUIRE_THAT(src, HasCall(_A("tmain()"), _A("A"), "a()")); + REQUIRE_THAT(src, HasCall(_A("A"), _A("A"), "aa()")); + REQUIRE_THAT(src, HasCall(_A("A"), _A("A"), "aaa()")); + + REQUIRE_THAT(src, + !HasCall(_A("tmain()::(lambda t20052.cc:67:20)"), _A("B"), "b()")); + + REQUIRE_THAT(src, HasCall(_A("tmain()"), _A("B"), "b()")); + REQUIRE_THAT(src, HasCall(_A("B"), _A("B"), "bb()")); + REQUIRE_THAT(src, HasCall(_A("B"), _A("B"), "bbb()")); + + REQUIRE_THAT(src, + !HasCall(_A("tmain()::(lambda t20052.cc:80:20)"), _A("C"), "c()")); + + REQUIRE_THAT(src, HasCall(_A("tmain()"), _A("C"), "c()")); + REQUIRE_THAT(src, HasCall(_A("C"), _A("C"), "cc()")); + REQUIRE_THAT(src, HasCall(_A("C"), _A("C"), "ccc()")); + + REQUIRE_THAT(src, + !HasCall(_A("tmain()::(lambda t20052.cc:80:20)"), + _A("tmain()::(lambda t20052.cc:67:20)"), "operator()() const")); + + REQUIRE_THAT(src, HasCall(_A("C"), _A("C"), "ccc()")); + + REQUIRE_THAT(src, + HasCall(_A("tmain()"), _A("R<(lambda at t20052.cc:86:9)>"), + "R((lambda at t20052.cc:86:9) &&)")); + REQUIRE_THAT(src, + HasCall(_A("tmain()"), _A("R<(lambda at t20052.cc:86:9)>"), "r()")); + REQUIRE_THAT(src, + !HasCall(_A("R<(lambda at t20052.cc:86:9)>"), + _A("tmain()::(lambda t20052.cc:86:9)"), "operator()() const")); + + REQUIRE_THAT( + src, HasCall(_A("R<(lambda at t20052.cc:86:9)>"), _A("C"), "c()")); + + REQUIRE_THAT(src, + !HasCall(_A("tmain()"), _A("tmain()::(lambda t20052.cc:94:9)"), + "operator()(auto) const")); + REQUIRE_THAT(src, + !HasCall(_A("tmain()::(lambda t20052.cc:94:9)"), _A("D"), + "add5(int) const")); + + REQUIRE_THAT(src, HasCall(_A("tmain()"), _A("D"), "add5(int) const")); + + save_mermaid(config.output_directory(), diagram->name + ".mmd", src); + } +} \ No newline at end of file diff --git a/tests/test_cases.cc b/tests/test_cases.cc index 5797bf67..80ea3778 100644 --- a/tests/test_cases.cc +++ b/tests/test_cases.cc @@ -480,6 +480,7 @@ using namespace clanguml::test::matchers; #include "t20050/test_case.h" #include "t20051/test_case.h" #endif +#include "t20052/test_case.h" /// /// Package diagram tests diff --git a/tests/test_cases.yaml b/tests/test_cases.yaml index 8e174172..9e61d031 100644 --- a/tests/test_cases.yaml +++ b/tests/test_cases.yaml @@ -376,6 +376,9 @@ test_cases: - name: t20051 title: Test case for CUDA calls callee_type filter description: + - name: t20052 + title: Test case for CUDA calls callee_type filter + description: Package diagrams: - name: t30001 title: Basic package diagram test case From fc25a9bd0ed83750f377ee75659700cb1ddc9b3c Mon Sep 17 00:00:00 2001 From: Bartek Kryza Date: Fri, 3 May 2024 14:47:05 +0200 Subject: [PATCH 2/6] Updated CHANGELOG --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 762678b8..def7ef08 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,7 @@ # CHANGELOG + * Added option inline_lambda_messages to omit lambda expressions from sequence + diagrams (#261) * Added support for CUDA calls in sequence diagrams (#263) * Improved handling of message call comments (#264) * Fixed handling of nested lambda expressions in sequence diagrams From 95d83345a5b101018d0e709fad807e1223a82754 Mon Sep 17 00:00:00 2001 From: Bartek Kryza Date: Fri, 3 May 2024 15:11:46 +0200 Subject: [PATCH 3/6] Refactored sequence lambda inlining to diagram model (#261) --- src/sequence_diagram/model/diagram.cc | 110 +++++++++++++++++ src/sequence_diagram/model/diagram.h | 15 ++- .../visitor/translation_unit_visitor.cc | 112 +----------------- .../visitor/translation_unit_visitor.h | 7 +- 4 files changed, 122 insertions(+), 122 deletions(-) diff --git a/src/sequence_diagram/model/diagram.cc b/src/sequence_diagram/model/diagram.cc index 11bb1e04..c802ec76 100644 --- a/src/sequence_diagram/model/diagram.cc +++ b/src/sequence_diagram/model/diagram.cc @@ -409,6 +409,116 @@ bool diagram::is_empty() const return activities_.empty() || participants_.empty(); } +void diagram::inline_lambda_operator_calls() +{ + std::map activities; + std::map> participants; + std::set active_participants; + + for (auto &[id, act] : sequences()) { + model::activity new_activity{id}; + + // If activity is a lambda operator() - skip it + auto maybe_lambda_activity = get_participant(id); + + if (maybe_lambda_activity) { + const auto parent_class_id = + maybe_lambda_activity.value().class_id(); + auto maybe_parent_class = + get_participant(parent_class_id); + + if (maybe_parent_class && maybe_parent_class.value().is_lambda()) { + continue; + } + } + + // For other activities, check each message - if it calls lambda + // operator() - reattach the message to the next activity in the chain + // (assuming it's not lambda) + for (auto &m : act.messages()) { + + auto message_call_to_lambda{false}; + + message_call_to_lambda = + inline_lambda_operator_call(id, new_activity, m); + + if (!message_call_to_lambda) + new_activity.add_message(m); + } + + // Add activity + activities.insert({id, std::move(new_activity)}); + } + + for (auto &&[id, p] : this->participants()) { + // Skip participants which are lambda classes + if (const auto *maybe_class = + dynamic_cast(p.get()); + maybe_class && maybe_class->is_lambda()) { + continue; + } + + // Skip participants which are lambda operator methods + if (const auto *maybe_method = + dynamic_cast(p.get()); + maybe_method) { + auto maybe_class = + get_participant(maybe_method->class_id()); + if (maybe_class && maybe_class.value().is_lambda()) + continue; + } + + // Otherwise move the participant to the new diagram model + auto participant_id = p->id(); + participants.emplace(participant_id, std::move(p)); + } + + // Skip active participants which are not in lambdaless_diagram participants + for (auto id : this->active_participants()) { + if (participants.count(id)) { + active_participants.emplace(id); + } + } + + activities_ = std::move(activities); + participants_ = std::move(participants); + active_participants_ = std::move(active_participants); +} + +bool diagram::inline_lambda_operator_call( + const long id, model::activity &new_activity, const model::message &m) +{ + bool message_call_to_lambda{false}; + auto maybe_lambda_operator = get_participant(m.to()); + + if (maybe_lambda_operator) { + const auto parent_class_id = maybe_lambda_operator.value().class_id(); + auto maybe_parent_class = + get_participant(parent_class_id); + + if (maybe_parent_class && maybe_parent_class.value().is_lambda()) { + // auto new_message{m}; + // new_message.set_ + auto lambda_operator_activity = get_activity(m.to()); + + // For each call in that lambda activity - reattach this + // call to the current activity + for (auto &mm : lambda_operator_activity.messages()) { + if (!inline_lambda_operator_call(id, new_activity, mm)) { + auto new_message{mm}; + + new_message.set_from(id); + new_activity.add_message(new_message); + } + } + + message_call_to_lambda = true; + } + } + + return message_call_to_lambda; +} + void diagram::print() const { LOG_TRACE(" --- Participants ---"); diff --git a/src/sequence_diagram/model/diagram.h b/src/sequence_diagram/model/diagram.h index 30e9f714..b5819226 100644 --- a/src/sequence_diagram/model/diagram.h +++ b/src/sequence_diagram/model/diagram.h @@ -295,12 +295,12 @@ public: */ bool is_empty() const override; - void update_sequences_from_diagram(diagram &other) - { - activities_ = std::move(other.activities_); - participants_ = std::move(other.participants_); - active_participants_ = std::move(other.active_participants_); - } + /** + * If option to inline lambda calls is enabled, we need to modify the + * sequences to skip the lambda calls. In case lambda call does not lead + * to a non-lambda call, omit it entirely + */ + void inline_lambda_operator_calls(); private: /** @@ -344,6 +344,9 @@ private: return block_end_types.count(mt) > 0; }; + bool inline_lambda_operator_call( + const long id, model::activity &new_activity, const model::message &m); + std::map activities_; std::map> participants_; diff --git a/src/sequence_diagram/visitor/translation_unit_visitor.cc b/src/sequence_diagram/visitor/translation_unit_visitor.cc index 1bc9a7b8..7f34b505 100644 --- a/src/sequence_diagram/visitor/translation_unit_visitor.cc +++ b/src/sequence_diagram/visitor/translation_unit_visitor.cc @@ -2028,7 +2028,7 @@ void translation_unit_visitor::finalize() ensure_lambda_messages_have_operator_as_target(); if (config().inline_lambda_messages()) - inline_lambda_operator_calls(); + diagram().inline_lambda_operator_calls(); } void translation_unit_visitor::ensure_lambda_messages_have_operator_as_target() @@ -2075,116 +2075,6 @@ void translation_unit_visitor::resolve_ids_to_global() } } -void translation_unit_visitor::inline_lambda_operator_calls() -{ // If option to inline lambda calls is enabled, we need to modify the - // sequences to skip the lambda calls. In case lambda call does not lead - // to a non-lambda call, omit it entirely - - model::diagram lambdaless_diagram; - - for (auto &[id, act] : diagram().sequences()) { - model::activity new_activity{id}; - - // If activity is a lambda operator() - skip it - auto maybe_lambda_activity = - diagram().get_participant(id); - - if (maybe_lambda_activity) { - const auto parent_class_id = - maybe_lambda_activity.value().class_id(); - auto maybe_parent_class = - diagram().get_participant(parent_class_id); - - if (maybe_parent_class && maybe_parent_class.value().is_lambda()) { - continue; - } - } - - // For other activities, check each message - if it calls lambda - // operator() - reattach the message to the next activity in the chain - // (assuming it's not lambda) - for (auto &m : act.messages()) { - - auto message_call_to_lambda{false}; - - message_call_to_lambda = - inline_lambda_operator_call(id, new_activity, m); - - if (!message_call_to_lambda) - new_activity.add_message(m); - } - - // Add activity - lambdaless_diagram.sequences().insert({id, std::move(new_activity)}); - } - - for (auto &&[id, p] : diagram().participants()) { - // Skip participants which are lambda classes - if (const auto *maybe_class = - dynamic_cast(p.get()); - maybe_class && maybe_class->is_lambda()) { - continue; - } - - // Skip participants which are lambda operator methods - if (const auto *maybe_method = - dynamic_cast(p.get()); - maybe_method) { - auto maybe_class = diagram().get_participant( - maybe_method->class_id()); - if (maybe_class && maybe_class.value().is_lambda()) - continue; - } - - // Otherwise move the participant to the new diagram model - lambdaless_diagram.add_participant(std::move(p)); - } - - // Skip active participants which are not in lambdaless_diagram participants - for (auto id : diagram().active_participants()) { - if (lambdaless_diagram.participants().count(id)) { - lambdaless_diagram.add_active_participant(id); - } - } - - diagram().update_sequences_from_diagram(lambdaless_diagram); -} - -bool translation_unit_visitor::inline_lambda_operator_call( - const long id, model::activity &new_activity, const model::message &m) -{ - bool message_call_to_lambda{false}; - auto maybe_lambda_operator = - diagram().get_participant(m.to()); - - if (maybe_lambda_operator) { - const auto parent_class_id = maybe_lambda_operator.value().class_id(); - auto maybe_parent_class = - diagram().get_participant(parent_class_id); - - if (maybe_parent_class && maybe_parent_class.value().is_lambda()) { - // auto new_message{m}; - // new_message.set_ - auto lambda_operator_activity = diagram().get_activity(m.to()); - - // For each call in that lambda activity - reattach this - // call to the current activity - for (auto &mm : lambda_operator_activity.messages()) { - if (!inline_lambda_operator_call(id, new_activity, mm)) { - auto new_message{mm}; - - new_message.set_from(id); - new_activity.add_message(new_message); - } - } - - message_call_to_lambda = true; - } - } - - return message_call_to_lambda; -} - std::unique_ptr translation_unit_visitor::create_lambda_method_model( clang::CXXMethodDecl *declaration) diff --git a/src/sequence_diagram/visitor/translation_unit_visitor.h b/src/sequence_diagram/visitor/translation_unit_visitor.h index f404816a..071509b9 100644 --- a/src/sequence_diagram/visitor/translation_unit_visitor.h +++ b/src/sequence_diagram/visitor/translation_unit_visitor.h @@ -487,10 +487,9 @@ private: */ template_builder_t &tbuilder() { return template_builder_; } - void inline_lambda_operator_calls(); + void resolve_ids_to_global(); - bool inline_lambda_operator_call( - const long id, model::activity &new_activity, const model::message &m); + void ensure_lambda_messages_have_operator_as_target(); call_expression_context call_expression_context_; @@ -527,7 +526,5 @@ private: processed_comments_by_caller_id_; template_builder_t template_builder_; - void resolve_ids_to_global(); - void ensure_lambda_messages_have_operator_as_target(); }; } // namespace clanguml::sequence_diagram::visitor From ba4835b6bc8200bb5c03f48b719956c8b183c35e Mon Sep 17 00:00:00 2001 From: Bartek Kryza Date: Fri, 3 May 2024 16:48:39 +0200 Subject: [PATCH 4/6] Fixed clang-tidy warnings --- src/common/clang_utils.cc | 9 +++------ src/sequence_diagram/model/diagram.cc | 10 +++++----- src/sequence_diagram/model/diagram.h | 4 ++-- .../visitor/translation_unit_visitor.cc | 9 ++++----- 4 files changed, 14 insertions(+), 18 deletions(-) diff --git a/src/common/clang_utils.cc b/src/common/clang_utils.cc index addaf544..f2fce146 100644 --- a/src/common/clang_utils.cc +++ b/src/common/clang_utils.cc @@ -946,11 +946,8 @@ bool is_struct(const clang::NamedDecl *decl) bool has_attr(const clang::FunctionDecl *decl, clang::attr::Kind function_attr) { - for (const auto &attr : decl->attrs()) { - if (attr->getKind() == function_attr) - return true; - } - - return false; + return std::any_of(decl->attrs().begin(), decl->attrs().end(), + [function_attr]( + auto &&attr) { return attr->getKind() == function_attr; }); } } // namespace clanguml::common diff --git a/src/sequence_diagram/model/diagram.cc b/src/sequence_diagram/model/diagram.cc index c802ec76..434a7538 100644 --- a/src/sequence_diagram/model/diagram.cc +++ b/src/sequence_diagram/model/diagram.cc @@ -454,14 +454,14 @@ void diagram::inline_lambda_operator_calls() // Skip participants which are lambda classes if (const auto *maybe_class = dynamic_cast(p.get()); - maybe_class && maybe_class->is_lambda()) { + maybe_class != nullptr && maybe_class->is_lambda()) { continue; } // Skip participants which are lambda operator methods if (const auto *maybe_method = dynamic_cast(p.get()); - maybe_method) { + maybe_method != nullptr) { auto maybe_class = get_participant(maybe_method->class_id()); if (maybe_class && maybe_class.value().is_lambda()) @@ -475,7 +475,7 @@ void diagram::inline_lambda_operator_calls() // Skip active participants which are not in lambdaless_diagram participants for (auto id : this->active_participants()) { - if (participants.count(id)) { + if (participants.count(id) > 0) { active_participants.emplace(id); } } @@ -485,8 +485,8 @@ void diagram::inline_lambda_operator_calls() active_participants_ = std::move(active_participants); } -bool diagram::inline_lambda_operator_call( - const long id, model::activity &new_activity, const model::message &m) +bool diagram::inline_lambda_operator_call(const common::id_t id, + model::activity &new_activity, const model::message &m) { bool message_call_to_lambda{false}; auto maybe_lambda_operator = get_participant(m.to()); diff --git a/src/sequence_diagram/model/diagram.h b/src/sequence_diagram/model/diagram.h index b5819226..e269197b 100644 --- a/src/sequence_diagram/model/diagram.h +++ b/src/sequence_diagram/model/diagram.h @@ -344,8 +344,8 @@ private: return block_end_types.count(mt) > 0; }; - bool inline_lambda_operator_call( - const long id, model::activity &new_activity, const model::message &m); + bool inline_lambda_operator_call(common::id_t id, + model::activity &new_activity, const model::message &m); std::map activities_; diff --git a/src/sequence_diagram/visitor/translation_unit_visitor.cc b/src/sequence_diagram/visitor/translation_unit_visitor.cc index 7f34b505..1093cc5f 100644 --- a/src/sequence_diagram/visitor/translation_unit_visitor.cc +++ b/src/sequence_diagram/visitor/translation_unit_visitor.cc @@ -1601,8 +1601,8 @@ bool translation_unit_visitor::process_unresolved_lookup_call_expression( break; } - else if (clang::dyn_cast_or_null(decl) != - nullptr) { + + if (clang::dyn_cast_or_null(decl) != nullptr) { const auto *fd = clang::dyn_cast_or_null(decl); @@ -1615,9 +1615,8 @@ bool translation_unit_visitor::process_unresolved_lookup_call_expression( break; } - else { - LOG_DBG("Unknown unresolved lookup expression"); - } + + LOG_DBG("Unknown unresolved lookup expression"); } } From f05267997b6fb3287a342e0c920f4407c0a82a50 Mon Sep 17 00:00:00 2001 From: Bartek Kryza Date: Fri, 3 May 2024 17:22:33 +0200 Subject: [PATCH 5/6] Added test case for inlining nested lambda expressions (#261) --- src/sequence_diagram/model/diagram.cc | 20 ++++---- tests/t20053/.clang-uml | 12 +++++ tests/t20053/t20053.cc | 28 +++++++++++ tests/t20053/test_case.h | 70 +++++++++++++++++++++++++++ tests/test_cases.cc | 1 + tests/test_cases.yaml | 5 +- 6 files changed, 125 insertions(+), 11 deletions(-) create mode 100644 tests/t20053/.clang-uml create mode 100644 tests/t20053/t20053.cc create mode 100644 tests/t20053/test_case.h diff --git a/src/sequence_diagram/model/diagram.cc b/src/sequence_diagram/model/diagram.cc index 434a7538..5e691f47 100644 --- a/src/sequence_diagram/model/diagram.cc +++ b/src/sequence_diagram/model/diagram.cc @@ -497,18 +497,18 @@ bool diagram::inline_lambda_operator_call(const common::id_t id, get_participant(parent_class_id); if (maybe_parent_class && maybe_parent_class.value().is_lambda()) { - // auto new_message{m}; - // new_message.set_ - auto lambda_operator_activity = get_activity(m.to()); + if (has_activity(m.to())) { + auto lambda_operator_activity = get_activity(m.to()); - // For each call in that lambda activity - reattach this - // call to the current activity - for (auto &mm : lambda_operator_activity.messages()) { - if (!inline_lambda_operator_call(id, new_activity, mm)) { - auto new_message{mm}; + // For each call in that lambda activity - reattach this + // call to the current activity + for (auto &mm : lambda_operator_activity.messages()) { + if (!inline_lambda_operator_call(id, new_activity, mm)) { + auto new_message{mm}; - new_message.set_from(id); - new_activity.add_message(new_message); + new_message.set_from(id); + new_activity.add_message(new_message); + } } } diff --git a/tests/t20053/.clang-uml b/tests/t20053/.clang-uml new file mode 100644 index 00000000..1387e310 --- /dev/null +++ b/tests/t20053/.clang-uml @@ -0,0 +1,12 @@ +diagrams: + t20053_sequence: + type: sequence + glob: + - t20053.cc + include: + namespaces: + - clanguml::t20053 + using_namespace: clanguml::t20053 + inline_lambda_messages: true + from: + - function: "clanguml::t20053::tmain()" \ No newline at end of file diff --git a/tests/t20053/t20053.cc b/tests/t20053/t20053.cc new file mode 100644 index 00000000..03b1c39a --- /dev/null +++ b/tests/t20053/t20053.cc @@ -0,0 +1,28 @@ +namespace clanguml { +namespace t20053 { +template int a1(F &&f) { return f(42); } + +int a2(int x) { return 2; } + +int a3(int x) { return 3; } + +int tmain() +{ + // Call expression in a nested lambda + auto v1 = [](auto &&arg1) { + return [](auto &&arg2) { return a2(arg2); }(arg1); + }(0); + + // Nested lambda call without any actual calls + auto v2 = [](auto &&arg1) { + return [](auto &&arg2) { return arg2 + 2; }(arg1); + }(0); + + // Call expression in a nested lambda in call expression + auto v4 = a1( + [](auto &&arg1) { return [](auto &&arg2) { return a3(arg2); }(arg1); }); + + return 0; +} +} +} \ No newline at end of file diff --git a/tests/t20053/test_case.h b/tests/t20053/test_case.h new file mode 100644 index 00000000..29dab3e6 --- /dev/null +++ b/tests/t20053/test_case.h @@ -0,0 +1,70 @@ +/** + * tests/t20053/test_case.h + * + * Copyright (c) 2021-2024 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. + */ + +TEST_CASE("t20053", "[test-case][sequence]") +{ + auto [config, db] = load_config("t20053"); + + auto diagram = config.diagrams["t20053_sequence"]; + + REQUIRE(diagram->name == "t20053_sequence"); + + auto model = generate_sequence_diagram(*db, diagram); + + REQUIRE(model->name() == "t20053_sequence"); + + { + auto src = generate_sequence_puml(diagram, *model); + AliasMatcher _A(src); + + REQUIRE_THAT(src, StartsWith("@startuml")); + REQUIRE_THAT(src, EndsWith("@enduml\n")); + + REQUIRE_THAT(src, HasCall(_A("tmain()"), _A("a2(int)"), "")); + + REQUIRE_THAT(src, + HasCall(_A("tmain()"), + _A("a1<(lambda at t20053.cc:23:9)>((lambda at t20053.cc:23:9) " + "&&)"), + "")); + + REQUIRE_THAT(src, + HasCall(_A("a1<(lambda at t20053.cc:23:9)>((lambda at " + "t20053.cc:23:9) &&)"), + _A("a3(int)"), "")); + + save_puml(config.output_directory(), diagram->name + ".puml", src); + } + + { + auto j = generate_sequence_json(diagram, *model); + + using namespace json; + + save_json(config.output_directory(), diagram->name + ".json", j); + } + + { + auto src = generate_sequence_mermaid(diagram, *model); + + mermaid::AliasMatcher _A(src); + using mermaid::IsClass; + + save_mermaid(config.output_directory(), diagram->name + ".mmd", src); + } +} \ No newline at end of file diff --git a/tests/test_cases.cc b/tests/test_cases.cc index 80ea3778..524f994e 100644 --- a/tests/test_cases.cc +++ b/tests/test_cases.cc @@ -481,6 +481,7 @@ using namespace clanguml::test::matchers; #include "t20051/test_case.h" #endif #include "t20052/test_case.h" +#include "t20053/test_case.h" /// /// Package diagram tests diff --git a/tests/test_cases.yaml b/tests/test_cases.yaml index 9e61d031..573e6998 100644 --- a/tests/test_cases.yaml +++ b/tests/test_cases.yaml @@ -377,7 +377,10 @@ test_cases: title: Test case for CUDA calls callee_type filter description: - name: t20052 - title: Test case for CUDA calls callee_type filter + title: Test case for inlining lambda operator calls + description: + - name: t20053 + title: Test case for inlining nested lambda operator calls description: Package diagrams: - name: t30001 From 3495ce003974fc430e7fe127da7fa994ce77fb43 Mon Sep 17 00:00:00 2001 From: Bartek Kryza Date: Fri, 3 May 2024 17:26:07 +0200 Subject: [PATCH 6/6] Updated test cases documentation --- docs/test_cases.md | 2 + docs/test_cases/t00002_class.svg | 68 +- docs/test_cases/t00002_class_mermaid.svg | 10 +- docs/test_cases/t00003_class.svg | 126 ++-- docs/test_cases/t00003_class_mermaid.svg | 2 +- docs/test_cases/t00004_class.svg | 86 +-- docs/test_cases/t00004_class_mermaid.svg | 32 +- docs/test_cases/t00005_class.svg | 110 ++-- docs/test_cases/t00005_class_mermaid.svg | 24 +- docs/test_cases/t00006_class.svg | 134 ++-- docs/test_cases/t00006_class_mermaid.svg | 38 +- docs/test_cases/t00007_class.svg | 30 +- docs/test_cases/t00007_class_mermaid.svg | 8 +- docs/test_cases/t00008_class.svg | 82 +-- docs/test_cases/t00008_class_mermaid.svg | 16 +- docs/test_cases/t00009_class.svg | 38 +- docs/test_cases/t00009_class_mermaid.svg | 10 +- docs/test_cases/t00010_class.svg | 38 +- docs/test_cases/t00010_class_mermaid.svg | 10 +- docs/test_cases/t00011_class.svg | 30 +- docs/test_cases/t00011_class_mermaid.svg | 6 +- docs/test_cases/t00012_class.svg | 76 +-- docs/test_cases/t00012_class_mermaid.svg | 18 +- docs/test_cases/t00013_class.svg | 130 ++-- docs/test_cases/t00013_class_mermaid.svg | 24 +- docs/test_cases/t00014_class.svg | 146 ++--- docs/test_cases/t00014_class_mermaid.svg | 36 +- docs/test_cases/t00015_class.svg | 22 +- docs/test_cases/t00015_class_mermaid.svg | 10 +- docs/test_cases/t00016_class.svg | 26 +- docs/test_cases/t00016_class_mermaid.svg | 12 +- docs/test_cases/t00017_class.svg | 70 +- docs/test_cases/t00017_class_mermaid.svg | 24 +- docs/test_cases/t00018_class.svg | 66 +- docs/test_cases/t00018_class_mermaid.svg | 4 +- docs/test_cases/t00019_class.svg | 84 +-- docs/test_cases/t00019_class_mermaid.svg | 16 +- docs/test_cases/t00020_class.svg | 94 +-- docs/test_cases/t00020_class_mermaid.svg | 18 +- docs/test_cases/t00021_class.svg | 82 +-- docs/test_cases/t00021_class_mermaid.svg | 14 +- docs/test_cases/t00022_class.svg | 42 +- docs/test_cases/t00022_class_mermaid.svg | 6 +- docs/test_cases/t00023_class.svg | 54 +- docs/test_cases/t00023_class_mermaid.svg | 10 +- docs/test_cases/t00024_class.svg | 62 +- docs/test_cases/t00024_class_mermaid.svg | 8 +- docs/test_cases/t00025_class.svg | 66 +- docs/test_cases/t00025_class_mermaid.svg | 12 +- docs/test_cases/t00026_class.svg | 82 +-- docs/test_cases/t00026_class_mermaid.svg | 12 +- docs/test_cases/t00027_class.svg | 98 +-- docs/test_cases/t00027_class_mermaid.svg | 26 +- docs/test_cases/t00028_class.svg | 88 +-- docs/test_cases/t00028_class_mermaid.svg | 18 +- docs/test_cases/t00029_class.svg | 58 +- docs/test_cases/t00029_class_mermaid.svg | 18 +- docs/test_cases/t00030_class.svg | 46 +- docs/test_cases/t00030_class_mermaid.svg | 12 +- docs/test_cases/t00031_class.svg | 56 +- docs/test_cases/t00031_class_mermaid.svg | 12 +- docs/test_cases/t00032_class.svg | 54 +- docs/test_cases/t00032_class_mermaid.svg | 16 +- docs/test_cases/t00033_class.svg | 54 +- docs/test_cases/t00033_class_mermaid.svg | 16 +- docs/test_cases/t00034_class.svg | 46 +- docs/test_cases/t00034_class_mermaid.svg | 14 +- docs/test_cases/t00035_class.svg | 22 +- docs/test_cases/t00035_class_mermaid.svg | 10 +- docs/test_cases/t00036_class.svg | 40 +- docs/test_cases/t00036_class_mermaid.svg | 10 +- docs/test_cases/t00037_class.svg | 58 +- docs/test_cases/t00037_class_mermaid.svg | 8 +- docs/test_cases/t00038_class.svg | 54 +- docs/test_cases/t00038_class_mermaid.svg | 24 +- docs/test_cases/t00039_class.svg | 78 +-- docs/test_cases/t00039_class_mermaid.svg | 28 +- docs/test_cases/t00040_class.svg | 38 +- docs/test_cases/t00040_class_mermaid.svg | 8 +- docs/test_cases/t00041_class.svg | 58 +- docs/test_cases/t00041_class_mermaid.svg | 18 +- docs/test_cases/t00042_class.svg | 42 +- docs/test_cases/t00042_class_mermaid.svg | 12 +- docs/test_cases/t00043_class.svg | 90 +-- docs/test_cases/t00043_class_mermaid.svg | 22 +- docs/test_cases/t00044_class.svg | 42 +- docs/test_cases/t00044_class_mermaid.svg | 14 +- docs/test_cases/t00045_class.svg | 74 +-- docs/test_cases/t00045_class_mermaid.svg | 24 +- docs/test_cases/t00046_class.svg | 66 +- docs/test_cases/t00046_class_mermaid.svg | 18 +- docs/test_cases/t00047_class.svg | 18 +- docs/test_cases/t00047_class_mermaid.svg | 8 +- docs/test_cases/t00048_class.svg | 74 +-- docs/test_cases/t00048_class_mermaid.svg | 12 +- docs/test_cases/t00049_class.svg | 50 +- docs/test_cases/t00049_class_mermaid.svg | 10 +- docs/test_cases/t00050_class.svg | 70 +- docs/test_cases/t00050_class_mermaid.svg | 16 +- docs/test_cases/t00051_class.svg | 82 +-- docs/test_cases/t00051_class_mermaid.svg | 10 +- docs/test_cases/t00052_class.svg | 42 +- docs/test_cases/t00052_class_mermaid.svg | 12 +- docs/test_cases/t00053_class.svg | 70 +- docs/test_cases/t00053_class_mermaid.svg | 34 +- docs/test_cases/t00054_class.svg | 78 +-- docs/test_cases/t00054_class_mermaid.svg | 34 +- docs/test_cases/t00055_class.svg | 42 +- docs/test_cases/t00055_class_mermaid.svg | 20 +- docs/test_cases/t00056_class.svg | 94 +-- docs/test_cases/t00056_class_mermaid.svg | 28 +- docs/test_cases/t00057_class.svg | 126 ++-- docs/test_cases/t00057_class_mermaid.svg | 20 +- docs/test_cases/t00058_class.svg | 54 +- docs/test_cases/t00058_class_mermaid.svg | 16 +- docs/test_cases/t00059_class.svg | 94 +-- docs/test_cases/t00059_class_mermaid.svg | 22 +- docs/test_cases/t00060_class.svg | 38 +- docs/test_cases/t00060_class_mermaid.svg | 12 +- docs/test_cases/t00061_class.svg | 6 +- docs/test_cases/t00061_class_mermaid.svg | 2 +- docs/test_cases/t00062_class.svg | 198 +++--- docs/test_cases/t00062_class_mermaid.svg | 44 +- docs/test_cases/t00063_class.svg | 6 +- docs/test_cases/t00063_class_mermaid.svg | 2 +- docs/test_cases/t00064_class.svg | 118 ++-- docs/test_cases/t00064_class_mermaid.svg | 46 +- docs/test_cases/t00065_class.svg | 102 +-- docs/test_cases/t00065_class_mermaid.svg | 24 +- docs/test_cases/t00066_class.svg | 126 ++-- docs/test_cases/t00066_class_mermaid.svg | 2 +- docs/test_cases/t00067_class.svg | 86 +-- docs/test_cases/t00067_class_mermaid.svg | 2 +- docs/test_cases/t00068_r0_class.svg | 14 +- docs/test_cases/t00068_r0_class_mermaid.svg | 2 +- docs/test_cases/t00068_r1_class.svg | 38 +- docs/test_cases/t00068_r1_class_mermaid.svg | 10 +- docs/test_cases/t00068_r2_class.svg | 54 +- docs/test_cases/t00068_r2_class_mermaid.svg | 16 +- docs/test_cases/t00069_class.svg | 74 +-- docs/test_cases/t00069_class_mermaid.svg | 8 +- docs/test_cases/t00070_class.svg | 30 +- docs/test_cases/t00070_class_mermaid.svg | 8 +- docs/test_cases/t00071_class.svg | 80 +-- docs/test_cases/t00071_class_mermaid.svg | 20 +- docs/test_cases/t00072_class.svg | 64 +- docs/test_cases/t00072_class_mermaid.svg | 18 +- docs/test_cases/t00073_class.svg | 50 +- docs/test_cases/t00073_class_mermaid.svg | 14 +- docs/test_cases/t00074_class.svg | 14 +- docs/test_cases/t00074_class_mermaid.svg | 6 +- docs/test_cases/t00075_class.svg | 58 +- docs/test_cases/t00075_class_mermaid.svg | 16 +- docs/test_cases/t20001_sequence.svg | 78 +-- docs/test_cases/t20002_sequence.svg | 48 +- docs/test_cases/t20003_sequence.svg | 48 +- docs/test_cases/t20004_sequence.svg | 120 ++-- docs/test_cases/t20005_sequence.svg | 36 +- docs/test_cases/t20006_sequence.svg | 162 ++--- docs/test_cases/t20007_sequence.svg | 48 +- docs/test_cases/t20008_sequence.svg | 84 +-- docs/test_cases/t20009_sequence.svg | 84 +-- docs/test_cases/t20010_sequence.svg | 72 +- docs/test_cases/t20011_sequence.svg | 72 +- docs/test_cases/t20012_sequence.svg | 222 +++---- docs/test_cases/t20013_sequence.svg | 60 +- docs/test_cases/t20014_sequence.svg | 72 +- docs/test_cases/t20015_sequence.svg | 24 +- docs/test_cases/t20016_sequence.svg | 48 +- docs/test_cases/t20017_sequence.svg | 48 +- docs/test_cases/t20018_sequence.svg | 96 +-- docs/test_cases/t20019_sequence.svg | 84 +-- docs/test_cases/t20020_sequence.svg | 124 ++-- docs/test_cases/t20021_sequence.svg | 106 +-- docs/test_cases/t20022_sequence.svg | 42 +- docs/test_cases/t20023_sequence.svg | 50 +- docs/test_cases/t20024_sequence.svg | 88 +-- docs/test_cases/t20025_sequence.svg | 36 +- docs/test_cases/t20026_sequence.svg | 24 +- docs/test_cases/t20027_sequence.svg | 24 +- docs/test_cases/t20028_sequence.svg | 44 +- docs/test_cases/t20029_sequence.svg | 88 +-- docs/test_cases/t20030_sequence.svg | 112 ++-- docs/test_cases/t20031_sequence.svg | 58 +- docs/test_cases/t20032_sequence.svg | 60 +- docs/test_cases/t20033_sequence.svg | 128 ++-- docs/test_cases/t20034_sequence.svg | 76 +-- docs/test_cases/t20035_sequence.svg | 32 +- docs/test_cases/t20036_sequence.svg | 64 +- docs/test_cases/t20037_sequence.svg | 108 +-- docs/test_cases/t20038_sequence.svg | 172 ++--- docs/test_cases/t20039_sequence.svg | 84 +-- docs/test_cases/t20040_sequence.svg | 102 +-- docs/test_cases/t20041_sequence.svg | 60 +- docs/test_cases/t20042_sequence.svg | 48 +- docs/test_cases/t20043_sequence.svg | 36 +- docs/test_cases/t20044_sequence.svg | 140 ++-- docs/test_cases/t20045_sequence.svg | 132 ++-- docs/test_cases/t20046_sequence.svg | 96 +-- docs/test_cases/t20047_sequence.svg | 84 +-- docs/test_cases/t20048_sequence.svg | 118 ++-- docs/test_cases/t20049_sequence.svg | 56 +- docs/test_cases/t20050_sequence.svg | 36 +- docs/test_cases/t20051_sequence.svg | 24 +- docs/test_cases/t20052.md | 693 ++++++++++++++++++++ docs/test_cases/t20052_sequence.svg | 230 +++++++ docs/test_cases/t20052_sequence_mermaid.svg | 240 +++++++ docs/test_cases/t20053.md | 184 ++++++ docs/test_cases/t20053_sequence.svg | 67 ++ docs/test_cases/t20053_sequence_mermaid.svg | 124 ++++ docs/test_cases/t30001_package.svg | 48 +- docs/test_cases/t30002_package.svg | 94 +-- docs/test_cases/t30003_package.svg | 26 +- docs/test_cases/t30004_package.svg | 30 +- docs/test_cases/t30005_package.svg | 38 +- docs/test_cases/t30006_package.svg | 16 +- docs/test_cases/t30007_package.svg | 20 +- docs/test_cases/t30008_package.svg | 34 +- docs/test_cases/t30009_package.svg | 42 +- docs/test_cases/t30010_package.svg | 24 +- docs/test_cases/t30011_package.svg | 24 +- docs/test_cases/t30012_package.svg | 20 +- docs/test_cases/t30013_package.svg | 78 +-- docs/test_cases/t30014_package.svg | 16 +- docs/test_cases/t30015_package.svg | 80 +-- docs/test_cases/t40001_include.svg | 28 +- docs/test_cases/t40001_include_mermaid.svg | 6 +- docs/test_cases/t40002_include.svg | 34 +- docs/test_cases/t40002_include_mermaid.svg | 10 +- docs/test_cases/t40003_include.svg | 46 +- docs/test_cases/t40003_include_mermaid.svg | 18 +- 231 files changed, 7014 insertions(+), 5474 deletions(-) create mode 100644 docs/test_cases/t20052.md create mode 100644 docs/test_cases/t20052_sequence.svg create mode 100644 docs/test_cases/t20052_sequence_mermaid.svg create mode 100644 docs/test_cases/t20053.md create mode 100644 docs/test_cases/t20053_sequence.svg create mode 100644 docs/test_cases/t20053_sequence_mermaid.svg diff --git a/docs/test_cases.md b/docs/test_cases.md index 17baa7f1..08b1e655 100644 --- a/docs/test_cases.md +++ b/docs/test_cases.md @@ -132,6 +132,8 @@ * [t20049](./test_cases/t20049.md) - Test case for CUDA kernel calls * [t20050](./test_cases/t20050.md) - Test case for CUDA kernel calls with participants combined to file * [t20051](./test_cases/t20051.md) - Test case for CUDA calls callee_type filter + * [t20052](./test_cases/t20052.md) - Test case for inlining lambda operator calls + * [t20053](./test_cases/t20053.md) - Test case for inlining nested lambda operator calls ## Package diagrams * [t30001](./test_cases/t30001.md) - Basic package diagram test case * [t30002](./test_cases/t30002.md) - Package dependency test case diff --git a/docs/test_cases/t00002_class.svg b/docs/test_cases/t00002_class.svg index 8ff4b29f..59079a06 100644 --- a/docs/test_cases/t00002_class.svg +++ b/docs/test_cases/t00002_class.svg @@ -1,6 +1,6 @@ - + @@ -10,123 +10,123 @@ Basic class diagram example - - + + A - + - + foo_a() = 0 : void - + - + foo_c() = 0 : void - - + + B - + - + foo_a() : void - - + + C - + - + foo_c() : void - - + + D - + - + foo_a() : void - + - + foo_c() : void - + - + as : std::vector<A *> - - + + E - + - + foo_a() : void - + - + foo_c() : void - + - + as : std::vector<A *> - + This is class A - + This is class B - + This is class D diff --git a/docs/test_cases/t00002_class_mermaid.svg b/docs/test_cases/t00002_class_mermaid.svg index a63ffae6..071a7925 100644 --- a/docs/test_cases/t00002_class_mermaid.svg +++ b/docs/test_cases/t00002_class_mermaid.svg @@ -169,7 +169,7 @@ - + @@ -198,7 +198,7 @@ - + @@ -222,7 +222,7 @@ - + @@ -246,7 +246,7 @@ - + @@ -280,7 +280,7 @@ - + diff --git a/docs/test_cases/t00003_class.svg b/docs/test_cases/t00003_class.svg index 4db4a2e2..5d64b6d8 100644 --- a/docs/test_cases/t00003_class.svg +++ b/docs/test_cases/t00003_class.svg @@ -1,6 +1,6 @@ - + @@ -9,227 +9,227 @@ - - + + A - + - + A() = default : void - + - + A(int i) : void - + - + A(A &&) = default : void - + - + A(const A &) = deleted : void A<T>(T t) : void - + - + ~A() = default : void - + - + operator=(A && other) noexcept : A & - + - + operator=(A & other) noexcept : A & - + - + operator++() : A & - + - + auto_method() : int - + - + basic_method() : void - + - + const_method() const : void - + - + create_from_int(int i) : A - + - + default_int(int i = 12) : int - + - + default_string(int i, std::string s = "abc") : std::string - + - + double_int(const int i) : int - + - + private_method() : void - + - + protected_method() : void - + - + size() constexpr const : std::size_t - + - + static_method() : int - + - + sum(const double a, const double b) : int - + - + a_ : int - + - + auto_member : const unsigned long - + - + b_ : int - + - + c_ : int - + - + compare : std::function<bool (const int)> - + - + private_member : int - + - + protected_member : int - + - + public_member : int - + - + static_const_int : const int - + - + static_int : int diff --git a/docs/test_cases/t00003_class_mermaid.svg b/docs/test_cases/t00003_class_mermaid.svg index 21cfe294..cc138809 100644 --- a/docs/test_cases/t00003_class_mermaid.svg +++ b/docs/test_cases/t00003_class_mermaid.svg @@ -52,7 +52,7 @@ - + diff --git a/docs/test_cases/t00004_class.svg b/docs/test_cases/t00004_class.svg index 44196adb..d8e9f3c5 100644 --- a/docs/test_cases/t00004_class.svg +++ b/docs/test_cases/t00004_class.svg @@ -1,6 +1,6 @@ - + @@ -9,16 +9,16 @@ - - + + B - - + + B::AA @@ -28,38 +28,38 @@ AA_3 - - + + A - + - + foo() const : void - + - + foo2() const : void - - + + A::AA - - + + A::AA::Lights @@ -69,16 +69,16 @@ Red - - + + A::AA::AAA - - + + C::B @@ -87,8 +87,8 @@ - - + + C @@ -97,38 +97,38 @@ - + - + b_int : B<int> - + - + t : T - - + + C::AA - - + + C::AA::AAA - - + + C::AA::CCC @@ -137,8 +137,8 @@ CCC_2 - - + + C::B @@ -147,15 +147,15 @@ - + - + b : V - - + + C::CC @@ -164,16 +164,16 @@ CC_2 - - + + detail::D - - + + detail::D::AA @@ -183,8 +183,8 @@ AA_3 - - + + detail::D::DD diff --git a/docs/test_cases/t00004_class_mermaid.svg b/docs/test_cases/t00004_class_mermaid.svg index c5c83c13..48cf6170 100644 --- a/docs/test_cases/t00004_class_mermaid.svg +++ b/docs/test_cases/t00004_class_mermaid.svg @@ -210,7 +210,7 @@ - + @@ -229,7 +229,7 @@ - + @@ -263,7 +263,7 @@ - + @@ -292,7 +292,7 @@ - + @@ -311,7 +311,7 @@ - + @@ -345,7 +345,7 @@ - + @@ -364,7 +364,7 @@ - + @@ -383,7 +383,7 @@ - + @@ -412,7 +412,7 @@ - + @@ -431,7 +431,7 @@ - + @@ -450,7 +450,7 @@ - + @@ -479,7 +479,7 @@ - + @@ -503,7 +503,7 @@ - + @@ -532,7 +532,7 @@ - + @@ -551,7 +551,7 @@ - + @@ -585,7 +585,7 @@ - + diff --git a/docs/test_cases/t00005_class.svg b/docs/test_cases/t00005_class.svg index 092f886a..d0c99baf 100644 --- a/docs/test_cases/t00005_class.svg +++ b/docs/test_cases/t00005_class.svg @@ -1,6 +1,6 @@ - + @@ -9,205 +9,205 @@ - - + + A - - + + B - - + + C - - + + D - - + + E - - + + F - - + + G - - + + H - - + + I - - + + J - - + + K - - + + R - + - + a : A - + - + b : B * - + - + c : C & - + - + d : const D * - + - + e : const E & - + - + f : F && - + - + g : G ** - + - + h : H *** - + - + i : I *& - + - + j : volatile J * - + - + k : K * - + - + some_int : int - + - + some_int_pointer : int * - + - + some_int_pointer_pointer : int ** - + - + some_int_reference : int & diff --git a/docs/test_cases/t00005_class_mermaid.svg b/docs/test_cases/t00005_class_mermaid.svg index afa2eb38..70e175e4 100644 --- a/docs/test_cases/t00005_class_mermaid.svg +++ b/docs/test_cases/t00005_class_mermaid.svg @@ -186,7 +186,7 @@ - + @@ -205,7 +205,7 @@ - + @@ -224,7 +224,7 @@ - + @@ -243,7 +243,7 @@ - + @@ -262,7 +262,7 @@ - + @@ -281,7 +281,7 @@ - + @@ -300,7 +300,7 @@ - + @@ -319,7 +319,7 @@ - + @@ -338,7 +338,7 @@ - + @@ -357,7 +357,7 @@ - + @@ -376,7 +376,7 @@ - + @@ -395,7 +395,7 @@ - + diff --git a/docs/test_cases/t00006_class.svg b/docs/test_cases/t00006_class.svg index 05851db6..b4331960 100644 --- a/docs/test_cases/t00006_class.svg +++ b/docs/test_cases/t00006_class.svg @@ -1,6 +1,6 @@ - + @@ -9,136 +9,136 @@ - - + + A - - + + B - - + + C - - + + D - - + + E - - + + F - - + + G - - + + H - - + + I - - + + J - - + + K - - + + L - - + + M - - + + N - - + + NN - - + + NNN - - + + custom_container @@ -147,15 +147,15 @@ - + - + data : std::vector<T> - - + + custom_container @@ -164,103 +164,103 @@ - - + + R - + - + a : std::vector<A> - + - + b : std::vector<B *> - + - + c : std::map<int,C> - + - + d : std::map<int,D *> - + - + e : custom_container<E> - + - + f : std::vector<std::vector<F>> - + - + g : std::map<int,std::vector<G *>> - + - + h : std::array<H,10> - + - + i : std::array<I *,5> - + - + j : J[10] - + - + k : K *[20] - + - + lm : std::vector<std::pair<L,M>> - + - + ns : std::tuple<N,NN,NNN> diff --git a/docs/test_cases/t00006_class_mermaid.svg b/docs/test_cases/t00006_class_mermaid.svg index 1926e5b8..299fe18a 100644 --- a/docs/test_cases/t00006_class_mermaid.svg +++ b/docs/test_cases/t00006_class_mermaid.svg @@ -270,7 +270,7 @@ - + @@ -289,7 +289,7 @@ - + @@ -308,7 +308,7 @@ - + @@ -327,7 +327,7 @@ - + @@ -346,7 +346,7 @@ - + @@ -365,7 +365,7 @@ - + @@ -384,7 +384,7 @@ - + @@ -403,7 +403,7 @@ - + @@ -422,7 +422,7 @@ - + @@ -441,7 +441,7 @@ - + @@ -460,7 +460,7 @@ - + @@ -479,7 +479,7 @@ - + @@ -498,7 +498,7 @@ - + @@ -517,7 +517,7 @@ - + @@ -536,7 +536,7 @@ - + @@ -555,7 +555,7 @@ - + @@ -574,7 +574,7 @@ - + @@ -598,7 +598,7 @@ - + @@ -617,7 +617,7 @@ - + diff --git a/docs/test_cases/t00007_class.svg b/docs/test_cases/t00007_class.svg index 7d1e7cc9..05487f64 100644 --- a/docs/test_cases/t00007_class.svg +++ b/docs/test_cases/t00007_class.svg @@ -1,6 +1,6 @@ - + @@ -9,57 +9,57 @@ - - + + A - - + + B - - + + C - - + + R - + - + a : std::unique_ptr<A> - + - + b : std::shared_ptr<B> - + - + c : std::weak_ptr<C> diff --git a/docs/test_cases/t00007_class_mermaid.svg b/docs/test_cases/t00007_class_mermaid.svg index 212334b2..71cfc021 100644 --- a/docs/test_cases/t00007_class_mermaid.svg +++ b/docs/test_cases/t00007_class_mermaid.svg @@ -90,7 +90,7 @@ - + @@ -109,7 +109,7 @@ - + @@ -128,7 +128,7 @@ - + @@ -147,7 +147,7 @@ - + diff --git a/docs/test_cases/t00008_class.svg b/docs/test_cases/t00008_class.svg index a4066393..4a930bd1 100644 --- a/docs/test_cases/t00008_class.svg +++ b/docs/test_cases/t00008_class.svg @@ -1,6 +1,6 @@ - + @@ -9,8 +9,8 @@ - - + + A @@ -19,50 +19,50 @@ - + - + comparator : CMP - + - + ints : std::array<int,N> - + - + pointer : T * - + - + reference : T & - + - + value : T - + - + values : std::vector<P> - - + + Vector @@ -71,15 +71,15 @@ - + - + values : std::vector<T> - - + + B @@ -88,15 +88,15 @@ - + - + template_template : C<T> - - + + B @@ -105,8 +105,8 @@ - - + + D @@ -115,31 +115,31 @@ D<Items...>(std::tuple<Items...> *) : void - + - + add(int i) : void - + - + ints : B<int,Vector> - - + + E - - + + E::nested_template @@ -147,16 +147,16 @@ ET - + - + get(ET * d) : DT * - - + + E::nested_template @@ -164,11 +164,11 @@ char - + - + getDecl(char * c) : DeclType * diff --git a/docs/test_cases/t00008_class_mermaid.svg b/docs/test_cases/t00008_class_mermaid.svg index 91b4808f..a4ae4d00 100644 --- a/docs/test_cases/t00008_class_mermaid.svg +++ b/docs/test_cases/t00008_class_mermaid.svg @@ -114,7 +114,7 @@ - + @@ -163,7 +163,7 @@ - + @@ -187,7 +187,7 @@ - + @@ -211,7 +211,7 @@ - + @@ -230,7 +230,7 @@ - + @@ -264,7 +264,7 @@ - + @@ -283,7 +283,7 @@ - + @@ -307,7 +307,7 @@ - + diff --git a/docs/test_cases/t00009_class.svg b/docs/test_cases/t00009_class.svg index a91c3cdf..49827413 100644 --- a/docs/test_cases/t00009_class.svg +++ b/docs/test_cases/t00009_class.svg @@ -1,6 +1,6 @@ - + @@ -9,8 +9,8 @@ - - + + A @@ -19,15 +19,15 @@ - + - + value : T - - + + A @@ -36,8 +36,8 @@ - - + + A @@ -46,8 +46,8 @@ - - + + A @@ -56,33 +56,33 @@ - - + + B - + - + aint : A<int> - + - + astring : A<std::string> * - + - + avector : A<std::vector<std::string>> & diff --git a/docs/test_cases/t00009_class_mermaid.svg b/docs/test_cases/t00009_class_mermaid.svg index 2cd632bc..17a9f904 100644 --- a/docs/test_cases/t00009_class_mermaid.svg +++ b/docs/test_cases/t00009_class_mermaid.svg @@ -126,7 +126,7 @@ - + @@ -150,7 +150,7 @@ - + @@ -169,7 +169,7 @@ - + @@ -188,7 +188,7 @@ - + @@ -207,7 +207,7 @@ - + diff --git a/docs/test_cases/t00010_class.svg b/docs/test_cases/t00010_class.svg index b4c9594f..4d88b385 100644 --- a/docs/test_cases/t00010_class.svg +++ b/docs/test_cases/t00010_class.svg @@ -1,6 +1,6 @@ - + @@ -9,8 +9,8 @@ - - + + A @@ -19,22 +19,22 @@ - + - + first : T - + - + second : P - - + + A @@ -43,8 +43,8 @@ - - + + B @@ -53,15 +53,15 @@ - + - + astring : A<T,std::string> - - + + B @@ -70,19 +70,19 @@ - - + + C - + - + aintstring : B<int> diff --git a/docs/test_cases/t00010_class_mermaid.svg b/docs/test_cases/t00010_class_mermaid.svg index e663a933..b3dbaa17 100644 --- a/docs/test_cases/t00010_class_mermaid.svg +++ b/docs/test_cases/t00010_class_mermaid.svg @@ -102,7 +102,7 @@ - + @@ -131,7 +131,7 @@ - + @@ -150,7 +150,7 @@ - + @@ -174,7 +174,7 @@ - + @@ -193,7 +193,7 @@ - + diff --git a/docs/test_cases/t00011_class.svg b/docs/test_cases/t00011_class.svg index e8271e05..2e6c08d0 100644 --- a/docs/test_cases/t00011_class.svg +++ b/docs/test_cases/t00011_class.svg @@ -1,6 +1,6 @@ - + @@ -9,8 +9,8 @@ - - + + D @@ -19,48 +19,48 @@ - + - + value : T - - + + A - + - + foo() : void - - + + B - + - + foo() : void - + - + m_a : A * diff --git a/docs/test_cases/t00011_class_mermaid.svg b/docs/test_cases/t00011_class_mermaid.svg index 0eed9231..3f8c869a 100644 --- a/docs/test_cases/t00011_class_mermaid.svg +++ b/docs/test_cases/t00011_class_mermaid.svg @@ -78,7 +78,7 @@ - + @@ -102,7 +102,7 @@ - + @@ -126,7 +126,7 @@ - + diff --git a/docs/test_cases/t00012_class.svg b/docs/test_cases/t00012_class.svg index a7d8a0bb..21357172 100644 --- a/docs/test_cases/t00012_class.svg +++ b/docs/test_cases/t00012_class.svg @@ -1,6 +1,6 @@ - + @@ -9,8 +9,8 @@ - - + + A @@ -19,22 +19,22 @@ - + - + value : T - + - + values : std::variant<Ts...> - - + + B @@ -43,15 +43,15 @@ - + - + ints : std::array<int,sizeof...(Is)> - - + + C @@ -60,15 +60,15 @@ - + - + ints : std::array<T,sizeof...(Is)> - - + + A @@ -77,8 +77,8 @@ - - + + A @@ -87,8 +87,8 @@ - - + + B @@ -97,8 +97,8 @@ - - + + B @@ -107,8 +107,8 @@ - - + + C @@ -117,50 +117,50 @@ - - + + R - + - + a1 : A<int,std::string,float> - + - + a2 : A<int,std::string,bool> - + - + b1 : B<3,2,1> - + - + b2 : B<1,1,1,1> - + - + c1 : C<std::map<int,std::vector<std::vector<std::vector<std::string>>>>,3,3,3> - + Long template annotation diff --git a/docs/test_cases/t00012_class_mermaid.svg b/docs/test_cases/t00012_class_mermaid.svg index a10688cb..e7f8d6e6 100644 --- a/docs/test_cases/t00012_class_mermaid.svg +++ b/docs/test_cases/t00012_class_mermaid.svg @@ -174,7 +174,7 @@ - + @@ -203,7 +203,7 @@ - + @@ -227,7 +227,7 @@ - + @@ -251,7 +251,7 @@ - + @@ -270,7 +270,7 @@ - + @@ -289,7 +289,7 @@ - + @@ -308,7 +308,7 @@ - + @@ -327,7 +327,7 @@ - + @@ -346,7 +346,7 @@ - + diff --git a/docs/test_cases/t00013_class.svg b/docs/test_cases/t00013_class.svg index 469195fd..067f5b41 100644 --- a/docs/test_cases/t00013_class.svg +++ b/docs/test_cases/t00013_class.svg @@ -1,6 +1,6 @@ - + @@ -9,8 +9,8 @@ - - + + ABCD::F @@ -19,15 +19,15 @@ - + - + f : T - - + + ABCD::F @@ -36,75 +36,75 @@ - - + + A - + - + a : int - - + + B - + - + b : int - - + + C - + - + c : int - - + + D - + - + print(R * r) : void - + - + d : int - - + + E @@ -113,15 +113,15 @@ - + - + e : T - - + + G @@ -130,22 +130,22 @@ - + - + args : std::tuple<Args...> - + - + g : T - - + + E @@ -154,8 +154,8 @@ - - + + G @@ -164,8 +164,8 @@ - - + + E @@ -174,93 +174,93 @@ - - + + R - + - + get_a(A * a) : int - + - + get_b(B & b) : int - + - + get_c(C c) : int - + - + get_const_b(const B & b) : int - + - + get_d(D && d) : int - + - + get_d2(D && d) : int get_e<T>(E<T> e) : T get_f<T>(const F<T> & f) : T - + - + get_int_e(const E<int> & e) : int - + - + get_int_e2(E<int> & e) : int - + - + get_int_f(const ABCD::F<int> & f) : int - + - + estring : E<std::string> - + - + gintstring : G<int,float,std::string> diff --git a/docs/test_cases/t00013_class_mermaid.svg b/docs/test_cases/t00013_class_mermaid.svg index 973fa784..13e2c4e3 100644 --- a/docs/test_cases/t00013_class_mermaid.svg +++ b/docs/test_cases/t00013_class_mermaid.svg @@ -234,7 +234,7 @@ - + @@ -258,7 +258,7 @@ - + @@ -277,7 +277,7 @@ - + @@ -301,7 +301,7 @@ - + @@ -325,7 +325,7 @@ - + @@ -349,7 +349,7 @@ - + @@ -378,7 +378,7 @@ - + @@ -402,7 +402,7 @@ - + @@ -431,7 +431,7 @@ - + @@ -450,7 +450,7 @@ - + @@ -469,7 +469,7 @@ - + @@ -488,7 +488,7 @@ - + diff --git a/docs/test_cases/t00014_class.svg b/docs/test_cases/t00014_class.svg index 84903b59..30017a66 100644 --- a/docs/test_cases/t00014_class.svg +++ b/docs/test_cases/t00014_class.svg @@ -1,6 +1,6 @@ - + @@ -9,8 +9,8 @@ - - + + A @@ -19,37 +19,37 @@ - + - + p : P - + - + t : T - - + + B - + - + value : std::string - - + + A @@ -58,8 +58,8 @@ - - + + A @@ -68,8 +68,8 @@ - - + + A @@ -78,8 +78,8 @@ - - + + A @@ -88,8 +88,8 @@ - - + + A @@ -98,8 +98,8 @@ - - + + A @@ -108,8 +108,8 @@ - - + + A @@ -118,8 +118,8 @@ - - + + A @@ -128,8 +128,8 @@ - - + + A @@ -138,8 +138,8 @@ - - + + A @@ -148,8 +148,8 @@ - - + + A @@ -158,8 +158,8 @@ - - + + A @@ -168,8 +168,8 @@ - - + + A @@ -178,7 +178,7 @@ - + A @@ -186,7 +186,7 @@ char,std::string - + A @@ -194,8 +194,8 @@ wchar_t,std::string - - + + R @@ -204,116 +204,116 @@ - + - + abool : APtr<bool> - + - + aboolfloat : AAPtr<bool,float> - + - + afloat : ASharedPtr<float> - + - + atfloat : AAPtr<T,float> - + - + bapair : PairPairBA<bool> - + - + boolstring : A<bool,std::string> - + - + bs : BVector - + - + bs2 : BVector2 - + - + bstringstring : BStringString - + - + cb : SimpleCallback<ACharString> - + - + floatstring : AStringPtr<float> - + - + gcb : GenericCallback<AWCharString> - + - + intstring : AIntString - + - + stringstring : AStringString - + - + vcb : VoidCallback - + - + vps : VectorPtr<B> diff --git a/docs/test_cases/t00014_class_mermaid.svg b/docs/test_cases/t00014_class_mermaid.svg index 64225afa..1d8a2df5 100644 --- a/docs/test_cases/t00014_class_mermaid.svg +++ b/docs/test_cases/t00014_class_mermaid.svg @@ -474,7 +474,7 @@ - + @@ -503,7 +503,7 @@ - + @@ -527,7 +527,7 @@ - + @@ -546,7 +546,7 @@ - + @@ -565,7 +565,7 @@ - + @@ -584,7 +584,7 @@ - + @@ -603,7 +603,7 @@ - + @@ -622,7 +622,7 @@ - + @@ -641,7 +641,7 @@ - + @@ -660,7 +660,7 @@ - + @@ -679,7 +679,7 @@ - + @@ -698,7 +698,7 @@ - + @@ -717,7 +717,7 @@ - + @@ -736,7 +736,7 @@ - + @@ -755,7 +755,7 @@ - + @@ -774,7 +774,7 @@ - + @@ -793,7 +793,7 @@ - + @@ -812,7 +812,7 @@ - + diff --git a/docs/test_cases/t00015_class.svg b/docs/test_cases/t00015_class.svg index bdcdb79e..2a20697b 100644 --- a/docs/test_cases/t00015_class.svg +++ b/docs/test_cases/t00015_class.svg @@ -1,6 +1,6 @@ - + @@ -9,40 +9,40 @@ - - + + ns1::A - - + + ns1::ns2_v0_9_0::A - - + + ns1::Anon - - + + ns3::ns1::ns2::Anon - - + + ns3::B diff --git a/docs/test_cases/t00015_class_mermaid.svg b/docs/test_cases/t00015_class_mermaid.svg index 17d419b2..856c13a7 100644 --- a/docs/test_cases/t00015_class_mermaid.svg +++ b/docs/test_cases/t00015_class_mermaid.svg @@ -84,7 +84,7 @@ - + @@ -103,7 +103,7 @@ - + @@ -122,7 +122,7 @@ - + @@ -141,7 +141,7 @@ - + @@ -160,7 +160,7 @@ - + diff --git a/docs/test_cases/t00016_class.svg b/docs/test_cases/t00016_class.svg index 6d2f3d93..8f3b1335 100644 --- a/docs/test_cases/t00016_class.svg +++ b/docs/test_cases/t00016_class.svg @@ -1,6 +1,6 @@ - + @@ -9,8 +9,8 @@ - - + + is_numeric @@ -21,8 +21,8 @@ value : enum - - + + is_numeric @@ -33,8 +33,8 @@ value : enum - - + + is_numeric @@ -45,8 +45,8 @@ value : enum - - + + is_numeric @@ -57,8 +57,8 @@ value : enum - - + + is_numeric @@ -69,8 +69,8 @@ value : enum - - + + is_numeric diff --git a/docs/test_cases/t00016_class_mermaid.svg b/docs/test_cases/t00016_class_mermaid.svg index 66fb312b..6df48bd7 100644 --- a/docs/test_cases/t00016_class_mermaid.svg +++ b/docs/test_cases/t00016_class_mermaid.svg @@ -114,7 +114,7 @@ - + @@ -138,7 +138,7 @@ - + @@ -162,7 +162,7 @@ - + @@ -186,7 +186,7 @@ - + @@ -210,7 +210,7 @@ - + @@ -234,7 +234,7 @@ - + diff --git a/docs/test_cases/t00017_class.svg b/docs/test_cases/t00017_class.svg index d4d6dd0e..745f534a 100644 --- a/docs/test_cases/t00017_class.svg +++ b/docs/test_cases/t00017_class.svg @@ -1,6 +1,6 @@ - + @@ -9,135 +9,135 @@ - - + + A - - + + B - - + + C - - + + D - - + + E - - + + F - - + + G - - + + H - - + + I - - + + J - - + + K - - + + R - + - + R(int & some_int, C & cc, const E & ee, F && ff, I *& ii) : void - + - + some_int : int - + - + some_int_pointer : int * - + - + some_int_pointer_pointer : int ** - + - + some_int_reference : int & diff --git a/docs/test_cases/t00017_class_mermaid.svg b/docs/test_cases/t00017_class_mermaid.svg index 9c70c527..292c8c52 100644 --- a/docs/test_cases/t00017_class_mermaid.svg +++ b/docs/test_cases/t00017_class_mermaid.svg @@ -186,7 +186,7 @@ - + @@ -205,7 +205,7 @@ - + @@ -224,7 +224,7 @@ - + @@ -243,7 +243,7 @@ - + @@ -262,7 +262,7 @@ - + @@ -281,7 +281,7 @@ - + @@ -300,7 +300,7 @@ - + @@ -319,7 +319,7 @@ - + @@ -338,7 +338,7 @@ - + @@ -357,7 +357,7 @@ - + @@ -376,7 +376,7 @@ - + @@ -395,7 +395,7 @@ - + diff --git a/docs/test_cases/t00018_class.svg b/docs/test_cases/t00018_class.svg index d420f34a..b86b8a30 100644 --- a/docs/test_cases/t00018_class.svg +++ b/docs/test_cases/t00018_class.svg @@ -1,6 +1,6 @@ - + @@ -9,121 +9,121 @@ - - + + impl::widget - + - + widget(int n) : void - + - + draw(const widget & w) const : void - + - + draw(const widget & w) : void - + - + n : int - - + + widget - + - + widget(int) : void - + - + widget(widget &&) : void - + - + widget(const widget &) = deleted : void - + - + ~widget() : void - + - + operator=(widget &&) : widget & - + - + operator=(const widget &) = deleted : widget & - + - + draw() const : void - + - + draw() : void - + - + shown() const : bool - + - + pImpl : std::unique_ptr<impl::widget> diff --git a/docs/test_cases/t00018_class_mermaid.svg b/docs/test_cases/t00018_class_mermaid.svg index 6f6d4f74..1b749989 100644 --- a/docs/test_cases/t00018_class_mermaid.svg +++ b/docs/test_cases/t00018_class_mermaid.svg @@ -78,7 +78,7 @@ - + @@ -117,7 +117,7 @@ - + diff --git a/docs/test_cases/t00019_class.svg b/docs/test_cases/t00019_class.svg index 91381fe0..0e59b08b 100644 --- a/docs/test_cases/t00019_class.svg +++ b/docs/test_cases/t00019_class.svg @@ -1,6 +1,6 @@ - + @@ -9,45 +9,45 @@ - - + + Base - + - + Base() = default : void - + - + ~Base() constexpr = default : void - + - + m1() : int - + - + m2() : std::string - - + + Layer1 @@ -55,23 +55,23 @@ LowerLayer - + - + m1() : int - + - + m2() : std::string - - + + Layer2 @@ -79,16 +79,16 @@ LowerLayer - + - + all_calls_count() const : int - - + + Layer3 @@ -96,50 +96,50 @@ LowerLayer - + - + m1() : int - + - + m1_calls() const : int - + - + m2() : std::string - + - + m2_calls() const : int - + - + m_m1_calls : int - + - + m_m2_calls : int - + Layer3 @@ -147,7 +147,7 @@ Base - + Layer2 @@ -155,7 +155,7 @@ Layer3<Base> - + Layer1 @@ -163,19 +163,19 @@ Layer2<Layer3<Base>> - - + + A - + - + layers : std::unique_ptr<Layer1<Layer2<Layer3<Base>>>> diff --git a/docs/test_cases/t00019_class_mermaid.svg b/docs/test_cases/t00019_class_mermaid.svg index a22f1e83..be2a5d03 100644 --- a/docs/test_cases/t00019_class_mermaid.svg +++ b/docs/test_cases/t00019_class_mermaid.svg @@ -132,7 +132,7 @@ - + @@ -171,7 +171,7 @@ - + @@ -200,7 +200,7 @@ - + @@ -224,7 +224,7 @@ - + @@ -273,7 +273,7 @@ - + @@ -292,7 +292,7 @@ - + @@ -311,7 +311,7 @@ - + @@ -330,7 +330,7 @@ - + diff --git a/docs/test_cases/t00020_class.svg b/docs/test_cases/t00020_class.svg index 95192b2f..e54c2377 100644 --- a/docs/test_cases/t00020_class.svg +++ b/docs/test_cases/t00020_class.svg @@ -1,6 +1,6 @@ - + @@ -9,175 +9,175 @@ - - + + ProductA - + - + ~ProductA() constexpr = default : void - + - + sell(int price) const = 0 : bool - - + + ProductA1 - + - + sell(int price) const : bool - - + + ProductA2 - + - + sell(int price) const : bool - - + + ProductB - + - + ~ProductB() constexpr = default : void - + - + buy(int price) const = 0 : bool - - + + ProductB1 - + - + buy(int price) const : bool - - + + ProductB2 - + - + buy(int price) const : bool - - + + AbstractFactory - + - + make_a() const = 0 : std::unique_ptr<ProductA> - + - + make_b() const = 0 : std::unique_ptr<ProductB> - - + + Factory1 - + - + make_a() const : std::unique_ptr<ProductA> - + - + make_b() const : std::unique_ptr<ProductB> - - + + Factory2 - + - + make_a() const : std::unique_ptr<ProductA> - + - + make_b() const : std::unique_ptr<ProductB> diff --git a/docs/test_cases/t00020_class_mermaid.svg b/docs/test_cases/t00020_class_mermaid.svg index a6c4abf1..4ead6a0e 100644 --- a/docs/test_cases/t00020_class_mermaid.svg +++ b/docs/test_cases/t00020_class_mermaid.svg @@ -186,7 +186,7 @@ - + @@ -215,7 +215,7 @@ - + @@ -239,7 +239,7 @@ - + @@ -263,7 +263,7 @@ - + @@ -292,7 +292,7 @@ - + @@ -316,7 +316,7 @@ - + @@ -340,7 +340,7 @@ - + @@ -369,7 +369,7 @@ - + @@ -398,7 +398,7 @@ - + diff --git a/docs/test_cases/t00021_class.svg b/docs/test_cases/t00021_class.svg index a7a95563..9e25f324 100644 --- a/docs/test_cases/t00021_class.svg +++ b/docs/test_cases/t00021_class.svg @@ -1,6 +1,6 @@ - + @@ -9,152 +9,152 @@ - - + + Visitor - + - + ~Visitor() constexpr = default : void - + - + visit_A(const A & item) const = 0 : void - + - + visit_B(const B & item) const = 0 : void - - + + Visitor1 - + - + visit_A(const A & item) const : void - + - + visit_B(const B & item) const : void - - + + Visitor2 - + - + visit_A(const A & item) const : void - + - + visit_B(const B & item) const : void - - + + Visitor3 - + - + visit_A(const A & item) const : void - + - + visit_B(const B & item) const : void - - + + Item - + - + ~Item() constexpr = default : void - + - + accept(const Visitor & visitor) const = 0 : void - - + + A - + - + accept(const Visitor & visitor) const : void - - + + B - + - + accept(const Visitor & visitor) const : void diff --git a/docs/test_cases/t00021_class_mermaid.svg b/docs/test_cases/t00021_class_mermaid.svg index ad0254f6..6ede3636 100644 --- a/docs/test_cases/t00021_class_mermaid.svg +++ b/docs/test_cases/t00021_class_mermaid.svg @@ -236,7 +236,7 @@ - + @@ -270,7 +270,7 @@ - + @@ -299,7 +299,7 @@ - + @@ -328,7 +328,7 @@ - + @@ -357,7 +357,7 @@ - + @@ -386,7 +386,7 @@ - + @@ -410,7 +410,7 @@ - + diff --git a/docs/test_cases/t00022_class.svg b/docs/test_cases/t00022_class.svg index e4616972..4c47e51a 100644 --- a/docs/test_cases/t00022_class.svg +++ b/docs/test_cases/t00022_class.svg @@ -1,6 +1,6 @@ - + @@ -9,76 +9,76 @@ - - + + A - + - + method1() = 0 : void - + - + method2() = 0 : void - + - + template_method() : void - - + + A1 - + - + method1() : void - + - + method2() : void - - + + A2 - + - + method1() : void - + - + method2() : void diff --git a/docs/test_cases/t00022_class_mermaid.svg b/docs/test_cases/t00022_class_mermaid.svg index 4d119ea0..67ccba93 100644 --- a/docs/test_cases/t00022_class_mermaid.svg +++ b/docs/test_cases/t00022_class_mermaid.svg @@ -74,7 +74,7 @@ - + @@ -108,7 +108,7 @@ - + @@ -137,7 +137,7 @@ - + diff --git a/docs/test_cases/t00023_class.svg b/docs/test_cases/t00023_class.svg index 1e716967..acdd2326 100644 --- a/docs/test_cases/t00023_class.svg +++ b/docs/test_cases/t00023_class.svg @@ -1,6 +1,6 @@ - + @@ -9,102 +9,102 @@ - - + + Strategy - + - + ~Strategy() constexpr = default : void - + - + algorithm() = 0 : void - - + + StrategyA - + - + algorithm() : void - - + + StrategyB - + - + algorithm() : void - - + + StrategyC - + - + algorithm() : void - - + + Context - + - + Context(std::unique_ptr<Strategy> strategy) : void - + - + apply() : void - + - + m_strategy : std::unique_ptr<Strategy> diff --git a/docs/test_cases/t00023_class_mermaid.svg b/docs/test_cases/t00023_class_mermaid.svg index 51b3ce53..8b26023f 100644 --- a/docs/test_cases/t00023_class_mermaid.svg +++ b/docs/test_cases/t00023_class_mermaid.svg @@ -96,7 +96,7 @@ - + @@ -125,7 +125,7 @@ - + @@ -149,7 +149,7 @@ - + @@ -173,7 +173,7 @@ - + @@ -197,7 +197,7 @@ - + diff --git a/docs/test_cases/t00024_class.svg b/docs/test_cases/t00024_class.svg index 4856900d..8b58c285 100644 --- a/docs/test_cases/t00024_class.svg +++ b/docs/test_cases/t00024_class.svg @@ -1,6 +1,6 @@ - + @@ -9,115 +9,115 @@ - - + + Target - + - + ~Target() = 0 : void - + - + m1() = 0 : void - + - + m2() = 0 : void - - + + Target1 - + - + m1() : void - + - + m2() : void - - + + Target2 - + - + m1() : void - + - + m2() : void - - + + Proxy - + - + Proxy(std::shared_ptr<Target> target) : void - + - + m1() : void - + - + m2() : void - + - + m_target : std::shared_ptr<Target> diff --git a/docs/test_cases/t00024_class_mermaid.svg b/docs/test_cases/t00024_class_mermaid.svg index d0ad288c..2a733305 100644 --- a/docs/test_cases/t00024_class_mermaid.svg +++ b/docs/test_cases/t00024_class_mermaid.svg @@ -96,7 +96,7 @@ - + @@ -130,7 +130,7 @@ - + @@ -159,7 +159,7 @@ - + @@ -188,7 +188,7 @@ - + diff --git a/docs/test_cases/t00025_class.svg b/docs/test_cases/t00025_class.svg index c2800b78..cc3ba9ab 100644 --- a/docs/test_cases/t00025_class.svg +++ b/docs/test_cases/t00025_class.svg @@ -1,6 +1,6 @@ - + @@ -9,52 +9,52 @@ - - + + Target1 - + - + m1() : void - + - + m2() : void - - + + Target2 - + - + m1() : void - + - + m2() : void - - + + Proxy @@ -62,38 +62,38 @@ T - + - + Proxy(std::shared_ptr<T> target) : void - + - + m1() : void - + - + m2() : void - + - + m_target : std::shared_ptr<T> - - + + Proxy @@ -102,8 +102,8 @@ - - + + Proxy @@ -112,26 +112,26 @@ - - + + ProxyHolder - + - + proxy1 : Proxy<Target1> - + - + proxy2 : Proxy<Target2> diff --git a/docs/test_cases/t00025_class_mermaid.svg b/docs/test_cases/t00025_class_mermaid.svg index 64a27a3f..3663d5dc 100644 --- a/docs/test_cases/t00025_class_mermaid.svg +++ b/docs/test_cases/t00025_class_mermaid.svg @@ -126,7 +126,7 @@ - + @@ -155,7 +155,7 @@ - + @@ -184,7 +184,7 @@ - + @@ -223,7 +223,7 @@ - + @@ -242,7 +242,7 @@ - + @@ -261,7 +261,7 @@ - + diff --git a/docs/test_cases/t00026_class.svg b/docs/test_cases/t00026_class.svg index cb368105..78bc8503 100644 --- a/docs/test_cases/t00026_class.svg +++ b/docs/test_cases/t00026_class.svg @@ -1,6 +1,6 @@ - + @@ -9,8 +9,8 @@ - - + + Memento @@ -18,31 +18,31 @@ T - + - + Memento(T && v) : void - + - + value() const : T - + - + m_value : T - - + + Originator @@ -50,52 +50,52 @@ T - + - + Originator(T && v) : void - + - + load(const Memento<T> & m) : void - + - + memoize_value() const : Memento<T> - + - + print() const : void - + - + set(T && v) : void - + - + m_value : T - - + + Caretaker @@ -103,30 +103,30 @@ T - + - + set_state(const std::string & s, Memento<T> && m) : void - + - + state(const std::string & n) : Memento<T> & - + - + m_mementos : std::unordered_map<std::string,Memento<T>> - - + + Caretaker @@ -135,8 +135,8 @@ - - + + Originator @@ -145,26 +145,26 @@ - - + + StringMemento - + - + caretaker : Caretaker<std::string> - + - + originator : Originator<std::string> diff --git a/docs/test_cases/t00026_class_mermaid.svg b/docs/test_cases/t00026_class_mermaid.svg index 1d603c81..1ba65e3b 100644 --- a/docs/test_cases/t00026_class_mermaid.svg +++ b/docs/test_cases/t00026_class_mermaid.svg @@ -126,7 +126,7 @@ - + @@ -160,7 +160,7 @@ - + @@ -209,7 +209,7 @@ - + @@ -243,7 +243,7 @@ - + @@ -262,7 +262,7 @@ - + @@ -281,7 +281,7 @@ - + diff --git a/docs/test_cases/t00027_class.svg b/docs/test_cases/t00027_class.svg index a71327e7..abfe38c7 100644 --- a/docs/test_cases/t00027_class.svg +++ b/docs/test_cases/t00027_class.svg @@ -1,6 +1,6 @@ - + @@ -9,39 +9,39 @@ - - + + Shape - + - + ~Shape() constexpr = default : void - + - + display() = 0 : void - - + + Line - - + + Line @@ -49,24 +49,24 @@ T<>... - + - + display() : void - - + + Text - - + + Text @@ -74,31 +74,31 @@ T<>... - + - + display() : void - - + + ShapeDecorator - + - + display() = 0 : void - - + + Color @@ -106,16 +106,16 @@ T - + - + display() : void - - + + Weight @@ -123,16 +123,16 @@ T - + - + display() : void - - + + Line @@ -141,8 +141,8 @@ - - + + Line @@ -151,8 +151,8 @@ - - + + Text @@ -161,8 +161,8 @@ - - + + Text @@ -171,40 +171,40 @@ - - + + Window - + - + border : Line<Color,Weight> - + - + description : Text<Color> - + - + divider : Line<Color> - + - + title : Text<Color,Weight> diff --git a/docs/test_cases/t00027_class_mermaid.svg b/docs/test_cases/t00027_class_mermaid.svg index b8da91cd..0c077e4a 100644 --- a/docs/test_cases/t00027_class_mermaid.svg +++ b/docs/test_cases/t00027_class_mermaid.svg @@ -190,7 +190,7 @@ - + @@ -219,7 +219,7 @@ - + @@ -238,7 +238,7 @@ - + @@ -262,7 +262,7 @@ - + @@ -281,7 +281,7 @@ - + @@ -305,7 +305,7 @@ - + @@ -329,7 +329,7 @@ - + @@ -353,7 +353,7 @@ - + @@ -377,7 +377,7 @@ - + @@ -396,7 +396,7 @@ - + @@ -415,7 +415,7 @@ - + @@ -434,7 +434,7 @@ - + @@ -453,7 +453,7 @@ - + diff --git a/docs/test_cases/t00028_class.svg b/docs/test_cases/t00028_class.svg index 3c577fbb..517d1157 100644 --- a/docs/test_cases/t00028_class.svg +++ b/docs/test_cases/t00028_class.svg @@ -1,6 +1,6 @@ - + @@ -9,54 +9,54 @@ - - + + A - + A class note. - - + + B - + B class note. - - + + C - + C class note. - - + + D - + D class note. - - + + E @@ -65,26 +65,26 @@ - + - + param : T - + E template class note. - - + + G - - + + F @@ -94,11 +94,11 @@ three - + F enum note. - - + + E @@ -107,70 +107,70 @@ - - + + R - + - + R(C & c) : void - + - + aaa : A - + - + bbb : B * - + - + ccc : C & - + - + ddd : std::vector<std::shared_ptr<D>> - + - + eee : E<int> - + - + ggg : G ** - + R class note. - + R contains an instance of A. - + Reference to C. diff --git a/docs/test_cases/t00028_class_mermaid.svg b/docs/test_cases/t00028_class_mermaid.svg index 3c3d6e8b..95e13dcb 100644 --- a/docs/test_cases/t00028_class_mermaid.svg +++ b/docs/test_cases/t00028_class_mermaid.svg @@ -218,7 +218,7 @@ - + @@ -237,7 +237,7 @@ - + @@ -256,7 +256,7 @@ - + @@ -275,7 +275,7 @@ - + @@ -294,7 +294,7 @@ - + @@ -318,7 +318,7 @@ - + @@ -337,7 +337,7 @@ - + @@ -371,7 +371,7 @@ - + @@ -390,7 +390,7 @@ - + diff --git a/docs/test_cases/t00029_class.svg b/docs/test_cases/t00029_class.svg index 6ea76d9e..b9e1eed8 100644 --- a/docs/test_cases/t00029_class.svg +++ b/docs/test_cases/t00029_class.svg @@ -1,6 +1,6 @@ - + @@ -9,16 +9,16 @@ - - + + A - - + + C @@ -27,30 +27,30 @@ - + - + param : T - - + + D - + - + param : T - - + + E @@ -60,65 +60,65 @@ three - - + + G1 - - + + G2 - - + + G3 - - + + G4 - - + + R - + - + g1 : G1 - + - + g3 : G3 & - + - + g4 : std::shared_ptr<G4> diff --git a/docs/test_cases/t00029_class_mermaid.svg b/docs/test_cases/t00029_class_mermaid.svg index 8553eb13..bea4c1b3 100644 --- a/docs/test_cases/t00029_class_mermaid.svg +++ b/docs/test_cases/t00029_class_mermaid.svg @@ -78,7 +78,7 @@ - + @@ -97,7 +97,7 @@ - + @@ -121,7 +121,7 @@ - + @@ -145,7 +145,7 @@ - + @@ -179,7 +179,7 @@ - + @@ -198,7 +198,7 @@ - + @@ -217,7 +217,7 @@ - + @@ -236,7 +236,7 @@ - + @@ -255,7 +255,7 @@ - + diff --git a/docs/test_cases/t00030_class.svg b/docs/test_cases/t00030_class.svg index 474ff751..acc7baf1 100644 --- a/docs/test_cases/t00030_class.svg +++ b/docs/test_cases/t00030_class.svg @@ -1,6 +1,6 @@ - + @@ -9,87 +9,87 @@ - - + + A - - + + B - - + + C - - + + D - - + + E - - + + R - + - + aaa : A - + - + bbb : std::vector<B> - + - + ccc : std::vector<C> - + - + ddd : D - + - + eee : E * diff --git a/docs/test_cases/t00030_class_mermaid.svg b/docs/test_cases/t00030_class_mermaid.svg index 0b9aa402..a1032539 100644 --- a/docs/test_cases/t00030_class_mermaid.svg +++ b/docs/test_cases/t00030_class_mermaid.svg @@ -164,7 +164,7 @@ - + @@ -183,7 +183,7 @@ - + @@ -202,7 +202,7 @@ - + @@ -221,7 +221,7 @@ - + @@ -240,7 +240,7 @@ - + @@ -259,7 +259,7 @@ - + diff --git a/docs/test_cases/t00031_class.svg b/docs/test_cases/t00031_class.svg index 819949e0..671dd498 100644 --- a/docs/test_cases/t00031_class.svg +++ b/docs/test_cases/t00031_class.svg @@ -1,33 +1,33 @@ - + - + - + - - - + + + A - - + + B @@ -37,8 +37,8 @@ three - - + + @@ -48,23 +48,23 @@ - + - + ttt : T - - + + D - - + + C @@ -73,47 +73,47 @@ - - + + R - + - + add_b(B b) : void - + - + aaa : A * - + - + bbb : std::vector<B> - + - + ccc : C<int> - + - + ddd : D * diff --git a/docs/test_cases/t00031_class_mermaid.svg b/docs/test_cases/t00031_class_mermaid.svg index 26bb9a34..3eb944ea 100644 --- a/docs/test_cases/t00031_class_mermaid.svg +++ b/docs/test_cases/t00031_class_mermaid.svg @@ -126,7 +126,7 @@ - + @@ -145,7 +145,7 @@ - + @@ -179,7 +179,7 @@ - + @@ -203,7 +203,7 @@ - + @@ -222,7 +222,7 @@ - + @@ -241,7 +241,7 @@ - + diff --git a/docs/test_cases/t00032_class.svg b/docs/test_cases/t00032_class.svg index 15d6594c..3b5af468 100644 --- a/docs/test_cases/t00032_class.svg +++ b/docs/test_cases/t00032_class.svg @@ -1,6 +1,6 @@ - + @@ -9,69 +9,69 @@ - - + + Base - - + + TBase - - + + A - + - + operator()() : void - - + + B - + - + operator()() : void - - + + C - + - + operator()() : void - - + + Overload @@ -80,15 +80,15 @@ - + - + counter : L - - + + Overload @@ -97,19 +97,19 @@ - - + + R - + - + overload : Overload<TBase,int,A,B,C> diff --git a/docs/test_cases/t00032_class_mermaid.svg b/docs/test_cases/t00032_class_mermaid.svg index 2d8c81e2..8d4d8a82 100644 --- a/docs/test_cases/t00032_class_mermaid.svg +++ b/docs/test_cases/t00032_class_mermaid.svg @@ -128,7 +128,7 @@ - + @@ -147,7 +147,7 @@ - + @@ -166,7 +166,7 @@ - + @@ -190,7 +190,7 @@ - + @@ -214,7 +214,7 @@ - + @@ -238,7 +238,7 @@ - + @@ -262,7 +262,7 @@ - + @@ -281,7 +281,7 @@ - + diff --git a/docs/test_cases/t00033_class.svg b/docs/test_cases/t00033_class.svg index c31711bb..46fad388 100644 --- a/docs/test_cases/t00033_class.svg +++ b/docs/test_cases/t00033_class.svg @@ -1,6 +1,6 @@ - + @@ -9,8 +9,8 @@ - - + + A @@ -19,15 +19,15 @@ - + - + aaa : T - - + + B @@ -36,15 +36,15 @@ - + - + bbb : T - - + + C @@ -53,30 +53,30 @@ - + - + ccc : T - - + + D - + - + ddd : int - - + + C @@ -85,8 +85,8 @@ - - + + B @@ -95,8 +95,8 @@ - - + + A @@ -105,19 +105,19 @@ - - + + R - + - + abc : A<B<std::unique_ptr<C<D>>>> diff --git a/docs/test_cases/t00033_class_mermaid.svg b/docs/test_cases/t00033_class_mermaid.svg index ced23893..e5ef735e 100644 --- a/docs/test_cases/t00033_class_mermaid.svg +++ b/docs/test_cases/t00033_class_mermaid.svg @@ -138,7 +138,7 @@ - + @@ -162,7 +162,7 @@ - + @@ -186,7 +186,7 @@ - + @@ -210,7 +210,7 @@ - + @@ -234,7 +234,7 @@ - + @@ -253,7 +253,7 @@ - + @@ -272,7 +272,7 @@ - + @@ -291,7 +291,7 @@ - + diff --git a/docs/test_cases/t00034_class.svg b/docs/test_cases/t00034_class.svg index 5ba93053..62028c1b 100644 --- a/docs/test_cases/t00034_class.svg +++ b/docs/test_cases/t00034_class.svg @@ -1,6 +1,6 @@ - + @@ -9,30 +9,30 @@ - - + + Void - + - + operator!=(const Void &) constexpr const : bool - + - + operator==(const Void &) constexpr const : bool - - + + lift_void @@ -41,8 +41,8 @@ - - + + lift_void @@ -51,8 +51,8 @@ - - + + drop_void @@ -61,8 +61,8 @@ - - + + drop_void @@ -71,34 +71,34 @@ - - + + A - - + + R - + - + la : lift_void_t<A> * - + - + lv : lift_void_t<void> * diff --git a/docs/test_cases/t00034_class_mermaid.svg b/docs/test_cases/t00034_class_mermaid.svg index 203b322d..79e806e7 100644 --- a/docs/test_cases/t00034_class_mermaid.svg +++ b/docs/test_cases/t00034_class_mermaid.svg @@ -102,7 +102,7 @@ - + @@ -131,7 +131,7 @@ - + @@ -150,7 +150,7 @@ - + @@ -169,7 +169,7 @@ - + @@ -188,7 +188,7 @@ - + @@ -207,7 +207,7 @@ - + @@ -226,7 +226,7 @@ - + diff --git a/docs/test_cases/t00035_class.svg b/docs/test_cases/t00035_class.svg index e1a9b2b7..10969ce6 100644 --- a/docs/test_cases/t00035_class.svg +++ b/docs/test_cases/t00035_class.svg @@ -1,6 +1,6 @@ - + @@ -9,40 +9,40 @@ - - + + Top - - + + Left - - + + Center - - + + Bottom - - + + Right diff --git a/docs/test_cases/t00035_class_mermaid.svg b/docs/test_cases/t00035_class_mermaid.svg index cd613d47..6763e6b8 100644 --- a/docs/test_cases/t00035_class_mermaid.svg +++ b/docs/test_cases/t00035_class_mermaid.svg @@ -52,7 +52,7 @@ - + @@ -71,7 +71,7 @@ - + @@ -90,7 +90,7 @@ - + @@ -109,7 +109,7 @@ - + @@ -128,7 +128,7 @@ - + diff --git a/docs/test_cases/t00036_class.svg b/docs/test_cases/t00036_class.svg index e337b597..7b97658c 100644 --- a/docs/test_cases/t00036_class.svg +++ b/docs/test_cases/t00036_class.svg @@ -1,6 +1,6 @@ - + @@ -9,23 +9,23 @@ - + ns1 - + ns11 - + ns111 - + ns2 - + ns22 - - + + E @@ -34,8 +34,8 @@ yellow - - + + A @@ -44,15 +44,15 @@ - + - + a : T - - + + A @@ -61,23 +61,23 @@ - - + + B - + - + a_int : A<int> - - + + C diff --git a/docs/test_cases/t00036_class_mermaid.svg b/docs/test_cases/t00036_class_mermaid.svg index 518ac5d2..f8b2102b 100644 --- a/docs/test_cases/t00036_class_mermaid.svg +++ b/docs/test_cases/t00036_class_mermaid.svg @@ -78,7 +78,7 @@ - + @@ -107,7 +107,7 @@ - + @@ -131,7 +131,7 @@ - + @@ -155,7 +155,7 @@ - + @@ -174,7 +174,7 @@ - + diff --git a/docs/test_cases/t00037_class.svg b/docs/test_cases/t00037_class.svg index 0d44fe7c..5f359de9 100644 --- a/docs/test_cases/t00037_class.svg +++ b/docs/test_cases/t00037_class.svg @@ -1,6 +1,6 @@ - + @@ -9,106 +9,106 @@ - - + + ST - + - + dimensions : ST::(anonymous_662) - + - + units : ST::(anonymous_792) - - + + ST::(dimensions) - + - + t : double - + - + x : double - + - + y : double - + - + z : double - - + + ST::(units) - + - + c : double - + - + h : double - - + + A - + - + A() : void - + - + st : ST diff --git a/docs/test_cases/t00037_class_mermaid.svg b/docs/test_cases/t00037_class_mermaid.svg index e35d91d1..658e8484 100644 --- a/docs/test_cases/t00037_class_mermaid.svg +++ b/docs/test_cases/t00037_class_mermaid.svg @@ -90,7 +90,7 @@ - + @@ -119,7 +119,7 @@ - + @@ -158,7 +158,7 @@ - + @@ -187,7 +187,7 @@ - + diff --git a/docs/test_cases/t00038_class.svg b/docs/test_cases/t00038_class.svg index 30f18818..29f7b460 100644 --- a/docs/test_cases/t00038_class.svg +++ b/docs/test_cases/t00038_class.svg @@ -1,6 +1,6 @@ - + @@ -9,8 +9,8 @@ - - + + thirdparty::ns1::color_t @@ -20,16 +20,16 @@ blue - - + + thirdparty::ns1::E - - + + property_t @@ -39,47 +39,47 @@ property_c - - + + A - - + + B - - + + C - - + + key_t - + - + key : std::string - - + + map @@ -88,8 +88,8 @@ - - + + map @@ -98,8 +98,8 @@ - - + + map @@ -108,8 +108,8 @@ - - + + map @@ -118,8 +118,8 @@ - - + + map diff --git a/docs/test_cases/t00038_class_mermaid.svg b/docs/test_cases/t00038_class_mermaid.svg index b98fdd9a..15a60ad8 100644 --- a/docs/test_cases/t00038_class_mermaid.svg +++ b/docs/test_cases/t00038_class_mermaid.svg @@ -202,7 +202,7 @@ - + @@ -236,7 +236,7 @@ - + @@ -255,7 +255,7 @@ - + @@ -289,7 +289,7 @@ - + @@ -308,7 +308,7 @@ - + @@ -327,7 +327,7 @@ - + @@ -346,7 +346,7 @@ - + @@ -370,7 +370,7 @@ - + @@ -389,7 +389,7 @@ - + @@ -408,7 +408,7 @@ - + @@ -427,7 +427,7 @@ - + @@ -446,7 +446,7 @@ - + diff --git a/docs/test_cases/t00039_class.svg b/docs/test_cases/t00039_class.svg index d4c5fd52..b7834bd3 100644 --- a/docs/test_cases/t00039_class.svg +++ b/docs/test_cases/t00039_class.svg @@ -1,6 +1,6 @@ - + @@ -9,95 +9,95 @@ - - + + C - - + + D - - + + E - - + + CD - - + + DE - - + + CDE - - + + A - - + + AA - - + + AAA - + - + b : B * - - + + ns2::AAAA - - + + ns3::F @@ -106,15 +106,15 @@ - + - + t : T * - - + + ns3::FF @@ -123,15 +123,15 @@ - + - + m : M * - - + + ns3::FE @@ -140,15 +140,15 @@ - + - + m : M * - - + + ns3::FFF @@ -157,11 +157,11 @@ - + - + n : N * diff --git a/docs/test_cases/t00039_class_mermaid.svg b/docs/test_cases/t00039_class_mermaid.svg index 53f23c0f..e6c4c31a 100644 --- a/docs/test_cases/t00039_class_mermaid.svg +++ b/docs/test_cases/t00039_class_mermaid.svg @@ -184,7 +184,7 @@ - + @@ -203,7 +203,7 @@ - + @@ -222,7 +222,7 @@ - + @@ -241,7 +241,7 @@ - + @@ -260,7 +260,7 @@ - + @@ -279,7 +279,7 @@ - + @@ -298,7 +298,7 @@ - + @@ -317,7 +317,7 @@ - + @@ -336,7 +336,7 @@ - + @@ -360,7 +360,7 @@ - + @@ -379,7 +379,7 @@ - + @@ -403,7 +403,7 @@ - + @@ -427,7 +427,7 @@ - + @@ -451,7 +451,7 @@ - + diff --git a/docs/test_cases/t00040_class.svg b/docs/test_cases/t00040_class.svg index 0cd2eca0..82924c91 100644 --- a/docs/test_cases/t00040_class.svg +++ b/docs/test_cases/t00040_class.svg @@ -1,6 +1,6 @@ - + @@ -9,70 +9,70 @@ - - + + A - + - + get_a() : int - + - + ii_ : int - - + + AA - - + + AAA - + - + get_aaa() : int - + - + b : B * - - + + R - + - + foo(A * a) : void diff --git a/docs/test_cases/t00040_class_mermaid.svg b/docs/test_cases/t00040_class_mermaid.svg index 1e1572ec..04371e5d 100644 --- a/docs/test_cases/t00040_class_mermaid.svg +++ b/docs/test_cases/t00040_class_mermaid.svg @@ -74,7 +74,7 @@ - + @@ -103,7 +103,7 @@ - + @@ -122,7 +122,7 @@ - + @@ -151,7 +151,7 @@ - + diff --git a/docs/test_cases/t00041_class.svg b/docs/test_cases/t00041_class.svg index 3dfd228c..235e312c 100644 --- a/docs/test_cases/t00041_class.svg +++ b/docs/test_cases/t00041_class.svg @@ -1,6 +1,6 @@ - + @@ -9,107 +9,107 @@ - - + + R - - + + D - + - + rr : RR * - - + + E - - + + F - - + + RR - + - + foo(H * h) : void - + - + e : E * - + - + f : F * - + - + g : detail::G * - - + + RRR - - + + ns1::N - - + + ns1::NN - - + + ns1::NM diff --git a/docs/test_cases/t00041_class_mermaid.svg b/docs/test_cases/t00041_class_mermaid.svg index 036c992f..0bb1ace9 100644 --- a/docs/test_cases/t00041_class_mermaid.svg +++ b/docs/test_cases/t00041_class_mermaid.svg @@ -130,7 +130,7 @@ - + @@ -149,7 +149,7 @@ - + @@ -173,7 +173,7 @@ - + @@ -192,7 +192,7 @@ - + @@ -211,7 +211,7 @@ - + @@ -250,7 +250,7 @@ - + @@ -269,7 +269,7 @@ - + @@ -288,7 +288,7 @@ - + @@ -307,7 +307,7 @@ - + diff --git a/docs/test_cases/t00042_class.svg b/docs/test_cases/t00042_class.svg index e130c550..ae21731e 100644 --- a/docs/test_cases/t00042_class.svg +++ b/docs/test_cases/t00042_class.svg @@ -1,6 +1,6 @@ - + @@ -9,8 +9,8 @@ - - + + A @@ -19,15 +19,15 @@ - + - + a : T - - + + A @@ -36,15 +36,15 @@ - + - + a : void * - - + + B @@ -53,22 +53,22 @@ - + - + b : T - + - + bb : K - - + + A @@ -77,8 +77,8 @@ - - + + A @@ -87,8 +87,8 @@ - - + + B diff --git a/docs/test_cases/t00042_class_mermaid.svg b/docs/test_cases/t00042_class_mermaid.svg index 5e0208c2..c66b42df 100644 --- a/docs/test_cases/t00042_class_mermaid.svg +++ b/docs/test_cases/t00042_class_mermaid.svg @@ -102,7 +102,7 @@ - + @@ -126,7 +126,7 @@ - + @@ -150,7 +150,7 @@ - + @@ -179,7 +179,7 @@ - + @@ -198,7 +198,7 @@ - + @@ -217,7 +217,7 @@ - + diff --git a/docs/test_cases/t00043_class.svg b/docs/test_cases/t00043_class.svg index 516020b7..5aa05949 100644 --- a/docs/test_cases/t00043_class.svg +++ b/docs/test_cases/t00043_class.svg @@ -1,6 +1,6 @@ - + @@ -9,167 +9,167 @@ - + dependants - + dependencies - - + + A - - + + B - + - + b(A * a) : void - - + + BB - + - + bb(A * a) : void - - + + C - + - + c(B * b) : void - - + + D - + - + d(C * c) : void - + - + dd(BB * bb) : void - - + + E - + - + e(D * d) : void - - + + G - - + + GG - - + + H - + - + h(G * g) : void - + - + hh(GG * gg) : void - - + + I - + - + i(H * h) : void - - + + J - + - + i(I * i) : void diff --git a/docs/test_cases/t00043_class_mermaid.svg b/docs/test_cases/t00043_class_mermaid.svg index 0d729833..c4618750 100644 --- a/docs/test_cases/t00043_class_mermaid.svg +++ b/docs/test_cases/t00043_class_mermaid.svg @@ -174,7 +174,7 @@ - + @@ -193,7 +193,7 @@ - + @@ -217,7 +217,7 @@ - + @@ -241,7 +241,7 @@ - + @@ -265,7 +265,7 @@ - + @@ -294,7 +294,7 @@ - + @@ -318,7 +318,7 @@ - + @@ -337,7 +337,7 @@ - + @@ -356,7 +356,7 @@ - + @@ -385,7 +385,7 @@ - + @@ -409,7 +409,7 @@ - + diff --git a/docs/test_cases/t00044_class.svg b/docs/test_cases/t00044_class.svg index f0326f71..dc5bfed2 100644 --- a/docs/test_cases/t00044_class.svg +++ b/docs/test_cases/t00044_class.svg @@ -1,6 +1,6 @@ - + @@ -9,8 +9,8 @@ - - + + signal_handler @@ -19,8 +19,8 @@ - - + + sink @@ -28,26 +28,26 @@ signal_handler<Ret(Args...),A> - + - + sink(signal_t & sh) : void get_signal<CastTo>() : CastTo * - + - + signal : signal_t * - - + + signal_handler @@ -56,8 +56,8 @@ - - + + sink @@ -66,23 +66,23 @@ - - + + R - + - + sink1 : sink<signal_handler<void (int),bool>> - - + + signal_handler @@ -91,8 +91,8 @@ - - + + sink diff --git a/docs/test_cases/t00044_class_mermaid.svg b/docs/test_cases/t00044_class_mermaid.svg index c9b71480..22741301 100644 --- a/docs/test_cases/t00044_class_mermaid.svg +++ b/docs/test_cases/t00044_class_mermaid.svg @@ -138,7 +138,7 @@ - + @@ -157,7 +157,7 @@ - + @@ -191,7 +191,7 @@ - + @@ -210,7 +210,7 @@ - + @@ -229,7 +229,7 @@ - + @@ -253,7 +253,7 @@ - + @@ -272,7 +272,7 @@ - + diff --git a/docs/test_cases/t00045_class.svg b/docs/test_cases/t00045_class.svg index 82250605..8f732018 100644 --- a/docs/test_cases/t00045_class.svg +++ b/docs/test_cases/t00045_class.svg @@ -1,6 +1,6 @@ - + @@ -9,32 +9,32 @@ - - + + A - - + + AA - - + + AAA - - + + AAAA @@ -43,110 +43,110 @@ - + - + t : T - - + + ns1::A - - + + ns1::ns2::A - - + + ns1::ns2::B - - + + ns1::ns2::C - - + + ns1::ns2::D - - + + ns1::ns2::E - - + + ns1::ns2::AAA - - + + ns1::ns2::R - + - + foo(AA & aa) : void - + - + a : A * - + - + ns1_a : ns1::A * - + - + ns1_ns2_a : ns1::ns2::A * - + - + root_a : ::A * diff --git a/docs/test_cases/t00045_class_mermaid.svg b/docs/test_cases/t00045_class_mermaid.svg index fd80fd7e..e296d2dd 100644 --- a/docs/test_cases/t00045_class_mermaid.svg +++ b/docs/test_cases/t00045_class_mermaid.svg @@ -166,7 +166,7 @@ - + @@ -185,7 +185,7 @@ - + @@ -204,7 +204,7 @@ - + @@ -223,7 +223,7 @@ - + @@ -247,7 +247,7 @@ - + @@ -266,7 +266,7 @@ - + @@ -285,7 +285,7 @@ - + @@ -304,7 +304,7 @@ - + @@ -323,7 +323,7 @@ - + @@ -342,7 +342,7 @@ - + @@ -361,7 +361,7 @@ - + @@ -380,7 +380,7 @@ - + diff --git a/docs/test_cases/t00046_class.svg b/docs/test_cases/t00046_class.svg index a36e9f32..bf529c98 100644 --- a/docs/test_cases/t00046_class.svg +++ b/docs/test_cases/t00046_class.svg @@ -1,6 +1,6 @@ - + @@ -9,120 +9,120 @@ - + ns1 - + ns2 - - + + A - - + + A - - + + B - - + + C - - + + D - - + + E - - + + R - + - + foo(AA & aa) : void - + - + a : A * - + - + i : std::vector<std::uint8_t> - + - + ns1_a : ns1::A * - + - + ns1_ns2_a : ns1::ns2::A * - + - + root_a : ::A * - - + + A - - + + AA diff --git a/docs/test_cases/t00046_class_mermaid.svg b/docs/test_cases/t00046_class_mermaid.svg index bd3a8643..c9417c4b 100644 --- a/docs/test_cases/t00046_class_mermaid.svg +++ b/docs/test_cases/t00046_class_mermaid.svg @@ -154,7 +154,7 @@ - + @@ -173,7 +173,7 @@ - + @@ -192,7 +192,7 @@ - + @@ -211,7 +211,7 @@ - + @@ -230,7 +230,7 @@ - + @@ -249,7 +249,7 @@ - + @@ -268,7 +268,7 @@ - + @@ -287,7 +287,7 @@ - + @@ -306,7 +306,7 @@ - + diff --git a/docs/test_cases/t00047_class.svg b/docs/test_cases/t00047_class.svg index e4067c33..6928cbab 100644 --- a/docs/test_cases/t00047_class.svg +++ b/docs/test_cases/t00047_class.svg @@ -1,6 +1,6 @@ - + @@ -9,8 +9,8 @@ - - + + conditional_t @@ -19,8 +19,8 @@ - - + + conditional_t @@ -29,8 +29,8 @@ - - + + conditional_t @@ -39,8 +39,8 @@ - - + + conditional_t diff --git a/docs/test_cases/t00047_class_mermaid.svg b/docs/test_cases/t00047_class_mermaid.svg index 34aa7a0b..62f1d708 100644 --- a/docs/test_cases/t00047_class_mermaid.svg +++ b/docs/test_cases/t00047_class_mermaid.svg @@ -90,7 +90,7 @@ - + @@ -109,7 +109,7 @@ - + @@ -128,7 +128,7 @@ - + @@ -147,7 +147,7 @@ - + diff --git a/docs/test_cases/t00048_class.svg b/docs/test_cases/t00048_class.svg index c84bfa09..d7547db0 100644 --- a/docs/test_cases/t00048_class.svg +++ b/docs/test_cases/t00048_class.svg @@ -1,6 +1,6 @@ - + @@ -9,30 +9,30 @@ - - + + Base - + - + foo() = 0 : void - + - + base : int - - + + BaseTemplate @@ -40,45 +40,45 @@ T - + - + foo() = 0 : void - + - + base : T - - + + B - + - + foo() : void - + - + b : int - - + + BTemplate @@ -86,45 +86,45 @@ T - + - + foo() : void - + - + b : T - - + + A - + - + foo() : void - + - + a : int - - + + ATemplate @@ -132,19 +132,19 @@ T - + - + foo() : void - + - + a : T diff --git a/docs/test_cases/t00048_class_mermaid.svg b/docs/test_cases/t00048_class_mermaid.svg index 3dc7fe0b..366ac64a 100644 --- a/docs/test_cases/t00048_class_mermaid.svg +++ b/docs/test_cases/t00048_class_mermaid.svg @@ -94,7 +94,7 @@ - + @@ -123,7 +123,7 @@ - + @@ -152,7 +152,7 @@ - + @@ -181,7 +181,7 @@ - + @@ -210,7 +210,7 @@ - + @@ -239,7 +239,7 @@ - + diff --git a/docs/test_cases/t00049_class.svg b/docs/test_cases/t00049_class.svg index 3f21fe7c..124d5ca4 100644 --- a/docs/test_cases/t00049_class.svg +++ b/docs/test_cases/t00049_class.svg @@ -1,6 +1,6 @@ - + @@ -9,8 +9,8 @@ - - + + A @@ -18,23 +18,23 @@ T - + - + get_a() : T & - + - + a : T - - + + A @@ -43,8 +43,8 @@ - - + + A @@ -53,8 +53,8 @@ - - + + A @@ -63,47 +63,47 @@ - - + + R - + - + get_int_map() : A<intmap> - + - + set_int_map(A<intmap> && int_map) : void - + - + a_int_map : A<intmap> - + - + a_string : A<thestring> - + - + a_vector_string : A<string_vector> diff --git a/docs/test_cases/t00049_class_mermaid.svg b/docs/test_cases/t00049_class_mermaid.svg index b8cf4def..20944e69 100644 --- a/docs/test_cases/t00049_class_mermaid.svg +++ b/docs/test_cases/t00049_class_mermaid.svg @@ -126,7 +126,7 @@ - + @@ -155,7 +155,7 @@ - + @@ -174,7 +174,7 @@ - + @@ -193,7 +193,7 @@ - + @@ -212,7 +212,7 @@ - + diff --git a/docs/test_cases/t00050_class.svg b/docs/test_cases/t00050_class.svg index 7cdcb339..214a5668 100644 --- a/docs/test_cases/t00050_class.svg +++ b/docs/test_cases/t00050_class.svg @@ -1,6 +1,6 @@ - + @@ -9,40 +9,40 @@ - - + + A - - + + B - - + + C - - + + utils::D - - + + E @@ -52,8 +52,8 @@ E3 - - + + F @@ -62,43 +62,43 @@ - + - + t : T[N] - + - + v : V - - + + G - - + + NoComment - + Lorem ipsum dolor sit - + Lorem ipsum dolor sit - + Lorem ipsum dolor sit amet consectetur adipiscing elit, urna consequat felis vehicula class ultricies mollis dictumst, aenean non a in donec nulla. @@ -125,50 +125,50 @@ imperdiet praesent magnis ridiculus congue gravida curabitur dictum sagittis, enim et magna sit inceptos sodales parturient pharetra mollis, aenean vel nostra tellus commodo pretium sapien sociosqu. - + This is a short description of class G. - + This is an intermediate description of class G. - + This is a long description of class G. - + Lorem ipsum - + TODO 1. Write meaningful comment - + TODO 2. Write tests - + TODO 3. Implement - + Long comment example - + TODO Implement... - + Simple array wrapper. - + Template parameters diff --git a/docs/test_cases/t00050_class_mermaid.svg b/docs/test_cases/t00050_class_mermaid.svg index 57981f36..b32bdd86 100644 --- a/docs/test_cases/t00050_class_mermaid.svg +++ b/docs/test_cases/t00050_class_mermaid.svg @@ -184,7 +184,7 @@ - + @@ -203,7 +203,7 @@ - + @@ -222,7 +222,7 @@ - + @@ -241,7 +241,7 @@ - + @@ -260,7 +260,7 @@ - + @@ -294,7 +294,7 @@ - + @@ -323,7 +323,7 @@ - + @@ -342,7 +342,7 @@ - + diff --git a/docs/test_cases/t00051_class.svg b/docs/test_cases/t00051_class.svg index 8017f68d..de5b27b8 100644 --- a/docs/test_cases/t00051_class.svg +++ b/docs/test_cases/t00051_class.svg @@ -1,6 +1,6 @@ - + @@ -9,8 +9,8 @@ - - + + B @@ -18,45 +18,45 @@ F,FF=F - + - + B(F && f, FF && ff) : void - + - + f() : void - + - + ff() : void - + - + f_ : F - + - + ff_ : FF - - + + B @@ -64,81 +64,81 @@ (lambda at t00051.cc:43:18),(lambda at t00051.cc:43:27) - + - + B((lambda at t00051.cc:43:18) && f, (lambda at t00051.cc:43:27) && ff) : void - + - + f() : void - + - + ff() : void - + - + f_ : (lambda at t00051.cc:43:18) - + - + ff_ : (lambda at t00051.cc:43:27) - - + + A - + - + get_function() : (lambda at t00051.cc:48:16) - + - + start_thread1() : custom_thread1 - + - + start_thread2() : custom_thread2 - + - + start_thread3() : B<(lambda at t00051.cc:43:18),(lambda at t00051.cc:43:27)> - - + + A::custom_thread1 @@ -147,18 +147,18 @@ custom_thread1<Function,Args...>(Function && f, Args &&... args) : void - - + + A::custom_thread2 - + - + thread((lambda at t00051.cc:59:27) &&) : void diff --git a/docs/test_cases/t00051_class_mermaid.svg b/docs/test_cases/t00051_class_mermaid.svg index 414ee647..5b4e4947 100644 --- a/docs/test_cases/t00051_class_mermaid.svg +++ b/docs/test_cases/t00051_class_mermaid.svg @@ -102,7 +102,7 @@ - + @@ -146,7 +146,7 @@ - + @@ -190,7 +190,7 @@ - + @@ -229,7 +229,7 @@ - + @@ -253,7 +253,7 @@ - + diff --git a/docs/test_cases/t00052_class.svg b/docs/test_cases/t00052_class.svg index 6ae3b713..48276dc3 100644 --- a/docs/test_cases/t00052_class.svg +++ b/docs/test_cases/t00052_class.svg @@ -1,6 +1,6 @@ - + @@ -9,8 +9,8 @@ - - + + A @@ -21,8 +21,8 @@ aa<F,Q>(F && f, Q q) : void - - + + B @@ -30,18 +30,18 @@ T - + - + b(T t) : T bb<F>(F && f, T t) : T - - + + C @@ -52,8 +52,8 @@ c<P>(P p) : T - - + + B @@ -62,8 +62,8 @@ - - + + C @@ -72,33 +72,33 @@ - - + + R - + - + a : A - + - + b : B<int> - + - + c : C<int> diff --git a/docs/test_cases/t00052_class_mermaid.svg b/docs/test_cases/t00052_class_mermaid.svg index b45bdff7..713f4546 100644 --- a/docs/test_cases/t00052_class_mermaid.svg +++ b/docs/test_cases/t00052_class_mermaid.svg @@ -114,7 +114,7 @@ - + @@ -143,7 +143,7 @@ - + @@ -172,7 +172,7 @@ - + @@ -196,7 +196,7 @@ - + @@ -215,7 +215,7 @@ - + @@ -234,7 +234,7 @@ - + diff --git a/docs/test_cases/t00053_class.svg b/docs/test_cases/t00053_class.svg index 71904897..782aba24 100644 --- a/docs/test_cases/t00053_class.svg +++ b/docs/test_cases/t00053_class.svg @@ -1,6 +1,6 @@ - + @@ -9,72 +9,72 @@ - - + + A - - + + C - - + + E - - + + F - - + + a - - + + c - - + + e - - + + f - - + + h @@ -82,8 +82,8 @@ hhh - - + + j @@ -91,56 +91,56 @@ jjj - - + + b - - + + d - - + + g - - + + B - - + + D - - + + G - - + + i diff --git a/docs/test_cases/t00053_class_mermaid.svg b/docs/test_cases/t00053_class_mermaid.svg index 6821d919..308c127d 100644 --- a/docs/test_cases/t00053_class_mermaid.svg +++ b/docs/test_cases/t00053_class_mermaid.svg @@ -52,7 +52,7 @@ - + @@ -71,7 +71,7 @@ - + @@ -90,7 +90,7 @@ - + @@ -109,7 +109,7 @@ - + @@ -128,7 +128,7 @@ - + @@ -147,7 +147,7 @@ - + @@ -166,7 +166,7 @@ - + @@ -190,7 +190,7 @@ - + @@ -209,7 +209,7 @@ - + @@ -228,7 +228,7 @@ - + @@ -247,7 +247,7 @@ - + @@ -266,7 +266,7 @@ - + @@ -285,7 +285,7 @@ - + @@ -304,7 +304,7 @@ - + @@ -323,7 +323,7 @@ - + @@ -342,7 +342,7 @@ - + @@ -366,7 +366,7 @@ - + diff --git a/docs/test_cases/t00054_class.svg b/docs/test_cases/t00054_class.svg index 82e89d5e..efa8377e 100644 --- a/docs/test_cases/t00054_class.svg +++ b/docs/test_cases/t00054_class.svg @@ -1,6 +1,6 @@ - + @@ -9,28 +9,28 @@ - + detail - + detail2 - + detail3 - + detail4 - - + + d - - + + a @@ -40,8 +40,8 @@ - - + + c @@ -51,8 +51,8 @@ - - + + e @@ -62,40 +62,40 @@ - - + + C - - + + F - - + + D - - + + E - - + + A @@ -104,8 +104,8 @@ - - + + B @@ -114,8 +114,8 @@ - - + + f @@ -124,8 +124,8 @@ - - + + G @@ -133,8 +133,8 @@ - - + + h @@ -143,8 +143,8 @@ hhh - - + + i @@ -153,8 +153,8 @@ iii - - + + j @@ -163,16 +163,16 @@ jjj - - + + b - - + + g diff --git a/docs/test_cases/t00054_class_mermaid.svg b/docs/test_cases/t00054_class_mermaid.svg index d9c484ca..bd928470 100644 --- a/docs/test_cases/t00054_class_mermaid.svg +++ b/docs/test_cases/t00054_class_mermaid.svg @@ -52,7 +52,7 @@ - + @@ -71,7 +71,7 @@ - + @@ -90,7 +90,7 @@ - + @@ -109,7 +109,7 @@ - + @@ -128,7 +128,7 @@ - + @@ -147,7 +147,7 @@ - + @@ -166,7 +166,7 @@ - + @@ -185,7 +185,7 @@ - + @@ -204,7 +204,7 @@ - + @@ -223,7 +223,7 @@ - + @@ -242,7 +242,7 @@ - + @@ -261,7 +261,7 @@ - + @@ -280,7 +280,7 @@ - + @@ -304,7 +304,7 @@ - + @@ -328,7 +328,7 @@ - + @@ -352,7 +352,7 @@ - + @@ -371,7 +371,7 @@ - + diff --git a/docs/test_cases/t00055_class.svg b/docs/test_cases/t00055_class.svg index 24f5d2b7..684a1df3 100644 --- a/docs/test_cases/t00055_class.svg +++ b/docs/test_cases/t00055_class.svg @@ -1,6 +1,6 @@ - + @@ -9,80 +9,80 @@ - - + + A - - + + B - - + + C - - + + D - - + + E - - + + F - - + + G - - + + H - - + + I - - + + J diff --git a/docs/test_cases/t00055_class_mermaid.svg b/docs/test_cases/t00055_class_mermaid.svg index 65345ff6..57873a55 100644 --- a/docs/test_cases/t00055_class_mermaid.svg +++ b/docs/test_cases/t00055_class_mermaid.svg @@ -52,7 +52,7 @@ - + @@ -71,7 +71,7 @@ - + @@ -90,7 +90,7 @@ - + @@ -109,7 +109,7 @@ - + @@ -128,7 +128,7 @@ - + @@ -147,7 +147,7 @@ - + @@ -166,7 +166,7 @@ - + @@ -185,7 +185,7 @@ - + @@ -204,7 +204,7 @@ - + @@ -223,7 +223,7 @@ - + diff --git a/docs/test_cases/t00056_class.svg b/docs/test_cases/t00056_class.svg index fd03e1ad..5562d037 100644 --- a/docs/test_cases/t00056_class.svg +++ b/docs/test_cases/t00056_class.svg @@ -1,6 +1,6 @@ - + @@ -9,8 +9,8 @@ - - + + «concept» @@ -20,8 +20,8 @@ - - + + «concept» @@ -33,8 +33,8 @@ sizeof (l) > sizeof (r) - - + + «concept» @@ -44,8 +44,8 @@ - - + + «concept» @@ -58,8 +58,8 @@ container.begin() container.end() - - + + «concept» @@ -71,8 +71,8 @@ typename T::value_type - - + + «concept» @@ -86,8 +86,8 @@ {std::to_string(s)} noexcept {std::to_string(s)} -> std::same_as<std::string> - - + + «concept» @@ -97,8 +97,8 @@ - - + + «concept» @@ -108,8 +108,8 @@ - - + + A @@ -118,15 +118,15 @@ - + - + a : T - - + + B @@ -135,15 +135,15 @@ - + - + b : T - - + + C @@ -152,15 +152,15 @@ - + - + c : T - - + + D @@ -169,8 +169,8 @@ - - + + E @@ -179,29 +179,29 @@ - + - + e1 : T1 - + - + e2 : T2 - + - + e3 : T3 - - + + F @@ -210,25 +210,25 @@ - + - + f1 : T1 - + - + f2 : T2 - + - + f3 : T3 diff --git a/docs/test_cases/t00056_class_mermaid.svg b/docs/test_cases/t00056_class_mermaid.svg index 153e0165..36d063c6 100644 --- a/docs/test_cases/t00056_class_mermaid.svg +++ b/docs/test_cases/t00056_class_mermaid.svg @@ -222,7 +222,7 @@ - + @@ -241,7 +241,7 @@ - + @@ -270,7 +270,7 @@ - + @@ -289,7 +289,7 @@ - + @@ -323,7 +323,7 @@ - + @@ -352,7 +352,7 @@ - + @@ -391,7 +391,7 @@ - + @@ -410,7 +410,7 @@ - + @@ -429,7 +429,7 @@ - + @@ -453,7 +453,7 @@ - + @@ -477,7 +477,7 @@ - + @@ -501,7 +501,7 @@ - + @@ -520,7 +520,7 @@ - + @@ -554,7 +554,7 @@ - + diff --git a/docs/test_cases/t00057_class.svg b/docs/test_cases/t00057_class.svg index 838384ac..f659d7ab 100644 --- a/docs/test_cases/t00057_class.svg +++ b/docs/test_cases/t00057_class.svg @@ -1,6 +1,6 @@ - + @@ -9,53 +9,53 @@ - - + + t00057_A - + - + a1 : int - - + + t00057_B - + - + b1 : int - - + + t00057_C - + - + c1 : int - - + + «union» @@ -63,73 +63,73 @@ - + - + d1 : int - + - + d2 : float - - + + t00057_E - + - + coordinates : t00057_E::(anonymous_739) - + - + e : int - + - + height : t00057_E::(anonymous_807) - - + + t00057_E::(coordinates) - + - + x : int - + - + y : int - - + + «union» @@ -137,105 +137,105 @@ - + - + t : double - + - + z : int - - + + t00057_G - + - + g1 : int - - + + t00057_R - + - + a : struct t00057_A - + - + b : t00057_B - + - + c : struct t00057_C * - + - + d : union t00057_D - + - + e : struct t00057_E * - + - + f : struct t00057_F * - + - + g : struct t00057_G * - - + + t00057_F - + - + f1 : int diff --git a/docs/test_cases/t00057_class_mermaid.svg b/docs/test_cases/t00057_class_mermaid.svg index 3502803d..6830e117 100644 --- a/docs/test_cases/t00057_class_mermaid.svg +++ b/docs/test_cases/t00057_class_mermaid.svg @@ -162,7 +162,7 @@ - + @@ -186,7 +186,7 @@ - + @@ -210,7 +210,7 @@ - + @@ -234,7 +234,7 @@ - + @@ -263,7 +263,7 @@ - + @@ -297,7 +297,7 @@ - + @@ -326,7 +326,7 @@ - + @@ -355,7 +355,7 @@ - + @@ -379,7 +379,7 @@ - + @@ -433,7 +433,7 @@ - + diff --git a/docs/test_cases/t00058_class.svg b/docs/test_cases/t00058_class.svg index d7e79c0a..d90f3b1a 100644 --- a/docs/test_cases/t00058_class.svg +++ b/docs/test_cases/t00058_class.svg @@ -1,6 +1,6 @@ - + @@ -9,8 +9,8 @@ - - + + first_type @@ -19,8 +19,8 @@ - - + + «concept» @@ -30,8 +30,8 @@ - - + + A @@ -40,15 +40,15 @@ - + - + a : std::vector<T> - - + + B @@ -57,22 +57,22 @@ - + - + b : std::vector<T> - + - + bb : P - - + + A @@ -81,8 +81,8 @@ - - + + A @@ -91,8 +91,8 @@ - - + + B @@ -101,26 +101,26 @@ - - + + R - + - + aa : A<int,int,double,std::string> - + - + bb : B<int,std::string,int,double,A<int,int>> diff --git a/docs/test_cases/t00058_class_mermaid.svg b/docs/test_cases/t00058_class_mermaid.svg index 0582af9e..22cb4966 100644 --- a/docs/test_cases/t00058_class_mermaid.svg +++ b/docs/test_cases/t00058_class_mermaid.svg @@ -150,7 +150,7 @@ - + @@ -169,7 +169,7 @@ - + @@ -188,7 +188,7 @@ - + @@ -212,7 +212,7 @@ - + @@ -241,7 +241,7 @@ - + @@ -260,7 +260,7 @@ - + @@ -279,7 +279,7 @@ - + @@ -298,7 +298,7 @@ - + diff --git a/docs/test_cases/t00059_class.svg b/docs/test_cases/t00059_class.svg index cb8495ea..d37911d2 100644 --- a/docs/test_cases/t00059_class.svg +++ b/docs/test_cases/t00059_class.svg @@ -1,6 +1,6 @@ - + @@ -9,8 +9,8 @@ - - + + «concept» @@ -23,8 +23,8 @@ T{} t.get_name() - - + + «concept» @@ -36,8 +36,8 @@ t.get_sweetness() - - + + «concept» @@ -49,96 +49,96 @@ t.get_bitterness() - - + + gala_apple - + - + get_name() const : std::string - + - + get_sweetness() const : float - - + + empire_apple - + - + get_name() const : std::string - + - + get_sweetness() const : float - - + + lima_orange - + - + get_bitterness() const : float - + - + get_name() const : std::string - - + + valencia_orange - + - + get_bitterness() const : float - + - + get_name() const : std::string - - + + fruit_factory @@ -146,23 +146,23 @@ apple_c TA,orange_c TO - + - + create_apple() const : TA - + - + create_orange() const : TO - - + + fruit_factory @@ -171,8 +171,8 @@ - - + + fruit_factory @@ -181,26 +181,26 @@ - - + + R - + - + factory_1 : fruit_factory_1 - + - + factory_2 : fruit_factory_2 diff --git a/docs/test_cases/t00059_class_mermaid.svg b/docs/test_cases/t00059_class_mermaid.svg index 99961fbb..8c2f1e49 100644 --- a/docs/test_cases/t00059_class_mermaid.svg +++ b/docs/test_cases/t00059_class_mermaid.svg @@ -198,7 +198,7 @@ - + @@ -232,7 +232,7 @@ - + @@ -261,7 +261,7 @@ - + @@ -290,7 +290,7 @@ - + @@ -319,7 +319,7 @@ - + @@ -348,7 +348,7 @@ - + @@ -377,7 +377,7 @@ - + @@ -406,7 +406,7 @@ - + @@ -435,7 +435,7 @@ - + @@ -454,7 +454,7 @@ - + @@ -473,7 +473,7 @@ - + diff --git a/docs/test_cases/t00060_class.svg b/docs/test_cases/t00060_class.svg index 156bd667..9165ff92 100644 --- a/docs/test_cases/t00060_class.svg +++ b/docs/test_cases/t00060_class.svg @@ -1,6 +1,6 @@ - + @@ -9,40 +9,40 @@ - - + + A - - + + B - - + + C - - + + D - - + + G @@ -51,15 +51,15 @@ - + - + g : T - - + + H @@ -68,18 +68,18 @@ - + - + h : G<T> - + - + hh : P diff --git a/docs/test_cases/t00060_class_mermaid.svg b/docs/test_cases/t00060_class_mermaid.svg index d62167ac..b19ba62e 100644 --- a/docs/test_cases/t00060_class_mermaid.svg +++ b/docs/test_cases/t00060_class_mermaid.svg @@ -116,7 +116,7 @@ - + @@ -135,7 +135,7 @@ - + @@ -154,7 +154,7 @@ - + @@ -173,7 +173,7 @@ - + @@ -192,7 +192,7 @@ - + @@ -216,7 +216,7 @@ - + diff --git a/docs/test_cases/t00061_class.svg b/docs/test_cases/t00061_class.svg index 8751ff31..400c2435 100644 --- a/docs/test_cases/t00061_class.svg +++ b/docs/test_cases/t00061_class.svg @@ -1,6 +1,6 @@ - + @@ -9,8 +9,8 @@ - - + + A diff --git a/docs/test_cases/t00061_class_mermaid.svg b/docs/test_cases/t00061_class_mermaid.svg index c8d8de47..04b6c5e0 100644 --- a/docs/test_cases/t00061_class_mermaid.svg +++ b/docs/test_cases/t00061_class_mermaid.svg @@ -52,7 +52,7 @@ - + diff --git a/docs/test_cases/t00062_class.svg b/docs/test_cases/t00062_class.svg index 7d8c2fe9..73977ac0 100644 --- a/docs/test_cases/t00062_class.svg +++ b/docs/test_cases/t00062_class.svg @@ -1,6 +1,6 @@ - + @@ -9,8 +9,8 @@ - - + + A @@ -19,15 +19,15 @@ - + - + u : U & - - + + A @@ -36,15 +36,15 @@ - + - + u : U & - - + + A @@ -53,8 +53,8 @@ - - + + A @@ -63,15 +63,15 @@ - + - + u : U ** - - + + A @@ -80,15 +80,15 @@ - + - + u : U *** - - + + A @@ -97,15 +97,15 @@ - + - + u : U *** - - + + A @@ -114,15 +114,15 @@ - + - + u : U && - - + + A @@ -131,15 +131,15 @@ - + - + u : const U & - - + + A @@ -148,22 +148,22 @@ - + - + c : C & - + - + m : M C::* - - + + A @@ -172,22 +172,22 @@ - + - + c : C && - + - + m : M C::* - - + + A @@ -196,22 +196,22 @@ - + - + c : C & - + - + m : M C::* - - + + A @@ -220,15 +220,15 @@ - + - + c : C & - - + + A @@ -237,22 +237,22 @@ - + - + c : C && - + - + m : M C::* - - + + A @@ -261,22 +261,22 @@ - + - + c : C && - + - + mf : float C::* - - + + A @@ -285,22 +285,22 @@ - + - + c : C & - + - + m : M C::* - - + + A @@ -309,15 +309,15 @@ - + - + n : char[N] - - + + A @@ -326,15 +326,15 @@ - + - + n : std::vector<char> - - + + A @@ -343,15 +343,15 @@ - + - + klm : char[K][L][M] - - + + A @@ -360,15 +360,15 @@ - + - + u : bool - - + + A @@ -377,15 +377,15 @@ - + - + c : C<T> - - + + A @@ -394,22 +394,22 @@ - + - + args : std::tuple<Args...> - + - + c : C<T> - - + + A diff --git a/docs/test_cases/t00062_class_mermaid.svg b/docs/test_cases/t00062_class_mermaid.svg index 5b80ef00..c9352eae 100644 --- a/docs/test_cases/t00062_class_mermaid.svg +++ b/docs/test_cases/t00062_class_mermaid.svg @@ -306,7 +306,7 @@ - + @@ -330,7 +330,7 @@ - + @@ -354,7 +354,7 @@ - + @@ -373,7 +373,7 @@ - + @@ -397,7 +397,7 @@ - + @@ -421,7 +421,7 @@ - + @@ -445,7 +445,7 @@ - + @@ -469,7 +469,7 @@ - + @@ -493,7 +493,7 @@ - + @@ -522,7 +522,7 @@ - + @@ -551,7 +551,7 @@ - + @@ -580,7 +580,7 @@ - + @@ -604,7 +604,7 @@ - + @@ -633,7 +633,7 @@ - + @@ -662,7 +662,7 @@ - + @@ -691,7 +691,7 @@ - + @@ -715,7 +715,7 @@ - + @@ -739,7 +739,7 @@ - + @@ -763,7 +763,7 @@ - + @@ -787,7 +787,7 @@ - + @@ -811,7 +811,7 @@ - + @@ -840,7 +840,7 @@ - + diff --git a/docs/test_cases/t00063_class.svg b/docs/test_cases/t00063_class.svg index eade2900..960c3734 100644 --- a/docs/test_cases/t00063_class.svg +++ b/docs/test_cases/t00063_class.svg @@ -1,6 +1,6 @@ - + @@ -9,8 +9,8 @@ - - + + A diff --git a/docs/test_cases/t00063_class_mermaid.svg b/docs/test_cases/t00063_class_mermaid.svg index 1f46300a..5e56afd6 100644 --- a/docs/test_cases/t00063_class_mermaid.svg +++ b/docs/test_cases/t00063_class_mermaid.svg @@ -52,7 +52,7 @@ - + diff --git a/docs/test_cases/t00064_class.svg b/docs/test_cases/t00064_class.svg index 33e499e0..f4ded13b 100644 --- a/docs/test_cases/t00064_class.svg +++ b/docs/test_cases/t00064_class.svg @@ -1,6 +1,6 @@ - + @@ -9,8 +9,8 @@ - - + + type_list @@ -19,8 +19,8 @@ - - + + type_list @@ -29,8 +29,8 @@ - - + + type_list @@ -39,8 +39,8 @@ - - + + type_list @@ -49,8 +49,8 @@ - - + + head @@ -59,8 +59,8 @@ - - + + type_list @@ -69,8 +69,8 @@ - - + + type_list @@ -79,8 +79,8 @@ - - + + type_list @@ -89,8 +89,8 @@ - - + + type_group_pair @@ -99,15 +99,15 @@ - + - + size : const size_t - - + + optional_ref @@ -116,8 +116,8 @@ - - + + optional_ref @@ -126,8 +126,8 @@ - - + + type_group_pair_it @@ -135,54 +135,54 @@ It,type_list<First...>,type_list<Second...> - + - + find(const value_type & v) constexpr : unsigned int - + - + get(unsigned int i) : ref_t - + - + getp(unsigned int i) : const value_type * - - + + A - - + + B - - + + C - - + + type_list @@ -191,8 +191,8 @@ - - + + type_list @@ -201,8 +201,8 @@ - - + + type_list @@ -211,8 +211,8 @@ - - + + type_group_pair @@ -221,30 +221,30 @@ - - + + R - + - + abc : type_group_pair<type_list<float,double>,type_list<A,B,C>> - + - + aboolint : type_list<A,bool,int> - - + + type_group_pair @@ -253,8 +253,8 @@ - - + + type_group_pair_it @@ -263,8 +263,8 @@ - - + + head diff --git a/docs/test_cases/t00064_class_mermaid.svg b/docs/test_cases/t00064_class_mermaid.svg index 32dec995..e4681e46 100644 --- a/docs/test_cases/t00064_class_mermaid.svg +++ b/docs/test_cases/t00064_class_mermaid.svg @@ -390,7 +390,7 @@ - + @@ -409,7 +409,7 @@ - + @@ -428,7 +428,7 @@ - + @@ -447,7 +447,7 @@ - + @@ -466,7 +466,7 @@ - + @@ -485,7 +485,7 @@ - + @@ -504,7 +504,7 @@ - + @@ -523,7 +523,7 @@ - + @@ -542,7 +542,7 @@ - + @@ -566,7 +566,7 @@ - + @@ -585,7 +585,7 @@ - + @@ -604,7 +604,7 @@ - + @@ -638,7 +638,7 @@ - + @@ -657,7 +657,7 @@ - + @@ -676,7 +676,7 @@ - + @@ -695,7 +695,7 @@ - + @@ -714,7 +714,7 @@ - + @@ -733,7 +733,7 @@ - + @@ -752,7 +752,7 @@ - + @@ -771,7 +771,7 @@ - + @@ -800,7 +800,7 @@ - + @@ -819,7 +819,7 @@ - + @@ -838,7 +838,7 @@ - + diff --git a/docs/test_cases/t00065_class.svg b/docs/test_cases/t00065_class.svg index eeaeef5c..acda628f 100644 --- a/docs/test_cases/t00065_class.svg +++ b/docs/test_cases/t00065_class.svg @@ -1,6 +1,6 @@ - + @@ -9,20 +9,20 @@ - + module1 - + submodule1a - + module2 - + concepts - - + + ABC @@ -32,8 +32,8 @@ c - - + + XYZ @@ -43,68 +43,68 @@ z - - + + A - + - + abc : ABC - + - + pimpl : detail::AImpl * - + - + xyz : XYZ - - + + detail::AImpl - - + + B - + - + B() = default : void - + - + b() : void - - + + C @@ -113,15 +113,15 @@ - + - + t : T * - - + + C @@ -130,8 +130,8 @@ - - + + D @@ -140,22 +140,22 @@ - + - + c : C<int> - + - + t : T - - + + C @@ -164,8 +164,8 @@ - - + + D @@ -174,8 +174,8 @@ - - + + «concept» @@ -188,33 +188,33 @@ T{} t.b() - - + + R - + - + a : A * - + - + c : C<B> - + - + d : D<B> diff --git a/docs/test_cases/t00065_class_mermaid.svg b/docs/test_cases/t00065_class_mermaid.svg index 03b55830..099d8e2a 100644 --- a/docs/test_cases/t00065_class_mermaid.svg +++ b/docs/test_cases/t00065_class_mermaid.svg @@ -210,7 +210,7 @@ - + @@ -229,7 +229,7 @@ - + @@ -263,7 +263,7 @@ - + @@ -297,7 +297,7 @@ - + @@ -331,7 +331,7 @@ - + @@ -365,7 +365,7 @@ - + @@ -394,7 +394,7 @@ - + @@ -418,7 +418,7 @@ - + @@ -437,7 +437,7 @@ - + @@ -466,7 +466,7 @@ - + @@ -485,7 +485,7 @@ - + @@ -504,7 +504,7 @@ - + diff --git a/docs/test_cases/t00066_class.svg b/docs/test_cases/t00066_class.svg index 147f928f..7d9b5d7f 100644 --- a/docs/test_cases/t00066_class.svg +++ b/docs/test_cases/t00066_class.svg @@ -1,6 +1,6 @@ - + @@ -9,222 +9,222 @@ - - + + A - + - + public_member : int - + - + protected_member : int - + - + private_member : int - + - + a_ : int - + - + b_ : int - + - + c_ : int - + - + static_int : int - + - + static_const_int : const int - + - + auto_member : const unsigned long - + - + A() = default : void - + - + A(int i) : void - + - + A(A &&) = default : void - + - + A(const A &) = deleted : void - + - + ~A() = default : void - + - + basic_method() : void - + - + static_method() : int - + - + const_method() const : void - + - + auto_method() : int - + - + operator++() : A & - + - + operator=(A && other) noexcept : A & - + - + operator=(A & other) noexcept : A & - + - + size() const : std::size_t - + - + double_int(const int i) : int - + - + sum(const double a, const double b) : int - + - + default_int(int i = 12) : int - + - + default_string(int i, std::string s = "abc") : std::string - + - + create_from_int(int i) : A - + - + protected_method() : void - + - + private_method() : void - + - + compare : std::function<bool (const int)> diff --git a/docs/test_cases/t00066_class_mermaid.svg b/docs/test_cases/t00066_class_mermaid.svg index 68ac8d99..7a59c9e8 100644 --- a/docs/test_cases/t00066_class_mermaid.svg +++ b/docs/test_cases/t00066_class_mermaid.svg @@ -52,7 +52,7 @@ - + diff --git a/docs/test_cases/t00067_class.svg b/docs/test_cases/t00067_class.svg index e1083aca..48e7dbdd 100644 --- a/docs/test_cases/t00067_class.svg +++ b/docs/test_cases/t00067_class.svg @@ -1,6 +1,6 @@ - + @@ -9,152 +9,152 @@ - - + + A - + - + auto_method() : int - + - + basic_method() : void - + - + const_method() const : void - + - + default_int(int i = 12) : int - + - + default_string(int i, std::string s = "abc") : std::string - + - + double_int(const int i) : int - + - + private_method() : void - + - + protected_method() : void - + - + size() const : std::size_t - + - + sum(const double a, const double b) : int - + - + a_ : int - + - + auto_member : const unsigned long - + - + b_ : int - + - + c_ : int - + - + compare : std::function<bool (const int)> - + - + private_member : int - + - + protected_member : int - + - + public_member : int - + - + static_const_int : const int - + - + static_int : int diff --git a/docs/test_cases/t00067_class_mermaid.svg b/docs/test_cases/t00067_class_mermaid.svg index ce1ae11f..416b71bc 100644 --- a/docs/test_cases/t00067_class_mermaid.svg +++ b/docs/test_cases/t00067_class_mermaid.svg @@ -52,7 +52,7 @@ - + diff --git a/docs/test_cases/t00068_r0_class.svg b/docs/test_cases/t00068_r0_class.svg index b5fceb44..137085fc 100644 --- a/docs/test_cases/t00068_r0_class.svg +++ b/docs/test_cases/t00068_r0_class.svg @@ -1,6 +1,6 @@ - + @@ -10,26 +10,26 @@ AAA context of radius 0 - - + + AAA - + - + akind : AKind - + - + bb : BB * diff --git a/docs/test_cases/t00068_r0_class_mermaid.svg b/docs/test_cases/t00068_r0_class_mermaid.svg index d141c131..c9eb8a1b 100644 --- a/docs/test_cases/t00068_r0_class_mermaid.svg +++ b/docs/test_cases/t00068_r0_class_mermaid.svg @@ -53,7 +53,7 @@ - + diff --git a/docs/test_cases/t00068_r1_class.svg b/docs/test_cases/t00068_r1_class.svg index c529568c..3a4cdbcd 100644 --- a/docs/test_cases/t00068_r1_class.svg +++ b/docs/test_cases/t00068_r1_class.svg @@ -1,6 +1,6 @@ - + @@ -10,23 +10,23 @@ AAA context of radius 1 - - + + BB - + - + b : std::vector<B> - - + + AKind @@ -36,49 +36,49 @@ ThreeA - - + + AA - - + + AAA - + - + akind : AKind - + - + bb : BB * - - + + R - + - + aaa : AAA * diff --git a/docs/test_cases/t00068_r1_class_mermaid.svg b/docs/test_cases/t00068_r1_class_mermaid.svg index 711b3417..dd6784f1 100644 --- a/docs/test_cases/t00068_r1_class_mermaid.svg +++ b/docs/test_cases/t00068_r1_class_mermaid.svg @@ -101,7 +101,7 @@ - + @@ -125,7 +125,7 @@ - + @@ -159,7 +159,7 @@ - + @@ -178,7 +178,7 @@ - + @@ -207,7 +207,7 @@ - + diff --git a/docs/test_cases/t00068_r2_class.svg b/docs/test_cases/t00068_r2_class.svg index 313c8ec7..169c845e 100644 --- a/docs/test_cases/t00068_r2_class.svg +++ b/docs/test_cases/t00068_r2_class.svg @@ -1,6 +1,6 @@ - + @@ -10,31 +10,31 @@ AAA context of radius 2 - - + + B - - + + BB - + - + b : std::vector<B> - - + + AKind @@ -44,72 +44,72 @@ ThreeA - - + + A - - + + AA - - + + AAA - + - + akind : AKind - + - + bb : BB * - - + + R - + - + aaa : AAA * - - + + RR - + - + r : std::shared_ptr<R> diff --git a/docs/test_cases/t00068_r2_class_mermaid.svg b/docs/test_cases/t00068_r2_class_mermaid.svg index b694132f..8a4f8376 100644 --- a/docs/test_cases/t00068_r2_class_mermaid.svg +++ b/docs/test_cases/t00068_r2_class_mermaid.svg @@ -135,7 +135,7 @@ - + @@ -154,7 +154,7 @@ - + @@ -178,7 +178,7 @@ - + @@ -212,7 +212,7 @@ - + @@ -231,7 +231,7 @@ - + @@ -250,7 +250,7 @@ - + @@ -279,7 +279,7 @@ - + @@ -303,7 +303,7 @@ - + diff --git a/docs/test_cases/t00069_class.svg b/docs/test_cases/t00069_class.svg index ad2ad157..bc480389 100644 --- a/docs/test_cases/t00069_class.svg +++ b/docs/test_cases/t00069_class.svg @@ -1,6 +1,6 @@ - + @@ -9,8 +9,8 @@ - - + + generator @@ -18,96 +18,96 @@ T - + - + generator(handle_type h) : void - + - + ~generator() : void - + - + full_ : bool - + - + h_ : handle_type - - + + generator::promise_type - + - + final_suspend() noexcept : std::suspend_always - + - + get_return_object() : generator<T> - + - + initial_suspend() : std::suspend_always - + - + return_void() : void - + - + unhandled_exception() : void yield_value<std::convertible_to From>(From && from) : std::suspend_always - + - + exception_ : std::exception_ptr - + - + value_ : T - - + + generator @@ -116,33 +116,33 @@ - - + + A - + - + iota() [coroutine] : generator<unsigned long> - + - + seed() [coroutine] : generator<unsigned long> - + - + counter_ : unsigned long diff --git a/docs/test_cases/t00069_class_mermaid.svg b/docs/test_cases/t00069_class_mermaid.svg index 88938899..1c9f4d2b 100644 --- a/docs/test_cases/t00069_class_mermaid.svg +++ b/docs/test_cases/t00069_class_mermaid.svg @@ -90,7 +90,7 @@ - + @@ -129,7 +129,7 @@ - + @@ -188,7 +188,7 @@ - + @@ -207,7 +207,7 @@ - + diff --git a/docs/test_cases/t00070_class.svg b/docs/test_cases/t00070_class.svg index 5a959e93..3807e766 100644 --- a/docs/test_cases/t00070_class.svg +++ b/docs/test_cases/t00070_class.svg @@ -1,6 +1,6 @@ - + @@ -9,16 +9,16 @@ - - + + B - - + + BB @@ -27,15 +27,15 @@ - + - + t : T - - + + BBB @@ -44,26 +44,26 @@ bbb2 - - + + A - + - + get() : int - + - + a : int diff --git a/docs/test_cases/t00070_class_mermaid.svg b/docs/test_cases/t00070_class_mermaid.svg index 04597fce..a7604a17 100644 --- a/docs/test_cases/t00070_class_mermaid.svg +++ b/docs/test_cases/t00070_class_mermaid.svg @@ -52,7 +52,7 @@ - + @@ -71,7 +71,7 @@ - + @@ -95,7 +95,7 @@ - + @@ -124,7 +124,7 @@ - + diff --git a/docs/test_cases/t00071_class.svg b/docs/test_cases/t00071_class.svg index d7ede988..9de5d944 100644 --- a/docs/test_cases/t00071_class.svg +++ b/docs/test_cases/t00071_class.svg @@ -1,6 +1,6 @@ - + @@ -9,53 +9,53 @@ - + app - + lib1 - + mod1 - + mod2 - + lib2 - - + + A - + - + get() : int - + - + a : int - - + + B - - + + BB @@ -64,15 +64,15 @@ - + - + t : T - - + + detail::BBB @@ -81,32 +81,32 @@ bbb2 - - + + D - - + + E - - + + C - - + + CC @@ -115,15 +115,15 @@ - + - + t : T - - + + detail::CCC @@ -132,33 +132,33 @@ ccc2 - - + + R - + - + a : A * - + - + b : B * - + - + c : C * diff --git a/docs/test_cases/t00071_class_mermaid.svg b/docs/test_cases/t00071_class_mermaid.svg index a0169e98..29aee29f 100644 --- a/docs/test_cases/t00071_class_mermaid.svg +++ b/docs/test_cases/t00071_class_mermaid.svg @@ -90,7 +90,7 @@ - + @@ -109,7 +109,7 @@ - + @@ -133,7 +133,7 @@ - + @@ -162,7 +162,7 @@ - + @@ -181,7 +181,7 @@ - + @@ -200,7 +200,7 @@ - + @@ -219,7 +219,7 @@ - + @@ -243,7 +243,7 @@ - + @@ -272,7 +272,7 @@ - + @@ -301,7 +301,7 @@ - + diff --git a/docs/test_cases/t00072_class.svg b/docs/test_cases/t00072_class.svg index 6958c7cb..2888e62f 100644 --- a/docs/test_cases/t00072_class.svg +++ b/docs/test_cases/t00072_class.svg @@ -1,6 +1,6 @@ - + @@ -9,53 +9,53 @@ - + app - + :lib1 - + mod1 - + mod2 - + :lib2 - - + + A - + - + get() : int - + - + a : int - - + + B - - + + BB @@ -64,15 +64,15 @@ - + - + t : T - - + + detail::BBB @@ -81,32 +81,32 @@ bbb2 - - + + D - - + + E - - + + C - - + + CC @@ -115,15 +115,15 @@ - + - + t : T - - + + detail::CCC diff --git a/docs/test_cases/t00072_class_mermaid.svg b/docs/test_cases/t00072_class_mermaid.svg index d287b519..210a1833 100644 --- a/docs/test_cases/t00072_class_mermaid.svg +++ b/docs/test_cases/t00072_class_mermaid.svg @@ -52,7 +52,7 @@ - + @@ -71,7 +71,7 @@ - + @@ -95,7 +95,7 @@ - + @@ -124,7 +124,7 @@ - + @@ -143,7 +143,7 @@ - + @@ -162,7 +162,7 @@ - + @@ -181,7 +181,7 @@ - + @@ -205,7 +205,7 @@ - + @@ -234,7 +234,7 @@ - + diff --git a/docs/test_cases/t00073_class.svg b/docs/test_cases/t00073_class.svg index f9eed783..0393f1b2 100644 --- a/docs/test_cases/t00073_class.svg +++ b/docs/test_cases/t00073_class.svg @@ -1,6 +1,6 @@ - + @@ -9,70 +9,70 @@ - - + + A - - + + AHandler - + - + operator()(A & a) const : void - + - + handle(A & a) const : void - - + + B - - + + BHandler - + - + operator()(B & b) const : void - + - + handle(B & b) const : void - - + + Overload @@ -81,8 +81,8 @@ - - + + Overload @@ -91,19 +91,19 @@ - - + + R - + - + dispatch : Overload<AHandler,BHandler> diff --git a/docs/test_cases/t00073_class_mermaid.svg b/docs/test_cases/t00073_class_mermaid.svg index b53b1492..1bdf4984 100644 --- a/docs/test_cases/t00073_class_mermaid.svg +++ b/docs/test_cases/t00073_class_mermaid.svg @@ -122,7 +122,7 @@ - + @@ -141,7 +141,7 @@ - + @@ -170,7 +170,7 @@ - + @@ -189,7 +189,7 @@ - + @@ -218,7 +218,7 @@ - + @@ -237,7 +237,7 @@ - + @@ -256,7 +256,7 @@ - + diff --git a/docs/test_cases/t00074_class.svg b/docs/test_cases/t00074_class.svg index ab061949..8bbee54f 100644 --- a/docs/test_cases/t00074_class.svg +++ b/docs/test_cases/t00074_class.svg @@ -1,6 +1,6 @@ - + @@ -9,8 +9,8 @@ - - + + «concept» @@ -20,8 +20,8 @@ - - + + «concept» @@ -31,8 +31,8 @@ - - + + «concept» diff --git a/docs/test_cases/t00074_class_mermaid.svg b/docs/test_cases/t00074_class_mermaid.svg index c2097ed7..3563a699 100644 --- a/docs/test_cases/t00074_class_mermaid.svg +++ b/docs/test_cases/t00074_class_mermaid.svg @@ -78,7 +78,7 @@ - + @@ -97,7 +97,7 @@ - + @@ -116,7 +116,7 @@ - + diff --git a/docs/test_cases/t00075_class.svg b/docs/test_cases/t00075_class.svg index 6c849f68..321791b1 100644 --- a/docs/test_cases/t00075_class.svg +++ b/docs/test_cases/t00075_class.svg @@ -1,6 +1,6 @@ - + @@ -9,14 +9,14 @@ - + ns1 - + ns2 - - + + @@ -30,8 +30,8 @@ T{} t.e() - - + + E @@ -40,40 +40,40 @@ k2 - - + + A - + - + e() const : E - - + + B - + - + e() const : E - - + + @@ -83,15 +83,15 @@ - + - + a_or_b : T - - + + @@ -101,8 +101,8 @@ - - + + @@ -112,8 +112,8 @@ - - + + @@ -121,18 +121,18 @@ - + - + a : ABE<A> - + - + b : ABE<B> diff --git a/docs/test_cases/t00075_class_mermaid.svg b/docs/test_cases/t00075_class_mermaid.svg index 3a698c67..0370e7d6 100644 --- a/docs/test_cases/t00075_class_mermaid.svg +++ b/docs/test_cases/t00075_class_mermaid.svg @@ -162,7 +162,7 @@ - + @@ -196,7 +196,7 @@ - + @@ -225,7 +225,7 @@ - + @@ -249,7 +249,7 @@ - + @@ -273,7 +273,7 @@ - + @@ -297,7 +297,7 @@ - + @@ -316,7 +316,7 @@ - + @@ -335,7 +335,7 @@ - + diff --git a/docs/test_cases/t20001_sequence.svg b/docs/test_cases/t20001_sequence.svg index 4f0724f3..28cdc0f7 100644 --- a/docs/test_cases/t20001_sequence.svg +++ b/docs/test_cases/t20001_sequence.svg @@ -1,6 +1,6 @@ - + @@ -10,79 +10,79 @@ Basic sequence diagram example - - - - - - - - - + + + + + + + + + - - + + tmain() - + tmain() - - + + A - + A - - + + B - + B - - - - - - - - - - + + + + + + + + + + A() - + B(A &) - + Just add 2 numbers - + add(int,int) - + And now add another 2 - + wrap_add3(int,int,int) - + add3(int,int,int) - + @@ -93,7 +93,7 @@ - + @@ -102,14 +102,14 @@ - + log_result(int) - + Main test function diff --git a/docs/test_cases/t20002_sequence.svg b/docs/test_cases/t20002_sequence.svg index 9c86c369..6a6d0c75 100644 --- a/docs/test_cases/t20002_sequence.svg +++ b/docs/test_cases/t20002_sequence.svg @@ -1,6 +1,6 @@ - + @@ -9,51 +9,51 @@ - - - - + + + + - - + + m1() - + m1() - - + + m2() - + m2() - - + + m3() - + m3() - - + + m4() - + m4() - - - - - + + + + + - + - + diff --git a/docs/test_cases/t20003_sequence.svg b/docs/test_cases/t20003_sequence.svg index 59a81158..01f0a9d9 100644 --- a/docs/test_cases/t20003_sequence.svg +++ b/docs/test_cases/t20003_sequence.svg @@ -1,6 +1,6 @@ - + @@ -9,51 +9,51 @@ - - - - + + + + - - + + m1<T>(T) - + m1<T>(T) - - + + m2<T>(T) - + m2<T>(T) - - + + m3<T>(T) - + m3<T>(T) - - + + m4<T>(T) - + m4<T>(T) - - - - - + + + + + - + - + diff --git a/docs/test_cases/t20004_sequence.svg b/docs/test_cases/t20004_sequence.svg index 3f54e093..6b3909b3 100644 --- a/docs/test_cases/t20004_sequence.svg +++ b/docs/test_cases/t20004_sequence.svg @@ -1,6 +1,6 @@ - + @@ -9,16 +9,16 @@ - - - - - - - - - - + + + + + + + + + + @@ -29,87 +29,87 @@ - - + + main() - + main() - - + + m1<float>(float) - + m1<float>(float) - - + + m1<unsigned long>(unsigned long) - + m1<unsigned long>(unsigned long) - - + + m4<unsigned long>(unsigned long) - + m4<unsigned long>(unsigned long) - - + + m1<std::string>(std::string) - + m1<std::string>(std::string) - - + + m2<std::string>(std::string) - + m2<std::string>(std::string) - - + + m1<int>(int) - + m1<int>(int) - - + + m2<int>(int) - + m2<int>(int) - - + + m3<int>(int) - + m3<int>(int) - - + + m4<int>(int) - + m4<int>(int) - - - - - - - - - - - + + + + + + + + + + + - + - + @@ -117,11 +117,11 @@ - + - + @@ -129,19 +129,19 @@ - + - + - + - + diff --git a/docs/test_cases/t20005_sequence.svg b/docs/test_cases/t20005_sequence.svg index c6cf8a8c..6097402d 100644 --- a/docs/test_cases/t20005_sequence.svg +++ b/docs/test_cases/t20005_sequence.svg @@ -1,6 +1,6 @@ - + @@ -9,42 +9,42 @@ - - - + + + - - + + C<T> - + C<T> - - + + B<T> - + B<T> - - + + A<T> - + A<T> - - - + + + c(T) - + b(T) - + a(T) diff --git a/docs/test_cases/t20006_sequence.svg b/docs/test_cases/t20006_sequence.svg index 2724be0f..e4898ca8 100644 --- a/docs/test_cases/t20006_sequence.svg +++ b/docs/test_cases/t20006_sequence.svg @@ -1,6 +1,6 @@ - + @@ -9,24 +9,24 @@ - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + @@ -36,84 +36,84 @@ - - + + tmain() - + tmain() - - + + B<int> - + B<int> - - + + A<int> - + A<int> - - + + B<std::string> - + B<std::string> - - + + A<std::string> - + A<std::string> - - + + BB<int,std::string> - + BB<int,std::string> - - + + BB<int,float> - + BB<int,float> - - + + BB<int,int> - + BB<int,int> - - + + AA<int> - + AA<int> - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + b(int) - + a1(int) @@ -122,12 +122,12 @@ - + b(std::string) - + a2(std::string) @@ -136,69 +136,69 @@ - + BB(AA<int> *) - + BB(AA<int> &) - + bb1(int,int) - + aa1(int) - + bb2(int,int) - + aa2(int) - + bb1(int,std::string) - + aa2(int) - + bb2(int,std::string) - + aa1(int) - + bb1(int,float) - + bb2(int,float) - + aa2(int) diff --git a/docs/test_cases/t20007_sequence.svg b/docs/test_cases/t20007_sequence.svg index 75b1b418..aaeadf4c 100644 --- a/docs/test_cases/t20007_sequence.svg +++ b/docs/test_cases/t20007_sequence.svg @@ -1,6 +1,6 @@ - + @@ -9,57 +9,57 @@ - - - - + + + + - - + + tmain() - + tmain() - - + + Adder<int,int> - + Adder<int,int> - - + + Adder<int,float,double> - + Adder<int,float,double> - - + + Adder<std::string,std::string,std::string> - + Adder<std::string,std::string,std::string> - - - - - + + + + + add(int &&,int &&) - + add(int &&,float &&,double &&) - + add(std::string &&,std::string &&,std::string &&) diff --git a/docs/test_cases/t20008_sequence.svg b/docs/test_cases/t20008_sequence.svg index 35ff962a..f8cb4ce1 100644 --- a/docs/test_cases/t20008_sequence.svg +++ b/docs/test_cases/t20008_sequence.svg @@ -1,6 +1,6 @@ - + @@ -9,13 +9,13 @@ - - - - - - - + + + + + + + @@ -23,81 +23,81 @@ - - + + tmain() - + tmain() - - + + B<int> - + B<int> - - + + A<int> - + A<int> - - + + B<const char *> - + B<const char *> - - + + A<const char *> - + A<const char *> - - + + B<std::string> - + B<std::string> - - + + A<std::string> - + A<std::string> - - - - - - - - + + + + + + + + b(int) - + a1(int) - + b(const char *) - + a2(const char *) - + b(std::string) - + a3(std::string) diff --git a/docs/test_cases/t20009_sequence.svg b/docs/test_cases/t20009_sequence.svg index 0e444eb1..40577fa9 100644 --- a/docs/test_cases/t20009_sequence.svg +++ b/docs/test_cases/t20009_sequence.svg @@ -1,6 +1,6 @@ - + @@ -9,13 +9,13 @@ - - - - - - - + + + + + + + @@ -23,81 +23,81 @@ - - + + tmain() - + tmain() - - + + B<std::string> - + B<std::string> - - + + A<std::string> - + A<std::string> - - + + B<int> - + B<int> - - + + A<int> - + A<int> - - + + B<float> - + B<float> - - + + A<float> - + A<float> - - - - - - - - + + + + + + + + b(std::string) - + a(std::string) - + b(int) - + a(int) - + b(float) - + a(float) diff --git a/docs/test_cases/t20010_sequence.svg b/docs/test_cases/t20010_sequence.svg index 0837edb0..1b19fd7e 100644 --- a/docs/test_cases/t20010_sequence.svg +++ b/docs/test_cases/t20010_sequence.svg @@ -1,6 +1,6 @@ - + @@ -9,81 +9,81 @@ - - - - - - - - - + + + + + + + + + - - + + tmain() - + tmain() - - + + B<int> - + B<int> - - + + A - + A - - - - - - - - - - + + + + + + + + + + b1() - + a1() - + b2() - + a2() - + b3() - + a3() - + b4() - + a4() diff --git a/docs/test_cases/t20011_sequence.svg b/docs/test_cases/t20011_sequence.svg index f1baeb24..1694b0db 100644 --- a/docs/test_cases/t20011_sequence.svg +++ b/docs/test_cases/t20011_sequence.svg @@ -1,6 +1,6 @@ - + @@ -9,42 +9,42 @@ - - - - - - - - - - - - + + + + + + + + + + + + - - + + tmain() - + tmain() - - + + A - + A - - - - - - - - - - + + + + + + + + + + a(int) @@ -52,26 +52,26 @@ alt - + a(int) - + b(int) - + c(int) - + @@ -81,14 +81,14 @@ alt - + b(int) - + @@ -98,7 +98,7 @@ alt - + diff --git a/docs/test_cases/t20012_sequence.svg b/docs/test_cases/t20012_sequence.svg index a545d840..023cbc2a 100644 --- a/docs/test_cases/t20012_sequence.svg +++ b/docs/test_cases/t20012_sequence.svg @@ -1,6 +1,6 @@ - + @@ -9,33 +9,33 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -46,243 +46,243 @@ - - + + tmain() - + tmain() - - + + tmain()::(lambda t20012.cc:67:20) - + tmain()::(lambda t20012.cc:67:20) - - + + A - + A - - + + B - + B - - + + tmain()::(lambda t20012.cc:80:20) - + tmain()::(lambda t20012.cc:80:20) - - + + C - + C - - + + R<(lambda at t20012.cc:86:9)> - + R<(lambda at t20012.cc:86:9)> - - + + tmain()::(lambda t20012.cc:86:9) - + tmain()::(lambda t20012.cc:86:9) - - + + tmain()::(lambda t20012.cc:94:9) - + tmain()::(lambda t20012.cc:94:9) - - + + D - + D - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + operator()() const - + a() - + aa() - + aaa() - + b() - + bb() - + bbb() - + operator()() const - + c() - + cc() - + ccc() - + operator()() const - + a() - + aa() - + aaa() - + b() - + bb() - + bbb() - + R((lambda at t20012.cc:86:9) &&) - + r() - + operator()() const - + c() - + cc() - + ccc() - + operator()(auto) const - + add5(int) const diff --git a/docs/test_cases/t20013_sequence.svg b/docs/test_cases/t20013_sequence.svg index 14494355..718f86b7 100644 --- a/docs/test_cases/t20013_sequence.svg +++ b/docs/test_cases/t20013_sequence.svg @@ -1,6 +1,6 @@ - + @@ -9,47 +9,47 @@ - - - - - - - + + + + + + + - - + + tmain(int,char **) - + tmain(int,char **) - - + + B - + B - - + + A - + A - - - - - - - - + + + + + + + + b(int) - + a1(int) @@ -58,12 +58,12 @@ - + b(double) - + a2(double) @@ -72,12 +72,12 @@ - + b(const char *) - + a3(const char *) diff --git a/docs/test_cases/t20014_sequence.svg b/docs/test_cases/t20014_sequence.svg index 3774cf54..a0cc3b92 100644 --- a/docs/test_cases/t20014_sequence.svg +++ b/docs/test_cases/t20014_sequence.svg @@ -1,6 +1,6 @@ - + @@ -9,56 +9,56 @@ - - - - - - - - + + + + + + + + - - + + tmain() - + tmain() - - + + B - + B - - + + A - + A - - + + C<B,int> - + C<B,int> - - - - - - - - - + + + + + + + + + b1(int,int) - + a1(int,int) @@ -67,12 +67,12 @@ - + b2(int,int) - + a2(int,int) @@ -81,17 +81,17 @@ - + c1(int,int) - + b1(int,int) - + a1(int,int) diff --git a/docs/test_cases/t20015_sequence.svg b/docs/test_cases/t20015_sequence.svg index 42f7f196..94dbe7d0 100644 --- a/docs/test_cases/t20015_sequence.svg +++ b/docs/test_cases/t20015_sequence.svg @@ -1,6 +1,6 @@ - + @@ -9,25 +9,25 @@ - - + + - - + + tmain() - + tmain() - - + + B - + B - - - + + + setup_a(std::shared_ptr<detail::A> &) diff --git a/docs/test_cases/t20016_sequence.svg b/docs/test_cases/t20016_sequence.svg index 0bef2945..2211a494 100644 --- a/docs/test_cases/t20016_sequence.svg +++ b/docs/test_cases/t20016_sequence.svg @@ -1,6 +1,6 @@ - + @@ -9,53 +9,53 @@ - - - - - + + + + + - - + + tmain() - + tmain() - - + + B<long> - + B<long> - - + + A - + A - - - - - - + + + + + + b1(long) - + a1(int) - + b2(long) - + a2(const long &) diff --git a/docs/test_cases/t20017_sequence.svg b/docs/test_cases/t20017_sequence.svg index cb0fd710..7cac7015 100644 --- a/docs/test_cases/t20017_sequence.svg +++ b/docs/test_cases/t20017_sequence.svg @@ -1,6 +1,6 @@ - + @@ -9,65 +9,65 @@ - - - - - - + + + + + + - + t20017.cc - + t20017.cc - + include/t20017_a.h - + include/t20017_a.h - + include/t20017_b.h - + include/t20017_b.h - - - - - - + + + + + + tmain() - + a3(int,int) - + b1(int,int) - + a2(int,int) - + a1(int,int) - + b2<int>(int,int) diff --git a/docs/test_cases/t20018_sequence.svg b/docs/test_cases/t20018_sequence.svg index 15c20e5f..2c7e7a9f 100644 --- a/docs/test_cases/t20018_sequence.svg +++ b/docs/test_cases/t20018_sequence.svg @@ -1,6 +1,6 @@ - + @@ -9,14 +9,14 @@ - - - - - - - - + + + + + + + + @@ -25,93 +25,93 @@ - - + + tmain() - + tmain() - - + + Answer<Factorial<5>,120> - + Answer<Factorial<5>,120> - - + + Factorial<5> - + Factorial<5> - - + + Factorial<4> - + Factorial<4> - - + + Factorial<3> - + Factorial<3> - - + + Factorial<2> - + Factorial<2> - - + + Factorial<1> - + Factorial<1> - - + + Factorial<0> - + Factorial<0> - - - - - - - - - + + + + + + + + + print() - + print(int) - + print(int) - + print(int) - + print(int) - + print(int) - + print(int) diff --git a/docs/test_cases/t20019_sequence.svg b/docs/test_cases/t20019_sequence.svg index 0706bb9c..5125dc89 100644 --- a/docs/test_cases/t20019_sequence.svg +++ b/docs/test_cases/t20019_sequence.svg @@ -1,6 +1,6 @@ - + @@ -9,95 +9,95 @@ - - - - - - - - - + + + + + + + + + - - + + tmain() - + tmain() - - + + Base<D1> - + Base<D1> - - + + D1 - + D1 - - + + Base<D2> - + Base<D2> - - + + D2 - + D2 - - - - - - - - - - + + + + + + + + + + name() - + impl() - + name() - + impl() - + name() - + impl() - + name() - + impl() diff --git a/docs/test_cases/t20020_sequence.svg b/docs/test_cases/t20020_sequence.svg index 40a94dbe..b7494dd2 100644 --- a/docs/test_cases/t20020_sequence.svg +++ b/docs/test_cases/t20020_sequence.svg @@ -1,6 +1,6 @@ - + @@ -9,82 +9,82 @@ - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - + - - - + + + - - + + tmain() - + tmain() - - + + A - + A - - + + C - + C - - + + B - + B - - + + D<int> - + D<int> - - - - - - - - - - - - - - + + + + + + + + + + + + + + alt - + a1() @@ -92,7 +92,7 @@ - + a5() @@ -103,7 +103,7 @@ alt - + [ @@ -112,7 +112,7 @@ - + [ @@ -121,7 +121,7 @@ - + b1() @@ -129,7 +129,7 @@ - + [ @@ -138,7 +138,7 @@ - + b2() @@ -146,14 +146,14 @@ - + a4() - + log() @@ -161,7 +161,7 @@ alt - + c1() const @@ -169,7 +169,7 @@ alt - + @@ -182,7 +182,7 @@ - + @@ -192,7 +192,7 @@ alt - + d1(int,int) diff --git a/docs/test_cases/t20021_sequence.svg b/docs/test_cases/t20021_sequence.svg index 7ba53283..4ef9cece 100644 --- a/docs/test_cases/t20021_sequence.svg +++ b/docs/test_cases/t20021_sequence.svg @@ -1,6 +1,6 @@ - + @@ -9,74 +9,74 @@ - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + - - + + tmain() - + tmain() - - + + C - + C - - + + A - + A - - + + B - + B - - - - - - - - - - - - + + + + + + + + + + + + loop - + [ c4() ] - + @@ -89,7 +89,7 @@ - + a3() @@ -102,7 +102,7 @@ loop - + [ @@ -111,7 +111,7 @@ - + [ @@ -120,7 +120,7 @@ - + [ @@ -129,14 +129,14 @@ - + a1() - + [ @@ -148,7 +148,7 @@ loop - + b2() const @@ -158,7 +158,7 @@ loop - + [ @@ -167,7 +167,7 @@ - + b2() const diff --git a/docs/test_cases/t20022_sequence.svg b/docs/test_cases/t20022_sequence.svg index a409cf92..db80ba78 100644 --- a/docs/test_cases/t20022_sequence.svg +++ b/docs/test_cases/t20022_sequence.svg @@ -1,6 +1,6 @@ - + @@ -9,47 +9,47 @@ - - - - + + + + - - + + tmain() - + tmain() - - + + A - + A - - + + B - + B - - - - - + + + + + A(std::unique_ptr ) - + a() - + b() diff --git a/docs/test_cases/t20023_sequence.svg b/docs/test_cases/t20023_sequence.svg index 13e8df51..259df34b 100644 --- a/docs/test_cases/t20023_sequence.svg +++ b/docs/test_cases/t20023_sequence.svg @@ -1,6 +1,6 @@ - + @@ -9,37 +9,37 @@ - - - - - - - + + + + + + + - - + + tmain() - + tmain() - - + + A - + A - - - - - - - + + + + + + + a() @@ -47,7 +47,7 @@ try - + @@ -60,7 +60,7 @@ [std::runtime_error &] - + @@ -73,7 +73,7 @@ [std::logic_error &] - + @@ -86,7 +86,7 @@ [...] - + diff --git a/docs/test_cases/t20024_sequence.svg b/docs/test_cases/t20024_sequence.svg index bbfbd03f..ab5b2f9b 100644 --- a/docs/test_cases/t20024_sequence.svg +++ b/docs/test_cases/t20024_sequence.svg @@ -1,6 +1,6 @@ - + @@ -9,23 +9,23 @@ - - - - - - - - - - - - + + + + + + + + + + + + - + @@ -33,36 +33,36 @@ - - + + tmain() - + tmain() - - + + A - + A - - + + B - + B - - - - - - - - - - - - + + + + + + + + + + + + select(enum_a) @@ -72,7 +72,7 @@ switch [zero] - + @@ -85,7 +85,7 @@ [one] - + @@ -98,7 +98,7 @@ [two] - + @@ -111,7 +111,7 @@ [default] - + @@ -124,7 +124,7 @@ - + select(colors) @@ -134,7 +134,7 @@ switch [enum colors::red] - + @@ -143,7 +143,7 @@ [enum colors::orange] - + @@ -152,7 +152,7 @@ [enum colors::green] - + @@ -161,7 +161,7 @@ [default] - + diff --git a/docs/test_cases/t20025_sequence.svg b/docs/test_cases/t20025_sequence.svg index dedf10bb..8b2ab625 100644 --- a/docs/test_cases/t20025_sequence.svg +++ b/docs/test_cases/t20025_sequence.svg @@ -1,6 +1,6 @@ - + @@ -9,41 +9,41 @@ - - - + + + - - + + tmain() - + tmain() - - + + A - + A - - + + add(int,int) - + add(int,int) - - - - + + + + a() - + diff --git a/docs/test_cases/t20026_sequence.svg b/docs/test_cases/t20026_sequence.svg index 2818cabf..2ea6161e 100644 --- a/docs/test_cases/t20026_sequence.svg +++ b/docs/test_cases/t20026_sequence.svg @@ -1,6 +1,6 @@ - + @@ -9,25 +9,25 @@ - - + + - - + + tmain() - + tmain() - - + + A - + A - - - + + + a() diff --git a/docs/test_cases/t20027_sequence.svg b/docs/test_cases/t20027_sequence.svg index 88d44637..57338836 100644 --- a/docs/test_cases/t20027_sequence.svg +++ b/docs/test_cases/t20027_sequence.svg @@ -1,6 +1,6 @@ - + @@ -9,25 +9,25 @@ - - + + - - + + tmain() - + tmain() - - + + A - + A - - - + + + a() diff --git a/docs/test_cases/t20028_sequence.svg b/docs/test_cases/t20028_sequence.svg index 6a9eb41b..e5711dac 100644 --- a/docs/test_cases/t20028_sequence.svg +++ b/docs/test_cases/t20028_sequence.svg @@ -1,6 +1,6 @@ - + @@ -9,36 +9,36 @@ - - - - - - + + + + + + - - + + tmain() - + tmain() - - + + A - + A - - - - - + + + + + alt - + [ @@ -47,14 +47,14 @@ - + b() - + c() @@ -62,7 +62,7 @@ - + d() diff --git a/docs/test_cases/t20029_sequence.svg b/docs/test_cases/t20029_sequence.svg index 971647a5..eee64e76 100644 --- a/docs/test_cases/t20029_sequence.svg +++ b/docs/test_cases/t20029_sequence.svg @@ -1,6 +1,6 @@ - + @@ -9,69 +9,69 @@ - - - - - - - - - - - + + + + + + + + + + + - - + + tmain() - + tmain() - - + + Encoder<Retrier<ConnectionPool>> - + Encoder<Retrier<ConnectionPool>> - - + + Retrier<ConnectionPool> - + Retrier<ConnectionPool> - - + + ConnectionPool - + ConnectionPool - - + + encode_b64(std::string &&) - + encode_b64(std::string &&) - - - - - - - - + + + + + + + + Establish connection to the remote server synchronously - + connect() - + Repeat for each line in the input stream @@ -81,26 +81,26 @@ alt - + [ send(std::string &&) ] - + Encode the message using Base64 encoding and pass it to the next layer - + encode(std::string &&) - + @@ -110,12 +110,12 @@ - + send(std::string &&) - + Repeat until send() succeeds or retry count is exceeded @@ -125,7 +125,7 @@ alt - + [ diff --git a/docs/test_cases/t20030_sequence.svg b/docs/test_cases/t20030_sequence.svg index 42b0729f..4846be31 100644 --- a/docs/test_cases/t20030_sequence.svg +++ b/docs/test_cases/t20030_sequence.svg @@ -1,6 +1,6 @@ - + @@ -9,81 +9,81 @@ - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - + + tmain(int) - + tmain(int) - - + + magic() - + magic() - - + + A - + A - - + + tmain(bool,int) - + tmain(bool,int) - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - + A(int) - + operator+=(int) - + @@ -92,36 +92,36 @@ - + A() - + create() - + A() - + create() - + operator+=(int) - + @@ -130,12 +130,12 @@ - + operator=(const A &) - + @@ -144,7 +144,7 @@ - + value() const diff --git a/docs/test_cases/t20031_sequence.svg b/docs/test_cases/t20031_sequence.svg index 2781d836..be1cef3e 100644 --- a/docs/test_cases/t20031_sequence.svg +++ b/docs/test_cases/t20031_sequence.svg @@ -1,6 +1,6 @@ - + @@ -9,64 +9,64 @@ - - - - - + + + + + - - + + tmain(int) - + tmain(int) - - + + magic() - + magic() - - + + tmain(bool,int) - + tmain(bool,int) - - + + execute(std::function<int ()>) - + execute(std::function<int ()>) - - + + A - + A - - - - - - + + + + + + - + - + value() const diff --git a/docs/test_cases/t20032_sequence.svg b/docs/test_cases/t20032_sequence.svg index 4a9a8c75..e9d74ecd 100644 --- a/docs/test_cases/t20032_sequence.svg +++ b/docs/test_cases/t20032_sequence.svg @@ -1,6 +1,6 @@ - + @@ -9,47 +9,47 @@ - - - - - - - + + + + + + + - - + + tmain(int,char **) - + tmain(int,char **) - - + + B - + B - - + + A - + A - - - - - - - - + + + + + + + + b(int) - + a1(int) @@ -60,12 +60,12 @@ int - + b(double) - + a2(double) @@ -76,12 +76,12 @@ double - + b(const char *) - + a3(const char *) diff --git a/docs/test_cases/t20033_sequence.svg b/docs/test_cases/t20033_sequence.svg index b3154d76..77afcd41 100644 --- a/docs/test_cases/t20033_sequence.svg +++ b/docs/test_cases/t20033_sequence.svg @@ -1,6 +1,6 @@ - + @@ -9,73 +9,73 @@ - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + - - - - - + + + + + - + - - + + tmain() - + tmain() - - + + A - + A - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + alt [false] [reinterpret_cast<uint64_t>(&a) % 100 == 0ULL] - + a1() @@ -84,7 +84,7 @@ [reinterpret_cast<uint64_t>(&a) % 64 == 0ULL] - + a2() @@ -93,7 +93,7 @@ [a.a2() == 2 && a.a3() == 3] - + [ @@ -102,7 +102,7 @@ - + [ @@ -111,7 +111,7 @@ - + a3() @@ -119,7 +119,7 @@ - + a4() @@ -130,7 +130,7 @@ alt [int i = a.a2(); i != 2] - + [ @@ -139,7 +139,7 @@ - + a3() @@ -150,7 +150,7 @@ loop [int i = 0; i < a.a2(); i++] - + [ @@ -159,14 +159,14 @@ - + a3() - + a3() @@ -177,7 +177,7 @@ loop [retry_count--] - + a2() @@ -188,14 +188,14 @@ loop [retry_count++ < a.a3()] - + a4() - + [ @@ -208,7 +208,7 @@ alt [a.a4() % 6] - + [ @@ -222,7 +222,7 @@ loop [ints] - + a4() diff --git a/docs/test_cases/t20034_sequence.svg b/docs/test_cases/t20034_sequence.svg index 8b74cbf8..0ee71a13 100644 --- a/docs/test_cases/t20034_sequence.svg +++ b/docs/test_cases/t20034_sequence.svg @@ -1,6 +1,6 @@ - + @@ -14,154 +14,154 @@ - - + + D - + D - - + + C - + C - - + + B - + B - - + + A - + A - - + + D::d2()::(lambda t20034.cc:56:18) - + D::d2()::(lambda t20034.cc:56:18) d2() - + c2() - + b2() - + a2() - + d2() - + operator()() const - + a2() - + d2() - + a2() - + d2() - + c4() - + b4() - + b2() - + a2() - + d2() - + c1() - + b1() - + a2() - + d2() - + c3() - + c2() - + b2() - + a2() diff --git a/docs/test_cases/t20035_sequence.svg b/docs/test_cases/t20035_sequence.svg index 72229298..3b48c183 100644 --- a/docs/test_cases/t20035_sequence.svg +++ b/docs/test_cases/t20035_sequence.svg @@ -1,6 +1,6 @@ - + @@ -13,39 +13,39 @@ - - + + tmain(int,char **) - + tmain(int,char **) - - + + a(int) - + a(int) - - + + b1(int) - + b1(int) - - + + c(int) - + c(int) - + - + - + diff --git a/docs/test_cases/t20036_sequence.svg b/docs/test_cases/t20036_sequence.svg index 22578589..39b9b943 100644 --- a/docs/test_cases/t20036_sequence.svg +++ b/docs/test_cases/t20036_sequence.svg @@ -1,6 +1,6 @@ - + @@ -13,131 +13,131 @@ - - + + C - + C - - + + B - + B - - + + A - + A - - + + D - + D c1() - + b1() - + a2() - + d1() - + c2() - + b2() - + a2() - + d3() - + a2() - + c4() - + b2() - + a2() - + c3() - + c2() - + b2() - + a2() - + d2() - + c2() - + b2() - + a2() diff --git a/docs/test_cases/t20037_sequence.svg b/docs/test_cases/t20037_sequence.svg index ee684d27..b9afb707 100644 --- a/docs/test_cases/t20037_sequence.svg +++ b/docs/test_cases/t20037_sequence.svg @@ -1,6 +1,6 @@ - + @@ -9,95 +9,95 @@ - - - - - - - - - - - - + + + + + + + + + + + + - - + + tmain(int,char **) - + tmain(int,char **) - - + + a() - + a() - - + + A - + A - - + + initb() - + initb() - - + + B - + B - - + + c() - + c() - - - - - - - - - - - - - + + + + + + + + + + + + + - + A() - + - + get() - + @@ -105,18 +105,18 @@ - + - + get() - + @@ -124,18 +124,18 @@ - + - + get() - + diff --git a/docs/test_cases/t20038_sequence.svg b/docs/test_cases/t20038_sequence.svg index a92bfccf..a7800c5f 100644 --- a/docs/test_cases/t20038_sequence.svg +++ b/docs/test_cases/t20038_sequence.svg @@ -1,6 +1,6 @@ - + @@ -9,29 +9,29 @@ - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + - + @@ -39,62 +39,62 @@ - - + + tmain() - + tmain() - - + + B - + B - - + + A - + A - - + + add<int>(int,int) - + add<int>(int,int) - - + + add_impl<int>(int,int) - + add_impl<int>(int,int) - - + + add_impl<double>(double,double) - + add_impl<double>(double,double) - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + Nisl purus in mollis nunc sed id semper. Varius vel pharetra vel turpis. Arcu @@ -111,18 +111,18 @@ alt - + Repeat 5 times... loop - + b() - + a() @@ -132,15 +132,15 @@ - + ... or just once - + b() - + a() @@ -149,12 +149,12 @@ - + bbb() - + aaa() @@ -163,21 +163,21 @@ - + bbbb() - + aaaa() - + - + @@ -189,44 +189,44 @@ - + This comment should be rendered only once - + wrap(int) - + What is 2 + 2? - + - + Calling B::bbbbb() - + bbbbb() - + aaaa() - + - + @@ -238,23 +238,23 @@ - + This is a conditional operator alt - + This is a conditional operator - + [ bbb() ] - + aaa() diff --git a/docs/test_cases/t20039_sequence.svg b/docs/test_cases/t20039_sequence.svg index ba1737ec..8fc0ff5e 100644 --- a/docs/test_cases/t20039_sequence.svg +++ b/docs/test_cases/t20039_sequence.svg @@ -1,6 +1,6 @@ - + @@ -9,13 +9,13 @@ - - - - - - - + + + + + + + @@ -23,89 +23,89 @@ - - + + tmain() - + tmain() - - + + R - + R - - + + A<int> - + A<int> - - + + A<int_vec_t> - + A<int_vec_t> - - + + A<string_vec_t> - + A<string_vec_t> - - + + A<int_map_t> - + A<int_map_t> - - + + A<string_map_t> - + A<string_map_t> - - - - - - - - + + + + + + + + run() - + a(int) - + a(int_vec_t) - + a(string_vec_t) - + a(int_map_t) - + a(string_map_t) diff --git a/docs/test_cases/t20040_sequence.svg b/docs/test_cases/t20040_sequence.svg index 5fd6fa81..84c777af 100644 --- a/docs/test_cases/t20040_sequence.svg +++ b/docs/test_cases/t20040_sequence.svg @@ -1,6 +1,6 @@ - + @@ -9,15 +9,15 @@ - - - - - - - - - + + + + + + + + + @@ -26,92 +26,92 @@ - - + + tmain() - + tmain() - - + + print<int,double,std::string>(int,double,std::string) - + print<int,double,std::string>(int,double,std::string) - - + + print<double,std::string>(double,std::string) - + print<double,std::string>(double,std::string) - - + + print<std::string>(std::string) - + print<std::string>(std::string) - - + + print() - + print() - - + + doublePrint<std::string,int>(std::string,int) - + doublePrint<std::string,int>(std::string,int) - - + + print<std::string,int>(std::string,int) - + print<std::string,int>(std::string,int) - - + + print<int>(int) - + print<int>(int) - - - - - - - - - - + + + + + + + + + + - + - + - + - + - + - + - + diff --git a/docs/test_cases/t20041_sequence.svg b/docs/test_cases/t20041_sequence.svg index 598572bd..725c551e 100644 --- a/docs/test_cases/t20041_sequence.svg +++ b/docs/test_cases/t20041_sequence.svg @@ -1,6 +1,6 @@ - + @@ -9,67 +9,67 @@ - - - - - + + + + + - - + + tmain() - + tmain() - - + + A<int,double,std::string> - + A<int,double,std::string> - - + + A<double,std::string> - + A<double,std::string> - - + + A<std::string> - + A<std::string> - - + + A - + A - - - - - - + + + + + + print(int,double,std::string) - + print(double,std::string) - + print(std::string) - + print() diff --git a/docs/test_cases/t20042_sequence.svg b/docs/test_cases/t20042_sequence.svg index 8b3a1fbc..cb545239 100644 --- a/docs/test_cases/t20042_sequence.svg +++ b/docs/test_cases/t20042_sequence.svg @@ -1,6 +1,6 @@ - + @@ -9,55 +9,55 @@ - - - - - + + + + + - - + + tmain() - + tmain() - - + + AHandler - + AHandler - - + + BHandler - + BHandler - - - - - - + + + + + + operator()(A &) const - + handle(A &) const - + operator()(B &) const - + diff --git a/docs/test_cases/t20043_sequence.svg b/docs/test_cases/t20043_sequence.svg index a3e9f637..d9be123a 100644 --- a/docs/test_cases/t20043_sequence.svg +++ b/docs/test_cases/t20043_sequence.svg @@ -1,6 +1,6 @@ - + @@ -9,39 +9,39 @@ - - - + + + - - + + tmain() - + tmain() - - + + D - + D - - + + C - + C - - - - + + + + d() - + c() diff --git a/docs/test_cases/t20044_sequence.svg b/docs/test_cases/t20044_sequence.svg index b1f01f52..3e7b3896 100644 --- a/docs/test_cases/t20044_sequence.svg +++ b/docs/test_cases/t20044_sequence.svg @@ -1,6 +1,6 @@ - + @@ -9,22 +9,22 @@ - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + @@ -32,89 +32,89 @@ - - + + tmain() - + tmain() - - + + R - + R - - + + tmain()::(lambda t20044.cc:74:9) - + tmain()::(lambda t20044.cc:74:9) - - + + A - + A - - + + tmain()::(lambda t20044.cc:84:18) - + tmain()::(lambda t20044.cc:84:18) - - + + detail::expected<int,error> - + detail::expected<int,error> - - + + tmain()::(lambda t20044.cc:90:19) - + tmain()::(lambda t20044.cc:90:19) - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + R((lambda at t20044.cc:74:9) &&) - + operator()() const - + Call to template constructor with callable parameter and lambda expression as argument - + a() const - + operator()() const - + The message to detail2::run() is skipped due to exclude @@ -123,24 +123,24 @@ rendered TODO: Add some marker to highlight that this is not a direct call - + a5() - + a1() const - + expected(int) - + and_then((lambda at t20044.cc:90:19) &&) @@ -148,24 +148,24 @@ alt - + operator()(auto &&) const - + Call to a template method accepting a callable with lambda expression as argument, fully tracked showing method's activity and - + a2(int) const - + expected(int) @@ -176,21 +176,21 @@ - + and_then(result_t (&)(int)) - + and_then(std::function<result_t (int)> &) - + value() const diff --git a/docs/test_cases/t20045_sequence.svg b/docs/test_cases/t20045_sequence.svg index afb259b9..5d69b122 100644 --- a/docs/test_cases/t20045_sequence.svg +++ b/docs/test_cases/t20045_sequence.svg @@ -1,6 +1,6 @@ - + @@ -9,17 +9,17 @@ - - - - - - - - - - - + + + + + + + + + + + @@ -31,99 +31,99 @@ - - + + tmain() - + tmain() - - + + a2(int) - + a2(int) - - + + a1<(lambda at t20045.cc:35:18)>((lambda at t20045.cc:35:18) &&) - + a1<(lambda at t20045.cc:35:18)>((lambda at t20045.cc:35:18) &&) - - + + tmain()::(lambda t20045.cc:35:18) - + tmain()::(lambda t20045.cc:35:18) - - + + a3(int) - + a3(int) - - + + a1<(lambda at t20045.cc:37:18)>((lambda at t20045.cc:37:18) &&) - + a1<(lambda at t20045.cc:37:18)>((lambda at t20045.cc:37:18) &&) - - + + tmain()::(lambda t20045.cc:37:18) - + tmain()::(lambda t20045.cc:37:18) - - + + B - + B - - + + a1<(lambda at t20045.cc:39:18)>((lambda at t20045.cc:39:18) &&) - + a1<(lambda at t20045.cc:39:18)>((lambda at t20045.cc:39:18) &&) - - + + tmain()::(lambda t20045.cc:39:18) - + tmain()::(lambda t20045.cc:39:18) - - + + C - + C - - - - - - - - - - - - + + + + + + + + + + + + - + - + operator()(auto &&) const - + @@ -133,16 +133,16 @@ - + - + operator()(auto &&) const - + b1(int) @@ -153,16 +153,16 @@ - + - + operator()(auto &&) const - + get_x() const diff --git a/docs/test_cases/t20046_sequence.svg b/docs/test_cases/t20046_sequence.svg index b3794830..63669f30 100644 --- a/docs/test_cases/t20046_sequence.svg +++ b/docs/test_cases/t20046_sequence.svg @@ -1,6 +1,6 @@ - + @@ -9,14 +9,14 @@ - - - - - - - - + + + + + + + + @@ -25,73 +25,73 @@ - - + + tmain() - + tmain() - - + + tmain()::(lambda t20046.cc:13:15) - + tmain()::(lambda t20046.cc:13:15) - - + + tmain()::(lambda t20046.cc:13:15)::(lambda t20046.cc:14:16) - + tmain()::(lambda t20046.cc:13:15)::(lambda t20046.cc:14:16) - - + + a2(int) - + a2(int) - - + + a1<(lambda at t20046.cc:19:9)>((lambda at t20046.cc:19:9) &&) - + a1<(lambda at t20046.cc:19:9)>((lambda at t20046.cc:19:9) &&) - - + + tmain()::(lambda t20046.cc:19:9) - + tmain()::(lambda t20046.cc:19:9) - - + + tmain()::(lambda t20046.cc:19:9)::(lambda t20046.cc:19:34) - + tmain()::(lambda t20046.cc:19:9)::(lambda t20046.cc:19:34) - - + + a3(int) - + a3(int) - - - - - - - - - + + + + + + + + + operator()(auto &&) const - + operator()(auto &&) const - + @@ -101,21 +101,21 @@ - + - + operator()(auto &&) const - + operator()(auto &&) const - + diff --git a/docs/test_cases/t20047_sequence.svg b/docs/test_cases/t20047_sequence.svg index 2156521a..d16ffbb2 100644 --- a/docs/test_cases/t20047_sequence.svg +++ b/docs/test_cases/t20047_sequence.svg @@ -1,6 +1,6 @@ - + @@ -9,13 +9,13 @@ - - - - - - - + + + + + + + @@ -23,86 +23,86 @@ - - + + tmain() - + tmain() - - + + a1(int) - + a1(int) - - + + a2(int) - + a2(int) - - + + a3(int) - + a3(int) - - + + a4(int) - + a4(int) - - + + a5(int) - + a5(int) - - + + a6(int) - + a6(int) - - - - - - - - + + + + + + + + - + - + - + - + - + diff --git a/docs/test_cases/t20048_sequence.svg b/docs/test_cases/t20048_sequence.svg index 4a85e0be..ca27ae94 100644 --- a/docs/test_cases/t20048_sequence.svg +++ b/docs/test_cases/t20048_sequence.svg @@ -1,6 +1,6 @@ - + @@ -9,15 +9,15 @@ - - - - - - - - - + + + + + + + + + @@ -27,101 +27,101 @@ - - + + tmain() - + tmain() - - + + a3(int) - + a3(int) - - + + a2(int) - + a2(int) - - + + a1(int) - + a1(int) - - + + tmain()::(lambda t20048.cc:26:11) - + tmain()::(lambda t20048.cc:26:11) - - + + a4(int) - + a4(int) - - + + a6(int) - + a6(int) - - + + a5(int) - + a5(int) - - + + a7(int) - + a7(int) - - - - - - - - - - + + + + + + + + + + - + - + a1() adds `1` to the result of a2() - + - + This lambda calls a4() which adds `4` to it's argument - + operator()(auto &&) const - + @@ -129,29 +129,29 @@ - + a6() adds `1` to its argument - + - + a5() adds `1` to the result of a6() - + - + a7() is called via add std::async - + diff --git a/docs/test_cases/t20049_sequence.svg b/docs/test_cases/t20049_sequence.svg index 72e93d79..d355eedb 100644 --- a/docs/test_cases/t20049_sequence.svg +++ b/docs/test_cases/t20049_sequence.svg @@ -1,6 +1,6 @@ - + @@ -9,71 +9,71 @@ - - - - - - + + + + + + - - + + tmain() - + tmain() - - + + «CUDA Kernel» vector_square_add(float *,float *,float *,int) - + «CUDA Kernel» vector_square_add(float *,float *,float *,int) - - + + «CUDA Device» square(float) - + «CUDA Device» square(float) - - + + «CUDA Device» add<float>(float,float) - + «CUDA Device» add<float>(float,float) - - - - - - + + + + + + loop - + - + - + diff --git a/docs/test_cases/t20050_sequence.svg b/docs/test_cases/t20050_sequence.svg index a363fa8f..f7b0c44c 100644 --- a/docs/test_cases/t20050_sequence.svg +++ b/docs/test_cases/t20050_sequence.svg @@ -1,6 +1,6 @@ - + @@ -9,26 +9,26 @@ - - - - - - + + + + + + - + t20050.cu - + t20050.cu - - - - - + + + + + tmain() - + @@ -39,7 +39,7 @@ loop - + @@ -51,7 +51,7 @@ - + @@ -63,7 +63,7 @@ - + diff --git a/docs/test_cases/t20051_sequence.svg b/docs/test_cases/t20051_sequence.svg index 544c7a04..b9ea34f2 100644 --- a/docs/test_cases/t20051_sequence.svg +++ b/docs/test_cases/t20051_sequence.svg @@ -1,6 +1,6 @@ - + @@ -9,27 +9,27 @@ - - + + - - + + tmain() - + tmain() - - + + «CUDA Kernel» vector_square_add(float *,float *,float *,int) - + «CUDA Kernel» vector_square_add(float *,float *,float *,int) - - - + + + diff --git a/docs/test_cases/t20052.md b/docs/test_cases/t20052.md new file mode 100644 index 00000000..e2f2bd5b --- /dev/null +++ b/docs/test_cases/t20052.md @@ -0,0 +1,693 @@ +# t20052 - Test case for inlining lambda operator calls +## Config +```yaml +diagrams: + t20052_sequence: + type: sequence + glob: + - t20052.cc + include: + namespaces: + - clanguml::t20052 + using_namespace: clanguml::t20052 + inline_lambda_messages: true + from: + - function: "clanguml::t20052::tmain()" +``` +## Source code +File `tests/t20052/t20052.cc` +```cpp +#include +#include +#include +#include +#include +#include + +namespace clanguml { +namespace t20052 { +struct A { + void a() { aa(); } + + void aa() { aaa(); } + + void aaa() { } +}; + +struct B { + void b() { bb(); } + + void bb() { bbb(); } + + void bbb() { } + + void eb() { } +}; + +struct C { + void c() { cc(); } + + void cc() { ccc(); } + + void ccc() { } +}; + +struct D { + int add5(int arg) const { return arg + 5; } +}; + +class E { + std::optional> maybe_b; + std::shared_ptr a; + +public: + template void setup(F &&f) { f(maybe_b); } +}; + +template struct R { + R(F &&f) + : f_{std::move(f)} + { + } + + void r() { f_(); } + + F f_; +}; + +void tmain() +{ + A a; + B b; + C c; + + // The activity shouldn't be marked at the lambda definition, but + // wherever it is actually called... + auto alambda = [&a, &b]() { + a.a(); + b.b(); + }; + + // ...like here + alambda(); + + // There should be no call to B in the sequence diagram as the blambda + // is never called + [[maybe_unused]] auto blambda = [&b]() { b.b(); }; + + // Nested lambdas should also work + auto clambda = [alambda, &c]() { + c.c(); + alambda(); + }; + clambda(); + + R r{[&c]() { c.c(); }}; + + r.r(); + + D d; + + std::vector ints{0, 1, 2, 3, 4}; + std::transform(ints.begin(), ints.end(), ints.begin(), + [&d](auto i) { return d.add5(i); }); + + // TODO: Fix naming function call arguments which are lambdas + // E e; + // + // e.setup([](auto &&arg) mutable { + // // We cannot know here what 'arg' might be + // arg.value()->eb(); + // }); +} +} +} +``` +## Generated PlantUML diagrams +![t20052_sequence](./t20052_sequence.svg "Test case for inlining lambda operator calls") +## Generated Mermaid diagrams +![t20052_sequence](./t20052_sequence_mermaid.svg "Test case for inlining lambda operator calls") +## Generated JSON models +```json +{ + "diagram_type": "sequence", + "name": "t20052_sequence", + "participants": [ + { + "display_name": "tmain()", + "id": "1863374927109937538", + "name": "tmain", + "namespace": "clanguml::t20052", + "source_location": { + "column": 6, + "file": "t20052.cc", + "line": 59, + "translation_unit": "t20052.cc" + }, + "type": "function" + }, + { + "activities": [ + { + "display_name": "a()", + "id": "1226536010860143477", + "name": "a", + "namespace": "", + "source_location": { + "column": 10, + "file": "t20052.cc", + "line": 11, + "translation_unit": "t20052.cc" + }, + "type": "method" + }, + { + "display_name": "aa()", + "id": "152397826074008213", + "name": "aa", + "namespace": "", + "source_location": { + "column": 10, + "file": "t20052.cc", + "line": 13, + "translation_unit": "t20052.cc" + }, + "type": "method" + }, + { + "display_name": "aaa()", + "id": "1337804153305761200", + "name": "aaa", + "namespace": "", + "source_location": { + "column": 10, + "file": "t20052.cc", + "line": 15, + "translation_unit": "t20052.cc" + }, + "type": "method" + } + ], + "display_name": "A", + "id": "1703104288786661165", + "name": "A", + "namespace": "clanguml::t20052", + "source_location": { + "column": 8, + "file": "t20052.cc", + "line": 10, + "translation_unit": "t20052.cc" + }, + "type": "class" + }, + { + "activities": [ + { + "display_name": "b()", + "id": "319515743780574134", + "name": "b", + "namespace": "", + "source_location": { + "column": 10, + "file": "t20052.cc", + "line": 19, + "translation_unit": "t20052.cc" + }, + "type": "method" + }, + { + "display_name": "bb()", + "id": "647068274411777494", + "name": "bb", + "namespace": "", + "source_location": { + "column": 10, + "file": "t20052.cc", + "line": 21, + "translation_unit": "t20052.cc" + }, + "type": "method" + }, + { + "display_name": "bbb()", + "id": "849373810301162421", + "name": "bbb", + "namespace": "", + "source_location": { + "column": 10, + "file": "t20052.cc", + "line": 23, + "translation_unit": "t20052.cc" + }, + "type": "method" + } + ], + "display_name": "B", + "id": "1858368487431426893", + "name": "B", + "namespace": "clanguml::t20052", + "source_location": { + "column": 8, + "file": "t20052.cc", + "line": 18, + "translation_unit": "t20052.cc" + }, + "type": "class" + }, + { + "activities": [ + { + "display_name": "c()", + "id": "286735272236693235", + "name": "c", + "namespace": "", + "source_location": { + "column": 10, + "file": "t20052.cc", + "line": 29, + "translation_unit": "t20052.cc" + }, + "type": "method" + }, + { + "display_name": "cc()", + "id": "927328030188215717", + "name": "cc", + "namespace": "", + "source_location": { + "column": 10, + "file": "t20052.cc", + "line": 31, + "translation_unit": "t20052.cc" + }, + "type": "method" + }, + { + "display_name": "ccc()", + "id": "733299138189220355", + "name": "ccc", + "namespace": "", + "source_location": { + "column": 10, + "file": "t20052.cc", + "line": 33, + "translation_unit": "t20052.cc" + }, + "type": "method" + } + ], + "display_name": "C", + "id": "695917114097253548", + "name": "C", + "namespace": "clanguml::t20052", + "source_location": { + "column": 8, + "file": "t20052.cc", + "line": 28, + "translation_unit": "t20052.cc" + }, + "type": "class" + }, + { + "activities": [ + { + "display_name": "R((lambda at t20052.cc:86:9) &&)", + "id": "1771911385519841377", + "name": "R", + "namespace": "", + "source_location": { + "column": 5, + "file": "t20052.cc", + "line": 49, + "translation_unit": "t20052.cc" + }, + "type": "method" + }, + { + "display_name": "r()", + "id": "1643468997390681958", + "name": "r", + "namespace": "", + "source_location": { + "column": 10, + "file": "t20052.cc", + "line": 54, + "translation_unit": "t20052.cc" + }, + "type": "method" + } + ], + "display_name": "R<(lambda at t20052.cc:86:9)>", + "id": "548336024237507357", + "name": "R", + "namespace": "clanguml::t20052", + "source_location": { + "column": 30, + "file": "t20052.cc", + "line": 48, + "translation_unit": "t20052.cc" + }, + "type": "class" + }, + { + "activities": [ + { + "display_name": "add5(int) const", + "id": "2099569549236534730", + "name": "add5", + "namespace": "", + "source_location": { + "column": 9, + "file": "t20052.cc", + "line": 37, + "translation_unit": "t20052.cc" + }, + "type": "method" + } + ], + "display_name": "D", + "id": "1091266475405978871", + "name": "D", + "namespace": "clanguml::t20052", + "source_location": { + "column": 8, + "file": "t20052.cc", + "line": 36, + "translation_unit": "t20052.cc" + }, + "type": "class" + } + ], + "sequences": [ + { + "messages": [ + { + "from": { + "activity_id": "1863374927109937538", + "participant_id": "1863374927109937538" + }, + "name": "a()", + "return_type": "void", + "scope": "normal", + "source_location": { + "column": 9, + "file": "t20052.cc", + "line": 68, + "translation_unit": "t20052.cc" + }, + "to": { + "activity_id": "1226536010860143477", + "participant_id": "1703104288786661165" + }, + "type": "message" + }, + { + "from": { + "activity_id": "1226536010860143477", + "participant_id": "1703104288786661165" + }, + "name": "aa()", + "return_type": "void", + "scope": "normal", + "source_location": { + "column": 16, + "file": "t20052.cc", + "line": 11, + "translation_unit": "t20052.cc" + }, + "to": { + "activity_id": "152397826074008213", + "participant_id": "1703104288786661165" + }, + "type": "message" + }, + { + "from": { + "activity_id": "152397826074008213", + "participant_id": "1703104288786661165" + }, + "name": "aaa()", + "return_type": "void", + "scope": "normal", + "source_location": { + "column": 17, + "file": "t20052.cc", + "line": 13, + "translation_unit": "t20052.cc" + }, + "to": { + "activity_id": "1337804153305761200", + "participant_id": "1703104288786661165" + }, + "type": "message" + }, + { + "from": { + "activity_id": "1863374927109937538", + "participant_id": "1863374927109937538" + }, + "name": "b()", + "return_type": "void", + "scope": "normal", + "source_location": { + "column": 9, + "file": "t20052.cc", + "line": 69, + "translation_unit": "t20052.cc" + }, + "to": { + "activity_id": "319515743780574134", + "participant_id": "1858368487431426893" + }, + "type": "message" + }, + { + "from": { + "activity_id": "319515743780574134", + "participant_id": "1858368487431426893" + }, + "name": "bb()", + "return_type": "void", + "scope": "normal", + "source_location": { + "column": 16, + "file": "t20052.cc", + "line": 19, + "translation_unit": "t20052.cc" + }, + "to": { + "activity_id": "647068274411777494", + "participant_id": "1858368487431426893" + }, + "type": "message" + }, + { + "from": { + "activity_id": "647068274411777494", + "participant_id": "1858368487431426893" + }, + "name": "bbb()", + "return_type": "void", + "scope": "normal", + "source_location": { + "column": 17, + "file": "t20052.cc", + "line": 21, + "translation_unit": "t20052.cc" + }, + "to": { + "activity_id": "849373810301162421", + "participant_id": "1858368487431426893" + }, + "type": "message" + }, + { + "from": { + "activity_id": "1863374927109937538", + "participant_id": "1863374927109937538" + }, + "name": "c()", + "return_type": "void", + "scope": "normal", + "source_location": { + "column": 9, + "file": "t20052.cc", + "line": 81, + "translation_unit": "t20052.cc" + }, + "to": { + "activity_id": "286735272236693235", + "participant_id": "695917114097253548" + }, + "type": "message" + }, + { + "from": { + "activity_id": "286735272236693235", + "participant_id": "695917114097253548" + }, + "name": "cc()", + "return_type": "void", + "scope": "normal", + "source_location": { + "column": 16, + "file": "t20052.cc", + "line": 29, + "translation_unit": "t20052.cc" + }, + "to": { + "activity_id": "927328030188215717", + "participant_id": "695917114097253548" + }, + "type": "message" + }, + { + "from": { + "activity_id": "927328030188215717", + "participant_id": "695917114097253548" + }, + "name": "ccc()", + "return_type": "void", + "scope": "normal", + "source_location": { + "column": 17, + "file": "t20052.cc", + "line": 31, + "translation_unit": "t20052.cc" + }, + "to": { + "activity_id": "733299138189220355", + "participant_id": "695917114097253548" + }, + "type": "message" + }, + { + "from": { + "activity_id": "1863374927109937538", + "participant_id": "1863374927109937538" + }, + "name": "a()", + "return_type": "void", + "scope": "normal", + "source_location": { + "column": 9, + "file": "t20052.cc", + "line": 68, + "translation_unit": "t20052.cc" + }, + "to": { + "activity_id": "1226536010860143477", + "participant_id": "1703104288786661165" + }, + "type": "message" + }, + { + "from": { + "activity_id": "1863374927109937538", + "participant_id": "1863374927109937538" + }, + "name": "b()", + "return_type": "void", + "scope": "normal", + "source_location": { + "column": 9, + "file": "t20052.cc", + "line": 69, + "translation_unit": "t20052.cc" + }, + "to": { + "activity_id": "319515743780574134", + "participant_id": "1858368487431426893" + }, + "type": "message" + }, + { + "from": { + "activity_id": "1863374927109937538", + "participant_id": "1863374927109937538" + }, + "name": "R((lambda at t20052.cc:86:9) &&)", + "return_type": "void", + "scope": "normal", + "source_location": { + "column": 7, + "file": "t20052.cc", + "line": 86, + "translation_unit": "t20052.cc" + }, + "to": { + "activity_id": "1771911385519841377", + "participant_id": "548336024237507357" + }, + "type": "message" + }, + { + "from": { + "activity_id": "1863374927109937538", + "participant_id": "1863374927109937538" + }, + "name": "r()", + "return_type": "void", + "scope": "normal", + "source_location": { + "column": 5, + "file": "t20052.cc", + "line": 88, + "translation_unit": "t20052.cc" + }, + "to": { + "activity_id": "1643468997390681958", + "participant_id": "548336024237507357" + }, + "type": "message" + }, + { + "from": { + "activity_id": "1643468997390681958", + "participant_id": "548336024237507357" + }, + "name": "c()", + "return_type": "void", + "scope": "normal", + "source_location": { + "column": 18, + "file": "t20052.cc", + "line": 86, + "translation_unit": "t20052.cc" + }, + "to": { + "activity_id": "286735272236693235", + "participant_id": "695917114097253548" + }, + "type": "message" + }, + { + "from": { + "activity_id": "1863374927109937538", + "participant_id": "1863374927109937538" + }, + "name": "add5(int) const", + "return_type": "int", + "scope": "normal", + "source_location": { + "column": 31, + "file": "t20052.cc", + "line": 94, + "translation_unit": "t20052.cc" + }, + "to": { + "activity_id": "2099569549236534730", + "participant_id": "1091266475405978871" + }, + "type": "message" + } + ], + "start_from": { + "id": 1863374927109937538, + "location": "clanguml::t20052::tmain()" + } + } + ], + "using_namespace": "clanguml::t20052" +} +``` diff --git a/docs/test_cases/t20052_sequence.svg b/docs/test_cases/t20052_sequence.svg new file mode 100644 index 00000000..3826b185 --- /dev/null +++ b/docs/test_cases/t20052_sequence.svg @@ -0,0 +1,230 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + tmain() + + tmain() + + + + A + + A + + + + B + + B + + + + C + + C + + + + R<(lambda at t20052.cc:86:9)> + + R<(lambda at t20052.cc:86:9)> + + + + D + + D + + + + + + + + + + + + + + + + + + + + + + + + + + + a() + + + + + + + aa() + + + + + + + aaa() + + + + + b() + + + + + + + bb() + + + + + + + bbb() + + + + + c() + + + + + + + cc() + + + + + + + ccc() + + + + + a() + + + + + + + aa() + + + + + + + aaa() + + + + + b() + + + + + + + bb() + + + + + + + bbb() + + + + + R((lambda at t20052.cc:86:9) &&) + + + + + r() + + + + + c() + + + + + + + cc() + + + + + + + ccc() + + + + + add5(int) const + + + + + diff --git a/docs/test_cases/t20052_sequence_mermaid.svg b/docs/test_cases/t20052_sequence_mermaid.svg new file mode 100644 index 00000000..25cf5ed7 --- /dev/null +++ b/docs/test_cases/t20052_sequence_mermaid.svg @@ -0,0 +1,240 @@ + + + + + D + + + + + + R<(lambda at t20052.cc:86:9)> + + + + + + C + + + + + + B + + + + + + A + + + + + + tmain() + + + + + + + + D + + + + + + + + + R<(lambda at t20052.cc:86:9)> + + + + + + + + + C + + + + + + + + + B + + + + + + + + + A + + + + + + + + + tmain() + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + a() + + aa() + + aaa() + + b() + + bb() + + bbb() + + c() + + cc() + + ccc() + + a() + + aa() + + aaa() + + b() + + bb() + + bbb() + + R((lambda at t20052.cc:86:9) &&) + + r() + + c() + + cc() + + ccc() + + add5(int) const + + ​ + + diff --git a/docs/test_cases/t20053.md b/docs/test_cases/t20053.md new file mode 100644 index 00000000..82b4d6a4 --- /dev/null +++ b/docs/test_cases/t20053.md @@ -0,0 +1,184 @@ +# t20053 - Test case for inlining nested lambda operator calls +## Config +```yaml +diagrams: + t20053_sequence: + type: sequence + glob: + - t20053.cc + include: + namespaces: + - clanguml::t20053 + using_namespace: clanguml::t20053 + inline_lambda_messages: true + from: + - function: "clanguml::t20053::tmain()" +``` +## Source code +File `tests/t20053/t20053.cc` +```cpp +namespace clanguml { +namespace t20053 { +template int a1(F &&f) { return f(42); } + +int a2(int x) { return 2; } + +int a3(int x) { return 3; } + +int tmain() +{ + // Call expression in a nested lambda + auto v1 = [](auto &&arg1) { + return [](auto &&arg2) { return a2(arg2); }(arg1); + }(0); + + // Nested lambda call without any actual calls + auto v2 = [](auto &&arg1) { + return [](auto &&arg2) { return arg2 + 2; }(arg1); + }(0); + + // Call expression in a nested lambda in call expression + auto v4 = a1( + [](auto &&arg1) { return [](auto &&arg2) { return a3(arg2); }(arg1); }); + + return 0; +} +} +} +``` +## Generated PlantUML diagrams +![t20053_sequence](./t20053_sequence.svg "Test case for inlining nested lambda operator calls") +## Generated Mermaid diagrams +![t20053_sequence](./t20053_sequence_mermaid.svg "Test case for inlining nested lambda operator calls") +## Generated JSON models +```json +{ + "diagram_type": "sequence", + "name": "t20053_sequence", + "participants": [ + { + "display_name": "tmain()", + "id": "1989009774042525491", + "name": "tmain", + "namespace": "clanguml::t20053", + "source_location": { + "column": 5, + "file": "t20053.cc", + "line": 9, + "translation_unit": "t20053.cc" + }, + "type": "function" + }, + { + "display_name": "a2(int)", + "id": "670119640253232066", + "name": "a2", + "namespace": "clanguml::t20053", + "source_location": { + "column": 5, + "file": "t20053.cc", + "line": 5, + "translation_unit": "t20053.cc" + }, + "type": "function" + }, + { + "display_name": "a1<(lambda at t20053.cc:23:9)>((lambda at /home/bartek/devel/clang-uml/tests/t20053/t20053.cc:23:9) &&)", + "id": "967684327663938310", + "name": "a1", + "namespace": "clanguml::t20053", + "source_location": { + "column": 27, + "file": "t20053.cc", + "line": 3, + "translation_unit": "t20053.cc" + }, + "type": "function_template" + }, + { + "display_name": "a3(int)", + "id": "1586707721117132930", + "name": "a3", + "namespace": "clanguml::t20053", + "source_location": { + "column": 5, + "file": "t20053.cc", + "line": 7, + "translation_unit": "t20053.cc" + }, + "type": "function" + } + ], + "sequences": [ + { + "messages": [ + { + "from": { + "activity_id": "1989009774042525491", + "participant_id": "1989009774042525491" + }, + "name": "", + "return_type": "int", + "scope": "normal", + "source_location": { + "column": 41, + "file": "t20053.cc", + "line": 13, + "translation_unit": "t20053.cc" + }, + "to": { + "activity_id": "670119640253232066", + "participant_id": "670119640253232066" + }, + "type": "message" + }, + { + "from": { + "activity_id": "1989009774042525491", + "participant_id": "1989009774042525491" + }, + "name": "", + "return_type": "", + "scope": "normal", + "source_location": { + "column": 15, + "file": "t20053.cc", + "line": 22, + "translation_unit": "t20053.cc" + }, + "to": { + "activity_id": "967684327663938310", + "participant_id": "967684327663938310" + }, + "type": "message" + }, + { + "from": { + "activity_id": "967684327663938310", + "participant_id": "967684327663938310" + }, + "name": "", + "return_type": "int", + "scope": "normal", + "source_location": { + "column": 59, + "file": "t20053.cc", + "line": 23, + "translation_unit": "t20053.cc" + }, + "to": { + "activity_id": "1586707721117132930", + "participant_id": "1586707721117132930" + }, + "type": "message" + } + ], + "start_from": { + "id": 1989009774042525491, + "location": "clanguml::t20053::tmain()" + } + } + ], + "using_namespace": "clanguml::t20053" +} +``` diff --git a/docs/test_cases/t20053_sequence.svg b/docs/test_cases/t20053_sequence.svg new file mode 100644 index 00000000..eead98cd --- /dev/null +++ b/docs/test_cases/t20053_sequence.svg @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + tmain() + + tmain() + + + + a2(int) + + a2(int) + + + + a1<(lambda at t20053.cc:23:9)>((lambda at t20053.cc:23:9) &&) + + a1<(lambda at t20053.cc:23:9)>((lambda at t20053.cc:23:9) &&) + + + + a3(int) + + a3(int) + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/test_cases/t20053_sequence_mermaid.svg b/docs/test_cases/t20053_sequence_mermaid.svg new file mode 100644 index 00000000..b6a57479 --- /dev/null +++ b/docs/test_cases/t20053_sequence_mermaid.svg @@ -0,0 +1,124 @@ + + + + + a3(int) + + + + + + a1<(lambda at t20053.cc:23:9)>((lambda at t20053.cc:23:9) &&) + + + + + + a2(int) + + + + + + tmain() + + + + + + + + a3(int) + + + + + + + + + a1<(lambda at t20053.cc:23:9)>((lambda at t20053.cc:23:9) &&) + + + + + + + + + a2(int) + + + + + + + + + tmain() + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ​ + + ​ + + ​ + + ​ + + ​ + + ​ + + diff --git a/docs/test_cases/t30001_package.svg b/docs/test_cases/t30001_package.svg index d8a980e8..53050ad5 100644 --- a/docs/test_cases/t30001_package.svg +++ b/docs/test_cases/t30001_package.svg @@ -1,6 +1,6 @@ - + @@ -10,63 +10,63 @@ Basic package diagram example - - + + A - - + + AA - - + + B - - + + AA - - + + AAA - - + + BBB - - + + BB - - + + AAA - - + + BBB - - + + BB - + A AAA note... - + This is namespace AA in namespace A - + This is namespace AA in namespace B diff --git a/docs/test_cases/t30002_package.svg b/docs/test_cases/t30002_package.svg index b4b5b3b0..8f99c505 100644 --- a/docs/test_cases/t30002_package.svg +++ b/docs/test_cases/t30002_package.svg @@ -1,6 +1,6 @@ - + @@ -9,118 +9,118 @@ - - + + A - - + + AA - - + + B - - + + BB - - + + A1 - - + + A2 - - + + A3 - - + + A4 - - + + A5 - - + + A6 - - + + A7 - - + + A8 - - + + A9 - - + + A10 - - + + A11 - - + + A12 - - + + A13 - - + + A14 - - + + A15 - - + + A16 - - + + A17 - - + + A18 - - + + BBB diff --git a/docs/test_cases/t30003_package.svg b/docs/test_cases/t30003_package.svg index 838f1950..b2f03299 100644 --- a/docs/test_cases/t30003_package.svg +++ b/docs/test_cases/t30003_package.svg @@ -1,6 +1,6 @@ - + @@ -9,35 +9,35 @@ - - + + ns1 - - + + ns3 «deprecated» - - + + ns1 - - + + ns2_v1_0_0 - - + + ns2_v0_9_0 «deprecated» - - + + ns2 diff --git a/docs/test_cases/t30004_package.svg b/docs/test_cases/t30004_package.svg index 75456f8b..b794b216 100644 --- a/docs/test_cases/t30004_package.svg +++ b/docs/test_cases/t30004_package.svg @@ -1,6 +1,6 @@ - + @@ -9,40 +9,40 @@ - - + + A - + Package AAA. - + Package BBB. - + CCCC package note. - + We skipped DDD. - - + + AAA - - + + BBB - - + + CCC - - + + EEE diff --git a/docs/test_cases/t30005_package.svg b/docs/test_cases/t30005_package.svg index a72aac7b..0600da9f 100644 --- a/docs/test_cases/t30005_package.svg +++ b/docs/test_cases/t30005_package.svg @@ -1,6 +1,6 @@ - + @@ -9,48 +9,48 @@ - - + + A - - + + AA - - + + B - - + + BB - - + + C - - + + CC - - + + AAA - - + + BBB - - + + CCC diff --git a/docs/test_cases/t30006_package.svg b/docs/test_cases/t30006_package.svg index 07015c09..259ddb80 100644 --- a/docs/test_cases/t30006_package.svg +++ b/docs/test_cases/t30006_package.svg @@ -1,6 +1,6 @@ - + @@ -9,22 +9,22 @@ - - + + B - - + + A - - + + C - + Top A note. diff --git a/docs/test_cases/t30007_package.svg b/docs/test_cases/t30007_package.svg index 9175fca4..4b1848b2 100644 --- a/docs/test_cases/t30007_package.svg +++ b/docs/test_cases/t30007_package.svg @@ -1,6 +1,6 @@ - + @@ -9,27 +9,27 @@ - - + + A - - + + B - - + + AA - - + + C - + Compare layout with t30006. diff --git a/docs/test_cases/t30008_package.svg b/docs/test_cases/t30008_package.svg index 23f4a5c2..369a813a 100644 --- a/docs/test_cases/t30008_package.svg +++ b/docs/test_cases/t30008_package.svg @@ -1,6 +1,6 @@ - + @@ -9,43 +9,43 @@ - - + + dependants - - + + dependencies - - + + A - - + + B - - + + C - - + + D - - + + E - - + + F diff --git a/docs/test_cases/t30009_package.svg b/docs/test_cases/t30009_package.svg index 3feec82e..d719a3c3 100644 --- a/docs/test_cases/t30009_package.svg +++ b/docs/test_cases/t30009_package.svg @@ -1,6 +1,6 @@ - + @@ -9,53 +9,53 @@ - - + + One - - + + Two - - + + B - - + + D - - + + A - - + + C - - + + A - - + + B - - + + C - - + + D diff --git a/docs/test_cases/t30010_package.svg b/docs/test_cases/t30010_package.svg index 10a4cce7..14ddc2dd 100644 --- a/docs/test_cases/t30010_package.svg +++ b/docs/test_cases/t30010_package.svg @@ -1,6 +1,6 @@ - + @@ -9,31 +9,31 @@ - + libraries - - + + lib1 - - + + lib2 - - + + lib3 - - + + lib4 - - + + app diff --git a/docs/test_cases/t30011_package.svg b/docs/test_cases/t30011_package.svg index 4291dc8f..d04a46ac 100644 --- a/docs/test_cases/t30011_package.svg +++ b/docs/test_cases/t30011_package.svg @@ -1,6 +1,6 @@ - + @@ -9,31 +9,31 @@ - + libraries - - + + lib1 - - + + lib2 - - + + lib3 - - + + lib4 - - + + app diff --git a/docs/test_cases/t30012_package.svg b/docs/test_cases/t30012_package.svg index ad256d1f..37c64376 100644 --- a/docs/test_cases/t30012_package.svg +++ b/docs/test_cases/t30012_package.svg @@ -1,6 +1,6 @@ - + @@ -9,26 +9,26 @@ - + app - - + + lib1 - - + + mod1 - - + + mod2 - - + + lib2 diff --git a/docs/test_cases/t30013_package.svg b/docs/test_cases/t30013_package.svg index 911ede94..c35ab983 100644 --- a/docs/test_cases/t30013_package.svg +++ b/docs/test_cases/t30013_package.svg @@ -1,6 +1,6 @@ - + @@ -9,98 +9,98 @@ - - + + mod1 - - + + mod2 - - + + mod3 - - + + mod4 - - + + mod5 - - + + mod6 - - + + mod7 - - + + mod8 - - + + mod9 - - + + mod10 - - + + mod11 - - + + mod12 - - + + mod13 - - + + mod14 - - + + mod15 - - + + mod16 - - + + mod17 - - + + mod18 - - + + app diff --git a/docs/test_cases/t30014_package.svg b/docs/test_cases/t30014_package.svg index 16d1fa34..ef007360 100644 --- a/docs/test_cases/t30014_package.svg +++ b/docs/test_cases/t30014_package.svg @@ -1,6 +1,6 @@ - + @@ -9,21 +9,21 @@ - + app - - + + :lib1 - - + + mod1 - - + + :lib2 diff --git a/docs/test_cases/t30015_package.svg b/docs/test_cases/t30015_package.svg index 9d43f912..d06df9e8 100644 --- a/docs/test_cases/t30015_package.svg +++ b/docs/test_cases/t30015_package.svg @@ -1,6 +1,6 @@ - + @@ -9,101 +9,101 @@ - + lib1 - - + + :mod1 - - + + :mod2 - - + + :mod3 - - + + :mod4 - - + + :mod5 - - + + :mod6 - - + + :mod7 - - + + :mod8 - - + + :mod9 - - + + :mod10 - - + + :mod11 - - + + :mod12 - - + + :mod13 - - + + :mod14 - - + + :mod15 - - + + :mod16 - - + + :mod17 - - + + :mod18 - - + + app diff --git a/docs/test_cases/t40001_include.svg b/docs/test_cases/t40001_include.svg index e0fa34aa..76bc9574 100644 --- a/docs/test_cases/t40001_include.svg +++ b/docs/test_cases/t40001_include.svg @@ -1,6 +1,6 @@ - + @@ -10,41 +10,41 @@ Basic include diagram example - + src - + include - + lib1 - - + + t40001.cc - - + + t40001_include1.h - + lib1.h - + string - + vector - + yaml-cpp/yaml.h - + This is a lib1 include dir - + This is a t40001_include1.h include file diff --git a/docs/test_cases/t40001_include_mermaid.svg b/docs/test_cases/t40001_include_mermaid.svg index 76f4aa75..53ff512c 100644 --- a/docs/test_cases/t40001_include_mermaid.svg +++ b/docs/test_cases/t40001_include_mermaid.svg @@ -138,7 +138,7 @@ - + @@ -151,7 +151,7 @@ - + @@ -164,7 +164,7 @@ - + diff --git a/docs/test_cases/t40002_include.svg b/docs/test_cases/t40002_include.svg index 241ec046..3b47bd12 100644 --- a/docs/test_cases/t40002_include.svg +++ b/docs/test_cases/t40002_include.svg @@ -1,6 +1,6 @@ - + @@ -9,46 +9,46 @@ - + src - + lib1 - + lib2 - + include - + lib1 - + lib2 - - + + t40002.cc - - + + lib1.cc - - + + lib2.cc - - + + lib1.h - - + + lib2.h diff --git a/docs/test_cases/t40002_include_mermaid.svg b/docs/test_cases/t40002_include_mermaid.svg index 5a95a8d0..cca6ab80 100644 --- a/docs/test_cases/t40002_include_mermaid.svg +++ b/docs/test_cases/t40002_include_mermaid.svg @@ -137,7 +137,7 @@ - + @@ -150,7 +150,7 @@ - + @@ -163,7 +163,7 @@ - + @@ -176,7 +176,7 @@ - + @@ -189,7 +189,7 @@ - + diff --git a/docs/test_cases/t40003_include.svg b/docs/test_cases/t40003_include.svg index aeb77ed6..53cd84ca 100644 --- a/docs/test_cases/t40003_include.svg +++ b/docs/test_cases/t40003_include.svg @@ -1,6 +1,6 @@ - + @@ -9,62 +9,62 @@ - + src - + dependants - + dependencies - + include - + dependants - + dependencies - - + + t1.cc - - + + t2.cc - - + + t3.h - - + + t2.h - + t1.h - - + + t3.h - - + + t2.h - + t1.h - - + + t5.h diff --git a/docs/test_cases/t40003_include_mermaid.svg b/docs/test_cases/t40003_include_mermaid.svg index ddfc4051..7dc442fc 100644 --- a/docs/test_cases/t40003_include_mermaid.svg +++ b/docs/test_cases/t40003_include_mermaid.svg @@ -167,7 +167,7 @@ - + @@ -180,7 +180,7 @@ - + @@ -193,7 +193,7 @@ - + @@ -206,7 +206,7 @@ - + @@ -219,7 +219,7 @@ - + @@ -232,7 +232,7 @@ - + @@ -245,7 +245,7 @@ - + @@ -258,7 +258,7 @@ - + @@ -271,7 +271,7 @@ - +