diff --git a/CHANGELOG.md b/CHANGELOG.md index e9c147a8..dbe039d8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,7 @@ # CHANGELOG - + + * Enabled manual call expression injection through comments (#196) + * Added support for generating sequence diagram notes from comments (#194) * Added Bash and Zsh autocomplete scripts (#193) * Updated `clang-uml` to work with LLVM 17 (#190) * Fixed handling of compilation databases with relative header paths (#189) diff --git a/README.md b/README.md index 27a7dab9..acbf3b06 100644 --- a/README.md +++ b/README.md @@ -42,7 +42,7 @@ Main features supported so far include: * Support for plain C99/C11 code (struct and units relationships) - [_example_](docs/test_cases/t00057.md) * C++20 concept constraints - [_example_](docs/test_cases/t00059.md) * **Sequence diagram generation** - * Generation of sequence diagram from specific method or function - [_example_](docs/test_cases/t00002.md) + * Generation of sequence diagram from specific method or function - [_example_](docs/test_cases/t20001.md) * Generation of loop and conditional statements - [_example_](docs/test_cases/t20021.md) * Generation of switch statements - [_example_](docs/test_cases/t20024.md) * Generation of try/catch blocks - [_example_](docs/test_cases/t20023.md) @@ -240,7 +240,10 @@ template class Encoder : public T { public: bool send(std::string &&msg) { - return T::send(std::move(encode(std::move(msg)))); + return T::send(std::move( + // Encode the message using Base64 encoding and pass it to the next + // layer + encode(std::move(msg)))); } protected: @@ -255,6 +258,7 @@ public: int retryCount = 5; + // Repeat until send() succeeds or retry count is exceeded while (retryCount--) { if (T::send(buffer)) return true; @@ -284,8 +288,10 @@ int tmain() { auto pool = std::make_shared>>(); + // Establish connection to the remote server synchronously pool->connect(); + // Repeat for each line in the input stream for (std::string line; std::getline(std::cin, line);) { if (!pool->send(std::move(line))) break; diff --git a/docs/sequence_diagrams.md b/docs/sequence_diagrams.md index 9f32dff9..60b150c6 100644 --- a/docs/sequence_diagrams.md +++ b/docs/sequence_diagrams.md @@ -9,6 +9,8 @@ * [Customizing participants order](#customizing-participants-order) * [Generating return types](#generating-return-types) * [Generating condition statements](#generating-condition-statements) +* [Injecting call expressions manually through comments](#injecting-call-expressions-manually-through-comments) +* [Including comments in sequence diagrams](#including-comments-in-sequence-diagrams) @@ -315,3 +317,59 @@ generate_condition_statements: true An example of a diagram with this feature enabled is presented below: ![extension](test_cases/t20033_sequence.svg) +## Injecting call expressions manually through comments +In some cases, `clang-uml` is not yet able to discover a call expression target +in some line of code. This can include passing function or method address to +some executor (e.g. thread), async calls etc. + +However, a call expression can be injected manually through a comment +directive `\uml{note CALLEE}`, when placed just before such line of code, for +example: + +```cpp + // \uml{call clanguml::t20038::B::bbb()} + auto bbb_future = std::async(std::launch::deferred, &B::bbb, b); +``` + +also see the [t20038](test_cases/t20038.md) test case. + +Please note that the callee must have fully qualified name including complete +namespace. + +In order to enable this, the `.clang-uml` must contain the following option: + +```yaml +add_compile_flags: + - -fparse-all-comments +``` + +otherwise Clang will skip these comments during AST traversal. + +## Including comments in sequence diagrams +`clang-uml` can add code comments placed directly before are next to a call +expression as notes in the diagram (see for instance +[t20038](test_cases/t20038_sequence.svg)). + +This however is not enabled by default. In order to enable this feature it is +necessary to first of all force Clang to parse all comments in the source +code by adding the following compile flag at the top of `.clang-uml`: + +```yaml +add_compile_flags: + - -fparse-all-comments +``` + +or adding it to the `compile_commands.json` database somehow directly. + +Another option needed to generate these comments in the diagram is to set + +```yaml + generate_message_comments: true +``` + +for each sequence diagram, which should include these comments. + +In case only selected messages should have some specific comments, instead +of enabling the `generate_message_comments` option, it is possible to use +`\uml{note TEXT}` directive in the comment above the expression, see +[t20001](test_cases/t20001_sequence.svg). diff --git a/docs/test_cases.md b/docs/test_cases.md index 36a340a7..d5f06d6a 100644 --- a/docs/test_cases.md +++ b/docs/test_cases.md @@ -110,6 +110,7 @@ * [t20035](./test_cases/t20035.md) - from_to sequence diagram test case with free functions * [t20036](./test_cases/t20036.md) - Test case for rendering all call chains leading to an activity (to) * [t20037](./test_cases/t20037.md) - Test case checking if activities in static variable declarations appear only once + * [t20038](./test_cases/t20038.md) - Sequence diagram comment decorator test case ## 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.md b/docs/test_cases/t00002.md index c782d761..bcfa9d16 100644 --- a/docs/test_cases/t00002.md +++ b/docs/test_cases/t00002.md @@ -6,6 +6,7 @@ output_directory: diagrams diagrams: t00002_class: type: class + title: Basic class diagram example glob: - ../../tests/t00002/t00002.cc comment_parser: clang @@ -625,7 +626,7 @@ private: } ], "metadata": { - "clang_uml_version": "0.4.0-2-g4ab0d29", + "clang_uml_version": "0.4.0-32-g701b2c5", "llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)", "schema_version": 1 }, @@ -682,6 +683,7 @@ private: "type": "extension" } ], + "title": "Basic class diagram example", "using_namespace": "clanguml::t00002" } ``` diff --git a/docs/test_cases/t00002_class.svg b/docs/test_cases/t00002_class.svg index 32f6a2a0..5d87a1fa 100644 --- a/docs/test_cases/t00002_class.svg +++ b/docs/test_cases/t00002_class.svg @@ -1,6 +1,6 @@ - + - + @@ -9,148 +9,149 @@ - - - - - A - + Basic class diagram example + + + + + A + - - - + + + - - foo_a() = 0 : void + + foo_a() = 0 : void - - - + + + - - foo_c() = 0 : void + + foo_c() = 0 : void - - - - - - B - + + + + + + B + - - - + + + - - foo_a() : void + + foo_a() : void - - - - - - C - + + + + + + C + - - - + + + - - foo_c() : void + + foo_c() : void - - - - - - D - + + + + + + D + - - - + + + - - foo_a() : void + + foo_a() : void - - - + + + - - foo_c() : void + + foo_c() : void - - - - + + + + - - as : std::vector<A *> + + as : std::vector<A *> - - - - - E - + + + + + E + - - - + + + - - foo_a() : void + + foo_a() : void - - - + + + - - foo_c() : void + + foo_c() : void - - - - + + + + - - as : std::vector<A *> + + as : std::vector<A *> - - - This is class A - - - This is class B - - - - This is class D - which is a little like B - and a little like C - - - - - - - - - as - - - - - - - - as - - - - + + + This is class A + + + This is class B + + + + This is class D + which is a little like B + and a little like C + + + + + + + + + as + + + + + + + + as + + + + diff --git a/docs/test_cases/t00002_class_mermaid.svg b/docs/test_cases/t00002_class_mermaid.svg index 7c3e375a..30100ce9 100644 --- a/docs/test_cases/t00002_class_mermaid.svg +++ b/docs/test_cases/t00002_class_mermaid.svg @@ -1,4 +1,5 @@ - + + Basic class diagram example @@ -168,7 +169,7 @@ - + @@ -197,7 +198,7 @@ - + @@ -221,7 +222,7 @@ - + @@ -245,7 +246,7 @@ - + @@ -279,7 +280,7 @@ - + @@ -349,4 +350,5 @@ + Basic class diagram example diff --git a/docs/test_cases/t00003.md b/docs/test_cases/t00003.md index 022f3372..94190630 100644 --- a/docs/test_cases/t00003.md +++ b/docs/test_cases/t00003.md @@ -833,7 +833,7 @@ int A::static_int = 1; } ], "metadata": { - "clang_uml_version": "0.4.0-2-g4ab0d29", + "clang_uml_version": "0.4.0-32-g701b2c5", "llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)", "schema_version": 1 }, diff --git a/docs/test_cases/t00003_class.svg b/docs/test_cases/t00003_class.svg index 01a92258..777ab390 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 b44d7840..e2c3b74b 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.md b/docs/test_cases/t00004.md index e783ad7c..0ce49d94 100644 --- a/docs/test_cases/t00004.md +++ b/docs/test_cases/t00004.md @@ -530,7 +530,7 @@ public: } ], "metadata": { - "clang_uml_version": "0.4.0-2-g4ab0d29", + "clang_uml_version": "0.4.0-32-g701b2c5", "llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)", "schema_version": 1 }, diff --git a/docs/test_cases/t00004_class.svg b/docs/test_cases/t00004_class.svg index 2d81c550..e4efaac0 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 93b0ad43..1be5137b 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.md b/docs/test_cases/t00005.md index a1c7e736..f4476e3e 100644 --- a/docs/test_cases/t00005.md +++ b/docs/test_cases/t00005.md @@ -520,7 +520,7 @@ public: } ], "metadata": { - "clang_uml_version": "0.4.0-2-g4ab0d29", + "clang_uml_version": "0.4.0-32-g701b2c5", "llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)", "schema_version": 1 }, diff --git a/docs/test_cases/t00005_class.svg b/docs/test_cases/t00005_class.svg index a3d434f3..e5022fae 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 32245045..7ef2c1a3 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.md b/docs/test_cases/t00006.md index deac5017..48d075d2 100644 --- a/docs/test_cases/t00006.md +++ b/docs/test_cases/t00006.md @@ -701,7 +701,7 @@ public: } ], "metadata": { - "clang_uml_version": "0.4.0-2-g4ab0d29", + "clang_uml_version": "0.4.0-32-g701b2c5", "llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)", "schema_version": 1 }, diff --git a/docs/test_cases/t00006_class.svg b/docs/test_cases/t00006_class.svg index 9cf70779..98d35dfc 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 18fccdae..8b677cde 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.md b/docs/test_cases/t00007.md index cee49c41..09be1b6d 100644 --- a/docs/test_cases/t00007.md +++ b/docs/test_cases/t00007.md @@ -174,7 +174,7 @@ public: } ], "metadata": { - "clang_uml_version": "0.4.0-2-g4ab0d29", + "clang_uml_version": "0.4.0-32-g701b2c5", "llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)", "schema_version": 1 }, diff --git a/docs/test_cases/t00007_class.svg b/docs/test_cases/t00007_class.svg index 0d179b73..1ff9e602 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 9b7511aa..16000e50 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.md b/docs/test_cases/t00008.md index 2817a099..a48b5e53 100644 --- a/docs/test_cases/t00008.md +++ b/docs/test_cases/t00008.md @@ -563,7 +563,7 @@ template <> struct E::nested_template { } ], "metadata": { - "clang_uml_version": "0.4.0-2-g4ab0d29", + "clang_uml_version": "0.4.0-32-g701b2c5", "llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)", "schema_version": 1 }, diff --git a/docs/test_cases/t00008_class.svg b/docs/test_cases/t00008_class.svg index 67f01c0e..3cf53185 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 78eea4c1..9dc1c792 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.md b/docs/test_cases/t00009.md index 01b675cc..9910d9f9 100644 --- a/docs/test_cases/t00009.md +++ b/docs/test_cases/t00009.md @@ -245,7 +245,7 @@ public: } ], "metadata": { - "clang_uml_version": "0.4.0-2-g4ab0d29", + "clang_uml_version": "0.4.0-32-g701b2c5", "llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)", "schema_version": 1 }, diff --git a/docs/test_cases/t00009_class.svg b/docs/test_cases/t00009_class.svg index 0e079815..36f089db 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 776e09ec..6bd342bf 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.md b/docs/test_cases/t00010.md index 7616de6c..d7214cde 100644 --- a/docs/test_cases/t00010.md +++ b/docs/test_cases/t00010.md @@ -255,7 +255,7 @@ public: } ], "metadata": { - "clang_uml_version": "0.4.0-2-g4ab0d29", + "clang_uml_version": "0.4.0-32-g701b2c5", "llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)", "schema_version": 1 }, diff --git a/docs/test_cases/t00010_class.svg b/docs/test_cases/t00010_class.svg index bf4daeca..1b6c9174 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 1cde20ba..5c104bff 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.md b/docs/test_cases/t00011.md index 65efed5d..c2c7d5ba 100644 --- a/docs/test_cases/t00011.md +++ b/docs/test_cases/t00011.md @@ -214,7 +214,7 @@ public: } ], "metadata": { - "clang_uml_version": "0.4.0-2-g4ab0d29", + "clang_uml_version": "0.4.0-32-g701b2c5", "llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)", "schema_version": 1 }, diff --git a/docs/test_cases/t00011_class.svg b/docs/test_cases/t00011_class.svg index 61834857..442efcb1 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 c7a04b25..fbb3d42d 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.md b/docs/test_cases/t00012.md index b66e75a3..b36a83ba 100644 --- a/docs/test_cases/t00012.md +++ b/docs/test_cases/t00012.md @@ -556,7 +556,7 @@ class R { } ], "metadata": { - "clang_uml_version": "0.4.0-2-g4ab0d29", + "clang_uml_version": "0.4.0-32-g701b2c5", "llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)", "schema_version": 1 }, diff --git a/docs/test_cases/t00012_class.svg b/docs/test_cases/t00012_class.svg index e13cabd0..f556dff5 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 cab4be4b..a162783e 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.md b/docs/test_cases/t00013.md index ee99d6d3..ba294281 100644 --- a/docs/test_cases/t00013.md +++ b/docs/test_cases/t00013.md @@ -907,7 +907,7 @@ private: } ], "metadata": { - "clang_uml_version": "0.4.0-2-g4ab0d29", + "clang_uml_version": "0.4.0-32-g701b2c5", "llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)", "schema_version": 1 }, diff --git a/docs/test_cases/t00013_class.svg b/docs/test_cases/t00013_class.svg index d7cf714e..ae0a48dd 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 40e56e13..8d4eae73 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.md b/docs/test_cases/t00014.md index 35e5b021..ded42296 100644 --- a/docs/test_cases/t00014.md +++ b/docs/test_cases/t00014.md @@ -974,7 +974,7 @@ public: } ], "metadata": { - "clang_uml_version": "0.4.0-2-g4ab0d29", + "clang_uml_version": "0.4.0-32-g701b2c5", "llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)", "schema_version": 1 }, diff --git a/docs/test_cases/t00014_class.svg b/docs/test_cases/t00014_class.svg index e140ab7b..d9067a3a 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,8 +178,8 @@ - - + + A @@ -188,8 +188,8 @@ - - + + A @@ -198,8 +198,8 @@ - - + + R @@ -208,116 +208,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 4f9d9310..b3436155 100644 --- a/docs/test_cases/t00014_class_mermaid.svg +++ b/docs/test_cases/t00014_class_mermaid.svg @@ -450,7 +450,7 @@ - + @@ -479,7 +479,7 @@ - + @@ -503,7 +503,7 @@ - + @@ -522,7 +522,7 @@ - + @@ -541,7 +541,7 @@ - + @@ -560,7 +560,7 @@ - + @@ -579,7 +579,7 @@ - + @@ -598,7 +598,7 @@ - + @@ -617,7 +617,7 @@ - + @@ -636,7 +636,7 @@ - + @@ -655,7 +655,7 @@ - + @@ -674,7 +674,7 @@ - + @@ -693,7 +693,7 @@ - + @@ -712,7 +712,7 @@ - + @@ -731,7 +731,7 @@ - + @@ -750,7 +750,7 @@ - + @@ -769,7 +769,7 @@ - + @@ -788,7 +788,7 @@ - + diff --git a/docs/test_cases/t00015.md b/docs/test_cases/t00015.md index 236023b3..31171d1c 100644 --- a/docs/test_cases/t00015.md +++ b/docs/test_cases/t00015.md @@ -189,7 +189,7 @@ class B : public ns1::ns2::Anon { }; } ], "metadata": { - "clang_uml_version": "0.4.0-2-g4ab0d29", + "clang_uml_version": "0.4.0-32-g701b2c5", "llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)", "schema_version": 1 }, diff --git a/docs/test_cases/t00015_class.svg b/docs/test_cases/t00015_class.svg index b0a70094..100f3cd9 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 c025606f..97cc9dcc 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.md b/docs/test_cases/t00016.md index faa2ae63..ee30f1e4 100644 --- a/docs/test_cases/t00016.md +++ b/docs/test_cases/t00016.md @@ -275,7 +275,7 @@ template <> struct is_numeric { } ], "metadata": { - "clang_uml_version": "0.4.0-2-g4ab0d29", + "clang_uml_version": "0.4.0-32-g701b2c5", "llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)", "schema_version": 1 }, diff --git a/docs/test_cases/t00016_class.svg b/docs/test_cases/t00016_class.svg index 759e4b4c..700de5ab 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 1b38d86e..fc873fc6 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.md b/docs/test_cases/t00017.md index 46e05ad9..248dd0ad 100644 --- a/docs/test_cases/t00017.md +++ b/docs/test_cases/t00017.md @@ -579,7 +579,7 @@ private: } ], "metadata": { - "clang_uml_version": "0.4.0-2-g4ab0d29", + "clang_uml_version": "0.4.0-32-g701b2c5", "llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)", "schema_version": 1 }, diff --git a/docs/test_cases/t00017_class.svg b/docs/test_cases/t00017_class.svg index 50d06ada..61abd1cc 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 6b6cfac1..bf322514 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.md b/docs/test_cases/t00018.md index 5799e4ed..97fb4634 100644 --- a/docs/test_cases/t00018.md +++ b/docs/test_cases/t00018.md @@ -556,7 +556,7 @@ void widget::draw(const clanguml::t00018::widget &w) } ], "metadata": { - "clang_uml_version": "0.4.0-2-g4ab0d29", + "clang_uml_version": "0.4.0-32-g701b2c5", "llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)", "schema_version": 1 }, diff --git a/docs/test_cases/t00018_class.svg b/docs/test_cases/t00018_class.svg index 8e545a2e..6ad813b5 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 ce7c99d4..2befa6ab 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.md b/docs/test_cases/t00019.md index b6800226..dc2a36fc 100644 --- a/docs/test_cases/t00019.md +++ b/docs/test_cases/t00019.md @@ -739,7 +739,7 @@ class Base { } ], "metadata": { - "clang_uml_version": "0.4.0-2-g4ab0d29", + "clang_uml_version": "0.4.0-32-g701b2c5", "llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)", "schema_version": 1 }, diff --git a/docs/test_cases/t00019_class.svg b/docs/test_cases/t00019_class.svg index 3ec72012..42d3486a 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,51 +96,51 @@ LowerLayer - + - + m1() : int - + - + m1_calls() const : int - + - + m2() : std::string - + - + m2_calls() const : int - + - + m_m1_calls : int - + - + m_m2_calls : int - - + + Layer3 @@ -149,8 +149,8 @@ - - + + Layer2 @@ -159,8 +159,8 @@ - - + + Layer1 @@ -169,19 +169,19 @@ - - + + 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 d8a39615..8e518d5a 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.md b/docs/test_cases/t00020.md index 31f91412..4a93a5f7 100644 --- a/docs/test_cases/t00020.md +++ b/docs/test_cases/t00020.md @@ -736,7 +736,7 @@ public: } ], "metadata": { - "clang_uml_version": "0.4.0-2-g4ab0d29", + "clang_uml_version": "0.4.0-32-g701b2c5", "llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)", "schema_version": 1 }, diff --git a/docs/test_cases/t00020_class.svg b/docs/test_cases/t00020_class.svg index e194070c..6f77cce7 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 b3e64348..25ae1f1e 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.md b/docs/test_cases/t00021.md index e576f327..7622e6d0 100644 --- a/docs/test_cases/t00021.md +++ b/docs/test_cases/t00021.md @@ -657,7 +657,7 @@ public: } ], "metadata": { - "clang_uml_version": "0.4.0-2-g4ab0d29", + "clang_uml_version": "0.4.0-32-g701b2c5", "llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)", "schema_version": 1 }, diff --git a/docs/test_cases/t00021_class.svg b/docs/test_cases/t00021_class.svg index 866cda11..25d3bcf1 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 a60549cd..e332d5dd 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.md b/docs/test_cases/t00022.md index 6e930f0f..d1b0da18 100644 --- a/docs/test_cases/t00022.md +++ b/docs/test_cases/t00022.md @@ -320,7 +320,7 @@ protected: } ], "metadata": { - "clang_uml_version": "0.4.0-2-g4ab0d29", + "clang_uml_version": "0.4.0-32-g701b2c5", "llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)", "schema_version": 1 }, diff --git a/docs/test_cases/t00022_class.svg b/docs/test_cases/t00022_class.svg index c948682f..566bd8b1 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 9db895b5..be6bddc1 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.md b/docs/test_cases/t00023.md index 15a5d5e0..2726c670 100644 --- a/docs/test_cases/t00023.md +++ b/docs/test_cases/t00023.md @@ -400,7 +400,7 @@ private: } ], "metadata": { - "clang_uml_version": "0.4.0-2-g4ab0d29", + "clang_uml_version": "0.4.0-32-g701b2c5", "llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)", "schema_version": 1 }, diff --git a/docs/test_cases/t00023_class.svg b/docs/test_cases/t00023_class.svg index c28fa17d..954d1446 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 e03b71cc..2f59cead 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.md b/docs/test_cases/t00024.md index fe6369c5..6b2f66f5 100644 --- a/docs/test_cases/t00024.md +++ b/docs/test_cases/t00024.md @@ -451,7 +451,7 @@ private: } ], "metadata": { - "clang_uml_version": "0.4.0-2-g4ab0d29", + "clang_uml_version": "0.4.0-32-g701b2c5", "llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)", "schema_version": 1 }, diff --git a/docs/test_cases/t00024_class.svg b/docs/test_cases/t00024_class.svg index efc5e6e1..907ceb97 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 93480cbe..ea0a975c 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.md b/docs/test_cases/t00025.md index be4301d1..0d1dbe56 100644 --- a/docs/test_cases/t00025.md +++ b/docs/test_cases/t00025.md @@ -442,7 +442,7 @@ public: } ], "metadata": { - "clang_uml_version": "0.4.0-2-g4ab0d29", + "clang_uml_version": "0.4.0-32-g701b2c5", "llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)", "schema_version": 1 }, diff --git a/docs/test_cases/t00025_class.svg b/docs/test_cases/t00025_class.svg index f2cd928d..64089d09 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 cc3ea3f3..5b1b0ec7 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.md b/docs/test_cases/t00026.md index 1d11652a..52176c8d 100644 --- a/docs/test_cases/t00026.md +++ b/docs/test_cases/t00026.md @@ -582,7 +582,7 @@ struct StringMemento { } ], "metadata": { - "clang_uml_version": "0.4.0-2-g4ab0d29", + "clang_uml_version": "0.4.0-32-g701b2c5", "llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)", "schema_version": 1 }, diff --git a/docs/test_cases/t00026_class.svg b/docs/test_cases/t00026_class.svg index 754c6997..b08ba120 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 af473ab6..4d66dc94 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.md b/docs/test_cases/t00027.md index f7270808..008d424b 100644 --- a/docs/test_cases/t00027.md +++ b/docs/test_cases/t00027.md @@ -710,7 +710,7 @@ struct Window { } ], "metadata": { - "clang_uml_version": "0.4.0-2-g4ab0d29", + "clang_uml_version": "0.4.0-32-g701b2c5", "llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)", "schema_version": 1 }, diff --git a/docs/test_cases/t00027_class.svg b/docs/test_cases/t00027_class.svg index edd52809..da1472b5 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 26df2b2e..8b57bb3d 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.md b/docs/test_cases/t00028.md index 857385d9..e431f87b 100644 --- a/docs/test_cases/t00028.md +++ b/docs/test_cases/t00028.md @@ -461,7 +461,7 @@ class R { } ], "metadata": { - "clang_uml_version": "0.4.0-2-g4ab0d29", + "clang_uml_version": "0.4.0-32-g701b2c5", "llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)", "schema_version": 1 }, diff --git a/docs/test_cases/t00028_class.svg b/docs/test_cases/t00028_class.svg index 32fd2ca1..1d96cfd8 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 1cc65afc..7f0f6703 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.md b/docs/test_cases/t00029.md index 8632c656..9fb86a3e 100644 --- a/docs/test_cases/t00029.md +++ b/docs/test_cases/t00029.md @@ -140,6 +140,45 @@ struct R { ], "type": "class" }, + { + "bases": [], + "comment": { + "formatted": "@uml{skip:t00029_class}", + "raw": "/// @uml{skip:t00029_class}" + }, + "display_name": "clanguml::t00029::D", + "id": "1496914969429483234", + "is_abstract": false, + "is_nested": false, + "is_struct": false, + "is_template": false, + "is_union": false, + "members": [ + { + "access": "private", + "is_static": false, + "name": "param", + "source_location": { + "column": 7, + "file": "../../tests/t00029/t00029.cc", + "line": 18, + "translation_unit": "../../tests/t00029/t00029.cc" + }, + "type": "T" + } + ], + "methods": [], + "name": "D", + "namespace": "clanguml::t00029", + "source_location": { + "column": 29, + "file": "../../tests/t00029/t00029.cc", + "line": 17, + "translation_unit": "../../tests/t00029/t00029.cc" + }, + "template_parameters": [], + "type": "class" + }, { "constants": [ "one", @@ -312,7 +351,7 @@ struct R { } ], "metadata": { - "clang_uml_version": "0.4.0-2-g4ab0d29", + "clang_uml_version": "0.4.0-32-g701b2c5", "llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)", "schema_version": 1 }, diff --git a/docs/test_cases/t00029_class.svg b/docs/test_cases/t00029_class.svg index a5f051ec..43d1d60f 100644 --- a/docs/test_cases/t00029_class.svg +++ b/docs/test_cases/t00029_class.svg @@ -1,6 +1,6 @@ - + - + @@ -9,110 +9,125 @@ - - - - - A - - + + + + + A + + - - - - - C - - T - - + + + + + C + + T + + - - - + + + - - param : T + + param : T - - - - - E - - one - two - three - + + + + + D + + - - - - - G1 - - + + + - - - - - G2 - - + + param : T - - - - - G3 - - + + + + + E + + one + two + three + - - - - - G4 - - + + + + + G1 + + - - - - - R - - + + + + + G2 + + - - - + + + + + G3 + + - - g1 : G1 + + + + + G4 + + - - - + + + + + R + + - - g3 : G3 & + + + - - - + + g1 : G1 - - g4 : std::shared_ptr<G4> + + + - - - - g1 - - - - g4 + + g3 : G3 & + + + + + + + g4 : std::shared_ptr<G4> + + + + + g1 + + + + g4 diff --git a/docs/test_cases/t00029_class_mermaid.svg b/docs/test_cases/t00029_class_mermaid.svg index a67eb676..abb3d183 100644 --- a/docs/test_cases/t00029_class_mermaid.svg +++ b/docs/test_cases/t00029_class_mermaid.svg @@ -1,4 +1,4 @@ - + @@ -50,11 +50,11 @@ - - + + - +
@@ -65,7 +65,7 @@ - +
@@ -78,7 +78,7 @@ - + @@ -97,7 +97,7 @@ - + @@ -121,8 +121,32 @@ - - + + + + + + + +
+ +
+
+ +
+ D +
+
+ +
+ -param : T +
+
+
+
+
+ + @@ -155,8 +179,8 @@ - - + + @@ -174,8 +198,8 @@ - - + + @@ -193,8 +217,8 @@ - - + + @@ -212,8 +236,8 @@ - - + + @@ -231,8 +255,8 @@ - - + + diff --git a/docs/test_cases/t00030.md b/docs/test_cases/t00030.md index 0d66f5e8..e5f8c459 100644 --- a/docs/test_cases/t00030.md +++ b/docs/test_cases/t00030.md @@ -279,7 +279,7 @@ struct R { } ], "metadata": { - "clang_uml_version": "0.4.0-2-g4ab0d29", + "clang_uml_version": "0.4.0-32-g701b2c5", "llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)", "schema_version": 1 }, diff --git a/docs/test_cases/t00030_class.svg b/docs/test_cases/t00030_class.svg index ef2110cb..e37f6809 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 d348f3a6..70633a91 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.md b/docs/test_cases/t00031.md index d519fc04..78e70671 100644 --- a/docs/test_cases/t00031.md +++ b/docs/test_cases/t00031.md @@ -334,7 +334,7 @@ struct R { } ], "metadata": { - "clang_uml_version": "0.4.0-2-g4ab0d29", + "clang_uml_version": "0.4.0-32-g701b2c5", "llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)", "schema_version": 1 }, diff --git a/docs/test_cases/t00031_class.svg b/docs/test_cases/t00031_class.svg index 794ca5c7..c26a3bb8 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 8c1a3e2b..968a167a 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.md b/docs/test_cases/t00032.md index 86162a0e..f1b508c8 100644 --- a/docs/test_cases/t00032.md +++ b/docs/test_cases/t00032.md @@ -429,7 +429,7 @@ struct R { } ], "metadata": { - "clang_uml_version": "0.4.0-2-g4ab0d29", + "clang_uml_version": "0.4.0-32-g701b2c5", "llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)", "schema_version": 1 }, diff --git a/docs/test_cases/t00032_class.svg b/docs/test_cases/t00032_class.svg index 69b949ca..f31de98b 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 398d98c3..947a8917 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.md b/docs/test_cases/t00033.md index 0f39bf89..1499128c 100644 --- a/docs/test_cases/t00033.md +++ b/docs/test_cases/t00033.md @@ -377,7 +377,7 @@ struct R { } ], "metadata": { - "clang_uml_version": "0.4.0-2-g4ab0d29", + "clang_uml_version": "0.4.0-32-g701b2c5", "llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)", "schema_version": 1 }, diff --git a/docs/test_cases/t00033_class.svg b/docs/test_cases/t00033_class.svg index 6e3d22e6..e8ce6daa 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 ef38a627..f5ef4a15 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.md b/docs/test_cases/t00034.md index cc8fe111..2e18c65a 100644 --- a/docs/test_cases/t00034.md +++ b/docs/test_cases/t00034.md @@ -353,7 +353,7 @@ struct R { } ], "metadata": { - "clang_uml_version": "0.4.0-2-g4ab0d29", + "clang_uml_version": "0.4.0-32-g701b2c5", "llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)", "schema_version": 1 }, diff --git a/docs/test_cases/t00034_class.svg b/docs/test_cases/t00034_class.svg index 668ff527..1a6ddeae 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 470fee03..a4455876 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.md b/docs/test_cases/t00035.md index 76481cb5..de8492b0 100644 --- a/docs/test_cases/t00035.md +++ b/docs/test_cases/t00035.md @@ -162,7 +162,7 @@ struct Right { }; } ], "metadata": { - "clang_uml_version": "0.4.0-2-g4ab0d29", + "clang_uml_version": "0.4.0-32-g701b2c5", "llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)", "schema_version": 1 }, diff --git a/docs/test_cases/t00035_class.svg b/docs/test_cases/t00035_class.svg index acb22745..41870a00 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 82b58a8a..1ffbeda9 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.md b/docs/test_cases/t00036.md index 5bada1e6..0c488b60 100644 --- a/docs/test_cases/t00036.md +++ b/docs/test_cases/t00036.md @@ -278,7 +278,7 @@ struct DImpl : public ns2::ns22::D { }; } ], "metadata": { - "clang_uml_version": "0.4.0-2-g4ab0d29", + "clang_uml_version": "0.4.0-32-g701b2c5", "llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)", "schema_version": 1 }, diff --git a/docs/test_cases/t00036_class.svg b/docs/test_cases/t00036_class.svg index e2827c2f..43964918 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 675ef9f2..85880f8f 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.md b/docs/test_cases/t00037.md index 7a4ba60b..618f58c3 100644 --- a/docs/test_cases/t00037.md +++ b/docs/test_cases/t00037.md @@ -290,7 +290,7 @@ struct A { } ], "metadata": { - "clang_uml_version": "0.4.0-2-g4ab0d29", + "clang_uml_version": "0.4.0-32-g701b2c5", "llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)", "schema_version": 1 }, diff --git a/docs/test_cases/t00037_class.svg b/docs/test_cases/t00037_class.svg index 018f24ad..7d25f579 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 d069f344..7172e97c 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.md b/docs/test_cases/t00038.md index e0ab9611..2d6a0f28 100644 --- a/docs/test_cases/t00038.md +++ b/docs/test_cases/t00038.md @@ -496,7 +496,7 @@ struct map - + @@ -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 81bab40a..5e4c9945 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.md b/docs/test_cases/t00039.md index 85077a07..db2a4dba 100644 --- a/docs/test_cases/t00039.md +++ b/docs/test_cases/t00039.md @@ -610,7 +610,7 @@ template struct FFF : public FF { } ], "metadata": { - "clang_uml_version": "0.4.0-2-g4ab0d29", + "clang_uml_version": "0.4.0-32-g701b2c5", "llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)", "schema_version": 1 }, diff --git a/docs/test_cases/t00039_class.svg b/docs/test_cases/t00039_class.svg index 2d4a14b5..88646fef 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 ca6588bc..883da7c5 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.md b/docs/test_cases/t00040.md index 7ab30c22..3d7751f0 100644 --- a/docs/test_cases/t00040.md +++ b/docs/test_cases/t00040.md @@ -309,7 +309,7 @@ struct R { } ], "metadata": { - "clang_uml_version": "0.4.0-2-g4ab0d29", + "clang_uml_version": "0.4.0-32-g701b2c5", "llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)", "schema_version": 1 }, diff --git a/docs/test_cases/t00040_class.svg b/docs/test_cases/t00040_class.svg index 8f6f6dd7..0df3f6bb 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 ff8278a7..3aad12b2 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.md b/docs/test_cases/t00041.md index 9a3de2f0..cff52c98 100644 --- a/docs/test_cases/t00041.md +++ b/docs/test_cases/t00041.md @@ -392,7 +392,7 @@ struct NM : public N { }; } ], "metadata": { - "clang_uml_version": "0.4.0-2-g4ab0d29", + "clang_uml_version": "0.4.0-32-g701b2c5", "llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)", "schema_version": 1 }, diff --git a/docs/test_cases/t00041_class.svg b/docs/test_cases/t00041_class.svg index 60410b89..9b3bb910 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 957007e0..fa5db4bb 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.md b/docs/test_cases/t00042.md index 3be7a3c2..0ee38da6 100644 --- a/docs/test_cases/t00042.md +++ b/docs/test_cases/t00042.md @@ -307,7 +307,7 @@ struct R { } ], "metadata": { - "clang_uml_version": "0.4.0-2-g4ab0d29", + "clang_uml_version": "0.4.0-32-g701b2c5", "llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)", "schema_version": 1 }, diff --git a/docs/test_cases/t00042_class.svg b/docs/test_cases/t00042_class.svg index 0e9203f8..e955b14b 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 4756adef..aab58781 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.md b/docs/test_cases/t00043.md index d837ccda..c85bd8e6 100644 --- a/docs/test_cases/t00043.md +++ b/docs/test_cases/t00043.md @@ -653,7 +653,7 @@ struct J { } ], "metadata": { - "clang_uml_version": "0.4.0-2-g4ab0d29", + "clang_uml_version": "0.4.0-32-g701b2c5", "llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)", "schema_version": 1 }, diff --git a/docs/test_cases/t00043_class.svg b/docs/test_cases/t00043_class.svg index 9117d92b..7b485539 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 3d994216..a0596a79 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.md b/docs/test_cases/t00044.md index d38088f4..53706055 100644 --- a/docs/test_cases/t00044.md +++ b/docs/test_cases/t00044.md @@ -432,7 +432,7 @@ struct R { } ], "metadata": { - "clang_uml_version": "0.4.0-2-g4ab0d29", + "clang_uml_version": "0.4.0-32-g701b2c5", "llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)", "schema_version": 1 }, diff --git a/docs/test_cases/t00044_class.svg b/docs/test_cases/t00044_class.svg index 0b7cc3f2..d4971d7a 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 48be983c..222a5d37 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.md b/docs/test_cases/t00045.md index db837eeb..8fdb1324 100644 --- a/docs/test_cases/t00045.md +++ b/docs/test_cases/t00045.md @@ -463,7 +463,7 @@ public: } ], "metadata": { - "clang_uml_version": "0.4.0-2-g4ab0d29", + "clang_uml_version": "0.4.0-32-g701b2c5", "llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)", "schema_version": 1 }, diff --git a/docs/test_cases/t00045_class.svg b/docs/test_cases/t00045_class.svg index c22a345f..6722bf9b 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 7655eef3..9ec23fb7 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.md b/docs/test_cases/t00046.md index 1c279e7c..4a068552 100644 --- a/docs/test_cases/t00046.md +++ b/docs/test_cases/t00046.md @@ -396,7 +396,7 @@ public: } ], "metadata": { - "clang_uml_version": "0.4.0-2-g4ab0d29", + "clang_uml_version": "0.4.0-32-g701b2c5", "llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)", "schema_version": 1 }, diff --git a/docs/test_cases/t00046_class.svg b/docs/test_cases/t00046_class.svg index fa3e1e59..50d5ff12 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 0ca73d6b..838b08b1 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.md b/docs/test_cases/t00047.md index 6456798f..f3835aa2 100644 --- a/docs/test_cases/t00047.md +++ b/docs/test_cases/t00047.md @@ -194,7 +194,7 @@ using conditional = typename conditional_t::type; } ], "metadata": { - "clang_uml_version": "0.4.0-2-g4ab0d29", + "clang_uml_version": "0.4.0-32-g701b2c5", "llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)", "schema_version": 1 }, diff --git a/docs/test_cases/t00047_class.svg b/docs/test_cases/t00047_class.svg index b04a3416..12e1ee65 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 46bfc969..d2351034 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.md b/docs/test_cases/t00048.md index e5292f60..f14163a9 100644 --- a/docs/test_cases/t00048.md +++ b/docs/test_cases/t00048.md @@ -545,7 +545,7 @@ template struct BaseTemplate { } ], "metadata": { - "clang_uml_version": "0.4.0-2-g4ab0d29", + "clang_uml_version": "0.4.0-32-g701b2c5", "llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)", "schema_version": 1 }, diff --git a/docs/test_cases/t00048_class.svg b/docs/test_cases/t00048_class.svg index 44e44728..d47494fd 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 24f5f6ab..bb27d857 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.md b/docs/test_cases/t00049.md index 6ed071cb..86d9f0ef 100644 --- a/docs/test_cases/t00049.md +++ b/docs/test_cases/t00049.md @@ -327,7 +327,7 @@ struct R { } ], "metadata": { - "clang_uml_version": "0.4.0-2-g4ab0d29", + "clang_uml_version": "0.4.0-32-g701b2c5", "llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)", "schema_version": 1 }, diff --git a/docs/test_cases/t00049_class.svg b/docs/test_cases/t00049_class.svg index 7dfa8770..09c90546 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 549069c7..8af76d49 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.md b/docs/test_cases/t00050.md index 6892fd68..ff0cbb31 100644 --- a/docs/test_cases/t00050.md +++ b/docs/test_cases/t00050.md @@ -532,7 +532,7 @@ class NoComment { }; } ], "metadata": { - "clang_uml_version": "0.4.0-2-g4ab0d29", + "clang_uml_version": "0.4.0-32-g701b2c5", "llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)", "schema_version": 1 }, diff --git a/docs/test_cases/t00050_class.svg b/docs/test_cases/t00050_class.svg index 0d561309..34bb9a7a 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 @@ -181,6 +181,6 @@ N Size of T array. - + diff --git a/docs/test_cases/t00050_class_mermaid.svg b/docs/test_cases/t00050_class_mermaid.svg index a33291f2..b18c2678 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.md b/docs/test_cases/t00051.md index 09c9586f..89903494 100644 --- a/docs/test_cases/t00051.md +++ b/docs/test_cases/t00051.md @@ -639,7 +639,7 @@ A::custom_thread2 A::start_thread2() } ], "metadata": { - "clang_uml_version": "0.4.0-2-g4ab0d29", + "clang_uml_version": "0.4.0-32-g701b2c5", "llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)", "schema_version": 1 }, diff --git a/docs/test_cases/t00051_class.svg b/docs/test_cases/t00051_class.svg index f85588e5..6dc28243 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,125 +18,125 @@ F,FF=F - + - + B(F && f, FF && ff) : void - + - + f() : void - + - + ff() : void - + - + f_ : F - + - + ff_ : FF - - + + B<(lambda at ../../tests/t00051/t00051.cc:43:18),(lambda at ../../tests/t00051/t00051.cc:43:27)> - + - + B((lambda at ../../tests/t00051/t00051.cc:43:18) && f, (lambda at ../../tests/t00051/t00051.cc:43:27) && ff) : void - + - + f() : void - + - + ff() : void - + - + f_ : (lambda at ../../tests/t00051/t00051.cc:43:18) - + - + ff_ : (lambda at ../../tests/t00051/t00051.cc:43:27) - - + + A - + - + get_function() : (lambda at ../../tests/t00051/t00051.cc:48:16) - + - + start_thread1() : custom_thread1 - + - + start_thread2() : custom_thread2 - + - + start_thread3() : B<(lambda at ../../tests/t00051/t00051.cc:43:18),(lambda at ../../tests/t00051/t00051.cc:43:27)> - - + + A::custom_thread1 @@ -145,18 +145,18 @@ custom_thread1<Function,Args...>(Function && f, Args &&... args) : void - - + + A::custom_thread2 - + - + thread((lambda at ../../tests/t00051/t00051.cc:59:27) &&) : void diff --git a/docs/test_cases/t00051_class_mermaid.svg b/docs/test_cases/t00051_class_mermaid.svg index 0813183b..fe151aab 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.md b/docs/test_cases/t00052.md index 2a9d5b7e..c0cd60f6 100644 --- a/docs/test_cases/t00052.md +++ b/docs/test_cases/t00052.md @@ -398,7 +398,7 @@ struct R { } ], "metadata": { - "clang_uml_version": "0.4.0-2-g4ab0d29", + "clang_uml_version": "0.4.0-32-g701b2c5", "llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)", "schema_version": 1 }, diff --git a/docs/test_cases/t00052_class.svg b/docs/test_cases/t00052_class.svg index 65da0fc6..1e7d0540 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 91ac0bfa..0a30577c 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.md b/docs/test_cases/t00053.md index 5442794a..96e3196c 100644 --- a/docs/test_cases/t00053.md +++ b/docs/test_cases/t00053.md @@ -420,7 +420,7 @@ enum class j { jjj }; } ], "metadata": { - "clang_uml_version": "0.4.0-2-g4ab0d29", + "clang_uml_version": "0.4.0-32-g701b2c5", "llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)", "schema_version": 1 }, diff --git a/docs/test_cases/t00053_class.svg b/docs/test_cases/t00053_class.svg index 78af7cad..e1b2440d 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 01e22154..7248a987 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.md b/docs/test_cases/t00054.md index 9461721d..0a7f7c63 100644 --- a/docs/test_cases/t00054.md +++ b/docs/test_cases/t00054.md @@ -462,7 +462,7 @@ enum class j { jjj }; } ], "metadata": { - "clang_uml_version": "0.4.0-2-g4ab0d29", + "clang_uml_version": "0.4.0-32-g701b2c5", "llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)", "schema_version": 1 }, diff --git a/docs/test_cases/t00054_class.svg b/docs/test_cases/t00054_class.svg index 18efb7fb..173a635e 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 e7a51b64..3336cbee 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.md b/docs/test_cases/t00055.md index a642585a..7dc6750e 100644 --- a/docs/test_cases/t00055.md +++ b/docs/test_cases/t00055.md @@ -268,7 +268,7 @@ struct J { }; } ], "metadata": { - "clang_uml_version": "0.4.0-2-g4ab0d29", + "clang_uml_version": "0.4.0-32-g701b2c5", "llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)", "schema_version": 1 }, diff --git a/docs/test_cases/t00055_class.svg b/docs/test_cases/t00055_class.svg index 8d000857..aa89b494 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 09c3df1e..d49204ab 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.md b/docs/test_cases/t00056.md index a88f65ed..d5f5bb24 100644 --- a/docs/test_cases/t00056.md +++ b/docs/test_cases/t00056.md @@ -608,7 +608,7 @@ struct F { } ], "metadata": { - "clang_uml_version": "0.4.0-2-g4ab0d29", + "clang_uml_version": "0.4.0-32-g701b2c5", "llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)", "schema_version": 1 }, diff --git a/docs/test_cases/t00056_class.svg b/docs/test_cases/t00056_class.svg index 795ba164..5f1c79ea 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 d8d3ec4c..fb0ed8a9 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.md b/docs/test_cases/t00057.md index a8f78a78..88f23dbc 100644 --- a/docs/test_cases/t00057.md +++ b/docs/test_cases/t00057.md @@ -552,7 +552,7 @@ struct t00057_R { } ], "metadata": { - "clang_uml_version": "0.4.0-2-g4ab0d29", + "clang_uml_version": "0.4.0-32-g701b2c5", "llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)", "schema_version": 1 }, diff --git a/docs/test_cases/t00057_class.svg b/docs/test_cases/t00057_class.svg index b5383590..6f51b360 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 69b99098..59667a8b 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.md b/docs/test_cases/t00058.md index 27036ba3..b6920cb4 100644 --- a/docs/test_cases/t00058.md +++ b/docs/test_cases/t00058.md @@ -435,7 +435,7 @@ struct R { } ], "metadata": { - "clang_uml_version": "0.4.0-2-g4ab0d29", + "clang_uml_version": "0.4.0-32-g701b2c5", "llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)", "schema_version": 1 }, diff --git a/docs/test_cases/t00058_class.svg b/docs/test_cases/t00058_class.svg index 2cf43fdc..07732aee 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 bbba3782..7588ac0e 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.md b/docs/test_cases/t00059.md index be78a988..3ad12ea7 100644 --- a/docs/test_cases/t00059.md +++ b/docs/test_cases/t00059.md @@ -647,7 +647,7 @@ struct R { } ], "metadata": { - "clang_uml_version": "0.4.0-2-g4ab0d29", + "clang_uml_version": "0.4.0-32-g701b2c5", "llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)", "schema_version": 1 }, diff --git a/docs/test_cases/t00059_class.svg b/docs/test_cases/t00059_class.svg index a1ff5f33..d1648bd9 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 c80e9120..f8d592c3 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.md b/docs/test_cases/t00060.md index 0d923851..f284cf9a 100644 --- a/docs/test_cases/t00060.md +++ b/docs/test_cases/t00060.md @@ -276,7 +276,7 @@ template struct H : public G { } ], "metadata": { - "clang_uml_version": "0.4.0-2-g4ab0d29", + "clang_uml_version": "0.4.0-32-g701b2c5", "llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)", "schema_version": 1 }, diff --git a/docs/test_cases/t00060_class.svg b/docs/test_cases/t00060_class.svg index 094b2a31..e5b0758f 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 2dc9a215..e053f300 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.md b/docs/test_cases/t00061.md index c61e6384..d8bc104f 100644 --- a/docs/test_cases/t00061.md +++ b/docs/test_cases/t00061.md @@ -65,7 +65,7 @@ struct C { } ], "metadata": { - "clang_uml_version": "0.4.0-2-g4ab0d29", + "clang_uml_version": "0.4.0-32-g701b2c5", "llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)", "schema_version": 1 }, diff --git a/docs/test_cases/t00061_class.svg b/docs/test_cases/t00061_class.svg index 1e52f5ff..9d3a31e6 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 e3c78e26..2302b826 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.md b/docs/test_cases/t00062.md index 9481f010..ab48c68b 100644 --- a/docs/test_cases/t00062.md +++ b/docs/test_cases/t00062.md @@ -1372,7 +1372,7 @@ struct A> { } ], "metadata": { - "clang_uml_version": "0.4.0-2-g4ab0d29", + "clang_uml_version": "0.4.0-32-g701b2c5", "llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)", "schema_version": 1 }, diff --git a/docs/test_cases/t00062_class.svg b/docs/test_cases/t00062_class.svg index 3180b5ed..65c48d3e 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 a56120d0..a319e2c2 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.md b/docs/test_cases/t00063.md index 3ff6fa0a..e1a7768e 100644 --- a/docs/test_cases/t00063.md +++ b/docs/test_cases/t00063.md @@ -63,7 +63,7 @@ enum class C { c1, c2, c3 }; } ], "metadata": { - "clang_uml_version": "0.4.0-2-g4ab0d29", + "clang_uml_version": "0.4.0-32-g701b2c5", "llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)", "schema_version": 1 }, diff --git a/docs/test_cases/t00063_class.svg b/docs/test_cases/t00063_class.svg index 5d10a7e5..e45aa2ec 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 63f99085..f4ff33f8 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.md b/docs/test_cases/t00064.md index 9a057440..10c005d5 100644 --- a/docs/test_cases/t00064.md +++ b/docs/test_cases/t00064.md @@ -1036,7 +1036,7 @@ public: } ], "metadata": { - "clang_uml_version": "0.4.0-2-g4ab0d29", + "clang_uml_version": "0.4.0-32-g701b2c5", "llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)", "schema_version": 1 }, diff --git a/docs/test_cases/t00064_class.svg b/docs/test_cases/t00064_class.svg index 81d706d4..adb85bf9 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 fbdbaace..89664e4a 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.md b/docs/test_cases/t00065.md index 75ba43d3..f79868ae 100644 --- a/docs/test_cases/t00065.md +++ b/docs/test_cases/t00065.md @@ -529,7 +529,7 @@ struct R { } ], "metadata": { - "clang_uml_version": "0.4.0-2-g4ab0d29", + "clang_uml_version": "0.4.0-32-g701b2c5", "llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)", "schema_version": 1 }, diff --git a/docs/test_cases/t00065_class.svg b/docs/test_cases/t00065_class.svg index 2f68c8a7..24475082 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 - - + + 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» @@ -186,33 +186,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 085f0343..fb1d9d5e 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.md b/docs/test_cases/t00066.md index 344a80f8..423f17f2 100644 --- a/docs/test_cases/t00066.md +++ b/docs/test_cases/t00066.md @@ -804,7 +804,7 @@ int A::static_int = 1; } ], "metadata": { - "clang_uml_version": "0.4.0-2-g4ab0d29", + "clang_uml_version": "0.4.0-32-g701b2c5", "llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)", "schema_version": 1 }, diff --git a/docs/test_cases/t00066_class.svg b/docs/test_cases/t00066_class.svg index b301d497..f594f239 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 35178040..c8848276 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.md b/docs/test_cases/t00067.md index 9ad2280c..5d2ef915 100644 --- a/docs/test_cases/t00067.md +++ b/docs/test_cases/t00067.md @@ -527,7 +527,7 @@ int A::static_int = 1; } ], "metadata": { - "clang_uml_version": "0.4.0-2-g4ab0d29", + "clang_uml_version": "0.4.0-32-g701b2c5", "llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)", "schema_version": 1 }, diff --git a/docs/test_cases/t00067_class.svg b/docs/test_cases/t00067_class.svg index 4f2f3f70..bec438fb 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 5cd6af57..335c7843 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/t20001.md b/docs/test_cases/t20001.md index b885a440..5bae0114 100644 --- a/docs/test_cases/t20001.md +++ b/docs/test_cases/t20001.md @@ -3,9 +3,12 @@ ```yaml compilation_database_dir: .. output_directory: diagrams +add_compile_flags: + - -fparse-all-comments diagrams: t20001_sequence: type: sequence + title: Basic sequence diagram example glob: - ../../tests/t20001/t20001.cc include: @@ -98,8 +101,10 @@ int tmain() A a; B b(a); + // \uml{note Just add 2 numbers} auto tmp = a.add(1, 2); + // \uml{note[] And now add another 2} return b.wrap_add3(tmp, 2, 3); } } @@ -115,7 +120,7 @@ int tmain() { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.4.0-2-g4ab0d29", + "clang_uml_version": "0.4.0-32-g701b2c5", "llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)", "schema_version": 1 }, @@ -205,6 +210,7 @@ int tmain() "type": "message" }, { + "comment": "\\uml{note Just add 2 numbers}", "from": { "activity_id": "622672604730036140", "activity_name": "clanguml::t20001::tmain()", @@ -217,7 +223,7 @@ int tmain() "source_location": { "column": 16, "file": "../../tests/t20001/t20001.cc", - "line": 66, + "line": 67, "translation_unit": "../../tests/t20001/t20001.cc" }, "to": { @@ -228,6 +234,7 @@ int tmain() "type": "message" }, { + "comment": "\\uml{note[] And now add another 2}", "from": { "activity_id": "622672604730036140", "activity_name": "clanguml::t20001::tmain()", @@ -240,7 +247,7 @@ int tmain() "source_location": { "column": 12, "file": "../../tests/t20001/t20001.cc", - "line": 68, + "line": 70, "translation_unit": "../../tests/t20001/t20001.cc" }, "to": { @@ -345,6 +352,7 @@ int tmain() } } ], + "title": "Basic sequence diagram example", "using_namespace": "clanguml::t20001" } ``` diff --git a/docs/test_cases/t20001_sequence.svg b/docs/test_cases/t20001_sequence.svg index 25fd728a..20e3509c 100644 --- a/docs/test_cases/t20001_sequence.svg +++ b/docs/test_cases/t20001_sequence.svg @@ -1,6 +1,6 @@ - + - + @@ -9,101 +9,108 @@ - - - - - - - - - - - - - - - tmain() - - tmain() + Basic sequence diagram example + + + + + + + + + + + + + + + tmain() + + tmain() - - - A - - A + + + A + + A - - - B - - B + + + B + + B - - - - - - - - - - - - - A() + + + + + + + + + + + + + A() - - - - B(A &) + + + + B(A &) - - - - add(int,int) + + + Just add 2 numbers + + + + add(int,int) - - - - - - wrap_add3(int,int,int) + + + + + And now add another 2 + + + + wrap_add3(int,int,int) - - - - add3(int,int,int) + + + + add3(int,int,int) - - - - - - add(int,int) + + + + + + add(int,int) - - - - - - - - - - log_result(int) + + + + + + + + + + log_result(int) - - - - - - log_result(int) + + + + + + log_result(int) - - - - - Main test function + + + + + Main test function diff --git a/docs/test_cases/t20001_sequence_mermaid.svg b/docs/test_cases/t20001_sequence_mermaid.svg index 686a956b..51e39579 100644 --- a/docs/test_cases/t20001_sequence_mermaid.svg +++ b/docs/test_cases/t20001_sequence_mermaid.svg @@ -1,24 +1,25 @@ - + + Basic sequence diagram example - - + + B - - + + A - - + + tmain() - + @@ -27,7 +28,7 @@ - + @@ -36,7 +37,7 @@ - + @@ -83,7 +84,7 @@ - + @@ -92,26 +93,38 @@ - + + + Just add 2 numbers + - + - + + + And now add another 2 + - + - + - + - - + + + + + + + + Main test function @@ -119,24 +132,25 @@ B(A &) - add(int,int) - - ​ - - wrap_add3(int,int,int) - - add3(int,int,int) - - add(int,int) - - ​ - - log_result(int) - - ​ - - log_result(int) - - ​ - + add(int,int) + + ​ + + wrap_add3(int,int,int) + + add3(int,int,int) + + add(int,int) + + ​ + + log_result(int) + + ​ + + log_result(int) + + ​ + + Basic sequence diagram example diff --git a/docs/test_cases/t20002.md b/docs/test_cases/t20002.md index 087dd140..f057877a 100644 --- a/docs/test_cases/t20002.md +++ b/docs/test_cases/t20002.md @@ -47,7 +47,7 @@ void m1() { m2(); } { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.4.0-2-g4ab0d29", + "clang_uml_version": "0.4.0-32-g701b2c5", "llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)", "schema_version": 1 }, diff --git a/docs/test_cases/t20002_sequence.svg b/docs/test_cases/t20002_sequence.svg index c21e9c6c..3bf379be 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.md b/docs/test_cases/t20003.md index bea3b050..7d0888e3 100644 --- a/docs/test_cases/t20003.md +++ b/docs/test_cases/t20003.md @@ -43,7 +43,7 @@ template void m1(T p) { m2(p); } { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.4.0-2-g4ab0d29", + "clang_uml_version": "0.4.0-32-g701b2c5", "llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)", "schema_version": 1 }, diff --git a/docs/test_cases/t20003_sequence.svg b/docs/test_cases/t20003_sequence.svg index e6124762..1881813d 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.md b/docs/test_cases/t20004.md index 950555b6..6854d238 100644 --- a/docs/test_cases/t20004.md +++ b/docs/test_cases/t20004.md @@ -79,7 +79,7 @@ int main() { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.4.0-2-g4ab0d29", + "clang_uml_version": "0.4.0-32-g701b2c5", "llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)", "schema_version": 1 }, diff --git a/docs/test_cases/t20004_sequence.svg b/docs/test_cases/t20004_sequence.svg index 0d95b2c7..f5e31ff0 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.md b/docs/test_cases/t20005.md index 88c17e74..cb8e2a8a 100644 --- a/docs/test_cases/t20005.md +++ b/docs/test_cases/t20005.md @@ -50,7 +50,7 @@ template struct C { { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.4.0-2-g4ab0d29", + "clang_uml_version": "0.4.0-32-g701b2c5", "llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)", "schema_version": 1 }, diff --git a/docs/test_cases/t20005_sequence.svg b/docs/test_cases/t20005_sequence.svg index 011e1b6a..27f38b20 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.md b/docs/test_cases/t20006.md index 7b9a828b..4233df4a 100644 --- a/docs/test_cases/t20006.md +++ b/docs/test_cases/t20006.md @@ -108,7 +108,7 @@ void tmain() { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.4.0-2-g4ab0d29", + "clang_uml_version": "0.4.0-32-g701b2c5", "llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)", "schema_version": 1 }, diff --git a/docs/test_cases/t20006_sequence.svg b/docs/test_cases/t20006_sequence.svg index 0f7deabf..78a9f5dc 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.md b/docs/test_cases/t20007.md index 4e336e00..82e42145 100644 --- a/docs/test_cases/t20007.md +++ b/docs/test_cases/t20007.md @@ -54,7 +54,7 @@ void tmain() { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.4.0-2-g4ab0d29", + "clang_uml_version": "0.4.0-32-g701b2c5", "llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)", "schema_version": 1 }, diff --git a/docs/test_cases/t20007_sequence.svg b/docs/test_cases/t20007_sequence.svg index 06c27fb4..c52c8620 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.md b/docs/test_cases/t20008.md index 7ddbf504..4cf83b2e 100644 --- a/docs/test_cases/t20008.md +++ b/docs/test_cases/t20008.md @@ -72,7 +72,7 @@ void tmain() { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.4.0-2-g4ab0d29", + "clang_uml_version": "0.4.0-32-g701b2c5", "llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)", "schema_version": 1 }, diff --git a/docs/test_cases/t20008_sequence.svg b/docs/test_cases/t20008_sequence.svg index 2207ddea..38bac748 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.md b/docs/test_cases/t20009.md index da9e5cc3..e1d63211 100644 --- a/docs/test_cases/t20009.md +++ b/docs/test_cases/t20009.md @@ -58,7 +58,7 @@ void tmain() { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.4.0-2-g4ab0d29", + "clang_uml_version": "0.4.0-32-g701b2c5", "llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)", "schema_version": 1 }, diff --git a/docs/test_cases/t20009_sequence.svg b/docs/test_cases/t20009_sequence.svg index 08e826f9..c21f28b6 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.md b/docs/test_cases/t20010.md index 61b8528d..b3065ea4 100644 --- a/docs/test_cases/t20010.md +++ b/docs/test_cases/t20010.md @@ -68,7 +68,7 @@ void tmain() { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.4.0-2-g4ab0d29", + "clang_uml_version": "0.4.0-32-g701b2c5", "llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)", "schema_version": 1 }, diff --git a/docs/test_cases/t20010_sequence.svg b/docs/test_cases/t20010_sequence.svg index a5be184e..b785c601 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.md b/docs/test_cases/t20011.md index f02ad276..fa98bfc7 100644 --- a/docs/test_cases/t20011.md +++ b/docs/test_cases/t20011.md @@ -60,7 +60,7 @@ void tmain() { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.4.0-2-g4ab0d29", + "clang_uml_version": "0.4.0-32-g701b2c5", "llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)", "schema_version": 1 }, diff --git a/docs/test_cases/t20011_sequence.svg b/docs/test_cases/t20011_sequence.svg index d2a7b002..a0636b00 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.md b/docs/test_cases/t20012.md index 0fd5febf..69c5b95a 100644 --- a/docs/test_cases/t20012.md +++ b/docs/test_cases/t20012.md @@ -135,7 +135,7 @@ void tmain() { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.4.0-2-g4ab0d29", + "clang_uml_version": "0.4.0-32-g701b2c5", "llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)", "schema_version": 1 }, diff --git a/docs/test_cases/t20012_sequence.svg b/docs/test_cases/t20012_sequence.svg index 82a6d927..e746de2e 100644 --- a/docs/test_cases/t20012_sequence.svg +++ b/docs/test_cases/t20012_sequence.svg @@ -1,6 +1,6 @@ - + @@ -9,31 +9,31 @@ - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + @@ -42,116 +42,116 @@ - - + + tmain() - + tmain() - - + + tmain()::(lambda ../../tests/t20012/t20012.cc:67:20) - + tmain()::(lambda ../../tests/t20012/t20012.cc:67:20) - - + + A - + A - - + + B - + B - - + + tmain()::(lambda ../../tests/t20012/t20012.cc:80:20) - + tmain()::(lambda ../../tests/t20012/t20012.cc:80:20) - - + + C - + C - - + + R<R::(lambda ../../tests/t20012/t20012.cc:86:9)> - + R<R::(lambda ../../tests/t20012/t20012.cc:86:9)> - - + + tmain()::(lambda ../../tests/t20012/t20012.cc:86:9) - + tmain()::(lambda ../../tests/t20012/t20012.cc:86:9) - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + operator()() - + a() - + aa() - + aaa() - + b() - + bb() - + @@ -160,67 +160,67 @@ - + operator()() - + c() - + cc() - + ccc() - + operator()() - + a() - + aa() - + aaa() - + b() - + bb() - + @@ -231,34 +231,34 @@ - + R((lambda at /home/bartek/devel/clang-uml/tests/t20012/t20012.cc:86:9) &&) - + r() - + operator()() - + c() - + cc() - + diff --git a/docs/test_cases/t20013.md b/docs/test_cases/t20013.md index 4b285a9a..0da6c637 100644 --- a/docs/test_cases/t20013.md +++ b/docs/test_cases/t20013.md @@ -56,7 +56,7 @@ void tmain(int argc, char **argv) { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.4.0-2-g4ab0d29", + "clang_uml_version": "0.4.0-32-g701b2c5", "llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)", "schema_version": 1 }, diff --git a/docs/test_cases/t20013_sequence.svg b/docs/test_cases/t20013_sequence.svg index 4cc015d7..75870d3b 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.md b/docs/test_cases/t20014.md index 04b9c363..7d322152 100644 --- a/docs/test_cases/t20014.md +++ b/docs/test_cases/t20014.md @@ -91,7 +91,7 @@ namespace t20014 { { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.4.0-2-g4ab0d29", + "clang_uml_version": "0.4.0-32-g701b2c5", "llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)", "schema_version": 1 }, diff --git a/docs/test_cases/t20014_sequence.svg b/docs/test_cases/t20014_sequence.svg index aa66a58c..fef5c637 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.md b/docs/test_cases/t20015.md index 327f837f..e49929b7 100644 --- a/docs/test_cases/t20015.md +++ b/docs/test_cases/t20015.md @@ -72,7 +72,7 @@ void tmain() { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.4.0-2-g4ab0d29", + "clang_uml_version": "0.4.0-32-g701b2c5", "llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)", "schema_version": 1 }, diff --git a/docs/test_cases/t20015_sequence.svg b/docs/test_cases/t20015_sequence.svg index 5a3e0bd2..53156b2c 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.md b/docs/test_cases/t20016.md index 9a93aa4b..353cfb9c 100644 --- a/docs/test_cases/t20016.md +++ b/docs/test_cases/t20016.md @@ -54,7 +54,7 @@ void tmain() { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.4.0-2-g4ab0d29", + "clang_uml_version": "0.4.0-32-g701b2c5", "llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)", "schema_version": 1 }, diff --git a/docs/test_cases/t20016_sequence.svg b/docs/test_cases/t20016_sequence.svg index e1ea2a3a..4a7b165d 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.md b/docs/test_cases/t20017.md index 66d066c4..304165ac 100644 --- a/docs/test_cases/t20017.md +++ b/docs/test_cases/t20017.md @@ -51,7 +51,7 @@ int tmain() { return b2(a1(a2(a3(1, 2), b1(3, 4)), 5), 6); } { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.4.0-2-g4ab0d29", + "clang_uml_version": "0.4.0-32-g701b2c5", "llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)", "schema_version": 1 }, diff --git a/docs/test_cases/t20017_sequence.svg b/docs/test_cases/t20017_sequence.svg index dfbafe76..ff6ad129 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.md b/docs/test_cases/t20018.md index 99c1d1b2..698556f2 100644 --- a/docs/test_cases/t20018.md +++ b/docs/test_cases/t20018.md @@ -56,7 +56,7 @@ void tmain() { Answer>::print(); } { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.4.0-2-g4ab0d29", + "clang_uml_version": "0.4.0-32-g701b2c5", "llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)", "schema_version": 1 }, diff --git a/docs/test_cases/t20018_sequence.svg b/docs/test_cases/t20018_sequence.svg index 66bf26b4..56e6d5d0 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.md b/docs/test_cases/t20019.md index bb5f3148..f112e6bd 100644 --- a/docs/test_cases/t20019.md +++ b/docs/test_cases/t20019.md @@ -63,7 +63,7 @@ void tmain() { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.4.0-2-g4ab0d29", + "clang_uml_version": "0.4.0-32-g701b2c5", "llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)", "schema_version": 1 }, diff --git a/docs/test_cases/t20019_sequence.svg b/docs/test_cases/t20019_sequence.svg index 19686bf7..a8d54a29 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.md b/docs/test_cases/t20020.md index ab6c50d9..9655e412 100644 --- a/docs/test_cases/t20020.md +++ b/docs/test_cases/t20020.md @@ -119,7 +119,7 @@ int tmain() { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.4.0-2-g4ab0d29", + "clang_uml_version": "0.4.0-32-g701b2c5", "llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)", "schema_version": 1 }, diff --git a/docs/test_cases/t20020_sequence.svg b/docs/test_cases/t20020_sequence.svg index 184787a1..a078d79c 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.md b/docs/test_cases/t20021.md index 5a1801c4..54f32c8c 100644 --- a/docs/test_cases/t20021.md +++ b/docs/test_cases/t20021.md @@ -86,7 +86,7 @@ int tmain() { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.4.0-2-g4ab0d29", + "clang_uml_version": "0.4.0-32-g701b2c5", "llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)", "schema_version": 1 }, diff --git a/docs/test_cases/t20021_sequence.svg b/docs/test_cases/t20021_sequence.svg index 759a3d4f..e35c4edf 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.md b/docs/test_cases/t20022.md index 1a737cde..61c5f7b5 100644 --- a/docs/test_cases/t20022.md +++ b/docs/test_cases/t20022.md @@ -66,7 +66,7 @@ int tmain() { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.4.0-2-g4ab0d29", + "clang_uml_version": "0.4.0-32-g701b2c5", "llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)", "schema_version": 1 }, diff --git a/docs/test_cases/t20022_sequence.svg b/docs/test_cases/t20022_sequence.svg index 1898e9b4..9cbcb864 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.md b/docs/test_cases/t20023.md index 94ab5abf..ed25d6f9 100644 --- a/docs/test_cases/t20023.md +++ b/docs/test_cases/t20023.md @@ -69,7 +69,7 @@ int tmain() { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.4.0-2-g4ab0d29", + "clang_uml_version": "0.4.0-32-g701b2c5", "llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)", "schema_version": 1 }, diff --git a/docs/test_cases/t20023_sequence.svg b/docs/test_cases/t20023_sequence.svg index 89ef3552..a0f4ee68 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.md b/docs/test_cases/t20024.md index fdb28992..d628e287 100644 --- a/docs/test_cases/t20024.md +++ b/docs/test_cases/t20024.md @@ -94,7 +94,7 @@ int tmain() { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.4.0-2-g4ab0d29", + "clang_uml_version": "0.4.0-32-g701b2c5", "llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)", "schema_version": 1 }, diff --git a/docs/test_cases/t20024_sequence.svg b/docs/test_cases/t20024_sequence.svg index 8910c9cc..d356ecd9 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.md b/docs/test_cases/t20025.md index bb658e01..eb7d813c 100644 --- a/docs/test_cases/t20025.md +++ b/docs/test_cases/t20025.md @@ -74,7 +74,7 @@ int tmain() { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.4.0-2-g4ab0d29", + "clang_uml_version": "0.4.0-32-g701b2c5", "llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)", "schema_version": 1 }, @@ -140,28 +140,6 @@ int tmain() }, "type": "message" }, - { - "from": { - "activity_id": "1119830104994271584", - "activity_name": "clanguml::t20025::A::a()", - "participant_id": "2144852170258286289" - }, - "name": "a2()", - "return_type": "void", - "scope": "normal", - "source_location": { - "column": 9, - "file": "../../tests/t20025/t20025.cc", - "line": 19, - "translation_unit": "../../tests/t20025/t20025.cc" - }, - "to": { - "activity_id": "2059622670024664066", - "activity_name": "clanguml::t20025::A::a2()", - "participant_id": "2144852170258286289" - }, - "type": "message" - }, { "from": { "activity_id": "1268545806896171690", diff --git a/docs/test_cases/t20025_sequence.svg b/docs/test_cases/t20025_sequence.svg index 4cd249a9..e03721c9 100644 --- a/docs/test_cases/t20025_sequence.svg +++ b/docs/test_cases/t20025_sequence.svg @@ -1,6 +1,6 @@ - + - + @@ -9,54 +9,45 @@ - - - - - - - - - + + + + + + + + tmain() - - tmain() + + tmain() - - + + A - - A + + A - - + + add(int,int) - - add(int,int) + + add(int,int) - - - - - + + + + a() - - - - - - a2() + + + + + - - - - - - - - + + diff --git a/docs/test_cases/t20025_sequence_mermaid.svg b/docs/test_cases/t20025_sequence_mermaid.svg index 555db82f..35762bd1 100644 --- a/docs/test_cases/t20025_sequence_mermaid.svg +++ b/docs/test_cases/t20025_sequence_mermaid.svg @@ -1,24 +1,24 @@ - + - - + + add(int,int) - - + + A - - + + tmain() - + @@ -27,7 +27,7 @@ - + @@ -36,7 +36,7 @@ - + @@ -83,25 +83,20 @@ - + - + - - - - + a() - a2() - - ​ - - ​ - - ​ - + ​ + + ​ + + ​ + diff --git a/docs/test_cases/t20026.md b/docs/test_cases/t20026.md index b068a903..90546e51 100644 --- a/docs/test_cases/t20026.md +++ b/docs/test_cases/t20026.md @@ -54,7 +54,7 @@ int tmain() { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.4.0-2-g4ab0d29", + "clang_uml_version": "0.4.0-32-g701b2c5", "llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)", "schema_version": 1 }, diff --git a/docs/test_cases/t20026_sequence.svg b/docs/test_cases/t20026_sequence.svg index e91cfe8b..f0b0cf1c 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.md b/docs/test_cases/t20027.md index 720da7a9..a674242a 100644 --- a/docs/test_cases/t20027.md +++ b/docs/test_cases/t20027.md @@ -53,7 +53,7 @@ void tmain() { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.4.0-2-g4ab0d29", + "clang_uml_version": "0.4.0-32-g701b2c5", "llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)", "schema_version": 1 }, diff --git a/docs/test_cases/t20027_sequence.svg b/docs/test_cases/t20027_sequence.svg index 56f7d861..403e77f5 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.md b/docs/test_cases/t20028.md index c16662b4..3a6c8fd4 100644 --- a/docs/test_cases/t20028.md +++ b/docs/test_cases/t20028.md @@ -63,7 +63,7 @@ int tmain() { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.4.0-2-g4ab0d29", + "clang_uml_version": "0.4.0-32-g701b2c5", "llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)", "schema_version": 1 }, diff --git a/docs/test_cases/t20028_sequence.svg b/docs/test_cases/t20028_sequence.svg index f3c6665c..44565196 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.md b/docs/test_cases/t20029.md index 90ea8710..3091ab2d 100644 --- a/docs/test_cases/t20029.md +++ b/docs/test_cases/t20029.md @@ -3,6 +3,8 @@ ```yaml compilation_database_dir: .. output_directory: diagrams +add_compile_flags: + - -fparse-all-comments diagrams: t20029_sequence: type: sequence @@ -18,6 +20,7 @@ diagrams: - clanguml::t20029 from: - function: clanguml::t20029::tmain() + generate_message_comments: true participants_order: - clanguml::t20029::tmain() - clanguml::t20029::Encoder> @@ -42,7 +45,10 @@ template class Encoder : public T { public: bool send(std::string &&msg) { - return T::send(std::move(encode(std::move(msg)))); + return T::send(std::move( + // Encode the message using Base64 encoding and pass it to the next + // layer + encode(std::move(msg)))); } protected: @@ -57,6 +63,7 @@ public: int retryCount = 5; + // Repeat until send() succeeds or retry count is exceeded while (retryCount--) { if (T::send(buffer)) return true; @@ -86,8 +93,10 @@ int tmain() { auto pool = std::make_shared>>(); + // Establish connection to the remote server synchronously pool->connect(); + // Repeat for each line in the input stream for (std::string line; std::getline(std::cin, line);) { if (!pool->send(std::move(line))) break; @@ -107,7 +116,7 @@ int tmain() { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.4.0-2-g4ab0d29", + "clang_uml_version": "0.4.0-32-g701b2c5", "llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)", "schema_version": 1 }, @@ -119,7 +128,7 @@ int tmain() "source_location": { "column": 5, "file": "../../tests/t20029/t20029.cc", - "line": 55, + "line": 59, "translation_unit": "../../tests/t20029/t20029.cc" }, "type": "function" @@ -141,7 +150,7 @@ int tmain() "source_location": { "column": 29, "file": "../../tests/t20029/t20029.cc", - "line": 22, + "line": 25, "translation_unit": "../../tests/t20029/t20029.cc" }, "type": "class" @@ -152,7 +161,7 @@ int tmain() "source_location": { "column": 7, "file": "../../tests/t20029/t20029.cc", - "line": 39, + "line": 43, "translation_unit": "../../tests/t20029/t20029.cc" }, "type": "class" @@ -173,6 +182,7 @@ int tmain() { "messages": [ { + "comment": "Establish connection to the remote server synchronously", "from": { "activity_id": "2091374738808319642", "activity_name": "clanguml::t20029::tmain()", @@ -185,7 +195,7 @@ int tmain() "source_location": { "column": 5, "file": "../../tests/t20029/t20029.cc", - "line": 59, + "line": 64, "translation_unit": "../../tests/t20029/t20029.cc" }, "to": { @@ -216,7 +226,7 @@ int tmain() "source_location": { "column": 14, "file": "../../tests/t20029/t20029.cc", - "line": 62, + "line": 68, "translation_unit": "../../tests/t20029/t20029.cc" }, "to": { @@ -227,6 +237,7 @@ int tmain() "type": "message" }, { + "comment": "Encode the message using Base64 encoding and pass it to the next\nlayer", "from": { "activity_id": "2026763864005979273", "activity_name": "clanguml::t20029::Encoder>::send(std::string &&)", @@ -236,9 +247,9 @@ int tmain() "return_type": "std::string", "scope": "normal", "source_location": { - "column": 34, + "column": 13, "file": "../../tests/t20029/t20029.cc", - "line": 15, + "line": 18, "translation_unit": "../../tests/t20029/t20029.cc" }, "to": { @@ -260,7 +271,7 @@ int tmain() "source_location": { "column": 52, "file": "../../tests/t20029/t20029.cc", - "line": 19, + "line": 22, "translation_unit": "../../tests/t20029/t20029.cc" }, "to": { @@ -312,7 +323,7 @@ int tmain() "source_location": { "column": 17, "file": "../../tests/t20029/t20029.cc", - "line": 31, + "line": 35, "translation_unit": "../../tests/t20029/t20029.cc" }, "to": { diff --git a/docs/test_cases/t20029_sequence.svg b/docs/test_cases/t20029_sequence.svg index 5056a16f..d926f0ad 100644 --- a/docs/test_cases/t20029_sequence.svg +++ b/docs/test_cases/t20029_sequence.svg @@ -1,6 +1,6 @@ - + - + @@ -9,117 +9,134 @@ - - - - - - - - - - - - - - - - - - - tmain() - - tmain() + + + + + + + + + + + + + + + + + + + tmain() + + tmain() - - - Encoder<Retrier<ConnectionPool>> - - Encoder<Retrier<ConnectionPool>> + + + Encoder<Retrier<ConnectionPool>> + + Encoder<Retrier<ConnectionPool>> - - - Retrier<ConnectionPool> - - Retrier<ConnectionPool> + + + Retrier<ConnectionPool> + + Retrier<ConnectionPool> - - - ConnectionPool - - ConnectionPool + + + ConnectionPool + + ConnectionPool - - - encode_b64(std::string &&) - - encode_b64(std::string &&) + + + encode_b64(std::string &&) + + encode_b64(std::string &&) - - - - - - - - - - - connect() + + + + + + + + + + Establish connection to the + remote server synchronously + + + + connect() - - - loop - - - alt - - - - [ - send(std::string &&) - ] + + + Repeat for each line in the + input stream + + + loop + + + alt + + + + [ + send(std::string &&) + ] - - - - - - encode(std::string &&) + + + Encode the message using + Base64 encoding and pass + it to the next layer + + + + + + encode(std::string &&) - - - + + + - - - - - - - - - - send(std::string &&) + + + + + + + + + + send(std::string &&) - - - loop - - - alt - - - - [ - send(const std::string &) - ] + + + Repeat until send() succeeds + or retry count is exceeded + + + loop + + + alt + + + + [ + send(const std::string &) + ] - - - - - - + + + + + + diff --git a/docs/test_cases/t20029_sequence_mermaid.svg b/docs/test_cases/t20029_sequence_mermaid.svg index 3eefa41d..262a0097 100644 --- a/docs/test_cases/t20029_sequence_mermaid.svg +++ b/docs/test_cases/t20029_sequence_mermaid.svg @@ -1,36 +1,36 @@ - + - - + + encode_b64(std::string &&) - - + + ConnectionPool - - + + Retrier<ConnectionPool> - - + + Encoder<Retrier<ConnectionPool>> - - + + tmain() - + @@ -39,7 +39,7 @@ - + @@ -48,7 +48,7 @@ - + @@ -57,7 +57,7 @@ - + @@ -66,7 +66,7 @@ - + @@ -113,90 +113,129 @@ - + - + + + Establish connection to the + + + remote server synchronously + - + - + + + Repeat for each line in the + + + input stream + - + - + + + Encode the message using + + + Base64 encoding and pass + + + it to the next layer + - + - - - - - - alt - + + + + + + + + + Repeat until send() succeeds + + + or retry count is exceeded + + + + + + + + + + + + alt + ​ - - - - - - loop - + + + + + + loop + ​ - - - - - - alt - + + + + + + alt + ​ - - - - - - loop - + + + + + + loop + ​ - connect() - - [send(std::string &&)] - - encode(std::string &&) - - ​ - - ​ - - ​ - - send(std::string &&) - - [send(const std::string &)] - - ​ - - ​ - - ​ - + connect() + + [send(std::string &&)] + + encode(std::string &&) + + ​ + + ​ + + ​ + + send(std::string &&) + + [send(const std::string &)] + + ​ + + ​ + + ​ + diff --git a/docs/test_cases/t20030.md b/docs/test_cases/t20030.md index 43c05728..16293637 100644 --- a/docs/test_cases/t20030.md +++ b/docs/test_cases/t20030.md @@ -81,7 +81,7 @@ int tmain(bool f, int a) { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.4.0-2-g4ab0d29", + "clang_uml_version": "0.4.0-32-g701b2c5", "llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)", "schema_version": 1 }, diff --git a/docs/test_cases/t20030_sequence.svg b/docs/test_cases/t20030_sequence.svg index 85ca8961..f463576e 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.md b/docs/test_cases/t20031.md index 2e2e2bed..d3766d42 100644 --- a/docs/test_cases/t20031.md +++ b/docs/test_cases/t20031.md @@ -97,7 +97,7 @@ int tmain(bool f, int a) { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.4.0-2-g4ab0d29", + "clang_uml_version": "0.4.0-32-g701b2c5", "llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)", "schema_version": 1 }, diff --git a/docs/test_cases/t20031_sequence.svg b/docs/test_cases/t20031_sequence.svg index 4723bf8f..c5a17787 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.md b/docs/test_cases/t20032.md index e155dfe9..12eb7b0a 100644 --- a/docs/test_cases/t20032.md +++ b/docs/test_cases/t20032.md @@ -57,7 +57,7 @@ void tmain(int argc, char **argv) { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.4.0-2-g4ab0d29", + "clang_uml_version": "0.4.0-32-g701b2c5", "llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)", "schema_version": 1 }, diff --git a/docs/test_cases/t20032_sequence.svg b/docs/test_cases/t20032_sequence.svg index 5670d9d7..d3e7d588 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.md b/docs/test_cases/t20033.md index c91ec36e..fdca24e8 100644 --- a/docs/test_cases/t20033.md +++ b/docs/test_cases/t20033.md @@ -95,7 +95,7 @@ int tmain() { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.4.0-2-g4ab0d29", + "clang_uml_version": "0.4.0-32-g701b2c5", "llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)", "schema_version": 1 }, diff --git a/docs/test_cases/t20033_sequence.svg b/docs/test_cases/t20033_sequence.svg index d4e4b443..eaeafebf 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.md b/docs/test_cases/t20034.md index 080072e2..19c034ca 100644 --- a/docs/test_cases/t20034.md +++ b/docs/test_cases/t20034.md @@ -101,7 +101,7 @@ void B::b4() { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.4.0-2-g4ab0d29", + "clang_uml_version": "0.4.0-32-g701b2c5", "llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)", "schema_version": 1 }, diff --git a/docs/test_cases/t20034_sequence.svg b/docs/test_cases/t20034_sequence.svg index 94be1259..28e2382f 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 ../../tests/t20034/t20034.cc:56:18) - + D::d2()::(lambda ../../tests/t20034/t20034.cc:56:18) d2() - + c2() - + b2() - + a2() - + d2() - + a2() - + d2() - + operator()() - + a2() - + d2() - + c4() - + b4() - + b2() - + a2() - + d2() - + c1() - + b1() - + a2() - + d2() - + c3() - + c2() - + b2() - + a2() diff --git a/docs/test_cases/t20035.md b/docs/test_cases/t20035.md index 5f18a46d..f964068a 100644 --- a/docs/test_cases/t20035.md +++ b/docs/test_cases/t20035.md @@ -44,7 +44,7 @@ int tmain(int argc, char **argv) { return a(argc); } { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.4.0-2-g4ab0d29", + "clang_uml_version": "0.4.0-32-g701b2c5", "llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)", "schema_version": 1 }, diff --git a/docs/test_cases/t20035_sequence.svg b/docs/test_cases/t20035_sequence.svg index 2c77bb99..3d5d61d0 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.md b/docs/test_cases/t20036.md index 1ed6f0fe..07288825 100644 --- a/docs/test_cases/t20036.md +++ b/docs/test_cases/t20036.md @@ -73,7 +73,7 @@ struct D { { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.4.0-2-g4ab0d29", + "clang_uml_version": "0.4.0-32-g701b2c5", "llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)", "schema_version": 1 }, diff --git a/docs/test_cases/t20036_sequence.svg b/docs/test_cases/t20036_sequence.svg index 51f7a156..7cb886f9 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.md b/docs/test_cases/t20037.md index 2e61eb09..fd7d9a36 100644 --- a/docs/test_cases/t20037.md +++ b/docs/test_cases/t20037.md @@ -67,7 +67,7 @@ void tmain(int argc, char **argv) { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.4.0-2-g4ab0d29", + "clang_uml_version": "0.4.0-32-g701b2c5", "llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)", "schema_version": 1 }, diff --git a/docs/test_cases/t20037_sequence.svg b/docs/test_cases/t20037_sequence.svg index bd588574..b2e5a9ab 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.md b/docs/test_cases/t20038.md new file mode 100644 index 00000000..6f0495c6 --- /dev/null +++ b/docs/test_cases/t20038.md @@ -0,0 +1,573 @@ +# t20038 - Sequence diagram comment decorator test case +## Config +```yaml +compilation_database_dir: .. +output_directory: diagrams +add_compile_flags: + - -fparse-all-comments +diagrams: + t20038_sequence: + type: sequence + glob: + - ../../tests/t20038/t20038.cc + include: + namespaces: + - clanguml::t20038 + from: + - function: clanguml::t20038::tmain() + generate_message_comments: true + message_comment_width: 35 + using_namespace: + - clanguml::t20038 +``` +## Source code +File t20038.cc +```cpp +#include + +#include "include/t20038.h" + +namespace clanguml { +namespace t20038 { + +struct A { + int a() { return 1; } + + int aa() + { + int i; + // Repeat 10 times + for (i = 0; i < 10;) { + i += a(); + } + return i; + } + + int aaa() { return 3; } + + int aaaa() { return add(4, 4); } + + int aaaaa() { return 5; } +}; + +struct B { + int b() { return a.a(); } + + int bb() { return a.aa(); } + + int bbb() { return a.aaa(); } + + int bbbb() { return a.aaaa(); } + + int bbbbb() { return a.aaaa(); } + + int wrap(int b) { return b; } + + A a; +}; + +int tmain() +{ + B b; + + // Nisl purus in mollis nunc sed id semper. Varius vel pharetra vel + // turpis. Arcu cursus vitae congue mauris rhoncus. Risus feugiat in + // ante metus dictum at tempor. Lacus vel facilisis volutpat est. Auctor + // urna nunc id cursus metus aliquam. Diam sit amet nisl suscipit + // adipiscing. Potenti nullam ac tortor vitae purus faucibus ornare + // suspendisse sed. Lobortis feugiat vivamus at augue eget arcu dictum + // varius. Non tellus orci ac auctor. + if (true) { + auto r = 0; + // Repeat 5 times... + while (r < 5) { + r += b.b(); + } + return r; + } + else { + // ... or just once + return 2 * b.b(); + } + + // \uml{skip} + b.bb(); + + // \uml{call clanguml::t20038::B::bbb()} + auto bbb_future = std::async(std::launch::deferred, &B::bbb, b); + + bbb_future.wait(); + + // This comment should be rendered only once + b.wrap(b.bbbb()); + + add_impl(2, 2); // What is 2 + 2? + + // This is a generic comment about calling bbbbb() + // + // \uml{note:some_other_diagram[] This is specific for some_other_diagram} + // \uml{note:t20038_sequence[] Calling B::bbbbb()} + b.bbbbb(); + + // This is a conditional operator + return b.bbb() > 5 ? 0 : 1; +} +} +} +``` +## Generated PlantUML diagrams +![t20038_sequence](./t20038_sequence.svg "Sequence diagram comment decorator test case") +## Generated Mermaid diagrams +![t20038_sequence](./t20038_sequence_mermaid.svg "Sequence diagram comment decorator test case") +## Generated JSON models +```json +{ + "diagram_type": "sequence", + "metadata": { + "clang_uml_version": "0.4.0-32-g701b2c5", + "llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)", + "schema_version": 1 + }, + "name": "t20038_sequence", + "participants": [ + { + "id": "1013610625329227974", + "name": "clanguml::t20038::tmain()", + "source_location": { + "column": 5, + "file": "../../tests/t20038/t20038.cc", + "line": 44, + "translation_unit": "../../tests/t20038/t20038.cc" + }, + "type": "function" + }, + { + "id": "1040787777721396414", + "name": "clanguml::t20038::B", + "source_location": { + "column": 8, + "file": "../../tests/t20038/t20038.cc", + "line": 28, + "translation_unit": "../../tests/t20038/t20038.cc" + }, + "type": "class" + }, + { + "id": "2022724814881480995", + "name": "clanguml::t20038::A", + "source_location": { + "column": 8, + "file": "../../tests/t20038/t20038.cc", + "line": 8, + "translation_unit": "../../tests/t20038/t20038.cc" + }, + "type": "class" + }, + { + "id": "2008308445790932614", + "name": "clanguml::t20038::add(int,int)", + "source_location": { + "column": 25, + "file": "../../tests/t20038/include/t20038.h", + "line": 8, + "translation_unit": "../../tests/t20038/t20038.cc" + }, + "type": "function_template" + }, + { + "id": "1863007445376981099", + "name": "clanguml::t20038::add_impl(int,int)", + "source_location": { + "column": 25, + "file": "../../tests/t20038/include/t20038.h", + "line": 6, + "translation_unit": "../../tests/t20038/t20038.cc" + }, + "type": "function_template" + }, + { + "id": "1722521509166427875", + "name": "clanguml::t20038::add_impl(double,double)", + "source_location": { + "column": 25, + "file": "../../tests/t20038/include/t20038.h", + "line": 6, + "translation_unit": "../../tests/t20038/t20038.cc" + }, + "type": "function_template" + } + ], + "sequences": [ + { + "messages": [ + { + "activity_id": "1013610625329227974", + "branches": [ + { + "messages": [ + { + "activity_id": "1013610625329227974", + "messages": [ + { + "from": { + "activity_id": "1013610625329227974", + "activity_name": "clanguml::t20038::tmain()", + "participant_id": "1013610625329227974", + "participant_name": "clanguml::t20038::tmain()" + }, + "name": "b()", + "return_type": "int", + "scope": "normal", + "source_location": { + "column": 18, + "file": "../../tests/t20038/t20038.cc", + "line": 59, + "translation_unit": "../../tests/t20038/t20038.cc" + }, + "to": { + "activity_id": "690314603725772987", + "activity_name": "clanguml::t20038::B::b()", + "participant_id": "1040787777721396414" + }, + "type": "message" + }, + { + "from": { + "activity_id": "690314603725772987", + "activity_name": "clanguml::t20038::B::b()", + "participant_id": "1040787777721396414" + }, + "name": "a()", + "return_type": "int", + "scope": "normal", + "source_location": { + "column": 22, + "file": "../../tests/t20038/t20038.cc", + "line": 29, + "translation_unit": "../../tests/t20038/t20038.cc" + }, + "to": { + "activity_id": "1311298747919334371", + "activity_name": "clanguml::t20038::A::a()", + "participant_id": "2022724814881480995" + }, + "type": "message" + } + ], + "name": "while", + "type": "loop" + } + ], + "type": "consequent" + }, + { + "messages": [ + { + "comment": "... or just once", + "from": { + "activity_id": "1013610625329227974", + "activity_name": "clanguml::t20038::tmain()", + "participant_id": "1013610625329227974", + "participant_name": "clanguml::t20038::tmain()" + }, + "name": "b()", + "return_type": "int", + "scope": "normal", + "source_location": { + "column": 20, + "file": "../../tests/t20038/t20038.cc", + "line": 65, + "translation_unit": "../../tests/t20038/t20038.cc" + }, + "to": { + "activity_id": "690314603725772987", + "activity_name": "clanguml::t20038::B::b()", + "participant_id": "1040787777721396414" + }, + "type": "message" + } + ], + "type": "alternative" + } + ], + "name": "if", + "type": "alt" + }, + { + "from": { + "activity_id": "1013610625329227974", + "activity_name": "clanguml::t20038::tmain()", + "participant_id": "1013610625329227974", + "participant_name": "clanguml::t20038::tmain()" + }, + "name": "bbb()", + "return_type": "int", + "scope": "normal", + "source_location": { + "column": 23, + "file": "../../tests/t20038/t20038.cc", + "line": 72, + "translation_unit": "../../tests/t20038/t20038.cc" + }, + "to": { + "activity_id": "1902331999195245434", + "activity_name": "clanguml::t20038::B::bbb()", + "participant_id": "1040787777721396414" + }, + "type": "message" + }, + { + "from": { + "activity_id": "1902331999195245434", + "activity_name": "clanguml::t20038::B::bbb()", + "participant_id": "1040787777721396414" + }, + "name": "aaa()", + "return_type": "int", + "scope": "normal", + "source_location": { + "column": 24, + "file": "../../tests/t20038/t20038.cc", + "line": 33, + "translation_unit": "../../tests/t20038/t20038.cc" + }, + "to": { + "activity_id": "2157208254318041144", + "activity_name": "clanguml::t20038::A::aaa()", + "participant_id": "2022724814881480995" + }, + "type": "message" + }, + { + "from": { + "activity_id": "1013610625329227974", + "activity_name": "clanguml::t20038::tmain()", + "participant_id": "1013610625329227974", + "participant_name": "clanguml::t20038::tmain()" + }, + "name": "bbbb()", + "return_type": "int", + "scope": "normal", + "source_location": { + "column": 12, + "file": "../../tests/t20038/t20038.cc", + "line": 77, + "translation_unit": "../../tests/t20038/t20038.cc" + }, + "to": { + "activity_id": "57189865474209187", + "activity_name": "clanguml::t20038::B::bbbb()", + "participant_id": "1040787777721396414" + }, + "type": "message" + }, + { + "from": { + "activity_id": "57189865474209187", + "activity_name": "clanguml::t20038::B::bbbb()", + "participant_id": "1040787777721396414" + }, + "name": "aaaa()", + "return_type": "int", + "scope": "normal", + "source_location": { + "column": 25, + "file": "../../tests/t20038/t20038.cc", + "line": 35, + "translation_unit": "../../tests/t20038/t20038.cc" + }, + "to": { + "activity_id": "1370854824770046153", + "activity_name": "clanguml::t20038::A::aaaa()", + "participant_id": "2022724814881480995" + }, + "type": "message" + }, + { + "from": { + "activity_id": "1370854824770046153", + "activity_name": "clanguml::t20038::A::aaaa()", + "participant_id": "2022724814881480995" + }, + "name": "", + "return_type": "", + "scope": "normal", + "source_location": { + "column": 25, + "file": "../../tests/t20038/t20038.cc", + "line": 23, + "translation_unit": "../../tests/t20038/t20038.cc" + }, + "to": { + "activity_id": "2008308445790932614", + "activity_name": "clanguml::t20038::add(int,int)", + "participant_id": "2008308445790932614" + }, + "type": "message" + }, + { + "comment": "Invoke 'add' implementation", + "from": { + "activity_id": "2008308445790932614", + "activity_name": "clanguml::t20038::add(int,int)", + "participant_id": "2008308445790932614", + "participant_name": "clanguml::t20038::add(int,int)" + }, + "name": "", + "return_type": "", + "scope": "normal", + "source_location": { + "column": 12, + "file": "../../tests/t20038/include/t20038.h", + "line": 11, + "translation_unit": "../../tests/t20038/t20038.cc" + }, + "to": { + "activity_id": "1863007445376981099", + "activity_name": "clanguml::t20038::add_impl(int,int)", + "participant_id": "1863007445376981099" + }, + "type": "message" + }, + { + "comment": "This comment should be rendered only once", + "from": { + "activity_id": "1013610625329227974", + "activity_name": "clanguml::t20038::tmain()", + "participant_id": "1013610625329227974", + "participant_name": "clanguml::t20038::tmain()" + }, + "name": "wrap(int)", + "return_type": "int", + "scope": "normal", + "source_location": { + "column": 5, + "file": "../../tests/t20038/t20038.cc", + "line": 77, + "translation_unit": "../../tests/t20038/t20038.cc" + }, + "to": { + "activity_id": "732774941205637034", + "activity_name": "clanguml::t20038::B::wrap(int)", + "participant_id": "1040787777721396414" + }, + "type": "message" + }, + { + "comment": "What is 2 + 2?", + "from": { + "activity_id": "1013610625329227974", + "activity_name": "clanguml::t20038::tmain()", + "participant_id": "1013610625329227974", + "participant_name": "clanguml::t20038::tmain()" + }, + "name": "", + "return_type": "", + "scope": "normal", + "source_location": { + "column": 5, + "file": "../../tests/t20038/t20038.cc", + "line": 79, + "translation_unit": "../../tests/t20038/t20038.cc" + }, + "to": { + "activity_id": "1722521509166427875", + "activity_name": "clanguml::t20038::add_impl(double,double)", + "participant_id": "1722521509166427875" + }, + "type": "message" + }, + { + "comment": "This is a generic comment about calling bbbbb()\n\n\\uml{note:some_other_diagram[] This is specific for some_other_diagram}\n\\uml{note:t20038_sequence[] Calling B::bbbbb()}", + "from": { + "activity_id": "1013610625329227974", + "activity_name": "clanguml::t20038::tmain()", + "participant_id": "1013610625329227974", + "participant_name": "clanguml::t20038::tmain()" + }, + "name": "bbbbb()", + "return_type": "int", + "scope": "normal", + "source_location": { + "column": 5, + "file": "../../tests/t20038/t20038.cc", + "line": 85, + "translation_unit": "../../tests/t20038/t20038.cc" + }, + "to": { + "activity_id": "726295067786650864", + "activity_name": "clanguml::t20038::B::bbbbb()", + "participant_id": "1040787777721396414" + }, + "type": "message" + }, + { + "from": { + "activity_id": "726295067786650864", + "activity_name": "clanguml::t20038::B::bbbbb()", + "participant_id": "1040787777721396414" + }, + "name": "aaaa()", + "return_type": "int", + "scope": "normal", + "source_location": { + "column": 26, + "file": "../../tests/t20038/t20038.cc", + "line": 37, + "translation_unit": "../../tests/t20038/t20038.cc" + }, + "to": { + "activity_id": "1370854824770046153", + "activity_name": "clanguml::t20038::A::aaaa()", + "participant_id": "2022724814881480995" + }, + "type": "message" + }, + { + "activity_id": "1013610625329227974", + "branches": [ + { + "messages": [ + { + "from": { + "activity_id": "1013610625329227974", + "activity_name": "clanguml::t20038::tmain()", + "participant_id": "1013610625329227974", + "participant_name": "clanguml::t20038::tmain()" + }, + "name": "bbb()", + "return_type": "int", + "scope": "condition", + "source_location": { + "column": 12, + "file": "../../tests/t20038/t20038.cc", + "line": 88, + "translation_unit": "../../tests/t20038/t20038.cc" + }, + "to": { + "activity_id": "1902331999195245434", + "activity_name": "clanguml::t20038::B::bbb()", + "participant_id": "1040787777721396414" + }, + "type": "message" + } + ], + "type": "consequent" + }, + { + "type": "alternative" + } + ], + "name": "conditional", + "type": "alt" + } + ], + "start_from": { + "id": 1013610625329227974, + "location": "clanguml::t20038::tmain()" + } + } + ], + "using_namespace": "clanguml::t20038" +} +``` diff --git a/docs/test_cases/t20038_sequence.svg b/docs/test_cases/t20038_sequence.svg new file mode 100644 index 00000000..ad43f791 --- /dev/null +++ b/docs/test_cases/t20038_sequence.svg @@ -0,0 +1,271 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + cursus vitae congue mauris rhoncus. + Risus feugiat in ante metus dictum + at tempor. Lacus vel facilisis volutpat + est. Auctor urna nunc id cursus metus + aliquam. Diam sit amet nisl suscipit + adipiscing. Potenti nullam ac tortor + vitae purus faucibus ornare suspendisse + sed. Lobortis feugiat vivamus at augue + eget arcu dictum varius. Non tellus + orci ac auctor. + + + alt + + + Repeat 5 times... + + + loop + + + + b() + + + + + a() + + + + + + + + + ... or just once + + + + b() + + + + + a() + + + + + + + + + bbb() + + + + + aaa() + + + + + + + + + bbbb() + + + + + aaaa() + + + + + + + + Invoke 'add' implementation + + + + + + + + + + + + + + + This comment should be rendered only + once + + + + wrap(int) + + + + + + What is 2 + 2? + + + + + + + + + Calling B::bbbbb() + + + + bbbbb() + + + + + aaaa() + + + + + + + + Invoke 'add' implementation + + + + + + + + + + + + + + + This is a conditional operator + + + alt + + + + [ + bbb() + ] + + + + + aaa() + + + + + + + + diff --git a/docs/test_cases/t20038_sequence_mermaid.svg b/docs/test_cases/t20038_sequence_mermaid.svg new file mode 100644 index 00000000..91eb0a95 --- /dev/null +++ b/docs/test_cases/t20038_sequence_mermaid.svg @@ -0,0 +1,384 @@ + + + + + add_impl<double>(double,double) + + + + + + add_impl<int>(int,int) + + + + + + add<int>(int,int) + + + + + + A + + + + + + B + + + + + + tmain() + + + + + + + + add_impl<double>(double,double) + + + + + + + + + add_impl<int>(int,int) + + + + + + + + + add<int>(int,int) + + + + + + + + + A + + + + + + + + + B + + + + + + + + + tmain() + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Nisl purus in mollis nunc sed id semper. + + + Varius vel pharetra vel turpis. Arcu + + + cursus vitae congue mauris rhoncus. + + + Risus feugiat in ante metus dictum + + + at tempor. Lacus vel facilisis volutpat + + + est. Auctor urna nunc id cursus metus + + + aliquam. Diam sit amet nisl suscipit + + + adipiscing. Potenti nullam ac tortor + + + vitae purus faucibus ornare suspendisse + + + sed. Lobortis feugiat vivamus at augue + + + eget arcu dictum varius. Non tellus + + + orci ac auctor. + + + + + + Repeat 5 times... + + + + + + + + + + + + + + + loop + + ​ + + + + + + ... or just once + + + + + + + + + + + + + + + + alt + + ​ + + + + + + + + + + + + + + + + + + + + + Invoke 'add' implementation + + + + + + + + + This comment should be rendered only + + + once + + + + + + + + + What is 2 + 2? + + + + + + + + + Calling B::bbbbb() + + + + + + + + + + + + + + + Invoke 'add' implementation + + + + + + + + + This is a conditional operator + + + + + + + + + + + + + + + + alt + + ​ + + + b() + + a() + + ​ + + ​ + + b() + + a() + + ​ + + ​ + + bbb() + + aaa() + + ​ + + ​ + + bbbb() + + aaaa() + + ​ + + ​ + + ​ + + ​ + + ​ + + ​ + + wrap(int) + + ​ + + ​ + + ​ + + bbbbb() + + aaaa() + + ​ + + ​ + + ​ + + ​ + + ​ + + ​ + + [bbb()] + + aaa() + + ​ + + ​ + + diff --git a/docs/test_cases/t30001.md b/docs/test_cases/t30001.md index 7136233b..1c172feb 100644 --- a/docs/test_cases/t30001.md +++ b/docs/test_cases/t30001.md @@ -6,6 +6,7 @@ output_directory: diagrams diagrams: t30001_package: type: package + title: Basic package diagram example glob: - ../../tests/t30001/t30001.cc include: @@ -253,12 +254,13 @@ namespace BB { } ], "metadata": { - "clang_uml_version": "0.4.0-2-g4ab0d29", + "clang_uml_version": "0.4.0-32-g701b2c5", "llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)", "schema_version": 1 }, "name": "t30001_package", "relationships": [], + "title": "Basic package diagram example", "using_namespace": "clanguml::t30001" } ``` diff --git a/docs/test_cases/t30001_package.svg b/docs/test_cases/t30001_package.svg index 554ced8b..e8e33b09 100644 --- a/docs/test_cases/t30001_package.svg +++ b/docs/test_cases/t30001_package.svg @@ -1,6 +1,6 @@ - + - + @@ -9,67 +9,68 @@ - - - - A + Basic package diagram example + + + + A - - - - AA + + + + AA - - - - B + + + + B - - - - AA + + + + AA - - - - AAA + + + + AAA - - - - BBB + + + + BBB - - - - BB + + + + BB - - - - AAA + + + + AAA - - - - BBB + + + + BBB - - - - BB + + + + BB - - - A AAA note... - - - This is namespace AA in namespace A - - - This is namespace AA in namespace B - - - + + + A AAA note... + + + This is namespace AA in namespace A + + + This is namespace AA in namespace B + + + diff --git a/docs/test_cases/t30001_package_mermaid.svg b/docs/test_cases/t30001_package_mermaid.svg index 36542ab3..a1082ce0 100644 --- a/docs/test_cases/t30001_package_mermaid.svg +++ b/docs/test_cases/t30001_package_mermaid.svg @@ -1,4 +1,5 @@ - + + Basic package diagram example @@ -207,4 +208,5 @@ + Basic package diagram example diff --git a/docs/test_cases/t30002.md b/docs/test_cases/t30002.md index adc0738d..127c2d13 100644 --- a/docs/test_cases/t30002.md +++ b/docs/test_cases/t30002.md @@ -489,17 +489,12 @@ template std::map> cm() } ], "metadata": { - "clang_uml_version": "0.4.0-2-g4ab0d29", + "clang_uml_version": "0.4.0-32-g701b2c5", "llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)", "schema_version": 1 }, "name": "t30002_package", "relationships": [ - { - "destination": "1246394833900790496", - "source": "2255521339657425355", - "type": "dependency" - }, { "destination": "839146342143718390", "source": "2255521339657425355", @@ -525,11 +520,6 @@ template std::map> cm() "source": "2255521339657425355", "type": "dependency" }, - { - "destination": "1116163804866368736", - "source": "2255521339657425355", - "type": "dependency" - }, { "destination": "299262817531370604", "source": "2255521339657425355", diff --git a/docs/test_cases/t30002_package.svg b/docs/test_cases/t30002_package.svg index 3dfb1d61..9cd63446 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.md b/docs/test_cases/t30003.md index b174da59..8c181020 100644 --- a/docs/test_cases/t30003.md +++ b/docs/test_cases/t30003.md @@ -171,17 +171,12 @@ class B : public ns1::ns2::Anon { }; } ], "metadata": { - "clang_uml_version": "0.4.0-2-g4ab0d29", + "clang_uml_version": "0.4.0-32-g701b2c5", "llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)", "schema_version": 1 }, "name": "t30003_package", "relationships": [ - { - "destination": "820462660523726751", - "source": "427104404739526818", - "type": "dependency" - }, { "destination": "647755950450743637", "source": "820462660523726751", diff --git a/docs/test_cases/t30003_package.svg b/docs/test_cases/t30003_package.svg index 365f9648..ad016800 100644 --- a/docs/test_cases/t30003_package.svg +++ b/docs/test_cases/t30003_package.svg @@ -1,6 +1,6 @@ - + - + @@ -9,41 +9,39 @@ - - - - ns1 + + + + ns1 - - - - ns3 - «deprecated» + + + + ns3 + «deprecated» - - - - ns1 + + + + ns1 - - - - ns2_v1_0_0 + + + + ns2_v1_0_0 - - - - ns2_v0_9_0 - «deprecated» + + + + ns2_v0_9_0 + «deprecated» - - - - ns2 + + + + ns2 - - - - + + diff --git a/docs/test_cases/t30003_package_mermaid.svg b/docs/test_cases/t30003_package_mermaid.svg index 417d2e5b..0a3b23e0 100644 --- a/docs/test_cases/t30003_package_mermaid.svg +++ b/docs/test_cases/t30003_package_mermaid.svg @@ -37,7 +37,7 @@ - +
@@ -49,7 +49,6 @@ - @@ -61,18 +60,9 @@ - - - -
- -
-
-
-
- + @@ -83,7 +73,7 @@ - + @@ -94,7 +84,7 @@ - + diff --git a/docs/test_cases/t30004.md b/docs/test_cases/t30004.md index 6fcd6ac3..28bebd07 100644 --- a/docs/test_cases/t30004.md +++ b/docs/test_cases/t30004.md @@ -182,7 +182,7 @@ namespace CCC { } ], "metadata": { - "clang_uml_version": "0.4.0-2-g4ab0d29", + "clang_uml_version": "0.4.0-32-g701b2c5", "llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)", "schema_version": 1 }, diff --git a/docs/test_cases/t30004_package.svg b/docs/test_cases/t30004_package.svg index 6debf282..e84446ea 100644 --- a/docs/test_cases/t30004_package.svg +++ b/docs/test_cases/t30004_package.svg @@ -1,6 +1,6 @@ - + @@ -9,46 +9,46 @@ - - + + A - + Package AAA. - + Package BBB. - + CCCC package note. - + We skipped DDD. - - + + AAA - - + + BBB - - + + CCC - - + + EEE - - - - + + + + diff --git a/docs/test_cases/t30005.md b/docs/test_cases/t30005.md index 334eab7a..32b43205 100644 --- a/docs/test_cases/t30005.md +++ b/docs/test_cases/t30005.md @@ -216,7 +216,7 @@ struct C2 { } ], "metadata": { - "clang_uml_version": "0.4.0-2-g4ab0d29", + "clang_uml_version": "0.4.0-32-g701b2c5", "llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)", "schema_version": 1 }, diff --git a/docs/test_cases/t30005_package.svg b/docs/test_cases/t30005_package.svg index aea464ac..8965245e 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.md b/docs/test_cases/t30006.md index 9a53b058..7da680d0 100644 --- a/docs/test_cases/t30006.md +++ b/docs/test_cases/t30006.md @@ -130,7 +130,7 @@ struct A2 { } ], "metadata": { - "clang_uml_version": "0.4.0-2-g4ab0d29", + "clang_uml_version": "0.4.0-32-g701b2c5", "llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)", "schema_version": 1 }, diff --git a/docs/test_cases/t30006_package.svg b/docs/test_cases/t30006_package.svg index 75c53abf..99f5350e 100644 --- a/docs/test_cases/t30006_package.svg +++ b/docs/test_cases/t30006_package.svg @@ -1,6 +1,6 @@ - + @@ -9,25 +9,25 @@ - - + + B - - + + A - - + + C - + Top A note. - + diff --git a/docs/test_cases/t30007.md b/docs/test_cases/t30007.md index 9ee3d7f5..d502d8e7 100644 --- a/docs/test_cases/t30007.md +++ b/docs/test_cases/t30007.md @@ -153,7 +153,7 @@ struct A2 { } ], "metadata": { - "clang_uml_version": "0.4.0-2-g4ab0d29", + "clang_uml_version": "0.4.0-32-g701b2c5", "llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)", "schema_version": 1 }, diff --git a/docs/test_cases/t30007_package.svg b/docs/test_cases/t30007_package.svg index 94192e19..7159b59a 100644 --- a/docs/test_cases/t30007_package.svg +++ b/docs/test_cases/t30007_package.svg @@ -1,6 +1,6 @@ - + @@ -9,30 +9,30 @@ - - + + A - - + + B - - + + AA - - + + C - + Compare layout with t30006. - + diff --git a/docs/test_cases/t30008.md b/docs/test_cases/t30008.md index 43ae629e..b08808ce 100644 --- a/docs/test_cases/t30008.md +++ b/docs/test_cases/t30008.md @@ -213,7 +213,7 @@ struct FF { } ], "metadata": { - "clang_uml_version": "0.4.0-2-g4ab0d29", + "clang_uml_version": "0.4.0-32-g701b2c5", "llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)", "schema_version": 1 }, diff --git a/docs/test_cases/t30008_package.svg b/docs/test_cases/t30008_package.svg index 16df97f2..7d23d72a 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.md b/docs/test_cases/t30009.md index 82aa60ad..73b94c6e 100644 --- a/docs/test_cases/t30009.md +++ b/docs/test_cases/t30009.md @@ -219,7 +219,7 @@ namespace D { } ], "metadata": { - "clang_uml_version": "0.4.0-2-g4ab0d29", + "clang_uml_version": "0.4.0-32-g701b2c5", "llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)", "schema_version": 1 }, diff --git a/docs/test_cases/t30009_package.svg b/docs/test_cases/t30009_package.svg index 32a097ef..5adb3cdb 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.md b/docs/test_cases/t30010.md index d01389ec..00acad6d 100644 --- a/docs/test_cases/t30010.md +++ b/docs/test_cases/t30010.md @@ -49,6 +49,12 @@ App app; "id": "879212264535378961", "is_deprecated": false, "name": "lib1", + "source_location": { + "column": 8, + "file": "../../clang-uml/tests/t30010/libraries/lib1/lib1.h", + "line": 7, + "translation_unit": "../../clang-uml/tests/t30010/t30010.cc" + }, "type": "namespace" }, { @@ -56,6 +62,12 @@ App app; "id": "1522606219626203424", "is_deprecated": false, "name": "lib2", + "source_location": { + "column": 30, + "file": "../../clang-uml/tests/t30010/libraries/lib2/lib2.h", + "line": 7, + "translation_unit": "../../clang-uml/tests/t30010/t30010.cc" + }, "type": "namespace" }, { @@ -63,6 +75,12 @@ App app; "id": "2263709579652581325", "is_deprecated": false, "name": "lib3", + "source_location": { + "column": 6, + "file": "../../clang-uml/tests/t30010/libraries/lib3/lib3.h", + "line": 7, + "translation_unit": "../../clang-uml/tests/t30010/t30010.cc" + }, "type": "namespace" }, { @@ -70,6 +88,12 @@ App app; "id": "1103453030023410219", "is_deprecated": false, "name": "lib4", + "source_location": { + "column": 8, + "file": "../../clang-uml/tests/t30010/libraries/lib4/lib4.h", + "line": 7, + "translation_unit": "../../clang-uml/tests/t30010/t30010.cc" + }, "type": "namespace" } ], @@ -83,11 +107,17 @@ App app; "id": "2001320261642080149", "is_deprecated": false, "name": "app", + "source_location": { + "column": 8, + "file": "../../clang-uml/tests/t30010/app/app.h", + "line": 11, + "translation_unit": "../../clang-uml/tests/t30010/t30010.cc" + }, "type": "namespace" } ], "metadata": { - "clang_uml_version": "0.4.0-2-g4ab0d29", + "clang_uml_version": "0.4.0-32-g701b2c5", "llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)", "schema_version": 1 }, diff --git a/docs/test_cases/t30010_package.svg b/docs/test_cases/t30010_package.svg index 13b850a7..0f67945e 100644 --- a/docs/test_cases/t30010_package.svg +++ b/docs/test_cases/t30010_package.svg @@ -1,6 +1,6 @@ - + @@ -9,24 +9,34 @@ - + libraries - - - lib1 - - - lib2 - - - lib3 - - - lib4 - - - app + + + + lib1 + + + + + lib2 + + + + + lib3 + + + + + lib4 + + + + + app + diff --git a/docs/test_cases/t30010_package_mermaid.svg b/docs/test_cases/t30010_package_mermaid.svg index f0026729..897b1799 100644 --- a/docs/test_cases/t30010_package_mermaid.svg +++ b/docs/test_cases/t30010_package_mermaid.svg @@ -77,7 +77,7 @@ - + @@ -88,7 +88,7 @@ - + @@ -99,7 +99,7 @@ - + @@ -110,7 +110,7 @@ - + @@ -121,7 +121,7 @@ - + diff --git a/docs/test_cases/t30011.md b/docs/test_cases/t30011.md index f0060ed2..c8f471e6 100644 --- a/docs/test_cases/t30011.md +++ b/docs/test_cases/t30011.md @@ -39,6 +39,12 @@ struct t30011_App app; "id": "879212264535378961", "is_deprecated": false, "name": "lib1", + "source_location": { + "column": 8, + "file": "../../clang-uml/tests/t30011/libraries/lib1/lib1.h", + "line": 3, + "translation_unit": "../../clang-uml/tests/t30011/t30011.c" + }, "type": "namespace" }, { @@ -46,6 +52,12 @@ struct t30011_App app; "id": "1522606219626203424", "is_deprecated": false, "name": "lib2", + "source_location": { + "column": 8, + "file": "../../clang-uml/tests/t30011/libraries/lib2/lib2.h", + "line": 3, + "translation_unit": "../../clang-uml/tests/t30011/t30011.c" + }, "type": "namespace" }, { @@ -53,6 +65,12 @@ struct t30011_App app; "id": "2263709579652581325", "is_deprecated": false, "name": "lib3", + "source_location": { + "column": 6, + "file": "../../clang-uml/tests/t30011/libraries/lib3/lib3.h", + "line": 3, + "translation_unit": "../../clang-uml/tests/t30011/t30011.c" + }, "type": "namespace" }, { @@ -60,6 +78,12 @@ struct t30011_App app; "id": "1103453030023410219", "is_deprecated": false, "name": "lib4", + "source_location": { + "column": 8, + "file": "../../clang-uml/tests/t30011/libraries/lib4/lib4.h", + "line": 3, + "translation_unit": "../../clang-uml/tests/t30011/t30011.c" + }, "type": "namespace" } ], @@ -73,11 +97,17 @@ struct t30011_App app; "id": "2001320261642080149", "is_deprecated": false, "name": "app", + "source_location": { + "column": 8, + "file": "../../clang-uml/tests/t30011/app/app.h", + "line": 8, + "translation_unit": "../../clang-uml/tests/t30011/t30011.c" + }, "type": "namespace" } ], "metadata": { - "clang_uml_version": "0.4.0-2-g4ab0d29", + "clang_uml_version": "0.4.0-32-g701b2c5", "llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)", "schema_version": 1 }, diff --git a/docs/test_cases/t30011_package.svg b/docs/test_cases/t30011_package.svg index 13b850a7..727afffd 100644 --- a/docs/test_cases/t30011_package.svg +++ b/docs/test_cases/t30011_package.svg @@ -1,6 +1,6 @@ - + @@ -9,24 +9,34 @@ - + libraries - - - lib1 - - - lib2 - - - lib3 - - - lib4 - - - app + + + + lib1 + + + + + lib2 + + + + + lib3 + + + + + lib4 + + + + + app + diff --git a/docs/test_cases/t30011_package_mermaid.svg b/docs/test_cases/t30011_package_mermaid.svg index f0026729..897b1799 100644 --- a/docs/test_cases/t30011_package_mermaid.svg +++ b/docs/test_cases/t30011_package_mermaid.svg @@ -77,7 +77,7 @@ - + @@ -88,7 +88,7 @@ - + @@ -99,7 +99,7 @@ - + @@ -110,7 +110,7 @@ - + @@ -121,7 +121,7 @@ - + diff --git a/docs/test_cases/t40001.md b/docs/test_cases/t40001.md index aac3dbd1..a3695c97 100644 --- a/docs/test_cases/t40001.md +++ b/docs/test_cases/t40001.md @@ -6,6 +6,7 @@ output_directory: diagrams diagrams: t40001_include: type: include + title: Basic include diagram example # Provide the files to parse in order to look # for #include directives glob: @@ -109,7 +110,7 @@ diagrams: } ], "metadata": { - "clang_uml_version": "0.4.0-2-g4ab0d29", + "clang_uml_version": "0.4.0-32-g701b2c5", "llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)", "schema_version": 1 }, @@ -145,6 +146,7 @@ diagrams: "source": "1926692816440595520", "type": "dependency" } - ] + ], + "title": "Basic include diagram example" } ``` diff --git a/docs/test_cases/t40001_include.svg b/docs/test_cases/t40001_include.svg index 45f96b8f..3d8d4751 100644 --- a/docs/test_cases/t40001_include.svg +++ b/docs/test_cases/t40001_include.svg @@ -1,6 +1,6 @@ - + - + @@ -9,58 +9,59 @@ - - - src - - - include - - - lib1 - - - - t40001.cc + Basic include diagram example + + + src + + + include + + + lib1 + + + + t40001.cc - - - - t40001_include1.h + + + + t40001_include1.h - - - - lib1.h + + + + lib1.h - - - string - - - vector - - - yaml-cpp/yaml.h - - - This is a lib1 include dir - - - This is a t40001_include1.h include file - - - - - - - - - - - - - - + + + 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 011a1999..0e34e5aa 100644 --- a/docs/test_cases/t40001_include_mermaid.svg +++ b/docs/test_cases/t40001_include_mermaid.svg @@ -1,4 +1,5 @@ - + + Basic include diagram example @@ -137,7 +138,7 @@ - + @@ -150,7 +151,7 @@ - + @@ -163,7 +164,7 @@ - + @@ -234,4 +235,5 @@ + Basic include diagram example diff --git a/docs/test_cases/t40002.md b/docs/test_cases/t40002.md index 0f752db9..715a201d 100644 --- a/docs/test_cases/t40002.md +++ b/docs/test_cases/t40002.md @@ -121,7 +121,7 @@ diagrams: } ], "metadata": { - "clang_uml_version": "0.4.0-2-g4ab0d29", + "clang_uml_version": "0.4.0-32-g701b2c5", "llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)", "schema_version": 1 }, diff --git a/docs/test_cases/t40002_include.svg b/docs/test_cases/t40002_include.svg index 56b516ef..5efd639c 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 0d4f487d..a62431be 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.md b/docs/test_cases/t40003.md index befa710f..11b3da4c 100644 --- a/docs/test_cases/t40003.md +++ b/docs/test_cases/t40003.md @@ -147,7 +147,7 @@ diagrams: } ], "metadata": { - "clang_uml_version": "0.4.0-2-g4ab0d29", + "clang_uml_version": "0.4.0-32-g701b2c5", "llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)", "schema_version": 1 }, diff --git a/docs/test_cases/t40003_include.svg b/docs/test_cases/t40003_include.svg index ecb33f1c..e92df4ce 100644 --- a/docs/test_cases/t40003_include.svg +++ b/docs/test_cases/t40003_include.svg @@ -1,6 +1,6 @@ - + @@ -9,66 +9,66 @@ - + 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 19b298f6..84783ea7 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 @@ - + diff --git a/docs/test_cases/t90000.md b/docs/test_cases/t90000.md index f5e1fe2f..a7b5eddf 100644 --- a/docs/test_cases/t90000.md +++ b/docs/test_cases/t90000.md @@ -50,7 +50,7 @@ File t90000.cc "diagram_type": "class", "elements": [], "metadata": { - "clang_uml_version": "0.4.0-2-g4ab0d29", + "clang_uml_version": "0.4.0-32-g701b2c5", "llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)", "schema_version": 1 }, diff --git a/src/common/clang_utils.cc b/src/common/clang_utils.cc index 884dc3b1..cbbaf991 100644 --- a/src/common/clang_utils.cc +++ b/src/common/clang_utils.cc @@ -849,4 +849,26 @@ bool parse_source_location(const std::string &location_str, std::string &file, return true; } +clang::RawComment *get_expression_raw_comment(const clang::SourceManager &sm, + const clang::ASTContext &context, const clang::Stmt *stmt) +{ + // First get the first line of the expression + auto expr_begin = stmt->getSourceRange().getBegin(); + const auto expr_begin_line = sm.getSpellingLineNumber(expr_begin); + + if (!context.Comments.empty() && + context.Comments.getCommentsInFile(sm.getFileID(expr_begin)) != nullptr) + for (const auto [offset, raw_comment] : + *context.Comments.getCommentsInFile(sm.getFileID(expr_begin))) { + const auto comment_end_line = sm.getSpellingLineNumber( + raw_comment->getSourceRange().getEnd()); + + if (expr_begin_line == comment_end_line || + expr_begin_line == comment_end_line + 1) + return raw_comment; + } + + return {}; +} + } // namespace clanguml::common diff --git a/src/common/clang_utils.h b/src/common/clang_utils.h index bb84460f..7c36e2d3 100644 --- a/src/common/clang_utils.h +++ b/src/common/clang_utils.h @@ -282,4 +282,15 @@ clang::QualType dereference(clang::QualType type); std::pair> consume_type_context(clang::QualType type); +/** + * @brief Extract a comment before or next to a statement + * + * @param sm clang::SourceManager reference + * @param context clang::ASTContext reference + * @param stmt Pointer to the current clang::Stmt + * @return Pointer to a clang::RawComment* or nullptr + */ +clang::RawComment *get_expression_raw_comment(const clang::SourceManager &sm, + const clang::ASTContext &context, const clang::Stmt *stmt); + } // namespace clanguml::common diff --git a/src/common/visitor/translation_unit_visitor.cc b/src/common/visitor/translation_unit_visitor.cc index 7a2e61fd..be873951 100644 --- a/src/common/visitor/translation_unit_visitor.cc +++ b/src/common/visitor/translation_unit_visitor.cc @@ -59,7 +59,6 @@ clang::SourceManager &translation_unit_visitor::source_manager() const void translation_unit_visitor::process_comment( const clang::NamedDecl &decl, clanguml::common::model::decorated_element &e) { - assert(comment_visitor_.get() != nullptr); comment_visitor_->visit(decl, e); @@ -67,12 +66,23 @@ void translation_unit_visitor::process_comment( const auto *comment = decl.getASTContext().getRawCommentForDeclNoCache(&decl); + process_comment(comment, decl.getASTContext().getDiagnostics(), e); +} + +void translation_unit_visitor::process_comment(const clang::RawComment *comment, + clang::DiagnosticsEngine &de, clanguml::common::model::decorated_element &e) +{ if (comment != nullptr) { + auto [it, inserted] = processed_comments_.emplace(comment); + + if (!inserted) + return; + // Process clang-uml decorators in the comments // TODO: Refactor to use standard block comments processable by clang // comments - e.add_decorators(decorators::parse(comment->getFormattedText( - source_manager_, decl.getASTContext().getDiagnostics()))); + e.add_decorators( + decorators::parse(comment->getFormattedText(source_manager_, de))); } } diff --git a/src/common/visitor/translation_unit_visitor.h b/src/common/visitor/translation_unit_visitor.h index 7a2ae6b2..22139863 100644 --- a/src/common/visitor/translation_unit_visitor.h +++ b/src/common/visitor/translation_unit_visitor.h @@ -102,7 +102,7 @@ public: protected: /** - * @brief Set source location in diagram element + * @brief Process comment directives in comment attached to a declaration * * @param decl Reference to @ref clang::NamedDecl * @param element Reference to element to be updated @@ -110,6 +110,17 @@ protected: void process_comment(const clang::NamedDecl &decl, clanguml::common::model::decorated_element &e); + /** + * @brief Process comment directives in raw comment + * + * @param comment clang::RawComment pointer + * @param de Reference to clang::DiagnosticsEngine + * @param element Reference to element to be updated + */ + void process_comment(const clang::RawComment *comment, + clang::DiagnosticsEngine &de, + clanguml::common::model::decorated_element &e); + private: clang::SourceManager &source_manager_; @@ -118,5 +129,7 @@ private: std::filesystem::path relative_to_path_; std::filesystem::path translation_unit_path_; + + std::set processed_comments_; }; } // namespace clanguml::common::visitor diff --git a/src/config/config.h b/src/config/config.h index 9f20dca5..f4560c87 100644 --- a/src/config/config.h +++ b/src/config/config.h @@ -480,6 +480,9 @@ struct inheritable_diagram_options { option generate_condition_statements{ "generate_condition_statements", false}; option> participants_order{"participants_order"}; + option generate_message_comments{"generate_message_comments", false}; + option message_comment_width{ + "message_comment_width", clanguml::util::kDefaultMessageCommentWidth}; option debug_mode{"debug_mode", false}; option generate_metadata{"generate_metadata", true}; diff --git a/src/config/schema.h b/src/config/schema.h index adedd86c..fc02f46d 100644 --- a/src/config/schema.h +++ b/src/config/schema.h @@ -201,6 +201,8 @@ types: combine_free_functions_into_file_participants: !optional bool generate_return_types: !optional bool generate_condition_statements: !optional bool + generate_message_comments: !optional bool + message_comment_width: !optional int participants_order: !optional [string] start_from: !optional [source_location_t] # deprecated -> 'from' from: !optional [source_location_t] @@ -311,6 +313,8 @@ root: combine_free_functions_into_file_participants: !optional bool generate_return_types: !optional bool generate_condition_statements: !optional bool + generate_message_comments: !optional bool + message_comment_width: !optional int generate_packages: !optional bool group_methods: !optional bool package_type: !optional package_type_t diff --git a/src/config/yaml_decoders.cc b/src/config/yaml_decoders.cc index e625640b..a2ca40de 100644 --- a/src/config/yaml_decoders.cc +++ b/src/config/yaml_decoders.cc @@ -603,6 +603,8 @@ template <> struct convert { get_option(node, rhs.relative_to); get_option(node, rhs.participants_order); get_option(node, rhs.generate_method_arguments); + get_option(node, rhs.generate_message_comments); + get_option(node, rhs.message_comment_width); // Ensure relative_to has a value if (!rhs.relative_to.has_value) @@ -792,6 +794,8 @@ template <> struct convert { get_option(node, rhs.combine_free_functions_into_file_participants); get_option(node, rhs.generate_return_types); get_option(node, rhs.generate_condition_statements); + get_option(node, rhs.generate_message_comments); + get_option(node, rhs.message_comment_width); rhs.base_directory.set(node["__parent_path"].as()); get_option(node, rhs.relative_to); diff --git a/src/config/yaml_emitters.cc b/src/config/yaml_emitters.cc index 3f415371..d717ec43 100644 --- a/src/config/yaml_emitters.cc +++ b/src/config/yaml_emitters.cc @@ -325,6 +325,8 @@ YAML::Emitter &operator<<( out << c.generate_method_arguments; out << c.generate_return_types; out << c.participants_order; + out << c.generate_message_comments; + out << c.message_comment_width; } else if (const auto *pd = dynamic_cast(&c); pd != nullptr) { diff --git a/src/decorators/decorators.cc b/src/decorators/decorators.cc index c8ff0371..38c7a63f 100644 --- a/src/decorators/decorators.cc +++ b/src/decorators/decorators.cc @@ -47,6 +47,9 @@ std::shared_ptr decorator::from_string(std::string_view c) if (c.find(association::label) == 0) { return association::from_string(c); } + if (c.find(call::label) == 0) { + return call::from_string(c); + } return {}; } @@ -173,6 +176,17 @@ std::shared_ptr association::from_string(std::string_view c) return res; } +std::shared_ptr call::from_string(std::string_view c) +{ + auto res = std::make_shared(); + auto toks = res->tokenize(call::label, c); + + res->diagrams = toks.diagrams; + res->callee = util::trim(toks.text); + + return res; +} + std::vector> parse( std::string documentation_block, const std::string &clanguml_tag) { diff --git a/src/decorators/decorators.h b/src/decorators/decorators.h index 4a62525a..2425607d 100644 --- a/src/decorators/decorators.h +++ b/src/decorators/decorators.h @@ -140,6 +140,17 @@ struct association : public relationship { static std::shared_ptr from_string(std::string_view c); }; +/** + * @brief Represents a call message in sequence diagram + */ +struct call : public decorator { + static inline const std::string label{"call"}; + + std::string callee; + + static std::shared_ptr from_string(std::string_view c); +}; + /** * @brief Parse a documentation block and extract all clang-uml decorators * diff --git a/src/sequence_diagram/generators/json/sequence_diagram_generator.cc b/src/sequence_diagram/generators/json/sequence_diagram_generator.cc index 45e13927..042ab1e3 100644 --- a/src/sequence_diagram/generators/json/sequence_diagram_generator.cc +++ b/src/sequence_diagram/generators/json/sequence_diagram_generator.cc @@ -110,6 +110,8 @@ void generator::generate_call(const message &m, nlohmann::json &parent) const msg["from"]["activity_id"] = std::to_string(from.value().id()); msg["to"]["activity_id"] = std::to_string(to.value().id()); msg["to"]["activity_name"] = to.value().full_name(false); + if (const auto &cmt = m.comment(); cmt.has_value()) + msg["comment"] = cmt.value(); if (from.value().type_name() == "method") { const auto &class_participant = diff --git a/src/sequence_diagram/generators/mermaid/sequence_diagram_generator.cc b/src/sequence_diagram/generators/mermaid/sequence_diagram_generator.cc index 6f364767..a1b44af0 100644 --- a/src/sequence_diagram/generators/mermaid/sequence_diagram_generator.cc +++ b/src/sequence_diagram/generators/mermaid/sequence_diagram_generator.cc @@ -53,6 +53,48 @@ void generator::generate_diagram_type(std::ostream &ostr) const ostr << "sequenceDiagram\n"; } +void generator::generate_message_comment( + std::ostream &ostr, const model::message &m) const +{ + const auto &from = model().get_participant(m.from()); + if (!from) + return; + + bool comment_generated_from_note_decorators{false}; + for (const auto &decorator : m.decorators()) { + auto note = std::dynamic_pointer_cast(decorator); + if (note && note->applies_to_diagram(config().name)) { + comment_generated_from_note_decorators = true; + + ostr << indent(1) << "note over " << generate_alias(from.value()) + << ": "; + + auto formatted_message = util::format_message_comment( + note->text, config().message_comment_width()); + + util::replace_all(formatted_message, "\n", "
"); + ostr << formatted_message << '\n'; + } + } + + if (comment_generated_from_note_decorators) + return; + + if (auto &cmt = m.comment(); + config().generate_message_comments() && cmt.has_value()) { + + ostr << indent(1) << "note over " << generate_alias(from.value()) + << ": "; + + auto formatted_message = util::format_message_comment( + cmt.value(), config().message_comment_width()); + + util::replace_all(formatted_message, "\n", "
"); + + ostr << formatted_message << '\n'; + } +} + void generator::generate_call(const message &m, std::ostream &ostr) const { const auto &from = model().get_participant(m.from()); @@ -91,6 +133,8 @@ void generator::generate_call(const message &m, std::ostream &ostr) const print_debug(m, ostr); + generate_message_comment(ostr, m); + ostr << indent(1) << from_alias << " " << common::generators::mermaid::to_mermaid(message_t::kCall) << " "; @@ -182,6 +226,7 @@ void generator::generate_activity(const activity &a, std::ostream &ostr, } else if (m.type() == message_t::kIf) { print_debug(m, ostr); + generate_message_comment(ostr, m); ostr << indent(1) << "alt"; if (const auto &text = m.condition_text(); text.has_value()) ostr << " " << render_message_text(text.value()); @@ -203,6 +248,7 @@ void generator::generate_activity(const activity &a, std::ostream &ostr, } else if (m.type() == message_t::kWhile) { print_debug(m, ostr); + generate_message_comment(ostr, m); ostr << indent(1) << "loop"; if (const auto &text = m.condition_text(); text.has_value()) ostr << " " << render_message_text(text.value()); @@ -213,6 +259,7 @@ void generator::generate_activity(const activity &a, std::ostream &ostr, } else if (m.type() == message_t::kFor) { print_debug(m, ostr); + generate_message_comment(ostr, m); ostr << indent(1) << "loop"; if (const auto &text = m.condition_text(); text.has_value()) ostr << " " << render_message_text(text.value()); @@ -223,6 +270,7 @@ void generator::generate_activity(const activity &a, std::ostream &ostr, } else if (m.type() == message_t::kDo) { print_debug(m, ostr); + generate_message_comment(ostr, m); ostr << indent(1) << "loop"; if (const auto &text = m.condition_text(); text.has_value()) ostr << " " << render_message_text(text.value()); @@ -233,6 +281,7 @@ void generator::generate_activity(const activity &a, std::ostream &ostr, } else if (m.type() == message_t::kTry) { print_debug(m, ostr); + generate_message_comment(ostr, m); ostr << indent(1) << "critical\n"; } else if (m.type() == message_t::kCatch) { @@ -246,6 +295,7 @@ void generator::generate_activity(const activity &a, std::ostream &ostr, } else if (m.type() == message_t::kSwitch) { print_debug(m, ostr); + generate_message_comment(ostr, m); ostr << indent(1) << "alt\n"; } else if (m.type() == message_t::kCase) { @@ -258,6 +308,7 @@ void generator::generate_activity(const activity &a, std::ostream &ostr, } else if (m.type() == message_t::kConditional) { print_debug(m, ostr); + generate_message_comment(ostr, m); ostr << indent(1) << "alt"; if (const auto &text = m.condition_text(); text.has_value()) ostr << " " << render_message_text(text.value()); diff --git a/src/sequence_diagram/generators/mermaid/sequence_diagram_generator.h b/src/sequence_diagram/generators/mermaid/sequence_diagram_generator.h index acb11be4..ef7f60f3 100644 --- a/src/sequence_diagram/generators/mermaid/sequence_diagram_generator.h +++ b/src/sequence_diagram/generators/mermaid/sequence_diagram_generator.h @@ -137,6 +137,15 @@ private: */ std::string generate_alias(const model::participant &participant) const; + /** + * @brief Generate message call note + * + * @param ostr Output stream + * @param m Message + */ + void generate_message_comment( + std::ostream &ostr, const model::message &m) const; + /** * @brief Convert config to model message render mode. * diff --git a/src/sequence_diagram/generators/plantuml/sequence_diagram_generator.cc b/src/sequence_diagram/generators/plantuml/sequence_diagram_generator.cc index e0fefc49..36d5f808 100644 --- a/src/sequence_diagram/generators/plantuml/sequence_diagram_generator.cc +++ b/src/sequence_diagram/generators/plantuml/sequence_diagram_generator.cc @@ -83,6 +83,8 @@ void generator::generate_call(const message &m, std::ostream &ostr) const print_debug(m, ostr); + generate_message_comment(ostr, m); + ostr << from_alias << " " << common::generators::plantuml::to_plantuml(message_t::kCall) << " "; @@ -178,6 +180,7 @@ void generator::generate_activity(const activity &a, std::ostream &ostr, } else if (m.type() == message_t::kIf) { print_debug(m, ostr); + generate_message_comment(ostr, m); ostr << "alt"; if (const auto &text = m.condition_text(); text.has_value()) ostr << " " << text.value(); @@ -199,6 +202,7 @@ void generator::generate_activity(const activity &a, std::ostream &ostr, } else if (m.type() == message_t::kWhile) { print_debug(m, ostr); + generate_message_comment(ostr, m); ostr << "loop"; if (const auto &text = m.condition_text(); text.has_value()) ostr << " " << text.value(); @@ -209,6 +213,7 @@ void generator::generate_activity(const activity &a, std::ostream &ostr, } else if (m.type() == message_t::kFor) { print_debug(m, ostr); + generate_message_comment(ostr, m); ostr << "loop"; if (const auto &text = m.condition_text(); text.has_value()) ostr << " " << text.value(); @@ -219,6 +224,7 @@ void generator::generate_activity(const activity &a, std::ostream &ostr, } else if (m.type() == message_t::kDo) { print_debug(m, ostr); + generate_message_comment(ostr, m); ostr << "loop"; if (const auto &text = m.condition_text(); text.has_value()) ostr << " " << text.value(); @@ -229,6 +235,7 @@ void generator::generate_activity(const activity &a, std::ostream &ostr, } else if (m.type() == message_t::kTry) { print_debug(m, ostr); + generate_message_comment(ostr, m); ostr << "group try\n"; } else if (m.type() == message_t::kCatch) { @@ -241,6 +248,7 @@ void generator::generate_activity(const activity &a, std::ostream &ostr, } else if (m.type() == message_t::kSwitch) { print_debug(m, ostr); + generate_message_comment(ostr, m); ostr << "group switch\n"; } else if (m.type() == message_t::kCase) { @@ -252,6 +260,7 @@ void generator::generate_activity(const activity &a, std::ostream &ostr, } else if (m.type() == message_t::kConditional) { print_debug(m, ostr); + generate_message_comment(ostr, m); ostr << "alt"; if (const auto &text = m.condition_text(); text.has_value()) ostr << " " << text.value(); @@ -267,6 +276,44 @@ void generator::generate_activity(const activity &a, std::ostream &ostr, } } +void generator::generate_message_comment( + std::ostream &ostr, const model::message &m) const +{ + const auto &from = model().get_participant(m.from()); + if (!from) + return; + + bool comment_generated_from_note_decorators{false}; + for (const auto &decorator : m.decorators()) { + auto note = std::dynamic_pointer_cast(decorator); + if (note && note->applies_to_diagram(config().name)) { + comment_generated_from_note_decorators = true; + + ostr << "note over " << generate_alias(from.value()) << '\n'; + + ostr << util::format_message_comment( + note->text, config().message_comment_width()) + << '\n'; + + ostr << "end note" << '\n'; + } + } + + if (comment_generated_from_note_decorators) + return; + + if (!config().generate_message_comments() || !m.comment()) + return; + + ostr << "note over " << generate_alias(from.value()) << '\n'; + + ostr << util::format_message_comment( + m.comment().value(), config().message_comment_width()) + << '\n'; + + ostr << "end note" << '\n'; +} + void generator::generate_participant( std::ostream &ostr, const std::string &name) const { diff --git a/src/sequence_diagram/generators/plantuml/sequence_diagram_generator.h b/src/sequence_diagram/generators/plantuml/sequence_diagram_generator.h index 14d547d2..35dc31ba 100644 --- a/src/sequence_diagram/generators/plantuml/sequence_diagram_generator.h +++ b/src/sequence_diagram/generators/plantuml/sequence_diagram_generator.h @@ -139,6 +139,15 @@ private: */ std::string render_name(std::string name) const; + /** + * @brief Generate message call note + * + * @param ostr Output stream + * @param m Message + */ + void generate_message_comment( + std::ostream &ostr, const model::message &m) const; + /** * @brief Convert config to model message render mode. * diff --git a/src/sequence_diagram/model/diagram.cc b/src/sequence_diagram/model/diagram.cc index 33311c77..34cf4fc9 100644 --- a/src/sequence_diagram/model/diagram.cc +++ b/src/sequence_diagram/model/diagram.cc @@ -445,10 +445,11 @@ void diagram::print() const const auto &to_participant = *participants_.at(message.to()); LOG_TRACE(" Message from={}, from_id={}, " - "to={}, to_id={}, name={}, type={}", + "to={}, to_id={}, name={}, type={}, comment={}", from_participant.full_name(false), from_participant.id(), to_participant.full_name(false), to_participant.id(), - message.message_name(), to_string(message.type())); + message.message_name(), to_string(message.type()), + message.comment() ? message.comment().value() : "None"); } } } diff --git a/src/sequence_diagram/model/message.cc b/src/sequence_diagram/model/message.cc index 69c059bb..54c7235c 100644 --- a/src/sequence_diagram/model/message.cc +++ b/src/sequence_diagram/model/message.cc @@ -58,6 +58,16 @@ void message::set_return_type(std::string t) { return_type_ = std::move(t); } const std::string &message::return_type() const { return return_type_; } +const std::optional &message::comment() const { return comment_; } + +void message::set_comment(std::string c) { comment_ = std::move(c); } + +void message::set_comment(const std::optional &c) +{ + if (c) + set_comment(c.value()); +} + void message::set_message_scope(common::model::message_scope_t scope) { scope_ = scope; diff --git a/src/sequence_diagram/model/message.h b/src/sequence_diagram/model/message.h index 0fb93720..1ca7a145 100644 --- a/src/sequence_diagram/model/message.h +++ b/src/sequence_diagram/model/message.h @@ -119,6 +119,12 @@ public: */ const std::string &return_type() const; + const std::optional &comment() const; + + void set_comment(std::string c); + + void set_comment(const std::optional &c); + /** * @brief Set message scope * @@ -172,6 +178,8 @@ private: std::optional condition_text_; + std::optional comment_; + bool in_static_declaration_context_{false}; }; diff --git a/src/sequence_diagram/visitor/call_expression_context.cc b/src/sequence_diagram/visitor/call_expression_context.cc index e84064a3..862ca241 100644 --- a/src/sequence_diagram/visitor/call_expression_context.cc +++ b/src/sequence_diagram/visitor/call_expression_context.cc @@ -75,6 +75,10 @@ clang::ASTContext *call_expression_context::get_ast_context() const return ¤t_function_decl_->getASTContext(); } + if (current_method_decl_ != nullptr) { + return ¤t_function_decl_->getASTContext(); + } + return nullptr; } diff --git a/src/sequence_diagram/visitor/translation_unit_visitor.cc b/src/sequence_diagram/visitor/translation_unit_visitor.cc index fe01c704..549fe504 100644 --- a/src/sequence_diagram/visitor/translation_unit_visitor.cc +++ b/src/sequence_diagram/visitor/translation_unit_visitor.cc @@ -613,6 +613,8 @@ bool translation_unit_visitor::TraverseIfStmt(clang::IfStmt *stmt) message m{message_t::kElseIf, current_caller_id}; set_source_location(*stmt, m); m.condition_text(condition_text); + m.set_comment(get_expression_comment(source_manager(), + *context().get_ast_context(), current_caller_id, stmt)); diagram().add_block_message(std::move(m)); } else { @@ -621,6 +623,8 @@ bool translation_unit_visitor::TraverseIfStmt(clang::IfStmt *stmt) message m{message_t::kIf, current_caller_id}; set_source_location(*stmt, m); m.condition_text(condition_text); + m.set_comment(get_expression_comment(source_manager(), + *context().get_ast_context(), current_caller_id, stmt)); diagram().add_block_message(std::move(m)); } } @@ -655,6 +659,8 @@ bool translation_unit_visitor::TraverseWhileStmt(clang::WhileStmt *stmt) message m{message_t::kWhile, current_caller_id}; set_source_location(*stmt, m); m.condition_text(condition_text); + m.set_comment(get_expression_comment(source_manager(), + *context().get_ast_context(), current_caller_id, stmt)); diagram().add_block_message(std::move(m)); } RecursiveASTVisitor::TraverseWhileStmt(stmt); @@ -685,6 +691,8 @@ bool translation_unit_visitor::TraverseDoStmt(clang::DoStmt *stmt) message m{message_t::kDo, current_caller_id}; set_source_location(*stmt, m); m.condition_text(condition_text); + m.set_comment(get_expression_comment(source_manager(), + *context().get_ast_context(), current_caller_id, stmt)); diagram().add_block_message(std::move(m)); } @@ -716,6 +724,10 @@ bool translation_unit_visitor::TraverseForStmt(clang::ForStmt *stmt) message m{message_t::kFor, current_caller_id}; set_source_location(*stmt, m); m.condition_text(condition_text); + + m.set_comment(get_expression_comment(source_manager(), + *context().get_ast_context(), current_caller_id, stmt)); + diagram().add_block_message(std::move(m)); } @@ -742,6 +754,8 @@ bool translation_unit_visitor::TraverseCXXTryStmt(clang::CXXTryStmt *stmt) context().enter_trystmt(stmt); message m{message_t::kTry, current_caller_id}; set_source_location(*stmt, m); + m.set_comment(get_expression_comment(source_manager(), + *context().get_ast_context(), current_caller_id, stmt)); diagram().add_block_message(std::move(m)); } @@ -800,6 +814,8 @@ bool translation_unit_visitor::TraverseCXXForRangeStmt( message m{message_t::kFor, current_caller_id}; set_source_location(*stmt, m); m.condition_text(condition_text); + m.set_comment(get_expression_comment(source_manager(), + *context().get_ast_context(), current_caller_id, stmt)); diagram().add_block_message(std::move(m)); } @@ -825,6 +841,8 @@ bool translation_unit_visitor::TraverseSwitchStmt(clang::SwitchStmt *stmt) context().enter_switchstmt(stmt); model::message m{message_t::kSwitch, current_caller_id}; set_source_location(*stmt, m); + m.set_comment(get_expression_comment(source_manager(), + *context().get_ast_context(), current_caller_id, stmt)); diagram().add_block_message(std::move(m)); } @@ -891,6 +909,8 @@ bool translation_unit_visitor::TraverseConditionalOperator( model::message m{message_t::kConditional, current_caller_id}; set_source_location(*stmt, m); m.condition_text(condition_text); + m.set_comment(get_expression_comment(source_manager(), + *context().get_ast_context(), current_caller_id, stmt)); diagram().add_block_message(std::move(m)); } @@ -927,19 +947,41 @@ bool translation_unit_visitor::VisitCallExpr(clang::CallExpr *expr) using clanguml::sequence_diagram::model::activity; using clanguml::sequence_diagram::model::message; - if (!should_include(expr)) + if (!context().valid() || context().get_ast_context() == nullptr) return true; - LOG_TRACE("Visiting call expression at {} [caller_id = {}]", - expr->getBeginLoc().printToString(source_manager()), - context().caller_id()); - message m{message_t::kCall, context().caller_id()}; m.in_static_declaration_context(within_static_variable_declaration_ > 0); set_source_location(*expr, m); + process_comment(clanguml::common::get_expression_raw_comment( + source_manager(), *context().get_ast_context(), expr), + context().get_ast_context()->getDiagnostics(), m); + + if (m.skip()) + return true; + + auto generated_message_from_comment{false}; + for (const auto &decorator : m.decorators()) { + auto call_decorator = + std::dynamic_pointer_cast(decorator); + if (call_decorator && + call_decorator->applies_to_diagram(config().name)) { + m.set_to(common::to_id(call_decorator->callee)); + generated_message_from_comment = true; + break; + } + } + + if (!generated_message_from_comment && !should_include(expr)) + return true; + + LOG_TRACE("Visiting call expression at {} [caller_id = {}]", + expr->getBeginLoc().printToString(source_manager()), + context().caller_id()); + // If we're currently inside a lambda expression, set it's id as // message source rather then enclosing context // Unless the lambda is declared in a function or method call @@ -951,17 +993,17 @@ bool translation_unit_visitor::VisitCallExpr(clang::CallExpr *expr) m.set_message_scope(common::model::message_scope_t::kCondition); } + if (generated_message_from_comment) { } // // Call to an overloaded operator // - if (const auto *operator_call_expr = - clang::dyn_cast_or_null(expr); - operator_call_expr != nullptr) { + else if (const auto *operator_call_expr = + clang::dyn_cast_or_null(expr); + operator_call_expr != nullptr) { if (!process_operator_call_expression(m, operator_call_expr)) return true; } - // // Call to a class method // @@ -1015,6 +1057,12 @@ bool translation_unit_visitor::VisitCallExpr(clang::CallExpr *expr) } if (m.from() > 0 && m.to() > 0) { + if (!generated_message_from_comment) { + auto expr_comment = get_expression_comment(source_manager(), + *context().get_ast_context(), context().caller_id(), expr); + m.set_comment(expr_comment); + } + if (diagram().sequences().find(m.from()) == diagram().sequences().end()) { activity a{m.from()}; @@ -2495,4 +2543,21 @@ bool translation_unit_visitor::should_include( namespace_{decl->getQualifiedNameAsString()}) && diagram().should_include(common::model::source_file{decl_file}); } + +std::optional translation_unit_visitor::get_expression_comment( + const clang::SourceManager &sm, const clang::ASTContext &context, + const int64_t caller_id, const clang::Stmt *stmt) +{ + const auto *raw_comment = + clanguml::common::get_expression_raw_comment(sm, context, stmt); + + if (raw_comment == nullptr) + return {}; + + if (!processed_comments_.emplace(caller_id, raw_comment).second) { + return {}; + } + + return raw_comment->getFormattedText(sm, sm.getDiagnostics()); +} } // namespace clanguml::sequence_diagram::visitor diff --git a/src/sequence_diagram/visitor/translation_unit_visitor.h b/src/sequence_diagram/visitor/translation_unit_visitor.h index 56d24430..1f0c688b 100644 --- a/src/sequence_diagram/visitor/translation_unit_visitor.h +++ b/src/sequence_diagram/visitor/translation_unit_visitor.h @@ -510,6 +510,10 @@ private: void pop_message_to_diagram(clang::CallExpr *expr); void pop_message_to_diagram(clang::CXXConstructExpr *expr); + std::optional get_expression_comment( + const clang::SourceManager &sm, const clang::ASTContext &context, + int64_t caller_id, const clang::Stmt *stmt); + // Reference to the output diagram model clanguml::sequence_diagram::model::diagram &diagram_; @@ -546,5 +550,8 @@ private: mutable unsigned within_static_variable_declaration_{0}; mutable std::set already_visited_in_static_declaration_{}; + + mutable std::set> + processed_comments_; }; } // namespace clanguml::sequence_diagram::visitor diff --git a/src/util/util.cc b/src/util/util.cc index 2f42ddb2..d69261ff 100644 --- a/src/util/util.cc +++ b/src/util/util.cc @@ -199,6 +199,28 @@ std::vector split( return result; } +std::vector split_isspace(std::string str) +{ + std::vector result; + + while (static_cast(!str.empty()) != 0U) { + auto index = std::find_if( + str.begin(), str.end(), [](auto c) { return std::isspace(c); }); + if (index != str.end()) { + auto tok = str.substr(0, std::distance(str.begin(), index)); + if (!tok.empty()) + result.push_back(std::move(tok)); + str = str.substr(std::distance(str.begin(), index) + 1); + } + else { + if (!str.empty()) + result.push_back(str); + str = ""; + } + } + return result; +} + std::string join( const std::vector &toks, std::string_view delimiter) { @@ -344,4 +366,40 @@ std::filesystem::path ensure_path_is_absolute( return result; } +std::string format_message_comment(const std::string &comment, unsigned width) +{ + if (width == 0) + return comment; + + std::string result; + + if (comment.empty()) + return result; + + auto tokens = split_isspace(comment); + + if (tokens.empty()) + return result; + + unsigned current_line_length{0}; + for (const auto &token : tokens) { + if (current_line_length < width) { + result += token; + result += ' '; + } + else { + result.back() = '\n'; + current_line_length = 0; + result += token; + result += ' '; + } + + current_line_length += token.size() + 1; + } + + result.pop_back(); + + return result; +} + } // namespace clanguml::util diff --git a/src/util/util.h b/src/util/util.h index bff44542..5a21c86e 100644 --- a/src/util/util.h +++ b/src/util/util.h @@ -57,6 +57,8 @@ namespace clanguml::util { #define FILENAME_ \ (strrchr(__FILE__, '/') ? strrchr(__FILE__, '/') + 1 : __FILE__) +constexpr unsigned kDefaultMessageCommentWidth{25U}; + /** * @brief Left trim a string * @@ -167,6 +169,8 @@ std::string get_os_name(); std::vector split( std::string str, std::string_view delimiter, bool skip_empty = true); +std::vector split_isspace(std::string str); + /** * @brief Remove and erase elements from a vector * @@ -424,4 +428,7 @@ std::string path_to_url(const std::filesystem::path &p); std::filesystem::path ensure_path_is_absolute(const std::filesystem::path &p, const std::filesystem::path &root = std::filesystem::current_path()); +std::string format_message_comment( + const std::string &c, unsigned width = kDefaultMessageCommentWidth); + } // namespace clanguml::util \ No newline at end of file diff --git a/tests/t20001/.clang-uml b/tests/t20001/.clang-uml index af58596c..10304840 100644 --- a/tests/t20001/.clang-uml +++ b/tests/t20001/.clang-uml @@ -1,5 +1,7 @@ compilation_database_dir: .. output_directory: diagrams +add_compile_flags: + - -fparse-all-comments diagrams: t20001_sequence: type: sequence diff --git a/tests/t20001/t20001.cc b/tests/t20001/t20001.cc index 2c7cdaca..4fd3be27 100644 --- a/tests/t20001/t20001.cc +++ b/tests/t20001/t20001.cc @@ -63,8 +63,10 @@ int tmain() A a; B b(a); + // \uml{note Just add 2 numbers} auto tmp = a.add(1, 2); + // \uml{note[] And now add another 2} return b.wrap_add3(tmp, 2, 3); } } diff --git a/tests/t20001/test_case.h b/tests/t20001/test_case.h index 7fea32bd..6f601ad2 100644 --- a/tests/t20001/test_case.h +++ b/tests/t20001/test_case.h @@ -45,6 +45,12 @@ TEST_CASE("t20001", "[test-case][sequence]") REQUIRE_THAT(src, HasComment("t20001 test diagram of type sequence")); + REQUIRE_THAT( + src, HasMessageComment(_A("tmain()"), "Just add 2 numbers")); + + REQUIRE_THAT( + src, HasMessageComment(_A("tmain()"), "And now add another 2")); + save_puml(config.output_directory(), diagram->name + ".puml", src); } { diff --git a/tests/t20029/.clang-uml b/tests/t20029/.clang-uml index cc1ccd3a..cc9e5703 100644 --- a/tests/t20029/.clang-uml +++ b/tests/t20029/.clang-uml @@ -1,5 +1,7 @@ compilation_database_dir: .. output_directory: diagrams +add_compile_flags: + - -fparse-all-comments diagrams: t20029_sequence: type: sequence @@ -15,6 +17,7 @@ diagrams: - clanguml::t20029 from: - function: clanguml::t20029::tmain() + generate_message_comments: true participants_order: - clanguml::t20029::tmain() - clanguml::t20029::Encoder> diff --git a/tests/t20029/t20029.cc b/tests/t20029/t20029.cc index 3c89144e..9d9c79b0 100644 --- a/tests/t20029/t20029.cc +++ b/tests/t20029/t20029.cc @@ -12,7 +12,10 @@ template class Encoder : public T { public: bool send(std::string &&msg) { - return T::send(std::move(encode(std::move(msg)))); + return T::send(std::move( + // Encode the message using Base64 encoding and pass it to the next + // layer + encode(std::move(msg)))); } protected: @@ -27,6 +30,7 @@ public: int retryCount = 5; + // Repeat until send() succeeds or retry count is exceeded while (retryCount--) { if (T::send(buffer)) return true; @@ -56,8 +60,10 @@ int tmain() { auto pool = std::make_shared>>(); + // Establish connection to the remote server synchronously pool->connect(); + // Repeat for each line in the input stream for (std::string line; std::getline(std::cin, line);) { if (!pool->send(std::move(line))) break; diff --git a/tests/t20029/test_case.h b/tests/t20029/test_case.h index 80ac68e8..8ae6262a 100644 --- a/tests/t20029/test_case.h +++ b/tests/t20029/test_case.h @@ -59,6 +59,27 @@ TEST_CASE("t20029", "[test-case][sequence]") !HasCall( _A("ConnectionPool"), _A("ConnectionPool"), "connect_impl()")); + REQUIRE_THAT(src, + HasMessageComment(_A("tmain()"), + "Establish connection to the\\n" + "remote server synchronously")); + + REQUIRE_THAT(src, + HasMessageComment(_A("tmain()"), + "Repeat for each line in the\\n" + "input stream")); + + REQUIRE_THAT(src, + HasMessageComment(_A("Encoder>"), + "Encode the message using\\n" + "Base64 encoding and pass\\n" + "it to the next layer")); + + REQUIRE_THAT(src, + HasMessageComment(_A("Retrier"), + "Repeat until send\\(\\) succeeds\\n" + "or retry count is exceeded")); + save_puml(config.output_directory(), diagram->name + ".puml", src); } @@ -90,6 +111,7 @@ TEST_CASE("t20029", "[test-case][sequence]") mermaid::SequenceDiagramAliasMatcher _A(src); using mermaid::HasCall; using mermaid::HasCallInControlCondition; + using mermaid::HasMessageComment; REQUIRE_THAT( src, HasCall(_A("tmain()"), _A("ConnectionPool"), "connect()")); @@ -115,6 +137,27 @@ TEST_CASE("t20029", "[test-case][sequence]") !HasCall( _A("ConnectionPool"), _A("ConnectionPool"), "connect_impl()")); + REQUIRE_THAT(src, + HasMessageComment(_A("tmain()"), + "Establish connection to the
" + "remote server synchronously")); + + REQUIRE_THAT(src, + HasMessageComment(_A("tmain()"), + "Repeat for each line in the
" + "input stream")); + + REQUIRE_THAT(src, + HasMessageComment(_A("Encoder>"), + "Encode the message using
" + "Base64 encoding and pass
" + "it to the next layer")); + + REQUIRE_THAT(src, + HasMessageComment(_A("Retrier"), + "Repeat until send\\(\\) succeeds
" + "or retry count is exceeded")); + save_mermaid(config.output_directory(), diagram->name + ".mmd", src); } } \ No newline at end of file diff --git a/tests/t20038/.clang-uml b/tests/t20038/.clang-uml new file mode 100644 index 00000000..70601a0a --- /dev/null +++ b/tests/t20038/.clang-uml @@ -0,0 +1,18 @@ +compilation_database_dir: .. +output_directory: diagrams +add_compile_flags: + - -fparse-all-comments +diagrams: + t20038_sequence: + type: sequence + glob: + - ../../tests/t20038/t20038.cc + include: + namespaces: + - clanguml::t20038 + from: + - function: clanguml::t20038::tmain() + generate_message_comments: true + message_comment_width: 35 + using_namespace: + - clanguml::t20038 \ No newline at end of file diff --git a/tests/t20038/include/t20038.h b/tests/t20038/include/t20038.h new file mode 100644 index 00000000..d79e3323 --- /dev/null +++ b/tests/t20038/include/t20038.h @@ -0,0 +1,14 @@ +#pragma once + +namespace clanguml { +namespace t20038 { + +template T add_impl(T a, T b) { return a + b; }; + +template T add(T a, T b) +{ + // Invoke 'add' implementation + return add_impl(a, b); +}; +} +} \ No newline at end of file diff --git a/tests/t20038/t20038.cc b/tests/t20038/t20038.cc new file mode 100644 index 00000000..9f2b6a79 --- /dev/null +++ b/tests/t20038/t20038.cc @@ -0,0 +1,91 @@ +#include + +#include "include/t20038.h" + +namespace clanguml { +namespace t20038 { + +struct A { + int a() { return 1; } + + int aa() + { + int i; + // Repeat 10 times + for (i = 0; i < 10;) { + i += a(); + } + return i; + } + + int aaa() { return 3; } + + int aaaa() { return add(4, 4); } + + int aaaaa() { return 5; } +}; + +struct B { + int b() { return a.a(); } + + int bb() { return a.aa(); } + + int bbb() { return a.aaa(); } + + int bbbb() { return a.aaaa(); } + + int bbbbb() { return a.aaaa(); } + + int wrap(int b) { return b; } + + A a; +}; + +int tmain() +{ + B b; + + // Nisl purus in mollis nunc sed id semper. Varius vel pharetra vel + // turpis. Arcu cursus vitae congue mauris rhoncus. Risus feugiat in + // ante metus dictum at tempor. Lacus vel facilisis volutpat est. Auctor + // urna nunc id cursus metus aliquam. Diam sit amet nisl suscipit + // adipiscing. Potenti nullam ac tortor vitae purus faucibus ornare + // suspendisse sed. Lobortis feugiat vivamus at augue eget arcu dictum + // varius. Non tellus orci ac auctor. + if (true) { + auto r = 0; + // Repeat 5 times... + while (r < 5) { + r += b.b(); + } + return r; + } + else { + // ... or just once + return 2 * b.b(); + } + + // \uml{skip} + b.bb(); + + // \uml{call clanguml::t20038::B::bbb()} + auto bbb_future = std::async(std::launch::deferred, &B::bbb, b); + + bbb_future.wait(); + + // This comment should be rendered only once + b.wrap(b.bbbb()); + + add_impl(2, 2); // What is 2 + 2? + + // This is a generic comment about calling bbbbb() + // + // \uml{note:some_other_diagram[] This is specific for some_other_diagram} + // \uml{note:t20038_sequence[] Calling B::bbbbb()} + b.bbbbb(); + + // This is a conditional operator + return b.bbb() > 5 ? 0 : 1; +} +} +} \ No newline at end of file diff --git a/tests/t20038/test_case.h b/tests/t20038/test_case.h new file mode 100644 index 00000000..9765010e --- /dev/null +++ b/tests/t20038/test_case.h @@ -0,0 +1,125 @@ +/** + * tests/t20038/test_case.h + * + * Copyright (c) 2021-2023 Bartek Kryza + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +TEST_CASE("t20038", "[test-case][sequence]") +{ + auto [config, db] = load_config("t20038"); + + auto diagram = config.diagrams["t20038_sequence"]; + + REQUIRE(diagram->name == "t20038_sequence"); + + auto model = generate_sequence_diagram(*db, diagram); + + REQUIRE(model->name() == "t20038_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("B"), "b()")); + + REQUIRE_THAT(src, !HasCall(_A("tmain()"), _A("B"), "bb()")); + + REQUIRE_THAT(src, HasCall(_A("tmain()"), _A("B"), "bbb()")); + + REQUIRE_THAT(src, HasCall(_A("tmain()"), _A("B"), "bbbb()")); + + REQUIRE_THAT(src, + HasMessageComment(_A("tmain()"), + "This comment should be rendered only\\n" + "once")); + + REQUIRE_THAT(src, + HasCall(_A("tmain()"), _A("add_impl(double,double)"), "")); + + REQUIRE_THAT( + src, HasMessageComment(_A("tmain()"), "What is 2 \\+ 2\\?")); + + REQUIRE_THAT(src, + !HasMessageComment( + _A("tmain()"), "This is specific for some_other_diagram")); + + REQUIRE_THAT( + src, HasMessageComment(_A("tmain()"), "Calling B::bbbbb\\(\\)")); + + REQUIRE_THAT(src, HasCall(_A("tmain()"), _A("B"), "bbbbb()")); + + REQUIRE_THAT(src, + HasMessageComment(_A("tmain()"), "This is a conditional operator")); + + 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::SequenceDiagramAliasMatcher _A(src); + using mermaid::HasCall; + using mermaid::HasCallInControlCondition; + using mermaid::HasMessageComment; + + REQUIRE_THAT(src, HasCall(_A("tmain()"), _A("B"), "b()")); + + REQUIRE_THAT(src, !HasCall(_A("tmain()"), _A("B"), "bb()")); + + REQUIRE_THAT(src, HasCall(_A("tmain()"), _A("B"), "bbb()")); + + REQUIRE_THAT(src, HasCall(_A("tmain()"), _A("B"), "bbbb()")); + + REQUIRE_THAT(src, + HasMessageComment(_A("tmain()"), + "This comment should be rendered only
" + "once")); + + REQUIRE_THAT(src, + HasCall(_A("tmain()"), _A("add_impl(double,double)"), "")); + + REQUIRE_THAT( + src, HasMessageComment(_A("tmain()"), "What is 2 \\+ 2\\?")); + + REQUIRE_THAT(src, + !HasMessageComment( + _A("tmain()"), "This is specific for some_other_diagram")); + + REQUIRE_THAT( + src, HasMessageComment(_A("tmain()"), "Calling B::bbbbb\\(\\)")); + + REQUIRE_THAT(src, HasCall(_A("tmain()"), _A("B"), "bbbbb()")); + + REQUIRE_THAT(src, + !HasMessageComment( + _A("tmain()"), "This is specific for some_other_diagram")); + + REQUIRE_THAT( + src, HasMessageComment(_A("tmain()"), "Calling B::bbbbb\\(\\)")); + + 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 76c7c529..a50b20df 100644 --- a/tests/test_cases.cc +++ b/tests/test_cases.cc @@ -46,6 +46,11 @@ load_config(const std::string &test_name) LOG_DBG("Loading compilation database from {}", res.first.compilation_database_dir()); + std::vector remove_compile_flags{ + std::string{"-Wno-class-memaccess"}}; + + res.first.remove_compile_flags.set(remove_compile_flags); + res.second = clanguml::common::compilation_database::auto_detect_from_directory( res.first); @@ -424,6 +429,7 @@ using namespace clanguml::test::matchers; #include "t20035/test_case.h" #include "t20036/test_case.h" #include "t20037/test_case.h" +#include "t20038/test_case.h" /// /// Package diagram tests diff --git a/tests/test_cases.h b/tests/test_cases.h index 4620800d..0e3a9c99 100644 --- a/tests/test_cases.h +++ b/tests/test_cases.h @@ -852,7 +852,22 @@ ContainsMatcher HasNote(std::string const &cls, std::string const &position, fmt::format("note {} of {}", position, cls), caseSensitivity)); } +auto HasMessageComment(std::string const &alias, std::string const ¬e, + CaseSensitive::Choice caseSensitivity = CaseSensitive::Yes) +{ + return Catch::Matchers::Matches( + std::string("note over ") + alias + "\\n" + note + "\\n" + "end note", + caseSensitivity); +} + namespace mermaid { +auto HasMessageComment(std::string const &alias, std::string const ¬e, + CaseSensitive::Choice caseSensitivity = CaseSensitive::Yes) +{ + return Catch::Matchers::Matches( + std::string("note over ") + alias + ": " + note, caseSensitivity); +} + ContainsMatcher HasNote(std::string const &cls, std::string const &position = "", std::string const ¬e = "", CaseSensitive::Choice caseSensitivity = CaseSensitive::Yes) diff --git a/tests/test_cases.yaml b/tests/test_cases.yaml index d964cbe6..da533aa1 100644 --- a/tests/test_cases.yaml +++ b/tests/test_cases.yaml @@ -310,6 +310,9 @@ test_cases: - name: t20037 title: Test case checking if activities in static variable declarations appear only once description: + - name: t20038 + title: Sequence diagram comment decorator test case + description: Package diagrams: - name: t30001 title: Basic package diagram test case diff --git a/tests/test_util.cc b/tests/test_util.cc index 5c069c7c..862de173 100644 --- a/tests/test_util.cc +++ b/tests/test_util.cc @@ -396,3 +396,24 @@ TEST_CASE("Test tokenize_unexposed_template_parameter", "[unit-test]") CHECK(r[i++] == ")"); } } + +TEST_CASE("Test format_message_comment", "[unit-test]") +{ + using namespace clanguml::util; + + CHECK(format_message_comment("\n\n ABCD \n", 0) == "\n\n ABCD \n"); + CHECK(format_message_comment("\n\n ABCD \n") == "ABCD"); + + CHECK(format_message_comment( + "Repeat until send() succeeds or retry count is exceeded") == + "Repeat until send() succeeds\nor retry count is exceeded"); + + CHECK(format_message_comment("12345678", 5) == "12345678"); + + CHECK(format_message_comment("") == ""); + + CHECK(format_message_comment(" ") == ""); + + CHECK(format_message_comment("This is a url: http://example.com/test/12345", + 15) == "This is a url:\nhttp://example.com/test/12345"); +}