diff --git a/CHANGELOG.md b/CHANGELOG.md index 7fd1c255..67048ec7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,6 @@ # CHANGELOG + * Added `from_to` and `to` location constraints to sequence diagrams (#154) * Fixed 'else if' statement generation in sequence diagrams (#81) * Implemented removal of redundant dependency relationhips (#28) * Add option to disable generation of dependency relation to template diff --git a/docs/sequence_diagrams.md b/docs/sequence_diagrams.md index 057957c3..cb1222e9 100644 --- a/docs/sequence_diagrams.md +++ b/docs/sequence_diagrams.md @@ -45,71 +45,106 @@ Consider the following diagram: ![extension](test_cases/t20029_sequence.svg) -`clang-uml` generated sequence diagrams are not strictly speaking conforming to the UML specification. In order to -make them more useful for documenting modern C++ code, the following assumptions were made: - * Free functions are included in the sequence diagrams as standalone participants (in fact `clang-uml` can be used - to generate sequence diagrams from plain old C code). Functions can also be aggregated into file participants, - based on their place of declaration - * Call expressions in conditional expressions in block statements (e.g. `if` or `while`) are rendered inside the - PlantUML `alt` or `loop` blocks but wrapped in `[`, `]` brackets - * Lambda expressions are generated as standalone participants, whose name comprises the parent context where they - are defined and the exact source code location +`clang-uml` generated sequence diagrams are not strictly speaking conforming to +the UML specification. In order to make them more useful for documenting modern +C++ code, the following assumptions were made: + * Free functions are included in the sequence diagrams as standalone + participants (in fact `clang-uml` can be used to generate sequence diagrams + from plain old C code). Functions can also be aggregated into file + participants, based on their place of declaration + * Call expressions in conditional expressions in block statements (e.g. `if` + or `while`) are rendered inside the PlantUML `alt` or `loop` blocks but + wrapped in `[`, `]` brackets + * Lambda expressions are generated as standalone participants, whose name + comprises the parent context where they are defined and the exact source code + location + +## Specifying diagram location constraints +Sequence diagrams require a specification of location constraints in order to +determine, which call chains should be included in the diagram. Currently, +there are 3 types of constraints: +* `from` - will include all message call chains which start at the + locations specified in this constraint (this was previously named + `start_from`) +* `to` - will include all message call chains which end at the specified + locations +* `from_to` - will include all call chains which start and end at the specified + location constraints + +Currently, the constraints can be a method or a free function, both specified +using the full signature of the function, e.g. -## Specifying diagram entry point -Sequence diagrams require an entry point for the diagram in order to determine, at which point in the code the sequence -diagram should start. Currently, the entry point can only be a method or a free function, both specified using `start_from` -configuration property, for instance: ```yaml - start_from: + from: - function: "main(int,const char**)" ``` or ```yaml -start_from: - - function: "clanguml::sequence_diagram::visitor::translation_unit_visitor::VisitCXXRecordDecl(clang::CXXRecordDecl *)" + to: + - function: "clanguml::sequence_diagram::visitor::translation_unit_visitor::VisitCXXRecordDecl(clang::CXXRecordDecl *)" ``` -The entrypoints must be fully qualified and they must match exactly the string -representation of given function or method in the `clang-uml` model. +The locations must be fully qualified, and they must match exactly the string +representation of a given function or method in the `clang-uml` model. -To find the exact function signature run `clang-uml` as follows: +In case of the `from_to` constraint, it is necessary to provide both `from` +and `to` locations as follows: +```yaml + from_to: + - [function: "clanguml::t20034::D::d2()", + function: "clanguml::t20034::A::a2()"] +``` + +To find the exact function signature which can be used as a `from` location, +run `clang-uml` as follows: ```bash -clang-uml --print-start-from -n main_sequence | grep main +clang-uml --print-from -n main_sequence | grep main ``` -Command line flag `--print-start-from` will print on stdout all functions -and methods available in the diagram model, and each line of this output -can be directly used as a value of `start_from` option in the config file. +or to get all possible `to` locations, run: + +```bash +clang-uml --print-to -n main_sequence | grep main +``` + +Command line flags `--print-from` and `--print-to` will print on stdout all +functions and methods available in the diagram model, and each line of this +output can be directly used as a value of `start_from`, `from_to` or `to` +properties in the config file. Since that list can be quite large, it's best to filter the output to limit the number of lines to a subset of possible candidates. ## Grouping free functions by file -By default, `clang-uml` will generate a new participant for each call to a free function (not method), which can lead -to a very large number of participants in the diagram. If it's an issue, an option can be provided in the diagram +By default, `clang-uml` will generate a new participant for each call to a free +function (not method), which can lead to a very large number of participants in +the diagram. If it's an issue, an option can be provided in the diagram definition: ```yaml combine_free_functions_into_file_participants: true ``` -which will aggregate free functions per source file where they were declared thus minimizing the -diagram size. An example of such diagram is presented below: +which will aggregate free functions per source file where they were declared +thus minimizing the diagram size. An example of such diagram is presented below: ![extension](test_cases/t20017_sequence.svg) ## Lambda expressions in sequence diagrams -Lambda expressions in sequence diagrams are... tricky. There is currently tentative support, which follows the -following rules: - * If lambda expression is called within the scope of the diagram, the calls from the lambda will be placed - at the lambda invocation and not declaration - * If lambda expression is passed to some function or method, which is outside the scope of the diagram - (e.g. used in `std::transform` call) the call will not be generated - * If the lambda is passed as template parameter in instantiation it will not be generated +Lambda expressions in sequence diagrams are... tricky. There is currently +tentative support, which follows the following rules: + * If lambda expression is called within the scope of the diagram, the calls + from the lambda will be placed at the lambda invocation and not declaration + * If lambda expression is passed to some function or method, which is outside + the scope of the diagram (e.g. used in `std::transform` call) the call will + not be generated + * If the lambda is passed as template parameter in instantiation it will not + be generated -Another issue is the naming of lambda participants. Currently, each lambda is rendered in the diagram as a separate -class whose name is composed of the lambda location in the code (the only unique way of identifying lambdas I was able +Another issue is the naming of lambda participants. Currently, each lambda is +rendered in the diagram as a separate class whose name is composed of the lambda +location in the code (the only unique way of identifying lambdas I was able to find). For example the following code: ```cpp @@ -216,10 +251,11 @@ results in the following diagram: ![extension](test_cases/t20012_sequence.svg) ## Customizing participants order -The default participant order in the sequence diagram can be suboptimal in the sense that consecutive calls -can go right, then left, then right again depending on the specific call chain in the code. It is however -possible to override this order in the diagram definition using `participants_order` property, -for instance like this test case: +The default participant order in the sequence diagram can be suboptimal in the +sense that consecutive calls can go right, then left, then right again +depending on the specific call chain in the code. It is however +possible to override this order in the diagram definition using +`participants_order` property, for instance like this test case: ```yaml compilation_database_dir: .. diff --git a/docs/test_cases.md b/docs/test_cases.md index 0be4fc2d..65dd1c6a 100644 --- a/docs/test_cases.md +++ b/docs/test_cases.md @@ -106,6 +106,9 @@ * [t20031](./test_cases/t20031.md) - Callee type sequence diagram filter test case * [t20032](./test_cases/t20032.md) - Return type generation option sequence diagram test case * [t20033](./test_cases/t20033.md) - Control statement text in sequence diagram test case + * [t20034](./test_cases/t20034.md) - Test case for rendering all call chains from one activity to another (from_to) + * [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) ## 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 030adcc1..87e846f6 100644 --- a/docs/test_cases/t00002.md +++ b/docs/test_cases/t00002.md @@ -618,7 +618,7 @@ private: } ], "metadata": { - "clang_uml_version": "0.3.8-18-gfd06d93", + "clang_uml_version": "0.3.8-32-ge830195", "llvm_version": "Ubuntu clang version 15.0.7", "schema_version": 1 }, diff --git a/docs/test_cases/t00002_class.svg b/docs/test_cases/t00002_class.svg index 029065c7..c7a4fe72 100644 --- a/docs/test_cases/t00002_class.svg +++ b/docs/test_cases/t00002_class.svg @@ -1,6 +1,6 @@ - + @@ -9,123 +9,123 @@ - - + + A - + - + foo_a() = 0 : void - + - + foo_c() = 0 : void - - + + B - + - + foo_a() : void - - + + C - + - + foo_c() : void - - + + D - + - + foo_a() : void - + - + foo_c() : void - + - + as : std::vector<A *> - - + + E - + - + foo_a() : void - + - + foo_c() : void - + - + as : std::vector<A *> - + This is class A - + This is class B - + This is class D diff --git a/docs/test_cases/t00003.md b/docs/test_cases/t00003.md index f0d9bf4f..45740e26 100644 --- a/docs/test_cases/t00003.md +++ b/docs/test_cases/t00003.md @@ -831,7 +831,7 @@ int A::static_int = 1; } ], "metadata": { - "clang_uml_version": "0.3.8-18-gfd06d93", + "clang_uml_version": "0.3.8-32-ge830195", "llvm_version": "Ubuntu clang version 15.0.7", "schema_version": 1 }, diff --git a/docs/test_cases/t00003_class.svg b/docs/test_cases/t00003_class.svg index e819f82d..a0f29032 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/t00004.md b/docs/test_cases/t00004.md index 4b6f852c..4200fd7c 100644 --- a/docs/test_cases/t00004.md +++ b/docs/test_cases/t00004.md @@ -528,7 +528,7 @@ public: } ], "metadata": { - "clang_uml_version": "0.3.8-18-gfd06d93", + "clang_uml_version": "0.3.8-32-ge830195", "llvm_version": "Ubuntu clang version 15.0.7", "schema_version": 1 }, diff --git a/docs/test_cases/t00004_class.svg b/docs/test_cases/t00004_class.svg index 7e4ce1a5..80f7fd69 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/t00005.md b/docs/test_cases/t00005.md index 099b135c..593827e8 100644 --- a/docs/test_cases/t00005.md +++ b/docs/test_cases/t00005.md @@ -518,7 +518,7 @@ public: } ], "metadata": { - "clang_uml_version": "0.3.8-18-gfd06d93", + "clang_uml_version": "0.3.8-32-ge830195", "llvm_version": "Ubuntu clang version 15.0.7", "schema_version": 1 }, diff --git a/docs/test_cases/t00005_class.svg b/docs/test_cases/t00005_class.svg index c4bd96ef..39221f16 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/t00006.md b/docs/test_cases/t00006.md index e0df13b8..87e6e5ba 100644 --- a/docs/test_cases/t00006.md +++ b/docs/test_cases/t00006.md @@ -699,7 +699,7 @@ public: } ], "metadata": { - "clang_uml_version": "0.3.8-18-gfd06d93", + "clang_uml_version": "0.3.8-32-ge830195", "llvm_version": "Ubuntu clang version 15.0.7", "schema_version": 1 }, diff --git a/docs/test_cases/t00006_class.svg b/docs/test_cases/t00006_class.svg index 395a8c19..5c7f15e2 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/t00007.md b/docs/test_cases/t00007.md index 847a0764..d15b158e 100644 --- a/docs/test_cases/t00007.md +++ b/docs/test_cases/t00007.md @@ -172,7 +172,7 @@ public: } ], "metadata": { - "clang_uml_version": "0.3.8-18-gfd06d93", + "clang_uml_version": "0.3.8-32-ge830195", "llvm_version": "Ubuntu clang version 15.0.7", "schema_version": 1 }, diff --git a/docs/test_cases/t00007_class.svg b/docs/test_cases/t00007_class.svg index 1dbb2106..73b2f6ee 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/t00008.md b/docs/test_cases/t00008.md index 8286b39e..951054ad 100644 --- a/docs/test_cases/t00008.md +++ b/docs/test_cases/t00008.md @@ -561,7 +561,7 @@ template <> struct E::nested_template { } ], "metadata": { - "clang_uml_version": "0.3.8-18-gfd06d93", + "clang_uml_version": "0.3.8-32-ge830195", "llvm_version": "Ubuntu clang version 15.0.7", "schema_version": 1 }, diff --git a/docs/test_cases/t00008_class.svg b/docs/test_cases/t00008_class.svg index 84574038..60242514 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) : E::nested_template::DT * - - + + E::nested_template @@ -164,11 +164,11 @@ char - + - + getDecl(char * c) : E::nested_template<char>::DeclType * diff --git a/docs/test_cases/t00009.md b/docs/test_cases/t00009.md index 28201e8d..0355da0a 100644 --- a/docs/test_cases/t00009.md +++ b/docs/test_cases/t00009.md @@ -243,7 +243,7 @@ public: } ], "metadata": { - "clang_uml_version": "0.3.8-18-gfd06d93", + "clang_uml_version": "0.3.8-32-ge830195", "llvm_version": "Ubuntu clang version 15.0.7", "schema_version": 1 }, diff --git a/docs/test_cases/t00009_class.svg b/docs/test_cases/t00009_class.svg index 37d135a0..c227ba31 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/t00010.md b/docs/test_cases/t00010.md index fda245bc..ee0f92c7 100644 --- a/docs/test_cases/t00010.md +++ b/docs/test_cases/t00010.md @@ -253,7 +253,7 @@ public: } ], "metadata": { - "clang_uml_version": "0.3.8-18-gfd06d93", + "clang_uml_version": "0.3.8-32-ge830195", "llvm_version": "Ubuntu clang version 15.0.7", "schema_version": 1 }, diff --git a/docs/test_cases/t00010_class.svg b/docs/test_cases/t00010_class.svg index bd114f98..5a470caf 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/t00011.md b/docs/test_cases/t00011.md index 6e71a38d..2acaf086 100644 --- a/docs/test_cases/t00011.md +++ b/docs/test_cases/t00011.md @@ -212,7 +212,7 @@ public: } ], "metadata": { - "clang_uml_version": "0.3.8-18-gfd06d93", + "clang_uml_version": "0.3.8-32-ge830195", "llvm_version": "Ubuntu clang version 15.0.7", "schema_version": 1 }, diff --git a/docs/test_cases/t00011_class.svg b/docs/test_cases/t00011_class.svg index 7b1e3ce2..11777f86 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/t00012.md b/docs/test_cases/t00012.md index 60a8ea25..928cc425 100644 --- a/docs/test_cases/t00012.md +++ b/docs/test_cases/t00012.md @@ -554,7 +554,7 @@ class R { } ], "metadata": { - "clang_uml_version": "0.3.8-18-gfd06d93", + "clang_uml_version": "0.3.8-32-ge830195", "llvm_version": "Ubuntu clang version 15.0.7", "schema_version": 1 }, diff --git a/docs/test_cases/t00012_class.svg b/docs/test_cases/t00012_class.svg index 8c9198d5..ad4e4431 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/t00013.md b/docs/test_cases/t00013.md index ce3ac920..52d54c16 100644 --- a/docs/test_cases/t00013.md +++ b/docs/test_cases/t00013.md @@ -905,7 +905,7 @@ private: } ], "metadata": { - "clang_uml_version": "0.3.8-18-gfd06d93", + "clang_uml_version": "0.3.8-32-ge830195", "llvm_version": "Ubuntu clang version 15.0.7", "schema_version": 1 }, diff --git a/docs/test_cases/t00013_class.svg b/docs/test_cases/t00013_class.svg index 336d06c0..94675b34 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/t00014.md b/docs/test_cases/t00014.md index 70ad4f61..58885733 100644 --- a/docs/test_cases/t00014.md +++ b/docs/test_cases/t00014.md @@ -969,7 +969,7 @@ public: } ], "metadata": { - "clang_uml_version": "0.3.8-18-gfd06d93", + "clang_uml_version": "0.3.8-32-ge830195", "llvm_version": "Ubuntu clang version 15.0.7", "schema_version": 1 }, diff --git a/docs/test_cases/t00014_class.svg b/docs/test_cases/t00014_class.svg index eab4ea83..c467a9c1 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<R::AWCharString> - + - + intstring : AIntString - + - + stringstring : AStringString - + - + vcb : VoidCallback - + - + vps : VectorPtr<B> diff --git a/docs/test_cases/t00015.md b/docs/test_cases/t00015.md index 550099d3..21d85ca6 100644 --- a/docs/test_cases/t00015.md +++ b/docs/test_cases/t00015.md @@ -187,7 +187,7 @@ class B : public ns1::ns2::Anon { }; } ], "metadata": { - "clang_uml_version": "0.3.8-18-gfd06d93", + "clang_uml_version": "0.3.8-32-ge830195", "llvm_version": "Ubuntu clang version 15.0.7", "schema_version": 1 }, diff --git a/docs/test_cases/t00015_class.svg b/docs/test_cases/t00015_class.svg index b8f5712d..6d366176 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/t00016.md b/docs/test_cases/t00016.md index c40a5cd6..20ae6df8 100644 --- a/docs/test_cases/t00016.md +++ b/docs/test_cases/t00016.md @@ -273,7 +273,7 @@ template <> struct is_numeric { } ], "metadata": { - "clang_uml_version": "0.3.8-18-gfd06d93", + "clang_uml_version": "0.3.8-32-ge830195", "llvm_version": "Ubuntu clang version 15.0.7", "schema_version": 1 }, diff --git a/docs/test_cases/t00016_class.svg b/docs/test_cases/t00016_class.svg index a849c5fa..6fd2ae8f 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/t00017.md b/docs/test_cases/t00017.md index 9b1eb8c5..ed5f59ce 100644 --- a/docs/test_cases/t00017.md +++ b/docs/test_cases/t00017.md @@ -577,7 +577,7 @@ private: } ], "metadata": { - "clang_uml_version": "0.3.8-18-gfd06d93", + "clang_uml_version": "0.3.8-32-ge830195", "llvm_version": "Ubuntu clang version 15.0.7", "schema_version": 1 }, diff --git a/docs/test_cases/t00017_class.svg b/docs/test_cases/t00017_class.svg index b3458e7e..e81dfa22 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/t00018.md b/docs/test_cases/t00018.md index 4d1805e9..cc9762bd 100644 --- a/docs/test_cases/t00018.md +++ b/docs/test_cases/t00018.md @@ -554,7 +554,7 @@ void widget::draw(const clanguml::t00018::widget &w) } ], "metadata": { - "clang_uml_version": "0.3.8-18-gfd06d93", + "clang_uml_version": "0.3.8-32-ge830195", "llvm_version": "Ubuntu clang version 15.0.7", "schema_version": 1 }, diff --git a/docs/test_cases/t00018_class.svg b/docs/test_cases/t00018_class.svg index 0864afb4..6585b859 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/t00019.md b/docs/test_cases/t00019.md index 65cec61d..1651e8f3 100644 --- a/docs/test_cases/t00019.md +++ b/docs/test_cases/t00019.md @@ -737,7 +737,7 @@ class Base { } ], "metadata": { - "clang_uml_version": "0.3.8-18-gfd06d93", + "clang_uml_version": "0.3.8-32-ge830195", "llvm_version": "Ubuntu clang version 15.0.7", "schema_version": 1 }, diff --git a/docs/test_cases/t00019_class.svg b/docs/test_cases/t00019_class.svg index f45ec76f..70fbc166 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/t00020.md b/docs/test_cases/t00020.md index 9d643ab7..b8b7ba2d 100644 --- a/docs/test_cases/t00020.md +++ b/docs/test_cases/t00020.md @@ -734,7 +734,7 @@ public: } ], "metadata": { - "clang_uml_version": "0.3.8-18-gfd06d93", + "clang_uml_version": "0.3.8-32-ge830195", "llvm_version": "Ubuntu clang version 15.0.7", "schema_version": 1 }, diff --git a/docs/test_cases/t00020_class.svg b/docs/test_cases/t00020_class.svg index cee3bee9..089cdf46 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/t00021.md b/docs/test_cases/t00021.md index 836c204b..f9914636 100644 --- a/docs/test_cases/t00021.md +++ b/docs/test_cases/t00021.md @@ -655,7 +655,7 @@ public: } ], "metadata": { - "clang_uml_version": "0.3.8-18-gfd06d93", + "clang_uml_version": "0.3.8-32-ge830195", "llvm_version": "Ubuntu clang version 15.0.7", "schema_version": 1 }, diff --git a/docs/test_cases/t00021_class.svg b/docs/test_cases/t00021_class.svg index fddea0e1..17428c24 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/t00022.md b/docs/test_cases/t00022.md index eb315204..33b26714 100644 --- a/docs/test_cases/t00022.md +++ b/docs/test_cases/t00022.md @@ -318,7 +318,7 @@ protected: } ], "metadata": { - "clang_uml_version": "0.3.8-18-gfd06d93", + "clang_uml_version": "0.3.8-32-ge830195", "llvm_version": "Ubuntu clang version 15.0.7", "schema_version": 1 }, diff --git a/docs/test_cases/t00022_class.svg b/docs/test_cases/t00022_class.svg index 7ae6ebd9..c304fffb 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/t00023.md b/docs/test_cases/t00023.md index 4464d752..41abff3e 100644 --- a/docs/test_cases/t00023.md +++ b/docs/test_cases/t00023.md @@ -398,7 +398,7 @@ private: } ], "metadata": { - "clang_uml_version": "0.3.8-18-gfd06d93", + "clang_uml_version": "0.3.8-32-ge830195", "llvm_version": "Ubuntu clang version 15.0.7", "schema_version": 1 }, diff --git a/docs/test_cases/t00023_class.svg b/docs/test_cases/t00023_class.svg index 193a2975..1cbb3f5a 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/t00024.md b/docs/test_cases/t00024.md index 244bab63..b45ba2be 100644 --- a/docs/test_cases/t00024.md +++ b/docs/test_cases/t00024.md @@ -449,7 +449,7 @@ private: } ], "metadata": { - "clang_uml_version": "0.3.8-18-gfd06d93", + "clang_uml_version": "0.3.8-32-ge830195", "llvm_version": "Ubuntu clang version 15.0.7", "schema_version": 1 }, diff --git a/docs/test_cases/t00024_class.svg b/docs/test_cases/t00024_class.svg index b4437ff4..35606c41 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/t00025.md b/docs/test_cases/t00025.md index e5d44eae..96b3d860 100644 --- a/docs/test_cases/t00025.md +++ b/docs/test_cases/t00025.md @@ -440,7 +440,7 @@ public: } ], "metadata": { - "clang_uml_version": "0.3.8-18-gfd06d93", + "clang_uml_version": "0.3.8-32-ge830195", "llvm_version": "Ubuntu clang version 15.0.7", "schema_version": 1 }, diff --git a/docs/test_cases/t00025_class.svg b/docs/test_cases/t00025_class.svg index 20903109..0f0d17a5 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/t00026.md b/docs/test_cases/t00026.md index 0e8202a0..f6d0343b 100644 --- a/docs/test_cases/t00026.md +++ b/docs/test_cases/t00026.md @@ -580,7 +580,7 @@ struct StringMemento { } ], "metadata": { - "clang_uml_version": "0.3.8-18-gfd06d93", + "clang_uml_version": "0.3.8-32-ge830195", "llvm_version": "Ubuntu clang version 15.0.7", "schema_version": 1 }, diff --git a/docs/test_cases/t00026_class.svg b/docs/test_cases/t00026_class.svg index cf8e3463..8abd603d 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/t00027.md b/docs/test_cases/t00027.md index 8efbf91b..462e782d 100644 --- a/docs/test_cases/t00027.md +++ b/docs/test_cases/t00027.md @@ -708,7 +708,7 @@ struct Window { } ], "metadata": { - "clang_uml_version": "0.3.8-18-gfd06d93", + "clang_uml_version": "0.3.8-32-ge830195", "llvm_version": "Ubuntu clang version 15.0.7", "schema_version": 1 }, diff --git a/docs/test_cases/t00027_class.svg b/docs/test_cases/t00027_class.svg index f4ca93ca..f47e5821 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/t00028.md b/docs/test_cases/t00028.md index f5b52d82..1e891cd4 100644 --- a/docs/test_cases/t00028.md +++ b/docs/test_cases/t00028.md @@ -459,7 +459,7 @@ class R { } ], "metadata": { - "clang_uml_version": "0.3.8-18-gfd06d93", + "clang_uml_version": "0.3.8-32-ge830195", "llvm_version": "Ubuntu clang version 15.0.7", "schema_version": 1 }, diff --git a/docs/test_cases/t00028_class.svg b/docs/test_cases/t00028_class.svg index c2a1ed27..2516af12 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/t00029.md b/docs/test_cases/t00029.md index 9e5b76ba..e8b5898d 100644 --- a/docs/test_cases/t00029.md +++ b/docs/test_cases/t00029.md @@ -310,7 +310,7 @@ struct R { } ], "metadata": { - "clang_uml_version": "0.3.8-18-gfd06d93", + "clang_uml_version": "0.3.8-32-ge830195", "llvm_version": "Ubuntu clang version 15.0.7", "schema_version": 1 }, diff --git a/docs/test_cases/t00029_class.svg b/docs/test_cases/t00029_class.svg index 3da2e204..2b962eaf 100644 --- a/docs/test_cases/t00029_class.svg +++ b/docs/test_cases/t00029_class.svg @@ -1,6 +1,6 @@ - + @@ -9,16 +9,16 @@ - - + + A - - + + C @@ -27,15 +27,15 @@ - + - + param : T - - + + E @@ -45,65 +45,65 @@ three - - + + G1 - - + + G2 - - + + G3 - - + + G4 - - + + R - + - + g1 : G1 - + - + g3 : G3 & - + - + g4 : std::shared_ptr<G4> diff --git a/docs/test_cases/t00030.md b/docs/test_cases/t00030.md index 6e2a1011..f375d031 100644 --- a/docs/test_cases/t00030.md +++ b/docs/test_cases/t00030.md @@ -277,7 +277,7 @@ struct R { } ], "metadata": { - "clang_uml_version": "0.3.8-18-gfd06d93", + "clang_uml_version": "0.3.8-32-ge830195", "llvm_version": "Ubuntu clang version 15.0.7", "schema_version": 1 }, diff --git a/docs/test_cases/t00030_class.svg b/docs/test_cases/t00030_class.svg index 21baed6b..bb2a5012 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/t00031.md b/docs/test_cases/t00031.md index 43e8149a..456a1c3a 100644 --- a/docs/test_cases/t00031.md +++ b/docs/test_cases/t00031.md @@ -332,7 +332,7 @@ struct R { } ], "metadata": { - "clang_uml_version": "0.3.8-18-gfd06d93", + "clang_uml_version": "0.3.8-32-ge830195", "llvm_version": "Ubuntu clang version 15.0.7", "schema_version": 1 }, diff --git a/docs/test_cases/t00031_class.svg b/docs/test_cases/t00031_class.svg index 82fd3e8f..6d4f932e 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/t00032.md b/docs/test_cases/t00032.md index f826d41d..8c5756a2 100644 --- a/docs/test_cases/t00032.md +++ b/docs/test_cases/t00032.md @@ -427,7 +427,7 @@ struct R { } ], "metadata": { - "clang_uml_version": "0.3.8-18-gfd06d93", + "clang_uml_version": "0.3.8-32-ge830195", "llvm_version": "Ubuntu clang version 15.0.7", "schema_version": 1 }, diff --git a/docs/test_cases/t00032_class.svg b/docs/test_cases/t00032_class.svg index 72ad88a3..cc05752d 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/t00033.md b/docs/test_cases/t00033.md index c9c60bb4..35542ceb 100644 --- a/docs/test_cases/t00033.md +++ b/docs/test_cases/t00033.md @@ -375,7 +375,7 @@ struct R { } ], "metadata": { - "clang_uml_version": "0.3.8-18-gfd06d93", + "clang_uml_version": "0.3.8-32-ge830195", "llvm_version": "Ubuntu clang version 15.0.7", "schema_version": 1 }, diff --git a/docs/test_cases/t00033_class.svg b/docs/test_cases/t00033_class.svg index 1128244b..ee759801 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/t00034.md b/docs/test_cases/t00034.md index e76853c4..84570b84 100644 --- a/docs/test_cases/t00034.md +++ b/docs/test_cases/t00034.md @@ -351,7 +351,7 @@ struct R { } ], "metadata": { - "clang_uml_version": "0.3.8-18-gfd06d93", + "clang_uml_version": "0.3.8-32-ge830195", "llvm_version": "Ubuntu clang version 15.0.7", "schema_version": 1 }, diff --git a/docs/test_cases/t00034_class.svg b/docs/test_cases/t00034_class.svg index be70fe9c..b36921bc 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/t00035.md b/docs/test_cases/t00035.md index 8c2e6559..9939fe26 100644 --- a/docs/test_cases/t00035.md +++ b/docs/test_cases/t00035.md @@ -160,7 +160,7 @@ struct Right { }; } ], "metadata": { - "clang_uml_version": "0.3.8-18-gfd06d93", + "clang_uml_version": "0.3.8-32-ge830195", "llvm_version": "Ubuntu clang version 15.0.7", "schema_version": 1 }, diff --git a/docs/test_cases/t00035_class.svg b/docs/test_cases/t00035_class.svg index 735bd4a3..bb335c51 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/t00036.md b/docs/test_cases/t00036.md index c0b00966..3b68c378 100644 --- a/docs/test_cases/t00036.md +++ b/docs/test_cases/t00036.md @@ -276,7 +276,7 @@ struct DImpl : public ns2::ns22::D { }; } ], "metadata": { - "clang_uml_version": "0.3.8-18-gfd06d93", + "clang_uml_version": "0.3.8-32-ge830195", "llvm_version": "Ubuntu clang version 15.0.7", "schema_version": 1 }, diff --git a/docs/test_cases/t00036_class.svg b/docs/test_cases/t00036_class.svg index 50a4415a..fcf9a876 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/t00037.md b/docs/test_cases/t00037.md index 6b8b57e4..98d4409f 100644 --- a/docs/test_cases/t00037.md +++ b/docs/test_cases/t00037.md @@ -288,7 +288,7 @@ struct A { } ], "metadata": { - "clang_uml_version": "0.3.8-18-gfd06d93", + "clang_uml_version": "0.3.8-32-ge830195", "llvm_version": "Ubuntu clang version 15.0.7", "schema_version": 1 }, diff --git a/docs/test_cases/t00037_class.svg b/docs/test_cases/t00037_class.svg index 7196dc50..6d5a7dd9 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/t00038.md b/docs/test_cases/t00038.md index 063313a6..bf67d3cb 100644 --- a/docs/test_cases/t00038.md +++ b/docs/test_cases/t00038.md @@ -494,7 +494,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/t00039.md b/docs/test_cases/t00039.md index 4c912ac0..826bd042 100644 --- a/docs/test_cases/t00039.md +++ b/docs/test_cases/t00039.md @@ -608,7 +608,7 @@ template struct FFF : public FF { } ], "metadata": { - "clang_uml_version": "0.3.8-18-gfd06d93", + "clang_uml_version": "0.3.8-32-ge830195", "llvm_version": "Ubuntu clang version 15.0.7", "schema_version": 1 }, diff --git a/docs/test_cases/t00039_class.svg b/docs/test_cases/t00039_class.svg index dae874e7..77b36048 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/t00040.md b/docs/test_cases/t00040.md index 375c00a7..9987b51a 100644 --- a/docs/test_cases/t00040.md +++ b/docs/test_cases/t00040.md @@ -307,7 +307,7 @@ struct R { } ], "metadata": { - "clang_uml_version": "0.3.8-18-gfd06d93", + "clang_uml_version": "0.3.8-32-ge830195", "llvm_version": "Ubuntu clang version 15.0.7", "schema_version": 1 }, diff --git a/docs/test_cases/t00040_class.svg b/docs/test_cases/t00040_class.svg index 35230547..43b04c5c 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/t00041.md b/docs/test_cases/t00041.md index 21b114a3..068b8344 100644 --- a/docs/test_cases/t00041.md +++ b/docs/test_cases/t00041.md @@ -390,7 +390,7 @@ struct NM : public N { }; } ], "metadata": { - "clang_uml_version": "0.3.8-18-gfd06d93", + "clang_uml_version": "0.3.8-32-ge830195", "llvm_version": "Ubuntu clang version 15.0.7", "schema_version": 1 }, diff --git a/docs/test_cases/t00041_class.svg b/docs/test_cases/t00041_class.svg index dd7cbdcd..aca40ed3 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/t00042.md b/docs/test_cases/t00042.md index ca8358fe..784356f9 100644 --- a/docs/test_cases/t00042.md +++ b/docs/test_cases/t00042.md @@ -305,7 +305,7 @@ struct R { } ], "metadata": { - "clang_uml_version": "0.3.8-18-gfd06d93", + "clang_uml_version": "0.3.8-32-ge830195", "llvm_version": "Ubuntu clang version 15.0.7", "schema_version": 1 }, diff --git a/docs/test_cases/t00042_class.svg b/docs/test_cases/t00042_class.svg index 1070714d..e7240d76 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/t00043.md b/docs/test_cases/t00043.md index 269f3e6f..3de9ab65 100644 --- a/docs/test_cases/t00043.md +++ b/docs/test_cases/t00043.md @@ -651,7 +651,7 @@ struct J { } ], "metadata": { - "clang_uml_version": "0.3.8-18-gfd06d93", + "clang_uml_version": "0.3.8-32-ge830195", "llvm_version": "Ubuntu clang version 15.0.7", "schema_version": 1 }, diff --git a/docs/test_cases/t00043_class.svg b/docs/test_cases/t00043_class.svg index a238179a..f1bf95c5 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(dependants::A * a) : void - - + + BB - + - + bb(dependants::A * a) : void - - + + C - + - + c(dependants::B * b) : void - - + + D - + - + d(dependants::C * c) : void - + - + dd(dependants::BB * bb) : void - - + + E - + - + e(dependants::D * d) : void - - + + G - - + + GG - - + + H - + - + h(dependencies::G * g) : void - + - + hh(dependencies::GG * gg) : void - - + + I - + - + i(dependencies::H * h) : void - - + + J - + - + i(dependencies::I * i) : void diff --git a/docs/test_cases/t00044.md b/docs/test_cases/t00044.md index c2a9b641..26128337 100644 --- a/docs/test_cases/t00044.md +++ b/docs/test_cases/t00044.md @@ -430,7 +430,7 @@ struct R { } ], "metadata": { - "clang_uml_version": "0.3.8-18-gfd06d93", + "clang_uml_version": "0.3.8-32-ge830195", "llvm_version": "Ubuntu clang version 15.0.7", "schema_version": 1 }, diff --git a/docs/test_cases/t00044_class.svg b/docs/test_cases/t00044_class.svg index 22248009..63829706 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/t00045.md b/docs/test_cases/t00045.md index ec25bcd1..ddbd892a 100644 --- a/docs/test_cases/t00045.md +++ b/docs/test_cases/t00045.md @@ -461,7 +461,7 @@ public: } ], "metadata": { - "clang_uml_version": "0.3.8-18-gfd06d93", + "clang_uml_version": "0.3.8-32-ge830195", "llvm_version": "Ubuntu clang version 15.0.7", "schema_version": 1 }, diff --git a/docs/test_cases/t00045_class.svg b/docs/test_cases/t00045_class.svg index dfcbb526..c422693b 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 : ns1::ns2::A * - + - + ns1_a : ns1::A * - + - + ns1_ns2_a : ns1::ns2::A * - + - + root_a : ::A * diff --git a/docs/test_cases/t00046.md b/docs/test_cases/t00046.md index 7d551d62..bce68ce3 100644 --- a/docs/test_cases/t00046.md +++ b/docs/test_cases/t00046.md @@ -394,7 +394,7 @@ public: } ], "metadata": { - "clang_uml_version": "0.3.8-18-gfd06d93", + "clang_uml_version": "0.3.8-32-ge830195", "llvm_version": "Ubuntu clang version 15.0.7", "schema_version": 1 }, diff --git a/docs/test_cases/t00046_class.svg b/docs/test_cases/t00046_class.svg index 57f1647b..b4aeb1af 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 : ns1::ns2::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/t00047.md b/docs/test_cases/t00047.md index 639cae01..d24e203b 100644 --- a/docs/test_cases/t00047.md +++ b/docs/test_cases/t00047.md @@ -192,7 +192,7 @@ using conditional = typename conditional_t::type; } ], "metadata": { - "clang_uml_version": "0.3.8-18-gfd06d93", + "clang_uml_version": "0.3.8-32-ge830195", "llvm_version": "Ubuntu clang version 15.0.7", "schema_version": 1 }, diff --git a/docs/test_cases/t00047_class.svg b/docs/test_cases/t00047_class.svg index 1c43f0b0..eb0acaab 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/t00048.md b/docs/test_cases/t00048.md index 60fbdfec..9a932067 100644 --- a/docs/test_cases/t00048.md +++ b/docs/test_cases/t00048.md @@ -543,7 +543,7 @@ template struct BaseTemplate { } ], "metadata": { - "clang_uml_version": "0.3.8-18-gfd06d93", + "clang_uml_version": "0.3.8-32-ge830195", "llvm_version": "Ubuntu clang version 15.0.7", "schema_version": 1 }, diff --git a/docs/test_cases/t00048_class.svg b/docs/test_cases/t00048_class.svg index 46a79b5e..2200ab4b 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/t00049.md b/docs/test_cases/t00049.md index 96dbda67..708b2d5c 100644 --- a/docs/test_cases/t00049.md +++ b/docs/test_cases/t00049.md @@ -325,7 +325,7 @@ struct R { } ], "metadata": { - "clang_uml_version": "0.3.8-18-gfd06d93", + "clang_uml_version": "0.3.8-32-ge830195", "llvm_version": "Ubuntu clang version 15.0.7", "schema_version": 1 }, diff --git a/docs/test_cases/t00049_class.svg b/docs/test_cases/t00049_class.svg index 3b788962..92378b07 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/t00050.md b/docs/test_cases/t00050.md index c3cdf3ad..a233da47 100644 --- a/docs/test_cases/t00050.md +++ b/docs/test_cases/t00050.md @@ -504,7 +504,7 @@ class NoComment { }; } ], "metadata": { - "clang_uml_version": "0.3.8-18-gfd06d93", + "clang_uml_version": "0.3.8-32-ge830195", "llvm_version": "Ubuntu clang version 15.0.7", "schema_version": 1 }, diff --git a/docs/test_cases/t00050_class.svg b/docs/test_cases/t00050_class.svg index 71c498a8..12f5f89a 100644 --- a/docs/test_cases/t00050_class.svg +++ b/docs/test_cases/t00050_class.svg @@ -1,6 +1,6 @@ - + @@ -9,40 +9,40 @@ - - + + A - - + + B - - + + C - - + + utils::D - - + + E @@ -52,8 +52,8 @@ E3 - - + + F @@ -62,43 +62,43 @@ - + - + t : T[N] - + - + v : V - - + + G - - + + NoComment - + Lorem ipsum dolor sit - + Lorem ipsum dolor sit - + Lorem ipsum dolor sit amet consectetur adipiscing elit, urna consequat felis vehicula class ultricies mollis dictumst, aenean non a in donec nulla. @@ -125,50 +125,50 @@ imperdiet praesent magnis ridiculus congue gravida curabitur dictum sagittis, enim et magna sit inceptos sodales parturient pharetra mollis, aenean vel nostra tellus commodo pretium sapien sociosqu. - + This is a short description of class G. - + This is an intermediate description of class G. - + This is a long description of class G. - + Lorem ipsum - + TODO 1. Write meaningful comment - + TODO 2. Write tests - + TODO 3. Implement - + Long comment example - + TODO Implement... - + Simple array wrapper. - + Template parameters diff --git a/docs/test_cases/t00051.md b/docs/test_cases/t00051.md index 45ec16c0..f9b463c5 100644 --- a/docs/test_cases/t00051.md +++ b/docs/test_cases/t00051.md @@ -637,7 +637,7 @@ A::custom_thread2 A::start_thread2() } ], "metadata": { - "clang_uml_version": "0.3.8-18-gfd06d93", + "clang_uml_version": "0.3.8-32-ge830195", "llvm_version": "Ubuntu clang version 15.0.7", "schema_version": 1 }, diff --git a/docs/test_cases/t00051_class.svg b/docs/test_cases/t00051_class.svg index fe7d476f..7463e030 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() : A::custom_thread1 - + - + start_thread2() : A::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/t00052.md b/docs/test_cases/t00052.md index d09d4b38..7a1854fc 100644 --- a/docs/test_cases/t00052.md +++ b/docs/test_cases/t00052.md @@ -396,7 +396,7 @@ struct R { } ], "metadata": { - "clang_uml_version": "0.3.8-18-gfd06d93", + "clang_uml_version": "0.3.8-32-ge830195", "llvm_version": "Ubuntu clang version 15.0.7", "schema_version": 1 }, diff --git a/docs/test_cases/t00052_class.svg b/docs/test_cases/t00052_class.svg index 78b0fbac..a605c9cd 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/t00053.md b/docs/test_cases/t00053.md index c597091f..48f486eb 100644 --- a/docs/test_cases/t00053.md +++ b/docs/test_cases/t00053.md @@ -418,7 +418,7 @@ enum class j { jjj }; } ], "metadata": { - "clang_uml_version": "0.3.8-18-gfd06d93", + "clang_uml_version": "0.3.8-32-ge830195", "llvm_version": "Ubuntu clang version 15.0.7", "schema_version": 1 }, diff --git a/docs/test_cases/t00053_class.svg b/docs/test_cases/t00053_class.svg index c1e733a1..587925c6 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/t00054.md b/docs/test_cases/t00054.md index 762f45b1..96016cf9 100644 --- a/docs/test_cases/t00054.md +++ b/docs/test_cases/t00054.md @@ -460,7 +460,7 @@ enum class j { jjj }; } ], "metadata": { - "clang_uml_version": "0.3.8-18-gfd06d93", + "clang_uml_version": "0.3.8-32-ge830195", "llvm_version": "Ubuntu clang version 15.0.7", "schema_version": 1 }, diff --git a/docs/test_cases/t00054_class.svg b/docs/test_cases/t00054_class.svg index d4c83818..36964618 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/t00055.md b/docs/test_cases/t00055.md index 42c29bf7..ae2cbd83 100644 --- a/docs/test_cases/t00055.md +++ b/docs/test_cases/t00055.md @@ -266,7 +266,7 @@ struct J { }; } ], "metadata": { - "clang_uml_version": "0.3.8-18-gfd06d93", + "clang_uml_version": "0.3.8-32-ge830195", "llvm_version": "Ubuntu clang version 15.0.7", "schema_version": 1 }, diff --git a/docs/test_cases/t00055_class.svg b/docs/test_cases/t00055_class.svg index a6968afb..ef567e17 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/t00056.md b/docs/test_cases/t00056.md index 894f5f5b..22737e67 100644 --- a/docs/test_cases/t00056.md +++ b/docs/test_cases/t00056.md @@ -605,7 +605,7 @@ struct F { } ], "metadata": { - "clang_uml_version": "0.3.8-18-gfd06d93", + "clang_uml_version": "0.3.8-32-ge830195", "llvm_version": "Ubuntu clang version 15.0.7", "schema_version": 1 }, diff --git a/docs/test_cases/t00056_class.svg b/docs/test_cases/t00056_class.svg index cffa3547..05e1a14b 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/t00057.md b/docs/test_cases/t00057.md index feed834a..479b3839 100644 --- a/docs/test_cases/t00057.md +++ b/docs/test_cases/t00057.md @@ -550,7 +550,7 @@ struct t00057_R { } ], "metadata": { - "clang_uml_version": "0.3.8-18-gfd06d93", + "clang_uml_version": "0.3.8-32-ge830195", "llvm_version": "Ubuntu clang version 15.0.7", "schema_version": 1 }, diff --git a/docs/test_cases/t00057_class.svg b/docs/test_cases/t00057_class.svg index 627b60c4..8e219367 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/t00058.md b/docs/test_cases/t00058.md index 5a5bad48..b445768c 100644 --- a/docs/test_cases/t00058.md +++ b/docs/test_cases/t00058.md @@ -433,7 +433,7 @@ struct R { } ], "metadata": { - "clang_uml_version": "0.3.8-18-gfd06d93", + "clang_uml_version": "0.3.8-32-ge830195", "llvm_version": "Ubuntu clang version 15.0.7", "schema_version": 1 }, diff --git a/docs/test_cases/t00058_class.svg b/docs/test_cases/t00058_class.svg index ae70c133..3e69b90e 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/t00059.md b/docs/test_cases/t00059.md index 26d3d5ce..697d368b 100644 --- a/docs/test_cases/t00059.md +++ b/docs/test_cases/t00059.md @@ -645,7 +645,7 @@ struct R { } ], "metadata": { - "clang_uml_version": "0.3.8-18-gfd06d93", + "clang_uml_version": "0.3.8-32-ge830195", "llvm_version": "Ubuntu clang version 15.0.7", "schema_version": 1 }, diff --git a/docs/test_cases/t00059_class.svg b/docs/test_cases/t00059_class.svg index f06a78ba..2fef6eef 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/t00060.md b/docs/test_cases/t00060.md index 7fad6390..f8b08e7a 100644 --- a/docs/test_cases/t00060.md +++ b/docs/test_cases/t00060.md @@ -274,7 +274,7 @@ template struct H : public G { } ], "metadata": { - "clang_uml_version": "0.3.8-18-gfd06d93", + "clang_uml_version": "0.3.8-32-ge830195", "llvm_version": "Ubuntu clang version 15.0.7", "schema_version": 1 }, diff --git a/docs/test_cases/t00060_class.svg b/docs/test_cases/t00060_class.svg index ba42a74f..d3882529 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/t00061.md b/docs/test_cases/t00061.md index e1cdda3a..ee1771b8 100644 --- a/docs/test_cases/t00061.md +++ b/docs/test_cases/t00061.md @@ -63,7 +63,7 @@ struct C { } ], "metadata": { - "clang_uml_version": "0.3.8-18-gfd06d93", + "clang_uml_version": "0.3.8-32-ge830195", "llvm_version": "Ubuntu clang version 15.0.7", "schema_version": 1 }, diff --git a/docs/test_cases/t00061_class.svg b/docs/test_cases/t00061_class.svg index b861e106..1967491b 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/t00062.md b/docs/test_cases/t00062.md index dd180291..76f740d2 100644 --- a/docs/test_cases/t00062.md +++ b/docs/test_cases/t00062.md @@ -1370,7 +1370,7 @@ struct A> { } ], "metadata": { - "clang_uml_version": "0.3.8-18-gfd06d93", + "clang_uml_version": "0.3.8-32-ge830195", "llvm_version": "Ubuntu clang version 15.0.7", "schema_version": 1 }, diff --git a/docs/test_cases/t00062_class.svg b/docs/test_cases/t00062_class.svg index fe5f7541..f66b5981 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/t00063.md b/docs/test_cases/t00063.md index 217a1a1d..a91dcf32 100644 --- a/docs/test_cases/t00063.md +++ b/docs/test_cases/t00063.md @@ -61,7 +61,7 @@ enum class C { c1, c2, c3 }; } ], "metadata": { - "clang_uml_version": "0.3.8-18-gfd06d93", + "clang_uml_version": "0.3.8-32-ge830195", "llvm_version": "Ubuntu clang version 15.0.7", "schema_version": 1 }, diff --git a/docs/test_cases/t00063_class.svg b/docs/test_cases/t00063_class.svg index 09abf83b..628a990e 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/t00064.md b/docs/test_cases/t00064.md index 05b6bf02..90c15e14 100644 --- a/docs/test_cases/t00064.md +++ b/docs/test_cases/t00064.md @@ -1034,7 +1034,7 @@ public: } ], "metadata": { - "clang_uml_version": "0.3.8-18-gfd06d93", + "clang_uml_version": "0.3.8-32-ge830195", "llvm_version": "Ubuntu clang version 15.0.7", "schema_version": 1 }, diff --git a/docs/test_cases/t00064_class.svg b/docs/test_cases/t00064_class.svg index 42041385..89406df6 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(value_type const& v) constexpr : unsigned int - + - + get(unsigned int i) : ref_t - + - + getp(unsigned int i) : value_type const* - - + + 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/t00065.md b/docs/test_cases/t00065.md index 2f917590..3dd1227c 100644 --- a/docs/test_cases/t00065.md +++ b/docs/test_cases/t00065.md @@ -527,7 +527,7 @@ struct R { } ], "metadata": { - "clang_uml_version": "0.3.8-18-gfd06d93", + "clang_uml_version": "0.3.8-32-ge830195", "llvm_version": "Ubuntu clang version 15.0.7", "schema_version": 1 }, diff --git a/docs/test_cases/t00065_class.svg b/docs/test_cases/t00065_class.svg index 7e0cf187..b20b34e7 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/t00066.md b/docs/test_cases/t00066.md index 63bf6868..49953e27 100644 --- a/docs/test_cases/t00066.md +++ b/docs/test_cases/t00066.md @@ -802,7 +802,7 @@ int A::static_int = 1; } ], "metadata": { - "clang_uml_version": "0.3.8-18-gfd06d93", + "clang_uml_version": "0.3.8-32-ge830195", "llvm_version": "Ubuntu clang version 15.0.7", "schema_version": 1 }, diff --git a/docs/test_cases/t00066_class.svg b/docs/test_cases/t00066_class.svg index bbdb312a..04a6dda2 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/t00067.md b/docs/test_cases/t00067.md index 4ee37630..d6d5a79e 100644 --- a/docs/test_cases/t00067.md +++ b/docs/test_cases/t00067.md @@ -525,7 +525,7 @@ int A::static_int = 1; } ], "metadata": { - "clang_uml_version": "0.3.8-18-gfd06d93", + "clang_uml_version": "0.3.8-32-ge830195", "llvm_version": "Ubuntu clang version 15.0.7", "schema_version": 1 }, diff --git a/docs/test_cases/t00067_class.svg b/docs/test_cases/t00067_class.svg index b1a37794..b94b5977 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/t20001.md b/docs/test_cases/t20001.md index f64f0dad..45fd634e 100644 --- a/docs/test_cases/t20001.md +++ b/docs/test_cases/t20001.md @@ -16,7 +16,7 @@ diagrams: - clanguml::t20001::detail using_namespace: - clanguml::t20001 - start_from: + from: - function: "clanguml::t20001::tmain()" plantuml: before: @@ -108,7 +108,7 @@ int tmain() { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.3.8-18-gfd06d93", + "clang_uml_version": "0.3.8-32-ge830195", "llvm_version": "Ubuntu clang version 15.0.7", "schema_version": 1 }, diff --git a/docs/test_cases/t20001_sequence.svg b/docs/test_cases/t20001_sequence.svg index 3ffec036..caa78384 100644 --- a/docs/test_cases/t20001_sequence.svg +++ b/docs/test_cases/t20001_sequence.svg @@ -1,6 +1,6 @@ - + @@ -9,73 +9,73 @@ - - - - - - - - - + + + + + + + + + - - + + tmain() - + tmain() - - + + A - + A - - + + B - + B - - - - - - - - - - + + + + + + + + + + A() - + B(A &) - + add(int,int) - + wrap_add3(int,int,int) - + add3(int,int,int) - + @@ -86,7 +86,7 @@ - + @@ -95,14 +95,14 @@ - + log_result(int) - + Main test function diff --git a/docs/test_cases/t20002.md b/docs/test_cases/t20002.md index 66f2031c..4469d224 100644 --- a/docs/test_cases/t20002.md +++ b/docs/test_cases/t20002.md @@ -13,7 +13,7 @@ diagrams: - clanguml::t20002 using_namespace: - clanguml::t20002 - start_from: + from: - function: "clanguml::t20002::m1()" ``` @@ -45,7 +45,7 @@ void m1() { m2(); } { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.3.8-18-gfd06d93", + "clang_uml_version": "0.3.8-32-ge830195", "llvm_version": "Ubuntu clang version 15.0.7", "schema_version": 1 }, diff --git a/docs/test_cases/t20002_sequence.svg b/docs/test_cases/t20002_sequence.svg index 90d0f24b..f7df505d 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 62b8fb84..f4dc9ab9 100644 --- a/docs/test_cases/t20003.md +++ b/docs/test_cases/t20003.md @@ -13,7 +13,7 @@ diagrams: - clanguml::t20003 using_namespace: - clanguml::t20003 - start_from: + from: - function: "clanguml::t20003::m1(T)" ``` @@ -41,7 +41,7 @@ template void m1(T p) { m2(p); } { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.3.8-18-gfd06d93", + "clang_uml_version": "0.3.8-32-ge830195", "llvm_version": "Ubuntu clang version 15.0.7", "schema_version": 1 }, diff --git a/docs/test_cases/t20003_sequence.svg b/docs/test_cases/t20003_sequence.svg index bc0cfd84..66d24598 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 7bfc0962..8a9f41ad 100644 --- a/docs/test_cases/t20004.md +++ b/docs/test_cases/t20004.md @@ -13,7 +13,7 @@ diagrams: - clanguml::t20004 using_namespace: - clanguml::t20004 - start_from: + from: - function: "clanguml::t20004::main()" ``` ## Source code @@ -77,7 +77,7 @@ int main() { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.3.8-18-gfd06d93", + "clang_uml_version": "0.3.8-32-ge830195", "llvm_version": "Ubuntu clang version 15.0.7", "schema_version": 1 }, diff --git a/docs/test_cases/t20004_sequence.svg b/docs/test_cases/t20004_sequence.svg index 21ef4541..897d7ff8 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 b41bbd19..ffcd06a5 100644 --- a/docs/test_cases/t20005.md +++ b/docs/test_cases/t20005.md @@ -13,7 +13,7 @@ diagrams: - clanguml::t20005 using_namespace: - clanguml::t20005 - start_from: + from: - function: "clanguml::t20005::C::c(T)" ``` ## Source code @@ -48,7 +48,7 @@ template struct C { { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.3.8-18-gfd06d93", + "clang_uml_version": "0.3.8-32-ge830195", "llvm_version": "Ubuntu clang version 15.0.7", "schema_version": 1 }, diff --git a/docs/test_cases/t20005_sequence.svg b/docs/test_cases/t20005_sequence.svg index c715c42f..1bacf220 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 ad5db37a..8f31ad6c 100644 --- a/docs/test_cases/t20006.md +++ b/docs/test_cases/t20006.md @@ -13,7 +13,7 @@ diagrams: - clanguml::t20006 using_namespace: - clanguml::t20006 - start_from: + from: - function: "clanguml::t20006::tmain()" ``` ## Source code @@ -106,7 +106,7 @@ void tmain() { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.3.8-18-gfd06d93", + "clang_uml_version": "0.3.8-32-ge830195", "llvm_version": "Ubuntu clang version 15.0.7", "schema_version": 1 }, diff --git a/docs/test_cases/t20006_sequence.svg b/docs/test_cases/t20006_sequence.svg index ed9e9434..dcee9252 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 8070f80b..4a098ee5 100644 --- a/docs/test_cases/t20007.md +++ b/docs/test_cases/t20007.md @@ -13,7 +13,7 @@ diagrams: - clanguml::t20007 using_namespace: - clanguml::t20007 - start_from: + from: - function: "clanguml::t20007::tmain()" ``` ## Source code @@ -52,7 +52,7 @@ void tmain() { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.3.8-18-gfd06d93", + "clang_uml_version": "0.3.8-32-ge830195", "llvm_version": "Ubuntu clang version 15.0.7", "schema_version": 1 }, diff --git a/docs/test_cases/t20007_sequence.svg b/docs/test_cases/t20007_sequence.svg index 51b13c66..54b3f78d 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 74318659..d2e72e27 100644 --- a/docs/test_cases/t20008.md +++ b/docs/test_cases/t20008.md @@ -13,7 +13,7 @@ diagrams: - clanguml::t20008 using_namespace: - clanguml::t20008 - start_from: + from: - function: "clanguml::t20008::tmain()" ``` ## Source code @@ -70,7 +70,7 @@ void tmain() { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.3.8-18-gfd06d93", + "clang_uml_version": "0.3.8-32-ge830195", "llvm_version": "Ubuntu clang version 15.0.7", "schema_version": 1 }, diff --git a/docs/test_cases/t20008_sequence.svg b/docs/test_cases/t20008_sequence.svg index 12951229..6eff851e 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 21656457..3ad191c3 100644 --- a/docs/test_cases/t20009.md +++ b/docs/test_cases/t20009.md @@ -13,7 +13,7 @@ diagrams: - clanguml::t20009 using_namespace: - clanguml::t20009 - start_from: + from: - function: "clanguml::t20009::tmain()" ``` ## Source code @@ -56,7 +56,7 @@ void tmain() { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.3.8-18-gfd06d93", + "clang_uml_version": "0.3.8-32-ge830195", "llvm_version": "Ubuntu clang version 15.0.7", "schema_version": 1 }, diff --git a/docs/test_cases/t20009_sequence.svg b/docs/test_cases/t20009_sequence.svg index d5afbeb8..127ce789 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 affa1447..f9a4a576 100644 --- a/docs/test_cases/t20010.md +++ b/docs/test_cases/t20010.md @@ -13,7 +13,7 @@ diagrams: - clanguml::t20010 using_namespace: - clanguml::t20010 - start_from: + from: - function: "clanguml::t20010::tmain()" ``` ## Source code @@ -66,7 +66,7 @@ void tmain() { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.3.8-18-gfd06d93", + "clang_uml_version": "0.3.8-32-ge830195", "llvm_version": "Ubuntu clang version 15.0.7", "schema_version": 1 }, diff --git a/docs/test_cases/t20010_sequence.svg b/docs/test_cases/t20010_sequence.svg index c7ad5f54..b265ac5f 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 5852d60b..c354e5e2 100644 --- a/docs/test_cases/t20011.md +++ b/docs/test_cases/t20011.md @@ -13,7 +13,7 @@ diagrams: - clanguml::t20011 using_namespace: - clanguml::t20011 - start_from: + from: - function: "clanguml::t20011::tmain()" ``` ## Source code @@ -58,7 +58,7 @@ void tmain() { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.3.8-18-gfd06d93", + "clang_uml_version": "0.3.8-32-ge830195", "llvm_version": "Ubuntu clang version 15.0.7", "schema_version": 1 }, diff --git a/docs/test_cases/t20011_sequence.svg b/docs/test_cases/t20011_sequence.svg index 248ae6a1..1bdeb089 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 556cb317..b1415c20 100644 --- a/docs/test_cases/t20012.md +++ b/docs/test_cases/t20012.md @@ -13,7 +13,7 @@ diagrams: - clanguml::t20012 using_namespace: - clanguml::t20012 - start_from: + from: - function: "clanguml::t20012::tmain()" ``` ## Source code @@ -133,7 +133,7 @@ void tmain() { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.3.8-18-gfd06d93", + "clang_uml_version": "0.3.8-32-ge830195", "llvm_version": "Ubuntu clang version 15.0.7", "schema_version": 1 }, diff --git a/docs/test_cases/t20012_sequence.svg b/docs/test_cases/t20012_sequence.svg index 991dfd8e..2d04ffd2 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 1e2b7586..45c8d073 100644 --- a/docs/test_cases/t20013.md +++ b/docs/test_cases/t20013.md @@ -13,7 +13,7 @@ diagrams: - clanguml::t20013 using_namespace: - clanguml::t20013 - start_from: + from: - function: "clanguml::t20013::tmain(int,char **)" ``` ## Source code @@ -54,7 +54,7 @@ void tmain(int argc, char **argv) { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.3.8-18-gfd06d93", + "clang_uml_version": "0.3.8-32-ge830195", "llvm_version": "Ubuntu clang version 15.0.7", "schema_version": 1 }, diff --git a/docs/test_cases/t20013_sequence.svg b/docs/test_cases/t20013_sequence.svg index 71569523..5468e948 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 b9526c53..e6c9bc23 100644 --- a/docs/test_cases/t20014.md +++ b/docs/test_cases/t20014.md @@ -16,7 +16,7 @@ diagrams: - clanguml::t20014 using_namespace: - clanguml::t20014 - start_from: + from: - function: "clanguml::t20014::tmain()" ``` ## Source code @@ -89,7 +89,7 @@ namespace t20014 { { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.3.8-18-gfd06d93", + "clang_uml_version": "0.3.8-32-ge830195", "llvm_version": "Ubuntu clang version 15.0.7", "schema_version": 1 }, diff --git a/docs/test_cases/t20014_sequence.svg b/docs/test_cases/t20014_sequence.svg index 87785025..22ac1fdb 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 83b75837..aa3984e5 100644 --- a/docs/test_cases/t20015.md +++ b/docs/test_cases/t20015.md @@ -16,7 +16,7 @@ diagrams: - clanguml::t20015::detail using_namespace: - clanguml::t20015 - start_from: + from: - function: "clanguml::t20015::tmain()" ``` ## Source code @@ -70,7 +70,7 @@ void tmain() { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.3.8-18-gfd06d93", + "clang_uml_version": "0.3.8-32-ge830195", "llvm_version": "Ubuntu clang version 15.0.7", "schema_version": 1 }, diff --git a/docs/test_cases/t20015_sequence.svg b/docs/test_cases/t20015_sequence.svg index f8b43921..e86e1b3e 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 644605df..52f36349 100644 --- a/docs/test_cases/t20016.md +++ b/docs/test_cases/t20016.md @@ -13,7 +13,7 @@ diagrams: - clanguml::t20016 using_namespace: - clanguml::t20016 - start_from: + from: - function: "clanguml::t20016::tmain()" ``` ## Source code @@ -52,7 +52,7 @@ void tmain() { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.3.8-18-gfd06d93", + "clang_uml_version": "0.3.8-32-ge830195", "llvm_version": "Ubuntu clang version 15.0.7", "schema_version": 1 }, diff --git a/docs/test_cases/t20016_sequence.svg b/docs/test_cases/t20016_sequence.svg index 627ba48f..7d1498ea 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 2b8cf775..b09bedc5 100644 --- a/docs/test_cases/t20017.md +++ b/docs/test_cases/t20017.md @@ -17,7 +17,7 @@ diagrams: - . using_namespace: - clanguml::t20017 - start_from: + from: - function: "clanguml::t20017::tmain()" ``` ## Source code @@ -49,7 +49,7 @@ int tmain() { return b2(a1(a2(a3(1, 2), b1(3, 4)), 5), 6); } { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.3.8-18-gfd06d93", + "clang_uml_version": "0.3.8-32-ge830195", "llvm_version": "Ubuntu clang version 15.0.7", "schema_version": 1 }, diff --git a/docs/test_cases/t20017_sequence.svg b/docs/test_cases/t20017_sequence.svg index 7e04aeab..7486bd8e 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 01c56fe0..6a7506a8 100644 --- a/docs/test_cases/t20018.md +++ b/docs/test_cases/t20018.md @@ -13,7 +13,7 @@ diagrams: - clanguml::t20018 using_namespace: - clanguml::t20018 - start_from: + from: - function: "clanguml::t20018::tmain()" ``` ## Source code @@ -54,7 +54,7 @@ void tmain() { Answer>::print(); } { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.3.8-18-gfd06d93", + "clang_uml_version": "0.3.8-32-ge830195", "llvm_version": "Ubuntu clang version 15.0.7", "schema_version": 1 }, diff --git a/docs/test_cases/t20018_sequence.svg b/docs/test_cases/t20018_sequence.svg index da3c1039..9941c9b9 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 f55eb170..7bd92ef5 100644 --- a/docs/test_cases/t20019.md +++ b/docs/test_cases/t20019.md @@ -13,7 +13,7 @@ diagrams: - clanguml::t20019 using_namespace: - clanguml::t20019 - start_from: + from: - function: "clanguml::t20019::tmain()" ``` ## Source code @@ -61,7 +61,7 @@ void tmain() { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.3.8-18-gfd06d93", + "clang_uml_version": "0.3.8-32-ge830195", "llvm_version": "Ubuntu clang version 15.0.7", "schema_version": 1 }, diff --git a/docs/test_cases/t20019_sequence.svg b/docs/test_cases/t20019_sequence.svg index 0a60f039..5ea04584 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 d762b60f..322a4865 100644 --- a/docs/test_cases/t20020.md +++ b/docs/test_cases/t20020.md @@ -13,7 +13,7 @@ diagrams: - clanguml::t20020 using_namespace: - clanguml::t20020 - start_from: + from: - function: "clanguml::t20020::tmain()" ``` ## Source code @@ -117,7 +117,7 @@ int tmain() { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.3.8-18-gfd06d93", + "clang_uml_version": "0.3.8-32-ge830195", "llvm_version": "Ubuntu clang version 15.0.7", "schema_version": 1 }, diff --git a/docs/test_cases/t20020_sequence.svg b/docs/test_cases/t20020_sequence.svg index 259baaf5..e038970f 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 6a7efb6d..a3e7e81a 100644 --- a/docs/test_cases/t20021.md +++ b/docs/test_cases/t20021.md @@ -13,7 +13,7 @@ diagrams: - clanguml::t20021 using_namespace: - clanguml::t20021 - start_from: + from: - function: "clanguml::t20021::tmain()" ``` ## Source code @@ -84,7 +84,7 @@ int tmain() { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.3.8-18-gfd06d93", + "clang_uml_version": "0.3.8-32-ge830195", "llvm_version": "Ubuntu clang version 15.0.7", "schema_version": 1 }, diff --git a/docs/test_cases/t20021_sequence.svg b/docs/test_cases/t20021_sequence.svg index 2a622c03..3f654d8c 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 114f01b2..89d5835c 100644 --- a/docs/test_cases/t20022.md +++ b/docs/test_cases/t20022.md @@ -13,7 +13,7 @@ diagrams: - clanguml::t20022 using_namespace: - clanguml::t20022 - start_from: + from: - function: "clanguml::t20022::tmain()" ``` ## Source code @@ -64,7 +64,7 @@ int tmain() { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.3.8-18-gfd06d93", + "clang_uml_version": "0.3.8-32-ge830195", "llvm_version": "Ubuntu clang version 15.0.7", "schema_version": 1 }, diff --git a/docs/test_cases/t20022_sequence.svg b/docs/test_cases/t20022_sequence.svg index fe2c6745..615f198a 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 488cb964..fb13d0a1 100644 --- a/docs/test_cases/t20023.md +++ b/docs/test_cases/t20023.md @@ -67,7 +67,7 @@ int tmain() { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.3.8-18-gfd06d93", + "clang_uml_version": "0.3.8-32-ge830195", "llvm_version": "Ubuntu clang version 15.0.7", "schema_version": 1 }, diff --git a/docs/test_cases/t20023_sequence.svg b/docs/test_cases/t20023_sequence.svg index 6167097e..f0a654e7 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 47b5267b..a60056cd 100644 --- a/docs/test_cases/t20024.md +++ b/docs/test_cases/t20024.md @@ -13,7 +13,7 @@ diagrams: - clanguml::t20024 using_namespace: - clanguml::t20024 - start_from: + from: - function: "clanguml::t20024::tmain()" ``` ## Source code @@ -92,7 +92,7 @@ int tmain() { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.3.8-18-gfd06d93", + "clang_uml_version": "0.3.8-32-ge830195", "llvm_version": "Ubuntu clang version 15.0.7", "schema_version": 1 }, diff --git a/docs/test_cases/t20024_sequence.svg b/docs/test_cases/t20024_sequence.svg index ccc69cf1..3e37100e 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 0eb843ef..5e9c2565 100644 --- a/docs/test_cases/t20025.md +++ b/docs/test_cases/t20025.md @@ -13,7 +13,7 @@ diagrams: - clanguml::t20025 using_namespace: - clanguml::t20025 - start_from: + from: - function: "clanguml::t20025::tmain()" ``` ## Source code @@ -72,7 +72,7 @@ int tmain() { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.3.8-18-gfd06d93", + "clang_uml_version": "0.3.8-32-ge830195", "llvm_version": "Ubuntu clang version 15.0.7", "schema_version": 1 }, diff --git a/docs/test_cases/t20025_sequence.svg b/docs/test_cases/t20025_sequence.svg index 4f1ea1ef..2757cdc5 100644 --- a/docs/test_cases/t20025_sequence.svg +++ b/docs/test_cases/t20025_sequence.svg @@ -1,6 +1,6 @@ - + @@ -9,41 +9,41 @@ - - - - + + + + - - + + tmain() - + tmain() - - + + A - + A - - + + add(int,int) - + add(int,int) - - - - - + + + + + a() - + @@ -52,7 +52,7 @@ - + diff --git a/docs/test_cases/t20026.md b/docs/test_cases/t20026.md index 5f6cd492..15bf509f 100644 --- a/docs/test_cases/t20026.md +++ b/docs/test_cases/t20026.md @@ -13,7 +13,7 @@ diagrams: - clanguml::t20026 using_namespace: - clanguml::t20026 - start_from: + from: - function: "clanguml::t20026::tmain()" ``` ## Source code @@ -52,7 +52,7 @@ int tmain() { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.3.8-18-gfd06d93", + "clang_uml_version": "0.3.8-32-ge830195", "llvm_version": "Ubuntu clang version 15.0.7", "schema_version": 1 }, diff --git a/docs/test_cases/t20026_sequence.svg b/docs/test_cases/t20026_sequence.svg index c2da94f8..bc3970c4 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 de265ec2..70edc879 100644 --- a/docs/test_cases/t20027.md +++ b/docs/test_cases/t20027.md @@ -15,7 +15,7 @@ diagrams: - public using_namespace: - clanguml::t20027 - start_from: + from: - function: "clanguml::t20027::tmain()" ``` ## Source code @@ -51,7 +51,7 @@ void tmain() { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.3.8-18-gfd06d93", + "clang_uml_version": "0.3.8-32-ge830195", "llvm_version": "Ubuntu clang version 15.0.7", "schema_version": 1 }, diff --git a/docs/test_cases/t20027_sequence.svg b/docs/test_cases/t20027_sequence.svg index e49fe27f..34bb8b7c 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 5985e31e..10118fce 100644 --- a/docs/test_cases/t20028.md +++ b/docs/test_cases/t20028.md @@ -16,7 +16,7 @@ diagrams: - clanguml::t20028::detail using_namespace: - clanguml::t20028 - start_from: + from: - function: "clanguml::t20028::tmain()" ``` ## Source code @@ -61,7 +61,7 @@ int tmain() { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.3.8-18-gfd06d93", + "clang_uml_version": "0.3.8-32-ge830195", "llvm_version": "Ubuntu clang version 15.0.7", "schema_version": 1 }, diff --git a/docs/test_cases/t20028_sequence.svg b/docs/test_cases/t20028_sequence.svg index 9c347b44..d4e2f872 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 139b7e71..4601353b 100644 --- a/docs/test_cases/t20029.md +++ b/docs/test_cases/t20029.md @@ -16,7 +16,7 @@ diagrams: - private using_namespace: - clanguml::t20029 - start_from: + from: - function: clanguml::t20029::tmain() participants_order: - clanguml::t20029::tmain() @@ -105,7 +105,7 @@ int tmain() { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.3.8-18-gfd06d93", + "clang_uml_version": "0.3.8-32-ge830195", "llvm_version": "Ubuntu clang version 15.0.7", "schema_version": 1 }, diff --git a/docs/test_cases/t20029_sequence.svg b/docs/test_cases/t20029_sequence.svg index 41f1ccda..8a3ae390 100644 --- a/docs/test_cases/t20029_sequence.svg +++ b/docs/test_cases/t20029_sequence.svg @@ -1,6 +1,6 @@ - + @@ -9,60 +9,60 @@ - - - - - - - - - - - + + + + + + + + + + + - - + + tmain() - + tmain() - - + + Encoder<Retrier<ConnectionPool>> - + Encoder<Retrier<ConnectionPool>> - - + + Retrier<ConnectionPool> - + Retrier<ConnectionPool> - - + + ConnectionPool - + ConnectionPool - - + + encode_b64(std::string &&) - + encode_b64(std::string &&) - - - - - - - - + + + + + + + + connect() @@ -73,21 +73,21 @@ alt - + [ send(std::string &&) ] - + encode(std::string &&) - + @@ -97,7 +97,7 @@ - + send(std::string &&) @@ -108,7 +108,7 @@ alt - + [ diff --git a/docs/test_cases/t20030.md b/docs/test_cases/t20030.md index 46970438..90f8cb6b 100644 --- a/docs/test_cases/t20030.md +++ b/docs/test_cases/t20030.md @@ -13,7 +13,7 @@ diagrams: - clanguml::t20030 using_namespace: - clanguml::t20030 - start_from: + from: - function: "clanguml::t20030::tmain(int)" - function: "clanguml::t20030::tmain(bool,int)" ``` @@ -79,7 +79,7 @@ int tmain(bool f, int a) { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.3.8-18-gfd06d93", + "clang_uml_version": "0.3.8-32-ge830195", "llvm_version": "Ubuntu clang version 15.0.7", "schema_version": 1 }, diff --git a/docs/test_cases/t20030_sequence.svg b/docs/test_cases/t20030_sequence.svg index 92e1113e..d636e258 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 bf744ae6..7bbeb738 100644 --- a/docs/test_cases/t20031.md +++ b/docs/test_cases/t20031.md @@ -18,7 +18,7 @@ diagrams: - lambda using_namespace: - clanguml::t20031 - start_from: + from: - function: "clanguml::t20031::tmain(int)" - function: "clanguml::t20031::tmain(bool,int)" ``` @@ -95,7 +95,7 @@ int tmain(bool f, int a) { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.3.8-18-gfd06d93", + "clang_uml_version": "0.3.8-32-ge830195", "llvm_version": "Ubuntu clang version 15.0.7", "schema_version": 1 }, diff --git a/docs/test_cases/t20031_sequence.svg b/docs/test_cases/t20031_sequence.svg index 46e80753..545558e5 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 aa91c996..a4a1b541 100644 --- a/docs/test_cases/t20032.md +++ b/docs/test_cases/t20032.md @@ -14,7 +14,7 @@ diagrams: using_namespace: - clanguml::t20032 generate_return_types: true - start_from: + from: - function: "clanguml::t20032::tmain(int,char **)" ``` ## Source code @@ -55,7 +55,7 @@ void tmain(int argc, char **argv) { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.3.8-18-gfd06d93", + "clang_uml_version": "0.3.8-32-ge830195", "llvm_version": "Ubuntu clang version 15.0.7", "schema_version": 1 }, diff --git a/docs/test_cases/t20032_sequence.svg b/docs/test_cases/t20032_sequence.svg index d8eddc59..fa734a6e 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 db755917..e5b0632d 100644 --- a/docs/test_cases/t20033.md +++ b/docs/test_cases/t20033.md @@ -14,7 +14,7 @@ diagrams: using_namespace: - clanguml::t20033 generate_condition_statements: true - start_from: + from: - function: "clanguml::t20033::tmain()" ``` ## Source code @@ -93,7 +93,7 @@ int tmain() { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.3.8-18-gfd06d93", + "clang_uml_version": "0.3.8-32-ge830195", "llvm_version": "Ubuntu clang version 15.0.7", "schema_version": 1 }, diff --git a/docs/test_cases/t20033_sequence.svg b/docs/test_cases/t20033_sequence.svg index 06d660be..1214f325 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 new file mode 100644 index 00000000..8e570407 --- /dev/null +++ b/docs/test_cases/t20034.md @@ -0,0 +1,580 @@ +# t20034 - Test case for rendering all call chains from one activity to another (from_to) +## Config +```yaml +compilation_database_dir: .. +output_directory: puml +diagrams: + t20034_sequence: + type: sequence + glob: + - ../../tests/t20034/t20034.cc + include: + namespaces: + - clanguml::t20034 + using_namespace: + - clanguml::t20034 + from_to: + - [function: "clanguml::t20034::D::d2()", + function: "clanguml::t20034::A::a2()"] +``` +## Source code +File t20034.cc +```cpp +#include + +namespace clanguml { +namespace t20034 { +struct A { + void a1() { } + void a2() { } + void a3() { } +}; + +struct C; + +struct B { + void b1() + { + a.a1(); + a.a2(); + } + void b2() { a.a2(); } + void b3() { a.a3(); } + void b4(); + + A a; + + C *c; +}; + +struct C { + void c1() { b.b1(); } + void c2() { b.b2(); } + void c3() + { + if (reinterpret_cast(&b) == 0xbadc0de) + c3(); + else + c2(); + } + + void c4() { b.b4(); } + + B b; +}; + +struct D { + void d1() { c.c1(); } + void d2() + { + c.c1(); + a.a2(); + c.c2(); + c.c3(); + a.a2(); + + c.c4(); + + auto l = [this]() { a.a2(); }; + l(); + } + void d3() { c.c3(); } + + A a; + C c; +}; + +void B::b4() +{ + c->c4(); + b2(); +} +} +} +``` +## Generated UML diagrams +![t20034_sequence](./t20034_sequence.svg "Test case for rendering all call chains from one activity to another (from_to)") +## Generated JSON models +```json +{ + "diagram_type": "sequence", + "metadata": { + "clang_uml_version": "0.3.8-32-ge830195", + "llvm_version": "Ubuntu clang version 15.0.7", + "schema_version": 1 + }, + "name": "t20034_sequence", + "participants": [ + { + "id": "272777525372220260", + "name": "clanguml::t20034::D", + "source_location": { + "column": 8, + "file": "../../tests/t20034/t20034.cc", + "line": 44, + "translation_unit": "../../tests/t20034/t20034.cc" + }, + "type": "class" + }, + { + "id": "2153793652884753477", + "name": "clanguml::t20034::C", + "source_location": { + "column": 8, + "file": "../../tests/t20034/t20034.cc", + "line": 28, + "translation_unit": "../../tests/t20034/t20034.cc" + }, + "type": "class" + }, + { + "id": "1214895773389400008", + "name": "clanguml::t20034::B", + "source_location": { + "column": 8, + "file": "../../tests/t20034/t20034.cc", + "line": 13, + "translation_unit": "../../tests/t20034/t20034.cc" + }, + "type": "class" + }, + { + "id": "1029414747563549012", + "name": "clanguml::t20034::A", + "source_location": { + "column": 8, + "file": "../../tests/t20034/t20034.cc", + "line": 5, + "translation_unit": "../../tests/t20034/t20034.cc" + }, + "type": "class" + }, + { + "id": "1441889098721372112", + "name": "clanguml::t20034::D::d2()::(lambda ../../tests/t20034/t20034.cc:56:18)", + "source_location": { + "column": 18, + "file": "../../tests/t20034/t20034.cc", + "line": 56, + "translation_unit": "../../tests/t20034/t20034.cc" + }, + "type": "class" + } + ], + "sequences": [ + { + "from_to": { + "from": { + "id": 1707514178726476738, + "location": "clanguml::t20034::D::d2()" + }, + "to": { + "id": 1307188853155365430, + "location": "clanguml::t20034::A::a2()" + } + }, + "message_chains": [ + { + "messages": [ + { + "from": { + "activity_id": "1707514178726476738", + "activity_name": "clanguml::t20034::D::d2()", + "participant_id": "272777525372220260" + }, + "name": "c3()", + "return_type": "void", + "scope": "normal", + "source_location": { + "column": 9, + "file": "../../tests/t20034/t20034.cc", + "line": 51, + "translation_unit": "../../tests/t20034/t20034.cc" + }, + "to": { + "activity_id": "2116989777037608337", + "activity_name": "clanguml::t20034::C::c3()", + "participant_id": "2153793652884753477" + }, + "type": "message" + }, + { + "from": { + "activity_id": "2116989777037608337", + "activity_name": "clanguml::t20034::C::c3()", + "participant_id": "2153793652884753477" + }, + "name": "c2()", + "return_type": "void", + "scope": "normal", + "source_location": { + "column": 13, + "file": "../../tests/t20034/t20034.cc", + "line": 36, + "translation_unit": "../../tests/t20034/t20034.cc" + }, + "to": { + "activity_id": "472904899982022039", + "activity_name": "clanguml::t20034::C::c2()", + "participant_id": "2153793652884753477" + }, + "type": "message" + }, + { + "from": { + "activity_id": "472904899982022039", + "activity_name": "clanguml::t20034::C::c2()", + "participant_id": "2153793652884753477" + }, + "name": "b2()", + "return_type": "void", + "scope": "normal", + "source_location": { + "column": 17, + "file": "../../tests/t20034/t20034.cc", + "line": 30, + "translation_unit": "../../tests/t20034/t20034.cc" + }, + "to": { + "activity_id": "1034410188120190919", + "activity_name": "clanguml::t20034::B::b2()", + "participant_id": "1214895773389400008" + }, + "type": "message" + }, + { + "from": { + "activity_id": "1034410188120190919", + "activity_name": "clanguml::t20034::B::b2()", + "participant_id": "1214895773389400008" + }, + "name": "a2()", + "return_type": "void", + "scope": "normal", + "source_location": { + "column": 17, + "file": "../../tests/t20034/t20034.cc", + "line": 19, + "translation_unit": "../../tests/t20034/t20034.cc" + }, + "to": { + "activity_id": "1307188853155365430", + "activity_name": "clanguml::t20034::A::a2()", + "participant_id": "1029414747563549012" + }, + "type": "message" + } + ] + }, + { + "messages": [ + { + "from": { + "activity_id": "1707514178726476738", + "activity_name": "clanguml::t20034::D::d2()", + "participant_id": "272777525372220260" + }, + "name": "c1()", + "return_type": "void", + "scope": "normal", + "source_location": { + "column": 9, + "file": "../../tests/t20034/t20034.cc", + "line": 48, + "translation_unit": "../../tests/t20034/t20034.cc" + }, + "to": { + "activity_id": "148530508384958711", + "activity_name": "clanguml::t20034::C::c1()", + "participant_id": "2153793652884753477" + }, + "type": "message" + }, + { + "from": { + "activity_id": "148530508384958711", + "activity_name": "clanguml::t20034::C::c1()", + "participant_id": "2153793652884753477" + }, + "name": "b1()", + "return_type": "void", + "scope": "normal", + "source_location": { + "column": 17, + "file": "../../tests/t20034/t20034.cc", + "line": 29, + "translation_unit": "../../tests/t20034/t20034.cc" + }, + "to": { + "activity_id": "289899516984058785", + "activity_name": "clanguml::t20034::B::b1()", + "participant_id": "1214895773389400008" + }, + "type": "message" + }, + { + "from": { + "activity_id": "289899516984058785", + "activity_name": "clanguml::t20034::B::b1()", + "participant_id": "1214895773389400008" + }, + "name": "a2()", + "return_type": "void", + "scope": "normal", + "source_location": { + "column": 9, + "file": "../../tests/t20034/t20034.cc", + "line": 17, + "translation_unit": "../../tests/t20034/t20034.cc" + }, + "to": { + "activity_id": "1307188853155365430", + "activity_name": "clanguml::t20034::A::a2()", + "participant_id": "1029414747563549012" + }, + "type": "message" + } + ] + }, + { + "messages": [ + { + "from": { + "activity_id": "1707514178726476738", + "activity_name": "clanguml::t20034::D::d2()", + "participant_id": "272777525372220260" + }, + "name": "c4()", + "return_type": "void", + "scope": "normal", + "source_location": { + "column": 9, + "file": "../../tests/t20034/t20034.cc", + "line": 54, + "translation_unit": "../../tests/t20034/t20034.cc" + }, + "to": { + "activity_id": "395720534444062628", + "activity_name": "clanguml::t20034::C::c4()", + "participant_id": "2153793652884753477" + }, + "type": "message" + }, + { + "from": { + "activity_id": "395720534444062628", + "activity_name": "clanguml::t20034::C::c4()", + "participant_id": "2153793652884753477" + }, + "name": "b4()", + "return_type": "void", + "scope": "normal", + "source_location": { + "column": 17, + "file": "../../tests/t20034/t20034.cc", + "line": 39, + "translation_unit": "../../tests/t20034/t20034.cc" + }, + "to": { + "activity_id": "1774155279072101253", + "activity_name": "clanguml::t20034::B::b4()", + "participant_id": "1214895773389400008" + }, + "type": "message" + }, + { + "from": { + "activity_id": "1774155279072101253", + "activity_name": "clanguml::t20034::B::b4()", + "participant_id": "1214895773389400008" + }, + "name": "b2()", + "return_type": "void", + "scope": "normal", + "source_location": { + "column": 5, + "file": "../../tests/t20034/t20034.cc", + "line": 68, + "translation_unit": "../../tests/t20034/t20034.cc" + }, + "to": { + "activity_id": "1034410188120190919", + "activity_name": "clanguml::t20034::B::b2()", + "participant_id": "1214895773389400008" + }, + "type": "message" + }, + { + "from": { + "activity_id": "1034410188120190919", + "activity_name": "clanguml::t20034::B::b2()", + "participant_id": "1214895773389400008" + }, + "name": "a2()", + "return_type": "void", + "scope": "normal", + "source_location": { + "column": 17, + "file": "../../tests/t20034/t20034.cc", + "line": 19, + "translation_unit": "../../tests/t20034/t20034.cc" + }, + "to": { + "activity_id": "1307188853155365430", + "activity_name": "clanguml::t20034::A::a2()", + "participant_id": "1029414747563549012" + }, + "type": "message" + } + ] + }, + { + "messages": [ + { + "from": { + "activity_id": "1707514178726476738", + "activity_name": "clanguml::t20034::D::d2()", + "participant_id": "272777525372220260" + }, + "name": "a2()", + "return_type": "void", + "scope": "normal", + "source_location": { + "column": 9, + "file": "../../tests/t20034/t20034.cc", + "line": 49, + "translation_unit": "../../tests/t20034/t20034.cc" + }, + "to": { + "activity_id": "1307188853155365430", + "activity_name": "clanguml::t20034::A::a2()", + "participant_id": "1029414747563549012" + }, + "type": "message" + } + ] + }, + { + "messages": [ + { + "from": { + "activity_id": "1707514178726476738", + "activity_name": "clanguml::t20034::D::d2()", + "participant_id": "272777525372220260" + }, + "name": "operator()()", + "return_type": "", + "scope": "normal", + "source_location": { + "column": 9, + "file": "../../tests/t20034/t20034.cc", + "line": 57, + "translation_unit": "../../tests/t20034/t20034.cc" + }, + "to": { + "activity_id": "1828095161459098283", + "activity_name": "clanguml::t20034::D::d2()##(lambda ../../tests/t20034/t20034.cc:56:18)::operator()()", + "participant_id": "1441889098721372112" + }, + "type": "message" + }, + { + "from": { + "activity_id": "1828095161459098283", + "activity_name": "clanguml::t20034::D::d2()::(lambda ../../tests/t20034/t20034.cc:56:18)::operator()()", + "participant_id": "1441889098721372112" + }, + "name": "a2()", + "return_type": "void", + "scope": "normal", + "source_location": { + "column": 29, + "file": "../../tests/t20034/t20034.cc", + "line": 56, + "translation_unit": "../../tests/t20034/t20034.cc" + }, + "to": { + "activity_id": "1307188853155365430", + "activity_name": "clanguml::t20034::A::a2()", + "participant_id": "1029414747563549012" + }, + "type": "message" + } + ] + }, + { + "messages": [ + { + "from": { + "activity_id": "1707514178726476738", + "activity_name": "clanguml::t20034::D::d2()", + "participant_id": "272777525372220260" + }, + "name": "c2()", + "return_type": "void", + "scope": "normal", + "source_location": { + "column": 9, + "file": "../../tests/t20034/t20034.cc", + "line": 50, + "translation_unit": "../../tests/t20034/t20034.cc" + }, + "to": { + "activity_id": "472904899982022039", + "activity_name": "clanguml::t20034::C::c2()", + "participant_id": "2153793652884753477" + }, + "type": "message" + }, + { + "from": { + "activity_id": "472904899982022039", + "activity_name": "clanguml::t20034::C::c2()", + "participant_id": "2153793652884753477" + }, + "name": "b2()", + "return_type": "void", + "scope": "normal", + "source_location": { + "column": 17, + "file": "../../tests/t20034/t20034.cc", + "line": 30, + "translation_unit": "../../tests/t20034/t20034.cc" + }, + "to": { + "activity_id": "1034410188120190919", + "activity_name": "clanguml::t20034::B::b2()", + "participant_id": "1214895773389400008" + }, + "type": "message" + }, + { + "from": { + "activity_id": "1034410188120190919", + "activity_name": "clanguml::t20034::B::b2()", + "participant_id": "1214895773389400008" + }, + "name": "a2()", + "return_type": "void", + "scope": "normal", + "source_location": { + "column": 17, + "file": "../../tests/t20034/t20034.cc", + "line": 19, + "translation_unit": "../../tests/t20034/t20034.cc" + }, + "to": { + "activity_id": "1307188853155365430", + "activity_name": "clanguml::t20034::A::a2()", + "participant_id": "1029414747563549012" + }, + "type": "message" + } + ] + } + ] + } + ], + "using_namespace": "clanguml::t20034" +} +``` diff --git a/docs/test_cases/t20034_sequence.svg b/docs/test_cases/t20034_sequence.svg new file mode 100644 index 00000000..890c9ce7 --- /dev/null +++ b/docs/test_cases/t20034_sequence.svg @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + + 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() + + + + c3() + + + + + + + c2() + + + + + b2() + + + + + a2() + + + + + + + d2() + + + + c1() + + + + + b1() + + + + + a2() + + + + + + + d2() + + + + c4() + + + + + b4() + + + + + + + b2() + + + + + a2() + + + + + + + d2() + + + + a2() + + + + + + + d2() + + + + operator()() + + + + + a2() + + + + + + + d2() + + + + c2() + + + + + b2() + + + + + a2() + + + diff --git a/docs/test_cases/t20035.md b/docs/test_cases/t20035.md new file mode 100644 index 00000000..74137990 --- /dev/null +++ b/docs/test_cases/t20035.md @@ -0,0 +1,187 @@ +# t20035 - from_to sequence diagram test case with free functions +## Config +```yaml +compilation_database_dir: .. +output_directory: puml +diagrams: + t20035_sequence: + type: sequence + glob: + - ../../tests/t20035/t20035.cc + include: + namespaces: + - clanguml::t20035 + using_namespace: + - clanguml::t20035 + from_to: + - [function: "clanguml::t20035::tmain(int,char **)", + function: "clanguml::t20035::c(int)"] +``` +## Source code +File t20035.cc +```cpp +namespace clanguml { +namespace t20035 { + +int c(int arg) { return arg; } + +int b1(int arg) { return c(arg); } + +int b2(int arg) { return c(arg); } + +int a(int arg) { return b1(arg); } + +int tmain(int argc, char **argv) { return a(argc); } +} +} +``` +## Generated UML diagrams +![t20035_sequence](./t20035_sequence.svg "from_to sequence diagram test case with free functions") +## Generated JSON models +```json +{ + "diagram_type": "sequence", + "metadata": { + "clang_uml_version": "0.3.8-32-ge830195", + "llvm_version": "Ubuntu clang version 15.0.7", + "schema_version": 1 + }, + "name": "t20035_sequence", + "participants": [ + { + "id": "1380099746477810520", + "name": "clanguml::t20035::tmain(int,char **)", + "source_location": { + "column": 5, + "file": "../../tests/t20035/t20035.cc", + "line": 12, + "translation_unit": "../../tests/t20035/t20035.cc" + }, + "type": "function" + }, + { + "id": "1503144831959453736", + "name": "clanguml::t20035::a(int)", + "source_location": { + "column": 5, + "file": "../../tests/t20035/t20035.cc", + "line": 10, + "translation_unit": "../../tests/t20035/t20035.cc" + }, + "type": "function" + }, + { + "id": "440199113909747659", + "name": "clanguml::t20035::b1(int)", + "source_location": { + "column": 5, + "file": "../../tests/t20035/t20035.cc", + "line": 6, + "translation_unit": "../../tests/t20035/t20035.cc" + }, + "type": "function" + }, + { + "id": "709102392181022891", + "name": "clanguml::t20035::c(int)", + "source_location": { + "column": 5, + "file": "../../tests/t20035/t20035.cc", + "line": 4, + "translation_unit": "../../tests/t20035/t20035.cc" + }, + "type": "function" + } + ], + "sequences": [ + { + "from_to": { + "from": { + "id": 1380099746477810520, + "location": "clanguml::t20035::tmain(int,char **)" + }, + "to": { + "id": 709102392181022891, + "location": "clanguml::t20035::c(int)" + } + }, + "message_chains": [ + { + "messages": [ + { + "from": { + "activity_id": "1380099746477810520", + "activity_name": "clanguml::t20035::tmain(int,char **)", + "participant_id": "1380099746477810520", + "participant_name": "clanguml::t20035::tmain(int,char **)" + }, + "name": "", + "return_type": "int", + "scope": "normal", + "source_location": { + "column": 43, + "file": "../../tests/t20035/t20035.cc", + "line": 12, + "translation_unit": "../../tests/t20035/t20035.cc" + }, + "to": { + "activity_id": "1503144831959453736", + "activity_name": "clanguml::t20035::a(int)", + "participant_id": "1503144831959453736" + }, + "type": "message" + }, + { + "from": { + "activity_id": "1503144831959453736", + "activity_name": "clanguml::t20035::a(int)", + "participant_id": "1503144831959453736", + "participant_name": "clanguml::t20035::a(int)" + }, + "name": "", + "return_type": "int", + "scope": "normal", + "source_location": { + "column": 25, + "file": "../../tests/t20035/t20035.cc", + "line": 10, + "translation_unit": "../../tests/t20035/t20035.cc" + }, + "to": { + "activity_id": "440199113909747659", + "activity_name": "clanguml::t20035::b1(int)", + "participant_id": "440199113909747659" + }, + "type": "message" + }, + { + "from": { + "activity_id": "440199113909747659", + "activity_name": "clanguml::t20035::b1(int)", + "participant_id": "440199113909747659", + "participant_name": "clanguml::t20035::b1(int)" + }, + "name": "", + "return_type": "int", + "scope": "normal", + "source_location": { + "column": 26, + "file": "../../tests/t20035/t20035.cc", + "line": 6, + "translation_unit": "../../tests/t20035/t20035.cc" + }, + "to": { + "activity_id": "709102392181022891", + "activity_name": "clanguml::t20035::c(int)", + "participant_id": "709102392181022891" + }, + "type": "message" + } + ] + } + ] + } + ], + "using_namespace": "clanguml::t20035" +} +``` diff --git a/docs/test_cases/t20035_sequence.svg b/docs/test_cases/t20035_sequence.svg new file mode 100644 index 00000000..a49e0818 --- /dev/null +++ b/docs/test_cases/t20035_sequence.svg @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + 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 new file mode 100644 index 00000000..8f7cb08c --- /dev/null +++ b/docs/test_cases/t20036.md @@ -0,0 +1,469 @@ +# t20036 - Test case for rendering all call chains leading to an activity (to) +## Config +```yaml +compilation_database_dir: .. +output_directory: puml +diagrams: + t20036_sequence: + type: sequence + glob: + - ../../tests/t20036/t20036.cc + include: + namespaces: + - clanguml::t20036 + using_namespace: + - clanguml::t20036 + to: + - function: "clanguml::t20036::A::a2()" +``` +## Source code +File t20036.cc +```cpp +#include + +namespace clanguml { +namespace t20036 { +struct A { + void a1() { } + void a2() { } + void a3() { } +}; + +struct B { + void b1() { a.a2(); } + void b2() { a.a2(); } + void b3() { a.a3(); } + + A a; +}; + +struct C { + void c1() { b.b1(); } + void c2() { b.b2(); } + void c3() + { + if (reinterpret_cast(&b) == 0xbadc0de) + c3(); + else + c2(); + } + + void c4() { b.b2(); } + + B b; +}; + +struct D { + void d1() { c.c2(); } + void d2() { c.c2(); } + void d3() { a.a2(); } + + A a; + C c; +}; +} +} +``` +## Generated UML diagrams +![t20036_sequence](./t20036_sequence.svg "Test case for rendering all call chains leading to an activity (to)") +## Generated JSON models +```json +{ + "diagram_type": "sequence", + "metadata": { + "clang_uml_version": "0.3.8-32-ge830195", + "llvm_version": "Ubuntu clang version 15.0.7", + "schema_version": 1 + }, + "name": "t20036_sequence", + "participants": [ + { + "id": "589458700000736705", + "name": "clanguml::t20036::C", + "source_location": { + "column": 8, + "file": "../../tests/t20036/t20036.cc", + "line": 19, + "translation_unit": "../../tests/t20036/t20036.cc" + }, + "type": "class" + }, + { + "id": "607147607288902300", + "name": "clanguml::t20036::B", + "source_location": { + "column": 8, + "file": "../../tests/t20036/t20036.cc", + "line": 11, + "translation_unit": "../../tests/t20036/t20036.cc" + }, + "type": "class" + }, + { + "id": "399722216848214287", + "name": "clanguml::t20036::A", + "source_location": { + "column": 8, + "file": "../../tests/t20036/t20036.cc", + "line": 5, + "translation_unit": "../../tests/t20036/t20036.cc" + }, + "type": "class" + }, + { + "id": "847434467114564641", + "name": "clanguml::t20036::D", + "source_location": { + "column": 8, + "file": "../../tests/t20036/t20036.cc", + "line": 35, + "translation_unit": "../../tests/t20036/t20036.cc" + }, + "type": "class" + } + ], + "sequences": [ + { + "message_chains": [ + { + "messages": [ + { + "from": { + "activity_id": "1523531372012294984", + "activity_name": "clanguml::t20036::C::c3()", + "participant_id": "589458700000736705" + }, + "name": "c2()", + "return_type": "void", + "scope": "normal", + "source_location": { + "column": 13, + "file": "../../tests/t20036/t20036.cc", + "line": 27, + "translation_unit": "../../tests/t20036/t20036.cc" + }, + "to": { + "activity_id": "128745191811378037", + "activity_name": "clanguml::t20036::C::c2()", + "participant_id": "589458700000736705" + }, + "type": "message" + }, + { + "from": { + "activity_id": "128745191811378037", + "activity_name": "clanguml::t20036::C::c2()", + "participant_id": "589458700000736705" + }, + "name": "b2()", + "return_type": "void", + "scope": "normal", + "source_location": { + "column": 17, + "file": "../../tests/t20036/t20036.cc", + "line": 21, + "translation_unit": "../../tests/t20036/t20036.cc" + }, + "to": { + "activity_id": "1726094580455938498", + "activity_name": "clanguml::t20036::B::b2()", + "participant_id": "607147607288902300" + }, + "type": "message" + }, + { + "from": { + "activity_id": "1726094580455938498", + "activity_name": "clanguml::t20036::B::b2()", + "participant_id": "607147607288902300" + }, + "name": "a2()", + "return_type": "void", + "scope": "normal", + "source_location": { + "column": 17, + "file": "../../tests/t20036/t20036.cc", + "line": 13, + "translation_unit": "../../tests/t20036/t20036.cc" + }, + "to": { + "activity_id": "2124074228514438863", + "activity_name": "clanguml::t20036::A::a2()", + "participant_id": "399722216848214287" + }, + "type": "message" + } + ] + }, + { + "messages": [ + { + "from": { + "activity_id": "1735839766717973272", + "activity_name": "clanguml::t20036::C::c4()", + "participant_id": "589458700000736705" + }, + "name": "b2()", + "return_type": "void", + "scope": "normal", + "source_location": { + "column": 17, + "file": "../../tests/t20036/t20036.cc", + "line": 30, + "translation_unit": "../../tests/t20036/t20036.cc" + }, + "to": { + "activity_id": "1726094580455938498", + "activity_name": "clanguml::t20036::B::b2()", + "participant_id": "607147607288902300" + }, + "type": "message" + }, + { + "from": { + "activity_id": "1726094580455938498", + "activity_name": "clanguml::t20036::B::b2()", + "participant_id": "607147607288902300" + }, + "name": "a2()", + "return_type": "void", + "scope": "normal", + "source_location": { + "column": 17, + "file": "../../tests/t20036/t20036.cc", + "line": 13, + "translation_unit": "../../tests/t20036/t20036.cc" + }, + "to": { + "activity_id": "2124074228514438863", + "activity_name": "clanguml::t20036::A::a2()", + "participant_id": "399722216848214287" + }, + "type": "message" + } + ] + }, + { + "messages": [ + { + "from": { + "activity_id": "1897648539724183065", + "activity_name": "clanguml::t20036::D::d3()", + "participant_id": "847434467114564641" + }, + "name": "a2()", + "return_type": "void", + "scope": "normal", + "source_location": { + "column": 17, + "file": "../../tests/t20036/t20036.cc", + "line": 38, + "translation_unit": "../../tests/t20036/t20036.cc" + }, + "to": { + "activity_id": "2124074228514438863", + "activity_name": "clanguml::t20036::A::a2()", + "participant_id": "399722216848214287" + }, + "type": "message" + } + ] + }, + { + "messages": [ + { + "from": { + "activity_id": "701488875613014930", + "activity_name": "clanguml::t20036::D::d1()", + "participant_id": "847434467114564641" + }, + "name": "c2()", + "return_type": "void", + "scope": "normal", + "source_location": { + "column": 17, + "file": "../../tests/t20036/t20036.cc", + "line": 36, + "translation_unit": "../../tests/t20036/t20036.cc" + }, + "to": { + "activity_id": "128745191811378037", + "activity_name": "clanguml::t20036::C::c2()", + "participant_id": "589458700000736705" + }, + "type": "message" + }, + { + "from": { + "activity_id": "128745191811378037", + "activity_name": "clanguml::t20036::C::c2()", + "participant_id": "589458700000736705" + }, + "name": "b2()", + "return_type": "void", + "scope": "normal", + "source_location": { + "column": 17, + "file": "../../tests/t20036/t20036.cc", + "line": 21, + "translation_unit": "../../tests/t20036/t20036.cc" + }, + "to": { + "activity_id": "1726094580455938498", + "activity_name": "clanguml::t20036::B::b2()", + "participant_id": "607147607288902300" + }, + "type": "message" + }, + { + "from": { + "activity_id": "1726094580455938498", + "activity_name": "clanguml::t20036::B::b2()", + "participant_id": "607147607288902300" + }, + "name": "a2()", + "return_type": "void", + "scope": "normal", + "source_location": { + "column": 17, + "file": "../../tests/t20036/t20036.cc", + "line": 13, + "translation_unit": "../../tests/t20036/t20036.cc" + }, + "to": { + "activity_id": "2124074228514438863", + "activity_name": "clanguml::t20036::A::a2()", + "participant_id": "399722216848214287" + }, + "type": "message" + } + ] + }, + { + "messages": [ + { + "from": { + "activity_id": "1534436779969087203", + "activity_name": "clanguml::t20036::D::d2()", + "participant_id": "847434467114564641" + }, + "name": "c2()", + "return_type": "void", + "scope": "normal", + "source_location": { + "column": 17, + "file": "../../tests/t20036/t20036.cc", + "line": 37, + "translation_unit": "../../tests/t20036/t20036.cc" + }, + "to": { + "activity_id": "128745191811378037", + "activity_name": "clanguml::t20036::C::c2()", + "participant_id": "589458700000736705" + }, + "type": "message" + }, + { + "from": { + "activity_id": "128745191811378037", + "activity_name": "clanguml::t20036::C::c2()", + "participant_id": "589458700000736705" + }, + "name": "b2()", + "return_type": "void", + "scope": "normal", + "source_location": { + "column": 17, + "file": "../../tests/t20036/t20036.cc", + "line": 21, + "translation_unit": "../../tests/t20036/t20036.cc" + }, + "to": { + "activity_id": "1726094580455938498", + "activity_name": "clanguml::t20036::B::b2()", + "participant_id": "607147607288902300" + }, + "type": "message" + }, + { + "from": { + "activity_id": "1726094580455938498", + "activity_name": "clanguml::t20036::B::b2()", + "participant_id": "607147607288902300" + }, + "name": "a2()", + "return_type": "void", + "scope": "normal", + "source_location": { + "column": 17, + "file": "../../tests/t20036/t20036.cc", + "line": 13, + "translation_unit": "../../tests/t20036/t20036.cc" + }, + "to": { + "activity_id": "2124074228514438863", + "activity_name": "clanguml::t20036::A::a2()", + "participant_id": "399722216848214287" + }, + "type": "message" + } + ] + }, + { + "messages": [ + { + "from": { + "activity_id": "1742507735898803374", + "activity_name": "clanguml::t20036::C::c1()", + "participant_id": "589458700000736705" + }, + "name": "b1()", + "return_type": "void", + "scope": "normal", + "source_location": { + "column": 17, + "file": "../../tests/t20036/t20036.cc", + "line": 20, + "translation_unit": "../../tests/t20036/t20036.cc" + }, + "to": { + "activity_id": "203660950902052846", + "activity_name": "clanguml::t20036::B::b1()", + "participant_id": "607147607288902300" + }, + "type": "message" + }, + { + "from": { + "activity_id": "203660950902052846", + "activity_name": "clanguml::t20036::B::b1()", + "participant_id": "607147607288902300" + }, + "name": "a2()", + "return_type": "void", + "scope": "normal", + "source_location": { + "column": 17, + "file": "../../tests/t20036/t20036.cc", + "line": 12, + "translation_unit": "../../tests/t20036/t20036.cc" + }, + "to": { + "activity_id": "2124074228514438863", + "activity_name": "clanguml::t20036::A::a2()", + "participant_id": "399722216848214287" + }, + "type": "message" + } + ] + } + ], + "to": { + "id": 2124074228514438863, + "location": "clanguml::t20036::A::a2()" + } + } + ], + "using_namespace": "clanguml::t20036" +} +``` diff --git a/docs/test_cases/t20036_sequence.svg b/docs/test_cases/t20036_sequence.svg new file mode 100644 index 00000000..a9b86b38 --- /dev/null +++ b/docs/test_cases/t20036_sequence.svg @@ -0,0 +1,146 @@ + + + + + + + + + + + + + + + + + + C + + C + + + + B + + B + + + + A + + A + + + + D + + D + + + + c3() + + + + + + c2() + + + + + b2() + + + + + a2() + + + + + + + c4() + + + + b2() + + + + + a2() + + + + + + + d3() + + + + a2() + + + + + + + d1() + + + + c2() + + + + + b2() + + + + + a2() + + + + + + + d2() + + + + c2() + + + + + b2() + + + + + a2() + + + + + + + c1() + + + + b1() + + + + + a2() + + + diff --git a/docs/test_cases/t30001.md b/docs/test_cases/t30001.md index 7b21a4e0..02be978b 100644 --- a/docs/test_cases/t30001.md +++ b/docs/test_cases/t30001.md @@ -239,7 +239,7 @@ namespace BB { } ], "metadata": { - "clang_uml_version": "0.3.8-18-gfd06d93", + "clang_uml_version": "0.3.8-32-ge830195", "llvm_version": "Ubuntu clang version 15.0.7", "schema_version": 1 }, diff --git a/docs/test_cases/t30001_package.svg b/docs/test_cases/t30001_package.svg index 13196cee..0e6e77d6 100644 --- a/docs/test_cases/t30001_package.svg +++ b/docs/test_cases/t30001_package.svg @@ -1,6 +1,6 @@ - + @@ -9,63 +9,63 @@ - - + + A - - + + AA - - + + B - - + + AA - - + + AAA - - + + BBB - - + + BB - - + + AAA - - + + BBB - - + + BB - + A AAA note... - + This is namespace AA in namespace A - + This is namespace AA in namespace B diff --git a/docs/test_cases/t30002.md b/docs/test_cases/t30002.md index 9e9a18c8..ec4b99e5 100644 --- a/docs/test_cases/t30002.md +++ b/docs/test_cases/t30002.md @@ -487,7 +487,7 @@ template std::map> cm() } ], "metadata": { - "clang_uml_version": "0.3.8-18-gfd06d93", + "clang_uml_version": "0.3.8-32-ge830195", "llvm_version": "Ubuntu clang version 15.0.7", "schema_version": 1 }, diff --git a/docs/test_cases/t30002_package.svg b/docs/test_cases/t30002_package.svg index a42c21ef..848b1352 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 f85f800a..fc87a937 100644 --- a/docs/test_cases/t30003.md +++ b/docs/test_cases/t30003.md @@ -169,7 +169,7 @@ class B : public ns1::ns2::Anon { }; } ], "metadata": { - "clang_uml_version": "0.3.8-18-gfd06d93", + "clang_uml_version": "0.3.8-32-ge830195", "llvm_version": "Ubuntu clang version 15.0.7", "schema_version": 1 }, diff --git a/docs/test_cases/t30003_package.svg b/docs/test_cases/t30003_package.svg index 4835b2ff..9d3ad2cc 100644 --- a/docs/test_cases/t30003_package.svg +++ b/docs/test_cases/t30003_package.svg @@ -1,6 +1,6 @@ - + @@ -9,35 +9,35 @@ - - + + ns1 - - + + ns3 «deprecated» - - + + ns1 - - + + ns2_v1_0_0 - - + + ns2_v0_9_0 «deprecated» - - + + ns2 diff --git a/docs/test_cases/t30004.md b/docs/test_cases/t30004.md index 5fc59161..e2005b0a 100644 --- a/docs/test_cases/t30004.md +++ b/docs/test_cases/t30004.md @@ -180,7 +180,7 @@ namespace CCC { } ], "metadata": { - "clang_uml_version": "0.3.8-18-gfd06d93", + "clang_uml_version": "0.3.8-32-ge830195", "llvm_version": "Ubuntu clang version 15.0.7", "schema_version": 1 }, diff --git a/docs/test_cases/t30004_package.svg b/docs/test_cases/t30004_package.svg index 1987d33c..5d90b82e 100644 --- a/docs/test_cases/t30004_package.svg +++ b/docs/test_cases/t30004_package.svg @@ -1,6 +1,6 @@ - + @@ -9,40 +9,40 @@ - - + + A - + Package AAA. - + Package BBB. - + CCCC package note. - + We skipped DDD. - - + + AAA - - + + BBB - - + + CCC - - + + EEE diff --git a/docs/test_cases/t30005.md b/docs/test_cases/t30005.md index b8c8809c..9b9ca455 100644 --- a/docs/test_cases/t30005.md +++ b/docs/test_cases/t30005.md @@ -214,7 +214,7 @@ struct C2 { } ], "metadata": { - "clang_uml_version": "0.3.8-18-gfd06d93", + "clang_uml_version": "0.3.8-32-ge830195", "llvm_version": "Ubuntu clang version 15.0.7", "schema_version": 1 }, diff --git a/docs/test_cases/t30005_package.svg b/docs/test_cases/t30005_package.svg index 305bfdf5..866752fd 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 5311f2ad..81909a20 100644 --- a/docs/test_cases/t30006.md +++ b/docs/test_cases/t30006.md @@ -128,7 +128,7 @@ struct A2 { } ], "metadata": { - "clang_uml_version": "0.3.8-18-gfd06d93", + "clang_uml_version": "0.3.8-32-ge830195", "llvm_version": "Ubuntu clang version 15.0.7", "schema_version": 1 }, diff --git a/docs/test_cases/t30006_package.svg b/docs/test_cases/t30006_package.svg index c906fac1..ecef1104 100644 --- a/docs/test_cases/t30006_package.svg +++ b/docs/test_cases/t30006_package.svg @@ -1,6 +1,6 @@ - + @@ -9,22 +9,22 @@ - - + + B - - + + A - - + + C - + Top A note. diff --git a/docs/test_cases/t30007.md b/docs/test_cases/t30007.md index 8400b624..2298b863 100644 --- a/docs/test_cases/t30007.md +++ b/docs/test_cases/t30007.md @@ -151,7 +151,7 @@ struct A2 { } ], "metadata": { - "clang_uml_version": "0.3.8-18-gfd06d93", + "clang_uml_version": "0.3.8-32-ge830195", "llvm_version": "Ubuntu clang version 15.0.7", "schema_version": 1 }, diff --git a/docs/test_cases/t30007_package.svg b/docs/test_cases/t30007_package.svg index e5854b04..f765832b 100644 --- a/docs/test_cases/t30007_package.svg +++ b/docs/test_cases/t30007_package.svg @@ -1,6 +1,6 @@ - + @@ -9,27 +9,27 @@ - - + + A - - + + B - - + + AA - - + + C - + Compare layout with t30006. diff --git a/docs/test_cases/t30008.md b/docs/test_cases/t30008.md index d8738aab..7ed7b9d5 100644 --- a/docs/test_cases/t30008.md +++ b/docs/test_cases/t30008.md @@ -211,7 +211,7 @@ struct FF { } ], "metadata": { - "clang_uml_version": "0.3.8-18-gfd06d93", + "clang_uml_version": "0.3.8-32-ge830195", "llvm_version": "Ubuntu clang version 15.0.7", "schema_version": 1 }, diff --git a/docs/test_cases/t30008_package.svg b/docs/test_cases/t30008_package.svg index 6c282866..743da6ce 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 200cf35a..7e88afbe 100644 --- a/docs/test_cases/t30009.md +++ b/docs/test_cases/t30009.md @@ -217,7 +217,7 @@ namespace D { } ], "metadata": { - "clang_uml_version": "0.3.8-18-gfd06d93", + "clang_uml_version": "0.3.8-32-ge830195", "llvm_version": "Ubuntu clang version 15.0.7", "schema_version": 1 }, diff --git a/docs/test_cases/t30009_package.svg b/docs/test_cases/t30009_package.svg index bf9af7d5..d13e74cb 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 c9e27699..d64f0317 100644 --- a/docs/test_cases/t30010.md +++ b/docs/test_cases/t30010.md @@ -85,7 +85,7 @@ App app; } ], "metadata": { - "clang_uml_version": "0.3.8-18-gfd06d93", + "clang_uml_version": "0.3.8-32-ge830195", "llvm_version": "Ubuntu clang version 15.0.7", "schema_version": 1 }, diff --git a/docs/test_cases/t30011.md b/docs/test_cases/t30011.md index f4df3355..9fae3402 100644 --- a/docs/test_cases/t30011.md +++ b/docs/test_cases/t30011.md @@ -75,7 +75,7 @@ struct t30011_App app; } ], "metadata": { - "clang_uml_version": "0.3.8-18-gfd06d93", + "clang_uml_version": "0.3.8-32-ge830195", "llvm_version": "Ubuntu clang version 15.0.7", "schema_version": 1 }, diff --git a/docs/test_cases/t40001.md b/docs/test_cases/t40001.md index 20fbbd8d..4693d820 100644 --- a/docs/test_cases/t40001.md +++ b/docs/test_cases/t40001.md @@ -101,7 +101,7 @@ diagrams: } ], "metadata": { - "clang_uml_version": "0.3.8-18-gfd06d93", + "clang_uml_version": "0.3.8-32-ge830195", "llvm_version": "Ubuntu clang version 15.0.7", "schema_version": 1 }, diff --git a/docs/test_cases/t40001_include.svg b/docs/test_cases/t40001_include.svg index 265c3606..cbbc804d 100644 --- a/docs/test_cases/t40001_include.svg +++ b/docs/test_cases/t40001_include.svg @@ -1,6 +1,6 @@ - + @@ -9,43 +9,43 @@ - + src - + include - + lib1 - - + + t40001.cc - - + + t40001_include1.h - - + + lib1.h - + string - + vector - + yaml-cpp/yaml.h - + This is a lib1 include dir - + This is a t40001_include1.h include file diff --git a/docs/test_cases/t40002.md b/docs/test_cases/t40002.md index 7dbec6c6..77f4bd5e 100644 --- a/docs/test_cases/t40002.md +++ b/docs/test_cases/t40002.md @@ -119,7 +119,7 @@ diagrams: } ], "metadata": { - "clang_uml_version": "0.3.8-18-gfd06d93", + "clang_uml_version": "0.3.8-32-ge830195", "llvm_version": "Ubuntu clang version 15.0.7", "schema_version": 1 }, diff --git a/docs/test_cases/t40002_include.svg b/docs/test_cases/t40002_include.svg index f1205105..2755b479 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/t40003.md b/docs/test_cases/t40003.md index fa36b5f9..9069b526 100644 --- a/docs/test_cases/t40003.md +++ b/docs/test_cases/t40003.md @@ -145,7 +145,7 @@ diagrams: } ], "metadata": { - "clang_uml_version": "0.3.8-18-gfd06d93", + "clang_uml_version": "0.3.8-32-ge830195", "llvm_version": "Ubuntu clang version 15.0.7", "schema_version": 1 }, diff --git a/docs/test_cases/t40003_include.svg b/docs/test_cases/t40003_include.svg index 27070161..10c317c6 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/src/cli/cli_handler.cc b/src/cli/cli_handler.cc index 0d6a31a9..1079aeba 100644 --- a/src/cli/cli_handler.cc +++ b/src/cli/cli_handler.cc @@ -129,8 +129,10 @@ cli_flow_t cli_handler::parse(int argc, const char **argv) "instead of actual location of `.clang-uml` file."); app.add_flag("--no-metadata", no_metadata, "Skip metadata (e.g. clang-uml version) from diagrams"); - app.add_flag("--print-start-from", print_start_from, - "Print all possible 'start_from' values for a given diagram"); + app.add_flag("--print-from,--print-start-from", print_from, + "Print all possible 'from' values for a given diagram"); + app.add_flag("--print-to", print_to, + "Print all possible 'to' values for a given diagram"); app.add_flag("--no-validate", no_validate, "Do not perform configuration file schema validation"); app.add_flag("--validate-only", validate_only, @@ -149,7 +151,7 @@ cli_flow_t cli_handler::parse(int argc, const char **argv) exit(app.exit(e)); // NOLINT(concurrency-mt-unsafe) } - if (quiet || dump_config || print_start_from) + if (quiet || dump_config || print_from || print_to) verbose = 0; else verbose++; @@ -202,11 +204,10 @@ cli_flow_t cli_handler::handle_pre_config_options() return cli_flow_t::kError; } - if (print_start_from) { + if (print_from || print_to) { if (diagram_names.size() != 1) { - LOG_ERROR( - "ERROR: '--print-start-from' requires specifying one diagram " - "name using '-n' option"); + LOG_ERROR("ERROR: '--print-from' and '--print-to' require " + "specifying one diagram name using '-n' option"); return cli_flow_t::kError; } @@ -346,7 +347,8 @@ runtime_config cli_handler::get_runtime_config() const runtime_config cfg; cfg.generators = generators; cfg.verbose = verbose; - cfg.print_start_from = print_start_from; + cfg.print_from = print_from; + cfg.print_to = print_to; cfg.progress = progress; cfg.thread_count = thread_count; diff --git a/src/cli/cli_handler.h b/src/cli/cli_handler.h index 5287dce8..4f0dc2e6 100644 --- a/src/cli/cli_handler.h +++ b/src/cli/cli_handler.h @@ -33,7 +33,8 @@ namespace clanguml::cli { struct runtime_config { int verbose{}; std::vector generators{}; - bool print_start_from{}; + bool print_from{}; + bool print_to{}; bool progress{}; unsigned int thread_count{}; }; @@ -173,7 +174,8 @@ public: std::optional add_include_diagram; std::optional add_diagram_from_template; bool dump_config{false}; - bool print_start_from{false}; + bool print_from{false}; + bool print_to{false}; std::optional paths_relative_to_pwd{}; std::vector template_variables{}; bool list_templates{false}; diff --git a/src/common/generators/generators.cc b/src/common/generators/generators.cc index 582540ac..d417f113 100644 --- a/src/common/generators/generators.cc +++ b/src/common/generators/generators.cc @@ -95,11 +95,20 @@ void generate_diagram_impl(const std::string &od, const std::string &name, std::move(progress)); if constexpr (std::is_same_v) { - if (rc.print_start_from) { - auto start_from_values = model->list_start_from_values(); + if (rc.print_from) { + auto from_values = model->list_from_values(); - for (const auto &start_from : start_from_values) { - std::cout << start_from << std::endl; + for (const auto &from : from_values) { + std::cout << from << std::endl; + } + + return; + } + if (rc.print_to) { + auto to_values = model->list_to_values(); + + for (const auto &to : to_values) { + std::cout << "|" << to << "|" << std::endl; } return; diff --git a/src/config/config.h b/src/config/config.h index ea4444b8..8a634c39 100644 --- a/src/config/config.h +++ b/src/config/config.h @@ -541,7 +541,10 @@ struct sequence_diagram : public diagram { common::model::diagram_t type() const override; - option> start_from{"start_from"}; + option> from{ + option_with_alt_names_tag{}, "from", {"start_from"}}; + option>> from_to{"from_to"}; + option> to{"to"}; }; /** diff --git a/src/config/option.h b/src/config/option.h index ab6df843..35495d7f 100644 --- a/src/config/option.h +++ b/src/config/option.h @@ -32,6 +32,8 @@ enum class option_inherit_mode { kAppend /*!< Append to list options */ }; +struct option_with_alt_names_tag { }; + /** * @brief Generic configuration option type * @@ -62,6 +64,15 @@ template struct option { , inheritance_mode{im} { } + option(option_with_alt_names_tag /*unused*/, std::string name_, + std::vector alternate_names_, + option_inherit_mode im = option_inherit_mode::kOverride) + : name{std::move(name_)} + , alternate_names{std::move(alternate_names_)} + , value{} + , inheritance_mode{im} + { + } /** * @brief Set the option value @@ -107,6 +118,9 @@ template struct option { /*! Option name, it is also the YAML key in the configuration file */ std::string name; + /*! Alternate option names */ + std::vector alternate_names; + /*! Option value */ T value; diff --git a/src/config/schema.h b/src/config/schema.h index 1ff18c05..58577e74 100644 --- a/src/config/schema.h +++ b/src/config/schema.h @@ -194,7 +194,10 @@ types: generate_return_types: !optional bool generate_condition_statements: !optional bool participants_order: !optional [string] - start_from: !optional [source_location_t] + start_from: !optional [source_location_t] # deprecated -> 'from' + from: !optional [source_location_t] + from_to: !optional [[source_location_t]] + to: !optional [source_location_t] package_diagram_t: type: !variant [package] # diff --git a/src/config/yaml_decoders.cc b/src/config/yaml_decoders.cc index f1fd98b7..1c0a9f45 100644 --- a/src/config/yaml_decoders.cc +++ b/src/config/yaml_decoders.cc @@ -65,6 +65,12 @@ void get_option(const Node &node, clanguml::config::option &option) { if (node[option.name]) option.set(node[option.name].template as()); + + for (const auto &alt_name : option.alternate_names) + if (node[alt_name]) { + option.set(node[alt_name].template as()); + break; + } } template <> @@ -573,7 +579,9 @@ template <> struct convert { if (!decode_diagram(node, rhs)) return false; - get_option(node, rhs.start_from); + get_option(node, rhs.from); + get_option(node, rhs.from_to); + get_option(node, rhs.to); get_option(node, rhs.combine_free_functions_into_file_participants); get_option(node, rhs.generate_return_types); get_option(node, rhs.generate_condition_statements); diff --git a/src/config/yaml_emitters.cc b/src/config/yaml_emitters.cc index f653b8d1..1fd80ec0 100644 --- a/src/config/yaml_emitters.cc +++ b/src/config/yaml_emitters.cc @@ -347,7 +347,9 @@ YAML::Emitter &operator<<(YAML::Emitter &out, const sequence_diagram &c) { out << YAML::BeginMap; out << YAML::Key << "type" << YAML::Value << c.type(); - out << c.start_from; + out << c.from; + out << c.from_to; + out << c.to; out << dynamic_cast(c); out << YAML::EndMap; return out; diff --git a/src/sequence_diagram/generators/json/sequence_diagram_generator.cc b/src/sequence_diagram/generators/json/sequence_diagram_generator.cc index 5e5d75f0..e0fdf0c1 100644 --- a/src/sequence_diagram/generators/json/sequence_diagram_generator.cc +++ b/src/sequence_diagram/generators/json/sequence_diagram_generator.cc @@ -609,7 +609,89 @@ void generator::generate_diagram(nlohmann::json &parent) const } } - for (const auto &sf : config().start_from()) { + for (const auto &ft : config().from_to()) { + // First, find the sequence of activities from 'from' location + // to 'to' location + assert(ft.size() == 2); + + const auto &from_location = ft.front(); + const auto &to_location = ft.back(); + + auto from_activity_id = model().get_from_activity_id(from_location); + auto to_activity_id = model().get_to_activity_id(to_location); + + if (from_activity_id == 0 || to_activity_id == 0) + continue; + + auto message_chains_unique = model().get_all_from_to_message_chains( + from_activity_id, to_activity_id); + + nlohmann::json sequence; + sequence["from_to"]["from"]["location"] = from_location.location; + sequence["from_to"]["from"]["id"] = from_activity_id; + sequence["from_to"]["to"]["location"] = to_location.location; + sequence["from_to"]["to"]["id"] = to_activity_id; + + block_statements_stack_.push_back(std::ref(sequence)); + + sequence["message_chains"] = nlohmann::json::array(); + + for (const auto &mc : message_chains_unique) { + nlohmann::json message_chain; + + block_statements_stack_.push_back(std::ref(message_chain)); + + for (const auto &m : mc) { + generate_call(m, current_block_statement()); + } + + block_statements_stack_.pop_back(); + + sequence["message_chains"].push_back(std::move(message_chain)); + } + + block_statements_stack_.pop_back(); + + json_["sequences"].push_back(std::move(sequence)); + } + + for (const auto &to_location : config().to()) { + auto to_activity_id = model().get_to_activity_id(to_location); + + if (to_activity_id == 0) + continue; + + auto message_chains_unique = + model().get_all_from_to_message_chains(0, to_activity_id); + + nlohmann::json sequence; + sequence["to"]["location"] = to_location.location; + sequence["to"]["id"] = to_activity_id; + + block_statements_stack_.push_back(std::ref(sequence)); + + sequence["message_chains"] = nlohmann::json::array(); + + for (const auto &mc : message_chains_unique) { + nlohmann::json message_chain; + + block_statements_stack_.push_back(std::ref(message_chain)); + + for (const auto &m : mc) { + generate_call(m, current_block_statement()); + } + + block_statements_stack_.pop_back(); + + sequence["message_chains"].push_back(std::move(message_chain)); + } + + block_statements_stack_.pop_back(); + + json_["sequences"].push_back(std::move(sequence)); + } + + for (const auto &sf : config().from()) { if (sf.location_type == location_t::function) { common::model::diagram_element::id_t start_from{0}; std::string start_from_str; diff --git a/src/sequence_diagram/generators/plantuml/sequence_diagram_generator.cc b/src/sequence_diagram/generators/plantuml/sequence_diagram_generator.cc index 33accb93..8ba07087 100644 --- a/src/sequence_diagram/generators/plantuml/sequence_diagram_generator.cc +++ b/src/sequence_diagram/generators/plantuml/sequence_diagram_generator.cc @@ -59,14 +59,7 @@ void generator::generate_call(const message &m, std::ostream &ostr) const std::string message; model::function::message_render_mode render_mode = - model::function::message_render_mode::full; - - if (config().generate_method_arguments() == - config::method_arguments::abbreviated) - render_mode = model::function::message_render_mode::abbreviated; - else if (config().generate_method_arguments() == - config::method_arguments::none) - render_mode = model::function::message_render_mode::no_arguments; + select_method_arguments_render_mode(); if (to.value().type_name() == "method") { const auto &f = dynamic_cast(to.value()); @@ -415,7 +408,87 @@ void generator::generate_diagram(std::ostream &ostr) const } } - for (const auto &sf : config().start_from()) { + for (const auto &ft : config().from_to()) { + // First, find the sequence of activities from 'from' location + // to 'to' location + assert(ft.size() == 2); + + const auto &from_location = ft.front(); + const auto &to_location = ft.back(); + + auto from_activity_id = model().get_from_activity_id(from_location); + auto to_activity_id = model().get_to_activity_id(to_location); + + if (from_activity_id == 0 || to_activity_id == 0) + continue; + + auto message_chains_unique = model().get_all_from_to_message_chains( + from_activity_id, to_activity_id); + + bool first_separator_skipped{false}; + for (const auto &mc : message_chains_unique) { + if (!first_separator_skipped) + first_separator_skipped = true; + else + ostr << "====\n"; + + const auto &from = + model().get_participant(from_activity_id); + + if (from.value().type_name() == "method" || + config().combine_free_functions_into_file_participants()) { + generate_participant(ostr, from_activity_id); + ostr << "[->" + << " " << generate_alias(from.value()) << " : " + << from.value().message_name( + select_method_arguments_render_mode()) + << std::endl; + } + + for (const auto &m : mc) { + generate_call(m, ostr); + } + } + } + + for (const auto &to_location : config().to()) { + auto to_activity_id = model().get_to_activity_id(to_location); + + if (to_activity_id == 0) + continue; + + auto message_chains_unique = + model().get_all_from_to_message_chains(0, to_activity_id); + + bool first_separator_skipped{false}; + for (const auto &mc : message_chains_unique) { + if (!first_separator_skipped) + first_separator_skipped = true; + else + ostr << "====\n"; + + const auto from_activity_id = mc.front().from(); + + const auto &from = + model().get_participant(from_activity_id); + + if (from.value().type_name() == "method" || + config().combine_free_functions_into_file_participants()) { + generate_participant(ostr, from_activity_id); + ostr << "[->" + << " " << generate_alias(from.value()) << " : " + << from.value().message_name( + select_method_arguments_render_mode()) + << std::endl; + } + + for (const auto &m : mc) { + generate_call(m, ostr); + } + } + } + + for (const auto &sf : config().from()) { if (sf.location_type == location_t::function) { common::model::diagram_element::id_t start_from{0}; for (const auto &[k, v] : model().sequences()) { @@ -454,15 +527,7 @@ void generator::generate_diagram(std::ostream &ostr) const std::string from_alias = generate_alias(from.value()); model::function::message_render_mode render_mode = - model::function::message_render_mode::full; - - if (config().generate_method_arguments() == - config::method_arguments::abbreviated) - render_mode = model::function::message_render_mode::abbreviated; - else if (config().generate_method_arguments() == - config::method_arguments::none) - render_mode = - model::function::message_render_mode::no_arguments; + select_method_arguments_render_mode(); // For methods or functions in diagrams where they are combined into // file participants, we need to add an 'entry' point call to know @@ -503,4 +568,17 @@ void generator::generate_diagram(std::ostream &ostr) const } } +model::function::message_render_mode +generator::select_method_arguments_render_mode() const +{ + if (config().generate_method_arguments() == + config::method_arguments::abbreviated) + return model::function::message_render_mode::abbreviated; + + if (config().generate_method_arguments() == config::method_arguments::none) + return model::function::message_render_mode::no_arguments; + + return model::function::message_render_mode::full; +} + } // namespace clanguml::sequence_diagram::generators::plantuml diff --git a/src/sequence_diagram/generators/plantuml/sequence_diagram_generator.h b/src/sequence_diagram/generators/plantuml/sequence_diagram_generator.h index df1466fe..2519a081 100644 --- a/src/sequence_diagram/generators/plantuml/sequence_diagram_generator.h +++ b/src/sequence_diagram/generators/plantuml/sequence_diagram_generator.h @@ -140,6 +140,8 @@ private: std::string render_name(std::string name) const; mutable std::set generated_participants_; + model::function::message_render_mode + select_method_arguments_render_mode() const; }; } // namespace plantuml diff --git a/src/sequence_diagram/model/diagram.cc b/src/sequence_diagram/model/diagram.cc index 630722dc..00afcb19 100644 --- a/src/sequence_diagram/model/diagram.cc +++ b/src/sequence_diagram/model/diagram.cc @@ -193,22 +193,208 @@ bool diagram::should_include( dynamic_cast(p)); } -std::vector diagram::list_start_from_values() const +std::vector diagram::list_from_values() const { std::vector result; for (const auto &[from_id, act] : sequences_) { const auto &from_activity = *(participants_.at(from_id)); - - result.push_back(from_activity.full_name(false)); + const auto &full_name = from_activity.full_name(false); + if (!full_name.empty()) + result.push_back(full_name); } std::sort(result.begin(), result.end()); + result.erase(std::unique(result.begin(), result.end()), result.end()); return result; } +std::vector diagram::list_to_values() const +{ + std::vector result; + + for (const auto &[from_id, act] : sequences_) { + for (const auto &m : act.messages()) { + if (participants_.count(m.to()) > 0) { + const auto &to_activity = *(participants_.at(m.to())); + const auto &full_name = to_activity.full_name(false); + if (!full_name.empty()) + result.push_back(full_name); + } + } + } + + std::sort(result.begin(), result.end()); + result.erase(std::unique(result.begin(), result.end()), result.end()); + + return result; +} + +common::model::diagram_element::id_t diagram::get_to_activity_id( + const config::source_location &to_location) const +{ + common::model::diagram_element::id_t to_activity{0}; + + for (const auto &[k, v] : sequences()) { + for (const auto &m : v.messages()) { + if (m.type() != common::model::message_t::kCall) + continue; + const auto &callee = *participants().at(m.to()); + std::string vto = callee.full_name(false); + if (vto == to_location.location) { + LOG_DBG( + "Found sequence diagram end point '{}': {}", vto, m.to()); + to_activity = m.to(); + break; + } + } + } + + if (to_activity == 0) { + LOG_WARN("Failed to find 'to' participant {} for to " + "condition", + to_location.location); + } + + return to_activity; +} + +common::model::diagram_element::id_t diagram::get_from_activity_id( + const config::source_location &from_location) const +{ + common::model::diagram_element::id_t from_activity{0}; + + for (const auto &[k, v] : sequences()) { + const auto &caller = *participants().at(v.from()); + std::string vfrom = caller.full_name(false); + if (vfrom == from_location.location) { + LOG_DBG("Found sequence diagram start point '{}': {}", vfrom, k); + from_activity = k; + break; + } + } + + if (from_activity == 0) { + LOG_WARN("Failed to find 'from' participant {} for from " + "condition", + from_location.location); + } + + return from_activity; +} + +std::unordered_set diagram::get_all_from_to_message_chains( + const common::model::diagram_element::id_t from_activity, + const common::model::diagram_element::id_t to_activity) const +{ + std::unordered_set message_chains_unique{}; + + // Message (call) chains matching the specified from_to condition + std::vector message_chains; + + // First find all 'to_activity' call targets in the sequences, i.e. + // all messages pointing to the final 'to_activity' activity + for (const auto &[k, v] : sequences()) { + for (const auto &m : v.messages()) { + if (m.type() != common::model::message_t::kCall) + continue; + + if (m.to() == to_activity) { + message_chains.emplace_back(); + message_chains.back().push_back(m); + } + } + } + + std::map> calls_to_current_chain; + std::map current_chain; + + int iter = 0; + while (true) { + bool added_message_to_some_chain{false}; + // If target of current message matches any of the + // 'from' constraints in the last messages in + // current chains found on previous iteration - append + if (!calls_to_current_chain.empty()) { + for (auto &[message_chain_index, messages] : + calls_to_current_chain) { + for (auto &m : messages) { + message_chains.push_back( + current_chain[message_chain_index]); + + message_chains.back().push_back(std::move(m)); + } + } + calls_to_current_chain.clear(); + } + + LOG_TRACE("Message chains after iteration {}", iter++); + int message_chain_index{}; + for (const auto &mc : message_chains) { + LOG_TRACE("\t{}: {}", message_chain_index++, + fmt::join(util::map(mc, + [](const model::message &m) -> std::string { + return m.message_name(); + }), + "<-")); + } + + for (auto i = 0U; i < message_chains.size(); i++) { + auto &mc = message_chains[i]; + current_chain[i] = mc; + for (const auto &[k, v] : sequences()) { + for (const auto &m : v.messages()) { + if (m.type() != common::model::message_t::kCall) + continue; + + // Ignore recursive calls and call loops + if (m.to() == m.from() || + std::any_of( + cbegin(mc), cend(mc), [&m](const auto &msg) { + return msg.to() == m.from(); + })) { + continue; + } + + if (m.to() == mc.back().from()) { + calls_to_current_chain[i].push_back(m); + added_message_to_some_chain = true; + } + } + } + + // If there are more than one call to the current chain, + // duplicate it as many times as there are calls - 1 + if (calls_to_current_chain.count(i) > 0 && + !calls_to_current_chain[i].empty()) { + mc.push_back(calls_to_current_chain[i][0]); + calls_to_current_chain[i].erase( + calls_to_current_chain[i].begin()); + } + } + + // There is nothing more to find + if (!added_message_to_some_chain) + break; + } + + // Reverse the message chains order (they were added starting from + // the destination activity) + for (auto &mc : message_chains) + std::reverse(mc.begin(), mc.end()); + + std::copy_if(message_chains.begin(), message_chains.end(), + std::inserter(message_chains_unique, message_chains_unique.begin()), + [from_activity](const message_chain_t &mc) { + return !mc.empty() && + (from_activity == 0 || (mc.front().from() == from_activity)); + }); + + return message_chains_unique; +} + void diagram::print() const { LOG_TRACE(" --- Participants ---"); diff --git a/src/sequence_diagram/model/diagram.h b/src/sequence_diagram/model/diagram.h index 30cc81b4..897c7791 100644 --- a/src/sequence_diagram/model/diagram.h +++ b/src/sequence_diagram/model/diagram.h @@ -20,6 +20,7 @@ #include "activity.h" #include "common/model/diagram.h" #include "common/types.h" +#include "config/config.h" #include "participant.h" #include @@ -27,6 +28,8 @@ namespace clanguml::sequence_diagram::model { +using message_chain_t = std::vector; + /** * @brief Model of a sequence diagram * @@ -229,11 +232,50 @@ public: bool should_include(const sequence_diagram::model::participant &p) const; /** - * @brief Get list of all possible 'start_from' values in the model + * @brief Get list of all possible 'from' values in the model * - * @return List of all possible 'start_from' values + * @return List of all possible 'from' values */ - std::vector list_start_from_values() const; + std::vector list_from_values() const; + + /** + * @brief Get list of all possible 'to' values in the model + * + * @return List of all possible 'to' values + */ + std::vector list_to_values() const; + + /** + * @brief Generate a list of message chains matching a from_to constraint + * + * If 'from_activity' is 0, this method will return all message chains + * ending in 'to_activity'. + * + * @param from_activity Source activity for from_to message chain + * @param to_activity Target activity for from_to message chain + * @return List of message chains + */ + std::unordered_set get_all_from_to_message_chains( + common::model::diagram_element::id_t from_activity, + common::model::diagram_element::id_t to_activity) const; + + /** + * @brief Get id of a 'to' activity + * + * @param to_location Target activity + * @return Activity id + */ + common::model::diagram_element::id_t get_to_activity_id( + const config::source_location &to_location) const; + + /** + * @brief Get id of a 'from' activity + * + * @param from_location Source activity + * @return Activity id + */ + common::model::diagram_element::id_t get_from_activity_id( + const config::source_location &from_location) const; /** * @brief Once the diagram is complete, run any final processing. diff --git a/src/sequence_diagram/model/message.h b/src/sequence_diagram/model/message.h index 78fd680f..5a3a3e83 100644 --- a/src/sequence_diagram/model/message.h +++ b/src/sequence_diagram/model/message.h @@ -162,3 +162,33 @@ private: }; } // namespace clanguml::sequence_diagram::model + +namespace std { + +template <> struct hash { + std::size_t operator()( + const clanguml::sequence_diagram::model::message &m) const + { + std::size_t seed = clanguml::util::hash_seed(m.from()); + seed ^= m.to(); + seed += std::hash{}(m.full_name(true)); + + return seed; + } +}; + +template <> +struct hash> { + std::size_t operator()( + const std::vector &msgs) + const + { + std::size_t seed = clanguml::util::hash_seed(msgs.size()); + for (const auto &m : msgs) { + seed ^= std::hash{}(m); + } + return seed; + } +}; + +} // namespace std diff --git a/src/util/util.h b/src/util/util.h index f7e2040b..bff44542 100644 --- a/src/util/util.h +++ b/src/util/util.h @@ -351,6 +351,15 @@ void for_each_if(const T &collection, C &&cond, F &&func) }); } +template +std::vector map(const std::vector &in, F &&f) +{ + std::vector out; + std::transform( + in.cbegin(), in.cend(), std::back_inserter(out), std::forward(f)); + return out; +} + template void if_not_null(const T *pointer, F &&func, FElse &&func_else) { diff --git a/tests/t20001/.clang-uml b/tests/t20001/.clang-uml index 508c5de1..8cf49fdc 100644 --- a/tests/t20001/.clang-uml +++ b/tests/t20001/.clang-uml @@ -13,7 +13,7 @@ diagrams: - clanguml::t20001::detail using_namespace: - clanguml::t20001 - start_from: + from: - function: "clanguml::t20001::tmain()" plantuml: before: diff --git a/tests/t20002/.clang-uml b/tests/t20002/.clang-uml index 29d74b71..8dfb0825 100644 --- a/tests/t20002/.clang-uml +++ b/tests/t20002/.clang-uml @@ -10,5 +10,5 @@ diagrams: - clanguml::t20002 using_namespace: - clanguml::t20002 - start_from: + from: - function: "clanguml::t20002::m1()" diff --git a/tests/t20003/.clang-uml b/tests/t20003/.clang-uml index 9aae6b72..aee8374b 100644 --- a/tests/t20003/.clang-uml +++ b/tests/t20003/.clang-uml @@ -10,5 +10,5 @@ diagrams: - clanguml::t20003 using_namespace: - clanguml::t20003 - start_from: + from: - function: "clanguml::t20003::m1(T)" diff --git a/tests/t20004/.clang-uml b/tests/t20004/.clang-uml index de348abf..0e1618e9 100644 --- a/tests/t20004/.clang-uml +++ b/tests/t20004/.clang-uml @@ -10,5 +10,5 @@ diagrams: - clanguml::t20004 using_namespace: - clanguml::t20004 - start_from: + from: - function: "clanguml::t20004::main()" \ No newline at end of file diff --git a/tests/t20005/.clang-uml b/tests/t20005/.clang-uml index 7fbd937a..5b298510 100644 --- a/tests/t20005/.clang-uml +++ b/tests/t20005/.clang-uml @@ -10,5 +10,5 @@ diagrams: - clanguml::t20005 using_namespace: - clanguml::t20005 - start_from: + from: - function: "clanguml::t20005::C::c(T)" \ No newline at end of file diff --git a/tests/t20006/.clang-uml b/tests/t20006/.clang-uml index dedfb8f7..47360f32 100644 --- a/tests/t20006/.clang-uml +++ b/tests/t20006/.clang-uml @@ -10,5 +10,5 @@ diagrams: - clanguml::t20006 using_namespace: - clanguml::t20006 - start_from: + from: - function: "clanguml::t20006::tmain()" \ No newline at end of file diff --git a/tests/t20007/.clang-uml b/tests/t20007/.clang-uml index 40a6a2f7..e0324ed3 100644 --- a/tests/t20007/.clang-uml +++ b/tests/t20007/.clang-uml @@ -10,5 +10,5 @@ diagrams: - clanguml::t20007 using_namespace: - clanguml::t20007 - start_from: + from: - function: "clanguml::t20007::tmain()" \ No newline at end of file diff --git a/tests/t20008/.clang-uml b/tests/t20008/.clang-uml index f266305c..5aa1c79d 100644 --- a/tests/t20008/.clang-uml +++ b/tests/t20008/.clang-uml @@ -10,5 +10,5 @@ diagrams: - clanguml::t20008 using_namespace: - clanguml::t20008 - start_from: + from: - function: "clanguml::t20008::tmain()" \ No newline at end of file diff --git a/tests/t20009/.clang-uml b/tests/t20009/.clang-uml index 6f8b97ea..3bc94e92 100644 --- a/tests/t20009/.clang-uml +++ b/tests/t20009/.clang-uml @@ -10,5 +10,5 @@ diagrams: - clanguml::t20009 using_namespace: - clanguml::t20009 - start_from: + from: - function: "clanguml::t20009::tmain()" \ No newline at end of file diff --git a/tests/t20010/.clang-uml b/tests/t20010/.clang-uml index 55f2dd81..0af678b5 100644 --- a/tests/t20010/.clang-uml +++ b/tests/t20010/.clang-uml @@ -10,5 +10,5 @@ diagrams: - clanguml::t20010 using_namespace: - clanguml::t20010 - start_from: + from: - function: "clanguml::t20010::tmain()" \ No newline at end of file diff --git a/tests/t20011/.clang-uml b/tests/t20011/.clang-uml index 9a2a29be..8b1586e5 100644 --- a/tests/t20011/.clang-uml +++ b/tests/t20011/.clang-uml @@ -10,5 +10,5 @@ diagrams: - clanguml::t20011 using_namespace: - clanguml::t20011 - start_from: + from: - function: "clanguml::t20011::tmain()" \ No newline at end of file diff --git a/tests/t20012/.clang-uml b/tests/t20012/.clang-uml index bd288238..a4d1882c 100644 --- a/tests/t20012/.clang-uml +++ b/tests/t20012/.clang-uml @@ -10,5 +10,5 @@ diagrams: - clanguml::t20012 using_namespace: - clanguml::t20012 - start_from: + from: - function: "clanguml::t20012::tmain()" \ No newline at end of file diff --git a/tests/t20013/.clang-uml b/tests/t20013/.clang-uml index e37d69ee..650e6e87 100644 --- a/tests/t20013/.clang-uml +++ b/tests/t20013/.clang-uml @@ -10,5 +10,5 @@ diagrams: - clanguml::t20013 using_namespace: - clanguml::t20013 - start_from: + from: - function: "clanguml::t20013::tmain(int,char **)" \ No newline at end of file diff --git a/tests/t20014/.clang-uml b/tests/t20014/.clang-uml index 9de444e7..464dba5d 100644 --- a/tests/t20014/.clang-uml +++ b/tests/t20014/.clang-uml @@ -13,5 +13,5 @@ diagrams: - clanguml::t20014 using_namespace: - clanguml::t20014 - start_from: + from: - function: "clanguml::t20014::tmain()" \ No newline at end of file diff --git a/tests/t20015/.clang-uml b/tests/t20015/.clang-uml index 231e9543..d858dba3 100644 --- a/tests/t20015/.clang-uml +++ b/tests/t20015/.clang-uml @@ -13,5 +13,5 @@ diagrams: - clanguml::t20015::detail using_namespace: - clanguml::t20015 - start_from: + from: - function: "clanguml::t20015::tmain()" \ No newline at end of file diff --git a/tests/t20016/.clang-uml b/tests/t20016/.clang-uml index 1cf1f97f..ef2b94d6 100644 --- a/tests/t20016/.clang-uml +++ b/tests/t20016/.clang-uml @@ -10,5 +10,5 @@ diagrams: - clanguml::t20016 using_namespace: - clanguml::t20016 - start_from: + from: - function: "clanguml::t20016::tmain()" \ No newline at end of file diff --git a/tests/t20017/.clang-uml b/tests/t20017/.clang-uml index 0d9947d3..23fc3539 100644 --- a/tests/t20017/.clang-uml +++ b/tests/t20017/.clang-uml @@ -14,5 +14,5 @@ diagrams: - . using_namespace: - clanguml::t20017 - start_from: + from: - function: "clanguml::t20017::tmain()" \ No newline at end of file diff --git a/tests/t20018/.clang-uml b/tests/t20018/.clang-uml index a3f634da..0babfeb5 100644 --- a/tests/t20018/.clang-uml +++ b/tests/t20018/.clang-uml @@ -10,5 +10,5 @@ diagrams: - clanguml::t20018 using_namespace: - clanguml::t20018 - start_from: + from: - function: "clanguml::t20018::tmain()" \ No newline at end of file diff --git a/tests/t20019/.clang-uml b/tests/t20019/.clang-uml index 77631b8c..3804e9cc 100644 --- a/tests/t20019/.clang-uml +++ b/tests/t20019/.clang-uml @@ -10,5 +10,5 @@ diagrams: - clanguml::t20019 using_namespace: - clanguml::t20019 - start_from: + from: - function: "clanguml::t20019::tmain()" \ No newline at end of file diff --git a/tests/t20020/.clang-uml b/tests/t20020/.clang-uml index 9f58d838..a7679e65 100644 --- a/tests/t20020/.clang-uml +++ b/tests/t20020/.clang-uml @@ -10,5 +10,5 @@ diagrams: - clanguml::t20020 using_namespace: - clanguml::t20020 - start_from: + from: - function: "clanguml::t20020::tmain()" \ No newline at end of file diff --git a/tests/t20021/.clang-uml b/tests/t20021/.clang-uml index 4c80b1bf..938b7a7e 100644 --- a/tests/t20021/.clang-uml +++ b/tests/t20021/.clang-uml @@ -10,5 +10,5 @@ diagrams: - clanguml::t20021 using_namespace: - clanguml::t20021 - start_from: + from: - function: "clanguml::t20021::tmain()" \ No newline at end of file diff --git a/tests/t20022/.clang-uml b/tests/t20022/.clang-uml index 0fa68fa9..08f05219 100644 --- a/tests/t20022/.clang-uml +++ b/tests/t20022/.clang-uml @@ -10,5 +10,5 @@ diagrams: - clanguml::t20022 using_namespace: - clanguml::t20022 - start_from: + from: - function: "clanguml::t20022::tmain()" \ No newline at end of file diff --git a/tests/t20024/.clang-uml b/tests/t20024/.clang-uml index fde4258a..1420bf1f 100644 --- a/tests/t20024/.clang-uml +++ b/tests/t20024/.clang-uml @@ -10,5 +10,5 @@ diagrams: - clanguml::t20024 using_namespace: - clanguml::t20024 - start_from: + from: - function: "clanguml::t20024::tmain()" \ No newline at end of file diff --git a/tests/t20025/.clang-uml b/tests/t20025/.clang-uml index 1598fcf3..14e8ed22 100644 --- a/tests/t20025/.clang-uml +++ b/tests/t20025/.clang-uml @@ -10,5 +10,5 @@ diagrams: - clanguml::t20025 using_namespace: - clanguml::t20025 - start_from: + from: - function: "clanguml::t20025::tmain()" \ No newline at end of file diff --git a/tests/t20026/.clang-uml b/tests/t20026/.clang-uml index 083b47ec..fc5e972e 100644 --- a/tests/t20026/.clang-uml +++ b/tests/t20026/.clang-uml @@ -10,5 +10,5 @@ diagrams: - clanguml::t20026 using_namespace: - clanguml::t20026 - start_from: + from: - function: "clanguml::t20026::tmain()" \ No newline at end of file diff --git a/tests/t20027/.clang-uml b/tests/t20027/.clang-uml index a107bba2..10737381 100644 --- a/tests/t20027/.clang-uml +++ b/tests/t20027/.clang-uml @@ -12,5 +12,5 @@ diagrams: - public using_namespace: - clanguml::t20027 - start_from: + from: - function: "clanguml::t20027::tmain()" \ No newline at end of file diff --git a/tests/t20028/.clang-uml b/tests/t20028/.clang-uml index c20559fc..24d8ee97 100644 --- a/tests/t20028/.clang-uml +++ b/tests/t20028/.clang-uml @@ -13,5 +13,5 @@ diagrams: - clanguml::t20028::detail using_namespace: - clanguml::t20028 - start_from: + from: - function: "clanguml::t20028::tmain()" \ No newline at end of file diff --git a/tests/t20029/.clang-uml b/tests/t20029/.clang-uml index 8308648f..ca543ed2 100644 --- a/tests/t20029/.clang-uml +++ b/tests/t20029/.clang-uml @@ -13,7 +13,7 @@ diagrams: - private using_namespace: - clanguml::t20029 - start_from: + from: - function: clanguml::t20029::tmain() participants_order: - clanguml::t20029::tmain() diff --git a/tests/t20030/.clang-uml b/tests/t20030/.clang-uml index a8e29397..a4d9f94a 100644 --- a/tests/t20030/.clang-uml +++ b/tests/t20030/.clang-uml @@ -10,6 +10,6 @@ diagrams: - clanguml::t20030 using_namespace: - clanguml::t20030 - start_from: + from: - function: "clanguml::t20030::tmain(int)" - function: "clanguml::t20030::tmain(bool,int)" \ No newline at end of file diff --git a/tests/t20031/.clang-uml b/tests/t20031/.clang-uml index fc1a5533..da8b7038 100644 --- a/tests/t20031/.clang-uml +++ b/tests/t20031/.clang-uml @@ -15,6 +15,6 @@ diagrams: - lambda using_namespace: - clanguml::t20031 - start_from: + from: - function: "clanguml::t20031::tmain(int)" - function: "clanguml::t20031::tmain(bool,int)" \ No newline at end of file diff --git a/tests/t20032/.clang-uml b/tests/t20032/.clang-uml index 48ccf1d2..5c88e05a 100644 --- a/tests/t20032/.clang-uml +++ b/tests/t20032/.clang-uml @@ -11,5 +11,5 @@ diagrams: using_namespace: - clanguml::t20032 generate_return_types: true - start_from: + from: - function: "clanguml::t20032::tmain(int,char **)" \ No newline at end of file diff --git a/tests/t20033/.clang-uml b/tests/t20033/.clang-uml index 390e2d3a..f081bdbc 100644 --- a/tests/t20033/.clang-uml +++ b/tests/t20033/.clang-uml @@ -11,5 +11,5 @@ diagrams: using_namespace: - clanguml::t20033 generate_condition_statements: true - start_from: + from: - function: "clanguml::t20033::tmain()" \ No newline at end of file diff --git a/tests/t20034/.clang-uml b/tests/t20034/.clang-uml new file mode 100644 index 00000000..83d964c9 --- /dev/null +++ b/tests/t20034/.clang-uml @@ -0,0 +1,15 @@ +compilation_database_dir: .. +output_directory: puml +diagrams: + t20034_sequence: + type: sequence + glob: + - ../../tests/t20034/t20034.cc + include: + namespaces: + - clanguml::t20034 + using_namespace: + - clanguml::t20034 + from_to: + - [function: "clanguml::t20034::D::d2()", + function: "clanguml::t20034::A::a2()"] \ No newline at end of file diff --git a/tests/t20034/t20034.cc b/tests/t20034/t20034.cc new file mode 100644 index 00000000..7f1a20d6 --- /dev/null +++ b/tests/t20034/t20034.cc @@ -0,0 +1,71 @@ +#include + +namespace clanguml { +namespace t20034 { +struct A { + void a1() { } + void a2() { } + void a3() { } +}; + +struct C; + +struct B { + void b1() + { + a.a1(); + a.a2(); + } + void b2() { a.a2(); } + void b3() { a.a3(); } + void b4(); + + A a; + + C *c; +}; + +struct C { + void c1() { b.b1(); } + void c2() { b.b2(); } + void c3() + { + if (reinterpret_cast(&b) == 0xbadc0de) + c3(); + else + c2(); + } + + void c4() { b.b4(); } + + B b; +}; + +struct D { + void d1() { c.c1(); } + void d2() + { + c.c1(); + a.a2(); + c.c2(); + c.c3(); + a.a2(); + + c.c4(); + + auto l = [this]() { a.a2(); }; + l(); + } + void d3() { c.c3(); } + + A a; + C c; +}; + +void B::b4() +{ + c->c4(); + b2(); +} +} +} \ No newline at end of file diff --git a/tests/t20034/test_case.h b/tests/t20034/test_case.h new file mode 100644 index 00000000..1363fca0 --- /dev/null +++ b/tests/t20034/test_case.h @@ -0,0 +1,77 @@ +/** + * tests/t20034/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("t20034", "[test-case][sequence]") +{ + auto [config, db] = load_config("t20034"); + + auto diagram = config.diagrams["t20034_sequence"]; + + REQUIRE(diagram->name == "t20034_sequence"); + + auto model = generate_sequence_diagram(*db, diagram); + + REQUIRE(model->name() == "t20034_sequence"); + + { + auto puml = generate_sequence_puml(diagram, *model); + AliasMatcher _A(puml); + + REQUIRE_THAT(puml, StartsWith("@startuml")); + REQUIRE_THAT(puml, EndsWith("@enduml\n")); + + // Check if all calls exist + REQUIRE_THAT(puml, HasCall(_A("D"), _A("A"), "a2()")); + + REQUIRE_THAT(puml, HasCall(_A("D"), _A("C"), "c3()")); + REQUIRE_THAT(puml, HasCall(_A("C"), _A("C"), "c2()")); + REQUIRE_THAT(puml, HasCall(_A("C"), _A("B"), "b2()")); + REQUIRE_THAT(puml, HasCall(_A("B"), _A("A"), "a2()")); + + REQUIRE_THAT(puml, HasCall(_A("D"), _A("C"), "c4()")); + + REQUIRE_THAT(puml, !HasCall(_A("C"), _A("B"), "b3()")); + + save_puml( + config.output_directory() + "/" + diagram->name + ".puml", puml); + } + + { + auto j = generate_sequence_json(diagram, *model); + + using namespace json; + + REQUIRE(HasMessageChain(j, + {{"D::d2()", "C::c3()", "void"}, {"C::c3()", "C::c2()", "void"}, + {"C::c2()", "B::b2()", "void"}, + {"B::b2()", "A::a2()", "void"}})); + REQUIRE(HasMessageChain(j, + {{"D::d2()", "C::c4()", "void"}, {"C::c4()", "B::b4()", "void"}, + {"B::b4()", "B::b2()", "void"}, + {"B::b2()", "A::a2()", "void"}})); + REQUIRE(HasMessageChain(j, {{"D::d2()", "A::a2()", "void"}})); + REQUIRE(HasMessageChain(j, + {{"D::d2()", "C::c1()", "void"}, {"C::c1()", "B::b1()", "void"}, + {"B::b1()", "A::a2()", "void"}})); + REQUIRE(HasMessageChain(j, + {{"D::d2()", "C::c2()", "void"}, {"C::c2()", "B::b2()", "void"}, + {"B::b2()", "A::a2()", "void"}})); + + save_json(config.output_directory() + "/" + diagram->name + ".json", j); + } +} \ No newline at end of file diff --git a/tests/t20035/.clang-uml b/tests/t20035/.clang-uml new file mode 100644 index 00000000..7b1a708e --- /dev/null +++ b/tests/t20035/.clang-uml @@ -0,0 +1,15 @@ +compilation_database_dir: .. +output_directory: puml +diagrams: + t20035_sequence: + type: sequence + glob: + - ../../tests/t20035/t20035.cc + include: + namespaces: + - clanguml::t20035 + using_namespace: + - clanguml::t20035 + from_to: + - [function: "clanguml::t20035::tmain(int,char **)", + function: "clanguml::t20035::c(int)"] \ No newline at end of file diff --git a/tests/t20035/t20035.cc b/tests/t20035/t20035.cc new file mode 100644 index 00000000..b2b66aeb --- /dev/null +++ b/tests/t20035/t20035.cc @@ -0,0 +1,14 @@ +namespace clanguml { +namespace t20035 { + +int c(int arg) { return arg; } + +int b1(int arg) { return c(arg); } + +int b2(int arg) { return c(arg); } + +int a(int arg) { return b1(arg); } + +int tmain(int argc, char **argv) { return a(argc); } +} +} \ No newline at end of file diff --git a/tests/t20035/test_case.h b/tests/t20035/test_case.h new file mode 100644 index 00000000..50134794 --- /dev/null +++ b/tests/t20035/test_case.h @@ -0,0 +1,57 @@ +/** + * tests/t20035/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("t20035", "[test-case][sequence]") +{ + auto [config, db] = load_config("t20035"); + + auto diagram = config.diagrams["t20035_sequence"]; + + REQUIRE(diagram->name == "t20035_sequence"); + + auto model = generate_sequence_diagram(*db, diagram); + + REQUIRE(model->name() == "t20035_sequence"); + + { + auto puml = generate_sequence_puml(diagram, *model); + AliasMatcher _A(puml); + + REQUIRE_THAT(puml, StartsWith("@startuml")); + REQUIRE_THAT(puml, EndsWith("@enduml\n")); + + REQUIRE_THAT(puml, HasCall(_A("tmain(int,char **)"), _A("a(int)"), "")); + REQUIRE_THAT(puml, HasCall(_A("a(int)"), _A("b1(int)"), "")); + REQUIRE_THAT(puml, HasCall(_A("b1(int)"), _A("c(int)"), "")); + + save_puml( + config.output_directory() + "/" + diagram->name + ".puml", puml); + } + + { + auto j = generate_sequence_json(diagram, *model); + + using namespace json; + + REQUIRE(HasMessageChain(j, + {{"tmain(int,char **)", "a(int)", "int"}, + {"a(int)", "b1(int)", "int"}, {"b1(int)", "c(int)", "int"}})); + + save_json(config.output_directory() + "/" + diagram->name + ".json", j); + } +} \ No newline at end of file diff --git a/tests/t20036/.clang-uml b/tests/t20036/.clang-uml new file mode 100644 index 00000000..f6bc00ff --- /dev/null +++ b/tests/t20036/.clang-uml @@ -0,0 +1,14 @@ +compilation_database_dir: .. +output_directory: puml +diagrams: + t20036_sequence: + type: sequence + glob: + - ../../tests/t20036/t20036.cc + include: + namespaces: + - clanguml::t20036 + using_namespace: + - clanguml::t20036 + to: + - function: "clanguml::t20036::A::a2()" \ No newline at end of file diff --git a/tests/t20036/t20036.cc b/tests/t20036/t20036.cc new file mode 100644 index 00000000..d5b82efb --- /dev/null +++ b/tests/t20036/t20036.cc @@ -0,0 +1,44 @@ +#include + +namespace clanguml { +namespace t20036 { +struct A { + void a1() { } + void a2() { } + void a3() { } +}; + +struct B { + void b1() { a.a2(); } + void b2() { a.a2(); } + void b3() { a.a3(); } + + A a; +}; + +struct C { + void c1() { b.b1(); } + void c2() { b.b2(); } + void c3() + { + if (reinterpret_cast(&b) == 0xbadc0de) + c3(); + else + c2(); + } + + void c4() { b.b2(); } + + B b; +}; + +struct D { + void d1() { c.c2(); } + void d2() { c.c2(); } + void d3() { a.a2(); } + + A a; + C c; +}; +} +} \ No newline at end of file diff --git a/tests/t20036/test_case.h b/tests/t20036/test_case.h new file mode 100644 index 00000000..67381a9f --- /dev/null +++ b/tests/t20036/test_case.h @@ -0,0 +1,73 @@ +/** + * tests/t20036/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("t20036", "[test-case][sequence]") +{ + auto [config, db] = load_config("t20036"); + + auto diagram = config.diagrams["t20036_sequence"]; + + REQUIRE(diagram->name == "t20036_sequence"); + + auto model = generate_sequence_diagram(*db, diagram); + + REQUIRE(model->name() == "t20036_sequence"); + + { + auto puml = generate_sequence_puml(diagram, *model); + AliasMatcher _A(puml); + + REQUIRE_THAT(puml, StartsWith("@startuml")); + REQUIRE_THAT(puml, EndsWith("@enduml\n")); + + REQUIRE_THAT(puml, HasCall(_A("C"), _A("C"), "c2()")); + REQUIRE_THAT(puml, HasCall(_A("C"), _A("B"), "b2()")); + REQUIRE_THAT(puml, HasCall(_A("B"), _A("A"), "a2()")); + + REQUIRE_THAT(puml, HasCall(_A("C"), _A("B"), "b2()")); + REQUIRE_THAT(puml, HasCall(_A("B"), _A("A"), "a2()")); + + REQUIRE_THAT(puml, HasCall(_A("D"), _A("A"), "a2()")); + + REQUIRE_THAT(puml, HasCall(_A("C"), _A("B"), "b1()")); + REQUIRE_THAT(puml, HasCall(_A("B"), _A("A"), "a2()")); + + save_puml( + config.output_directory() + "/" + diagram->name + ".puml", puml); + } + + { + auto j = generate_sequence_json(diagram, *model); + + using namespace json; + + REQUIRE(HasMessageChain(j, + {{"C::c3()", "C::c2()", "void"}, {"C::c2()", "B::b2()", "void"}, + {"B::b2()", "A::a2()", "void"}})); + REQUIRE(HasMessageChain(j, + {{"C::c4()", "B::b2()", "void"}, {"B::b2()", "A::a2()", "void"}})); + REQUIRE(HasMessageChain(j, {{"D::d3()", "A::a2()", "void"}})); + REQUIRE(HasMessageChain(j, + {{"D::d1()", "C::c2()", "void"}, {"C::c2()", "B::b2()", "void"}, + {"B::b2()", "A::a2()", "void"}})); + REQUIRE(HasMessageChain(j, + {{"C::c1()", "B::b1()", "void"}, {"B::b1()", "A::a2()", "void"}})); + + save_json(config.output_directory() + "/" + diagram->name + ".json", j); + } +} \ No newline at end of file diff --git a/tests/test_cases.cc b/tests/test_cases.cc index 97f6c370..1c9b3919 100644 --- a/tests/test_cases.cc +++ b/tests/test_cases.cc @@ -347,6 +347,9 @@ using namespace clanguml::test::matchers; #include "t20031/test_case.h" #include "t20032/test_case.h" #include "t20033/test_case.h" +#include "t20034/test_case.h" +#include "t20035/test_case.h" +#include "t20036/test_case.h" /// /// Package diagram tests diff --git a/tests/test_cases.h b/tests/test_cases.h index df5c789d..980cde6f 100644 --- a/tests/test_cases.h +++ b/tests/test_cases.h @@ -1050,6 +1050,49 @@ int FindMessage(const nlohmann::json &j, const std::string &from, j, expand_name(j, from), expand_name(j, to), msg, return_type); } +struct message_test_spec_t { + std::string from; + std::string to; + std::optional return_type; + + bool operator==(const message_test_spec_t &r) const noexcept + { + return from == r.from && to == r.to && return_type == r.return_type; + } +}; + +void from_json(const nlohmann::json &j, message_test_spec_t &p) +{ + j.at("from").at("activity_name").get_to(p.from); + j.at("to").at("activity_name").get_to(p.to); + j.at("return_type").get_to(p.return_type); +} + +bool HasMessageChain( + const nlohmann::json &j, std::vector msgs) +{ + std::vector full_name_messages; + std::transform(msgs.begin(), msgs.end(), + std::back_inserter(full_name_messages), + [&j](const message_test_spec_t &m) { + auto res = m; + res.from = expand_name(j, m.from); + res.to = expand_name(j, m.to); + return res; + }); + + for (const auto &seq : j.at("sequences")) + for (const auto &mc : seq.at("message_chains")) { + auto mc_msgs = + mc.at("messages").get>(); + + if (full_name_messages == mc_msgs) + return true; + } + + return false; +} + } // namespace json } } diff --git a/tests/test_cases.yaml b/tests/test_cases.yaml index 82cbb91f..bf07b136 100644 --- a/tests/test_cases.yaml +++ b/tests/test_cases.yaml @@ -298,6 +298,15 @@ test_cases: - name: t20033 title: Control statement text in sequence diagram test case description: + - name: t20034 + title: Test case for rendering all call chains from one activity to another (from_to) + description: + - name: t20035 + title: from_to sequence diagram test case with free functions + description: + - name: t20036 + title: Test case for rendering all call chains leading to an activity (to) + description: Package diagrams: - name: t30001 title: Basic package diagram test case diff --git a/uml/sequence/class_diagram_generator_sequence.yml b/uml/sequence/class_diagram_generator_sequence.yml index 542f04a5..36ef6fe6 100644 --- a/uml/sequence/class_diagram_generator_sequence.yml +++ b/uml/sequence/class_diagram_generator_sequence.yml @@ -9,5 +9,5 @@ using_namespace: plantuml: before: - 'title clang-uml clanguml::class_diagram::generators::plantuml::generator sequence diagram' -start_from: +from: - function: "clanguml::common::generators::plantuml::generator::generate(std::ostream &) const" \ No newline at end of file diff --git a/uml/sequence/cli_handle_options_sequence.yml b/uml/sequence/cli_handle_options_sequence.yml index 2aea8c7e..b228b7f7 100644 --- a/uml/sequence/cli_handle_options_sequence.yml +++ b/uml/sequence/cli_handle_options_sequence.yml @@ -19,5 +19,5 @@ exclude: - operator using_namespace: - clanguml -start_from: +from: - function: "clanguml::cli::cli_handler::handle_options(int,const char **)" \ No newline at end of file diff --git a/uml/sequence/diagram_generate_generic_sequence.yml b/uml/sequence/diagram_generate_generic_sequence.yml index 024e8566..f08b5432 100644 --- a/uml/sequence/diagram_generate_generic_sequence.yml +++ b/uml/sequence/diagram_generate_generic_sequence.yml @@ -11,5 +11,5 @@ include: exclude: paths: - src/common/model/source_location.h -start_from: +from: - function: "clanguml::common::generators::generate_diagram(const std::string &,const std::string &,std::shared_ptr,const common::compilation_database &,const std::vector &,const cli::runtime_config &,std::function &&)" \ No newline at end of file diff --git a/uml/sequence/load_config_sequence.yml b/uml/sequence/load_config_sequence.yml index 069fab7e..e5022562 100644 --- a/uml/sequence/load_config_sequence.yml +++ b/uml/sequence/load_config_sequence.yml @@ -15,5 +15,5 @@ exclude: - src/util/util.h using_namespace: - clanguml -start_from: +from: - function: "clanguml::config::load(const std::string &,std::optional,std::optional,bool)" \ No newline at end of file diff --git a/uml/sequence/main_sequence.yml b/uml/sequence/main_sequence.yml index 2f88eaa2..913e6cd9 100644 --- a/uml/sequence/main_sequence.yml +++ b/uml/sequence/main_sequence.yml @@ -23,5 +23,5 @@ plantuml: before: - 'title clang-uml main function sequence diagram' # Use clang-uml main function as entry point for this diagram -start_from: +from: - function: main(int,const char **) \ No newline at end of file diff --git a/uml/sequence/sequence_diagram_visitor_sequence.yml b/uml/sequence/sequence_diagram_visitor_sequence.yml index 531fe592..9996c76e 100644 --- a/uml/sequence/sequence_diagram_visitor_sequence.yml +++ b/uml/sequence/sequence_diagram_visitor_sequence.yml @@ -24,5 +24,5 @@ using_namespace: plantuml: before: - 'title clang-uml sequence_diagram::visitor::translation_unit_visitor::VisitCXXRecordDecl sequence diagram' -start_from: +from: - function: "clanguml::sequence_diagram::visitor::translation_unit_visitor::VisitCXXRecordDecl(clang::CXXRecordDecl *)" diff --git a/uml/sequence/template_builder_sequence.yml b/uml/sequence/template_builder_sequence.yml index ea1d1cd3..5c23410c 100644 --- a/uml/sequence/template_builder_sequence.yml +++ b/uml/sequence/template_builder_sequence.yml @@ -17,5 +17,5 @@ using_namespace: plantuml: before: - 'title clang-uml class_diagram::visitor::template_builder::build sequence diagram' -start_from: +from: - function: "clanguml::class_diagram::visitor::template_builder::build(const clang::NamedDecl *,const clang::TemplateSpecializationType &,std::optional)"