diff --git a/README.md b/README.md index 12615eb6..0e23cea0 100644 --- a/README.md +++ b/README.md @@ -164,6 +164,7 @@ using PairPairBA = std::pair>, long>; template using VectorPtr = std::unique_ptr>; template using APtr = std::unique_ptr>; template using ASharedPtr = std::shared_ptr>; + template using AAPtr = std::unique_ptr, A>>; @@ -180,7 +181,7 @@ using ACharString = AString; using AStringString = AString; using BStringString = AStringString; -class R { +template class R { using AWCharString = AString; PairPairBA bapair; @@ -193,6 +194,7 @@ class R { AIntString intstring; AStringString stringstring; BStringString bstringstring; + AAPtr atfloat; protected: BVector bs; diff --git a/docs/test_cases.md b/docs/test_cases.md index e4ae739e..5e1034aa 100644 --- a/docs/test_cases.md +++ b/docs/test_cases.md @@ -62,6 +62,7 @@ * [t00061](./test_cases/t00061.md) - Paths diagram filter test case * [t00062](./test_cases/t00062.md) - Template specialization matching based on deduced context * [t00063](./test_cases/t00063.md) - Element types diagram filter test case + * [t00064](./test_cases/t00064.md) - Template type list test case ## Sequence diagrams * [t20001](./test_cases/t20001.md) - Basic sequence diagram test case * [t20002](./test_cases/t20002.md) - Free function sequence diagram test case diff --git a/docs/test_cases/t00002.md b/docs/test_cases/t00002.md index 20938731..a224564e 100644 --- a/docs/test_cases/t00002.md +++ b/docs/test_cases/t00002.md @@ -500,7 +500,7 @@ private: } ], "metadata": { - "clang_uml_version": "0.3.5-2-g7e9944c", + "clang_uml_version": "0.3.5-13-g57aa174", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00002_class.svg b/docs/test_cases/t00002_class.svg index 2d68a7d2..5a4b329a 100644 --- a/docs/test_cases/t00002_class.svg +++ b/docs/test_cases/t00002_class.svg @@ -1,6 +1,6 @@ - + @@ -9,8 +9,8 @@ - - + + A @@ -21,8 +21,8 @@ foo_c() = 0 : void - - + + B @@ -31,8 +31,8 @@ foo_a() : void - - + + C @@ -41,18 +41,18 @@ foo_c() : void - - + + D - + - + as : std::vector<A *> @@ -60,18 +60,18 @@ foo_a() : void foo_c() : void - - + + E - + - + as : std::vector<A *> @@ -79,13 +79,13 @@ foo_a() : void foo_c() : void - + 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 2274f397..adb57a8f 100644 --- a/docs/test_cases/t00003.md +++ b/docs/test_cases/t00003.md @@ -450,7 +450,7 @@ int A::static_int = 1; } ], "metadata": { - "clang_uml_version": "0.3.5-2-g7e9944c", + "clang_uml_version": "0.3.5-13-g57aa174", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00003_class.svg b/docs/test_cases/t00003_class.svg index ab1e7531..3d9809f9 100644 --- a/docs/test_cases/t00003_class.svg +++ b/docs/test_cases/t00003_class.svg @@ -1,6 +1,6 @@ - + @@ -9,74 +9,74 @@ - - + + 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 @@ -112,11 +112,11 @@ protected_method() : void private_method() : void - + - + compare : std::function<bool (const int)> diff --git a/docs/test_cases/t00004.md b/docs/test_cases/t00004.md index 08fcc6c7..a231d41e 100644 --- a/docs/test_cases/t00004.md +++ b/docs/test_cases/t00004.md @@ -460,7 +460,7 @@ public: } ], "metadata": { - "clang_uml_version": "0.3.5-2-g7e9944c", + "clang_uml_version": "0.3.5-13-g57aa174", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00004_class.svg b/docs/test_cases/t00004_class.svg index 093900a6..874c71db 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,8 +28,8 @@ AA_3 - - + + A @@ -40,16 +40,16 @@ foo2() const : void - - + + A::AA - - + + A::AA::Lights @@ -59,15 +59,15 @@ Red - - + + A::AA::AAA - + C::B @@ -75,8 +75,8 @@ int - - + + C @@ -84,39 +84,39 @@ T - + - + t : T - + - + b_int : B<int> - - + + C::AA - - + + C::AA::AAA - - + + C::AA::CCC @@ -125,8 +125,8 @@ CCC_2 - - + + C::B @@ -134,16 +134,16 @@ V - + - + b : V - - + + C::CC @@ -152,16 +152,16 @@ CC_2 - - + + detail::D - - + + detail::D::AA @@ -171,8 +171,8 @@ AA_3 - - + + detail::D::DD diff --git a/docs/test_cases/t00005.md b/docs/test_cases/t00005.md index 4dd3e64d..15c9d4e7 100644 --- a/docs/test_cases/t00005.md +++ b/docs/test_cases/t00005.md @@ -464,7 +464,7 @@ public: } ], "metadata": { - "clang_uml_version": "0.3.5-2-g7e9944c", + "clang_uml_version": "0.3.5-13-g57aa174", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00005_class.svg b/docs/test_cases/t00005_class.svg index ab171a3e..497a90d1 100644 --- a/docs/test_cases/t00005_class.svg +++ b/docs/test_cases/t00005_class.svg @@ -1,6 +1,6 @@ - + @@ -9,204 +9,204 @@ - - + + A - - + + B - - + + C - - + + D - - + + E - - + + F - - + + G - - + + H - - + + I - - + + J - - + + K - - + + R - + - + some_int : int - + - + some_int_pointer : int * - + - + some_int_pointer_pointer : int ** - + - + some_int_reference : int & - + - + 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 * diff --git a/docs/test_cases/t00006.md b/docs/test_cases/t00006.md index 7008589d..65f9ff4a 100644 --- a/docs/test_cases/t00006.md +++ b/docs/test_cases/t00006.md @@ -629,7 +629,7 @@ public: } ], "metadata": { - "clang_uml_version": "0.3.5-2-g7e9944c", + "clang_uml_version": "0.3.5-13-g57aa174", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00006_class.svg b/docs/test_cases/t00006_class.svg index 2ee68660..728adab6 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 @@ -146,15 +146,15 @@ T - + - + data : std::vector<T> - + custom_container @@ -162,102 +162,102 @@ E - - + + 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 4095cfa3..6f75a29a 100644 --- a/docs/test_cases/t00007.md +++ b/docs/test_cases/t00007.md @@ -158,7 +158,7 @@ public: } ], "metadata": { - "clang_uml_version": "0.3.5-2-g7e9944c", + "clang_uml_version": "0.3.5-13-g57aa174", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00007_class.svg b/docs/test_cases/t00007_class.svg index a24ca8bd..f18019da 100644 --- a/docs/test_cases/t00007_class.svg +++ b/docs/test_cases/t00007_class.svg @@ -1,6 +1,6 @@ - + @@ -9,56 +9,56 @@ - - + + 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 b2e1bfd5..1602d6e2 100644 --- a/docs/test_cases/t00008.md +++ b/docs/test_cases/t00008.md @@ -477,7 +477,7 @@ template <> struct E::nested_template { } ], "metadata": { - "clang_uml_version": "0.3.5-2-g7e9944c", + "clang_uml_version": "0.3.5-13-g57aa174", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00008_class.svg b/docs/test_cases/t00008_class.svg index 2ebb74c0..f0ce9cb9 100644 --- a/docs/test_cases/t00008_class.svg +++ b/docs/test_cases/t00008_class.svg @@ -1,6 +1,6 @@ - + @@ -9,8 +9,8 @@ - - + + A @@ -18,51 +18,51 @@ T,P=T,CMP=nullptr,int N=3 - + - + value : T - + - + pointer : T * - + - + reference : T & - + - + values : std::vector<P> - + - + ints : std::array<int,N> - + - + comparator : CMP - - + + Vector @@ -70,16 +70,16 @@ T - + - + values : std::vector<T> - - + + B @@ -87,15 +87,15 @@ T,C<> - + - + template_template : C<T> - + B @@ -103,18 +103,18 @@ int,Vector - - + + D - + - + ints : B<int,Vector> @@ -122,16 +122,16 @@ add(int i) : void D<Items...>(std::tuple<Items...> * ) : void - - + + E - - + + E::nested_template @@ -142,8 +142,8 @@ get(ET * d) : E::nested_template::DT * - - + + E::nested_template diff --git a/docs/test_cases/t00009.md b/docs/test_cases/t00009.md index fc479aa6..efdbd04b 100644 --- a/docs/test_cases/t00009.md +++ b/docs/test_cases/t00009.md @@ -213,7 +213,7 @@ public: } ], "metadata": { - "clang_uml_version": "0.3.5-2-g7e9944c", + "clang_uml_version": "0.3.5-13-g57aa174", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00009_class.svg b/docs/test_cases/t00009_class.svg index 865e054b..a4c95777 100644 --- a/docs/test_cases/t00009_class.svg +++ b/docs/test_cases/t00009_class.svg @@ -1,6 +1,6 @@ - + @@ -9,8 +9,8 @@ - - + + A @@ -18,15 +18,15 @@ T - + - + value : T - + A @@ -34,7 +34,7 @@ int - + A @@ -42,7 +42,7 @@ std::string - + A @@ -50,32 +50,32 @@ std::vector<std::string> - - + + 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 0eb81ce5..9a512a46 100644 --- a/docs/test_cases/t00010.md +++ b/docs/test_cases/t00010.md @@ -227,7 +227,7 @@ public: } ], "metadata": { - "clang_uml_version": "0.3.5-2-g7e9944c", + "clang_uml_version": "0.3.5-13-g57aa174", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00010_class.svg b/docs/test_cases/t00010_class.svg index fc46d62d..b8e4a943 100644 --- a/docs/test_cases/t00010_class.svg +++ b/docs/test_cases/t00010_class.svg @@ -1,6 +1,6 @@ - + @@ -9,8 +9,8 @@ - - + + A @@ -18,22 +18,22 @@ T,P - + - + first : T - + - + second : P - + A @@ -41,8 +41,8 @@ T,std::string - - + + B @@ -50,15 +50,15 @@ T - + - + astring : A<T,std::string> - + B @@ -66,18 +66,18 @@ int - - + + C - + - + aintstring : B<int> diff --git a/docs/test_cases/t00011.md b/docs/test_cases/t00011.md index 318b3c60..caef2dff 100644 --- a/docs/test_cases/t00011.md +++ b/docs/test_cases/t00011.md @@ -176,7 +176,7 @@ public: } ], "metadata": { - "clang_uml_version": "0.3.5-2-g7e9944c", + "clang_uml_version": "0.3.5-13-g57aa174", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00011_class.svg b/docs/test_cases/t00011_class.svg index d90a2722..ceebd7f5 100644 --- a/docs/test_cases/t00011_class.svg +++ b/docs/test_cases/t00011_class.svg @@ -1,6 +1,6 @@ - + @@ -9,8 +9,8 @@ - - + + D @@ -18,16 +18,16 @@ T - + - + value : T - - + + A @@ -36,18 +36,18 @@ foo() : void - - + + B - + - + m_a : A * diff --git a/docs/test_cases/t00012.md b/docs/test_cases/t00012.md index 21607b33..99f9637a 100644 --- a/docs/test_cases/t00012.md +++ b/docs/test_cases/t00012.md @@ -498,7 +498,7 @@ class R { } ], "metadata": { - "clang_uml_version": "0.3.5-2-g7e9944c", + "clang_uml_version": "0.3.5-13-g57aa174", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00012_class.svg b/docs/test_cases/t00012_class.svg index 39ce15e7..d0194788 100644 --- a/docs/test_cases/t00012_class.svg +++ b/docs/test_cases/t00012_class.svg @@ -1,6 +1,6 @@ - + @@ -9,8 +9,8 @@ - - + + A @@ -18,23 +18,23 @@ T,Ts... - + - + value : T - + - + values : std::variant<Ts...> - - + + B @@ -43,15 +43,15 @@ - + - + ints : std::array<int,sizeof...(Is)> - - + + C @@ -60,14 +60,14 @@ - + - + ints : std::array<T,sizeof...(Is)> - + A @@ -75,7 +75,7 @@ int,std::string,float - + A @@ -83,7 +83,7 @@ int,std::string,bool - + B @@ -91,7 +91,7 @@ 3,2,1 - + B @@ -99,7 +99,7 @@ 1,1,1,1 - + C @@ -107,50 +107,50 @@ std::map<int,std::vector<std::vector<std::vector<std::string>>>>,3,3,3 - - + + 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 137000ef..e0e4f482 100644 --- a/docs/test_cases/t00013.md +++ b/docs/test_cases/t00013.md @@ -701,7 +701,7 @@ private: } ], "metadata": { - "clang_uml_version": "0.3.5-2-g7e9944c", + "clang_uml_version": "0.3.5-13-g57aa174", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00013_class.svg b/docs/test_cases/t00013_class.svg index 875208b7..5e2ce949 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 @@ -18,15 +18,15 @@ T - + - + f : T - + ABCD::F @@ -34,70 +34,70 @@ int - - + + A - + - + a : int - - + + B - + - + b : int - - + + C - + - + c : int - - + + D - + - + d : int print(R * r) : void - - + + E @@ -105,16 +105,16 @@ T - + - + e : T - - + + G @@ -122,22 +122,22 @@ T,Args... - + - + g : T - + - + args : std::tuple<Args...> - + E @@ -145,7 +145,7 @@ int - + G @@ -153,7 +153,7 @@ int,float,std::string - + E @@ -161,25 +161,25 @@ std::string - - + + R - + - + gintstring : G<int,float,std::string> - + - + estring : E<std::string> diff --git a/docs/test_cases/t00014.md b/docs/test_cases/t00014.md index 80ca5b50..8d74bfd8 100644 --- a/docs/test_cases/t00014.md +++ b/docs/test_cases/t00014.md @@ -58,6 +58,7 @@ using PairPairBA = std::pair>, long>; template using VectorPtr = std::unique_ptr>; template using APtr = std::unique_ptr>; template using ASharedPtr = std::shared_ptr>; + template using AAPtr = std::unique_ptr, A>>; @@ -74,7 +75,7 @@ using ACharString = AString; using AStringString = AString; using BStringString = AStringString; -class R { +template class R { using AWCharString = AString; PairPairBA bapair; @@ -87,6 +88,7 @@ class R { AIntString intstring; AStringString stringstring; BStringString bstringstring; + AAPtr atfloat; protected: BVector bs; @@ -645,12 +647,12 @@ public: }, { "bases": [], - "display_name": "clanguml::t00014::R", - "id": "1192822659863756768", + "display_name": "clanguml::t00014::R", + "id": "1758213171584933144", "is_abstract": false, "is_nested": false, "is_struct": false, - "is_template": false, + "is_template": true, "is_union": false, "members": [ { @@ -659,7 +661,7 @@ public: "name": "bapair", "source_location": { "file": "../../tests/t00014/t00014.cc", - "line": 58 + "line": 59 }, "type": "PairPairBA" }, @@ -669,7 +671,7 @@ public: "name": "abool", "source_location": { "file": "../../tests/t00014/t00014.cc", - "line": 60 + "line": 61 }, "type": "APtr" }, @@ -679,7 +681,7 @@ public: "name": "aboolfloat", "source_location": { "file": "../../tests/t00014/t00014.cc", - "line": 61 + "line": 62 }, "type": "AAPtr" }, @@ -689,7 +691,7 @@ public: "name": "afloat", "source_location": { "file": "../../tests/t00014/t00014.cc", - "line": 62 + "line": 63 }, "type": "ASharedPtr" }, @@ -699,7 +701,7 @@ public: "name": "boolstring", "source_location": { "file": "../../tests/t00014/t00014.cc", - "line": 63 + "line": 64 }, "type": "A" }, @@ -709,7 +711,7 @@ public: "name": "floatstring", "source_location": { "file": "../../tests/t00014/t00014.cc", - "line": 64 + "line": 65 }, "type": "AStringPtr" }, @@ -719,7 +721,7 @@ public: "name": "intstring", "source_location": { "file": "../../tests/t00014/t00014.cc", - "line": 65 + "line": 66 }, "type": "clanguml::t00014::AIntString" }, @@ -729,7 +731,7 @@ public: "name": "stringstring", "source_location": { "file": "../../tests/t00014/t00014.cc", - "line": 66 + "line": 67 }, "type": "clanguml::t00014::AStringString" }, @@ -739,17 +741,27 @@ public: "name": "bstringstring", "source_location": { "file": "../../tests/t00014/t00014.cc", - "line": 67 + "line": 68 }, "type": "clanguml::t00014::BStringString" }, + { + "access": "private", + "is_static": false, + "name": "atfloat", + "source_location": { + "file": "../../tests/t00014/t00014.cc", + "line": 69 + }, + "type": "AAPtr" + }, { "access": "protected", "is_static": false, "name": "bs", "source_location": { "file": "../../tests/t00014/t00014.cc", - "line": 70 + "line": 72 }, "type": "clanguml::t00014::BVector" }, @@ -759,7 +771,7 @@ public: "name": "bs2", "source_location": { "file": "../../tests/t00014/t00014.cc", - "line": 73 + "line": 75 }, "type": "clanguml::t00014::BVector2" }, @@ -769,7 +781,7 @@ public: "name": "cb", "source_location": { "file": "../../tests/t00014/t00014.cc", - "line": 74 + "line": 76 }, "type": "SimpleCallback" }, @@ -779,7 +791,7 @@ public: "name": "gcb", "source_location": { "file": "../../tests/t00014/t00014.cc", - "line": 75 + "line": 77 }, "type": "GenericCallback" }, @@ -789,7 +801,7 @@ public: "name": "vcb", "source_location": { "file": "../../tests/t00014/t00014.cc", - "line": 76 + "line": 78 }, "type": "clanguml::t00014::VoidCallback" }, @@ -799,7 +811,7 @@ public: "name": "vps", "source_location": { "file": "../../tests/t00014/t00014.cc", - "line": 77 + "line": 79 }, "type": "VectorPtr" } @@ -809,14 +821,21 @@ public: "namespace": "clanguml::t00014", "source_location": { "file": "../../tests/t00014/t00014.cc", - "line": 55 + "line": 56 }, - "template_parameters": [], + "template_parameters": [ + { + "is_variadic": false, + "kind": "template_type", + "name": "T", + "template_parameters": [] + } + ], "type": "class" } ], "metadata": { - "clang_uml_version": "0.3.5-2-g7e9944c", + "clang_uml_version": "0.3.5-13-g57aa174", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, @@ -915,135 +934,155 @@ public: { "access": "public", "destination": "378898020828430636", - "source": "1192822659863756768", + "source": "1758213171584933144", "type": "dependency" }, { "access": "private", "destination": "934136012292043506", "label": "bapair", - "source": "1192822659863756768", + "source": "1758213171584933144", "type": "aggregation" }, { "access": "private", "destination": "378898020828430636", "label": "bapair", - "source": "1192822659863756768", + "source": "1758213171584933144", "type": "aggregation" }, { "access": "public", "destination": "2082013375525130414", - "source": "1192822659863756768", + "source": "1758213171584933144", "type": "dependency" }, { "access": "private", "destination": "2082013375525130414", "label": "abool", - "source": "1192822659863756768", + "source": "1758213171584933144", "type": "aggregation" }, { "access": "public", "destination": "51978493292659230", - "source": "1192822659863756768", + "source": "1758213171584933144", "type": "dependency" }, { "access": "private", "destination": "2082013375525130414", "label": "aboolfloat", - "source": "1192822659863756768", + "source": "1758213171584933144", "type": "aggregation" }, { "access": "private", "destination": "51978493292659230", "label": "aboolfloat", - "source": "1192822659863756768", + "source": "1758213171584933144", "type": "aggregation" }, { "access": "public", "destination": "197769253782961588", - "source": "1192822659863756768", + "source": "1758213171584933144", "type": "dependency" }, { "access": "private", "destination": "197769253782961588", "label": "afloat", - "source": "1192822659863756768", + "source": "1758213171584933144", "type": "association" }, { "access": "private", "destination": "895940711566401184", "label": "boolstring", - "source": "1192822659863756768", + "source": "1758213171584933144", "type": "aggregation" }, { "access": "private", "destination": "1751732625010742161", "label": "floatstring", - "source": "1192822659863756768", + "source": "1758213171584933144", "type": "aggregation" }, { "access": "private", "destination": "887121441210847583", "label": "intstring", - "source": "1192822659863756768", + "source": "1758213171584933144", "type": "aggregation" }, { "access": "private", "destination": "1119452495635561975", "label": "stringstring", - "source": "1192822659863756768", + "source": "1758213171584933144", "type": "aggregation" }, { "access": "private", "destination": "1119452495635561975", "label": "bstringstring", - "source": "1192822659863756768", + "source": "1758213171584933144", + "type": "aggregation" + }, + { + "access": "public", + "destination": "2017665567517853203", + "source": "1758213171584933144", + "type": "dependency" + }, + { + "access": "private", + "destination": "2017665567517853203", + "label": "atfloat", + "source": "1758213171584933144", + "type": "aggregation" + }, + { + "access": "private", + "destination": "51978493292659230", + "label": "atfloat", + "source": "1758213171584933144", "type": "aggregation" }, { "access": "protected", "destination": "934136012292043506", "label": "bs", - "source": "1192822659863756768", + "source": "1758213171584933144", "type": "aggregation" }, { "access": "public", "destination": "934136012292043506", "label": "bs2", - "source": "1192822659863756768", + "source": "1758213171584933144", "type": "aggregation" }, { "access": "public", "destination": "340562099063642390", - "source": "1192822659863756768", + "source": "1758213171584933144", "type": "dependency" }, { "access": "public", "destination": "1388877149159894665", - "source": "1192822659863756768", + "source": "1758213171584933144", "type": "dependency" }, { "access": "public", "destination": "934136012292043506", "label": "vps", - "source": "1192822659863756768", + "source": "1758213171584933144", "type": "aggregation" } ], diff --git a/docs/test_cases/t00014_class.svg b/docs/test_cases/t00014_class.svg index 66ce0b65..6b0088ea 100644 --- a/docs/test_cases/t00014_class.svg +++ b/docs/test_cases/t00014_class.svg @@ -1,6 +1,6 @@ - + - + @@ -9,375 +9,394 @@ - - - - - A - - T,P - + + + + + A + + T,P + - - - + + + - - t : T + + t : T - - - + + + - - p : P + + p : P - - - - - - B - + + + + + + B + - - - + + + - - value : std::string + + value : std::string - - - - - A - - T,std::string - - - - - - A - - T,std::unique_ptr<std::string> - - - - - - A - - long,T - - - - - - A - - double,T - - - - - - A - - long,U - - - - - - A - - long,bool - - - - - - A - - double,bool - - - - - - A - - long,float - - - - - - A - - double,float - - - - - - A - - bool,std::string - - - - - - A - - float,std::unique_ptr<std::string> - - - - - - A - - int,std::string - - - - - - A - - std::string,std::string - - - - - - A - - char,std::string - - - - - - A - - wchar_t,std::string - - - - - - - R - + + + + + A + + T,std::string + + + + + + A + + T,std::unique_ptr<std::string> + + + + + + A + + long,T + + + + + + A + + double,T + + + + + + A + + long,U + + + + + + A + + long,bool + + + + + + A + + double,bool + + + + + + A + + long,float + + + + + + A + + double,float + + + + + + A + + bool,std::string + + + + + + A + + float,std::unique_ptr<std::string> + + + + + + A + + int,std::string + + + + + + A + + std::string,std::string + + + + + + A + + char,std::string + + + + + + A + + wchar_t,std::string + + + + + + + R + + T + - - - + + + - - bapair : PairPairBA<bool> + + bapair : PairPairBA<bool> - - - + + + - - abool : APtr<bool> + + abool : APtr<bool> - - - + + + - - aboolfloat : AAPtr<bool,float> + + aboolfloat : AAPtr<bool,float> - - - + + + - - afloat : ASharedPtr<float> + + afloat : ASharedPtr<float> - - - + + + - - boolstring : A<bool,std::string> + + boolstring : A<bool,std::string> - - - + + + - - floatstring : AStringPtr<float> + + floatstring : AStringPtr<float> - - - + + + - - intstring : AIntString + + intstring : AIntString - - - + + + - - stringstring : AStringString + + stringstring : AStringString - - - + + + - - bstringstring : BStringString + + bstringstring : BStringString - - - + + + - - bs : BVector + + atfloat : AAPtr<T,float> - - - + + + - - bs2 : BVector2 + + bs : BVector - - - + + + - - cb : SimpleCallback<ACharString> + + bs2 : BVector2 - - - + + + - - gcb : GenericCallback<R::AWCharString> + + cb : SimpleCallback<ACharString> - - - + + + - - vcb : VoidCallback + + gcb : GenericCallback<R::AWCharString> - - - + + + - - vps : VectorPtr<B> + + vcb : VoidCallback - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - bapair - - - - bapair - - - - bs - - - - bs2 - - - - vps - - - - - - abool - - - - aboolfloat - - - - - - aboolfloat - - - - - - afloat - - - - boolstring - - - - floatstring - - - - intstring - - - - stringstring - - - - bstringstring - - - - + + + + + + vps : VectorPtr<B> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + bapair + + + + bapair + + + + bs + + + + bs2 + + + + vps + + + + + + abool + + + + aboolfloat + + + + + + aboolfloat + + + + atfloat + + + + + + afloat + + + + boolstring + + + + floatstring + + + + intstring + + + + stringstring + + + + bstringstring + + + + + + atfloat + + + + diff --git a/docs/test_cases/t00015.md b/docs/test_cases/t00015.md index 023e4830..ab7de950 100644 --- a/docs/test_cases/t00015.md +++ b/docs/test_cases/t00015.md @@ -177,7 +177,7 @@ class B : public ns1::ns2::Anon { }; } ], "metadata": { - "clang_uml_version": "0.3.5-2-g7e9944c", + "clang_uml_version": "0.3.5-13-g57aa174", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00015_class.svg b/docs/test_cases/t00015_class.svg index 1837ba8c..dfffc6ad 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 b13cc5b4..491a03b6 100644 --- a/docs/test_cases/t00016.md +++ b/docs/test_cases/t00016.md @@ -57,8 +57,8 @@ template <> struct is_numeric { "elements": [ { "bases": [], - "display_name": "clanguml::t00016::is_numeric<>", - "id": "214045147845616983", + "display_name": "clanguml::t00016::is_numeric", + "id": "932856332558460389", "is_abstract": false, "is_nested": false, "is_struct": true, @@ -83,6 +83,7 @@ template <> struct is_numeric { { "is_variadic": false, "kind": "template_type", + "name": "typename", "template_parameters": [] } ], @@ -260,7 +261,7 @@ template <> struct is_numeric { } ], "metadata": { - "clang_uml_version": "0.3.5-2-g7e9944c", + "clang_uml_version": "0.3.5-13-g57aa174", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, @@ -268,31 +269,31 @@ template <> struct is_numeric { "relationships": [ { "access": "public", - "destination": "214045147845616983", + "destination": "932856332558460389", "source": "95618295648274199", "type": "instantiation" }, { "access": "public", - "destination": "214045147845616983", + "destination": "932856332558460389", "source": "979129381790761728", "type": "instantiation" }, { "access": "public", - "destination": "214045147845616983", + "destination": "932856332558460389", "source": "2090787690027341836", "type": "instantiation" }, { "access": "public", - "destination": "214045147845616983", + "destination": "932856332558460389", "source": "500603075237446075", "type": "instantiation" }, { "access": "public", - "destination": "214045147845616983", + "destination": "932856332558460389", "source": "2111316837513419920", "type": "instantiation" } diff --git a/docs/test_cases/t00016_class.svg b/docs/test_cases/t00016_class.svg index 8d907b9e..f37f2d38 100644 --- a/docs/test_cases/t00016_class.svg +++ b/docs/test_cases/t00016_class.svg @@ -1,6 +1,6 @@ - + @@ -9,18 +9,20 @@ - - - - - is_numeric<> - - - value : enum - + + + + + is_numeric + + typename + + + value : enum + - - + + is_numeric @@ -31,8 +33,8 @@ value : enum - - + + is_numeric @@ -43,8 +45,8 @@ value : enum - - + + is_numeric @@ -55,8 +57,8 @@ value : enum - - + + is_numeric @@ -67,8 +69,8 @@ value : enum - - + + is_numeric @@ -79,15 +81,15 @@ value : enum - - - + + + - + - + - - + + diff --git a/docs/test_cases/t00017.md b/docs/test_cases/t00017.md index 7fec825f..21aefe1e 100644 --- a/docs/test_cases/t00017.md +++ b/docs/test_cases/t00017.md @@ -510,7 +510,7 @@ private: } ], "metadata": { - "clang_uml_version": "0.3.5-2-g7e9944c", + "clang_uml_version": "0.3.5-13-g57aa174", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00017_class.svg b/docs/test_cases/t00017_class.svg index bc230397..9849985d 100644 --- a/docs/test_cases/t00017_class.svg +++ b/docs/test_cases/t00017_class.svg @@ -1,6 +1,6 @@ - + @@ -9,127 +9,127 @@ - - + + A - - + + B - - + + C - - + + D - - + + E - - + + F - - + + G - - + + H - - + + I - - + + J - - + + K - - + + R - + - + 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 9df257c6..9755f4c6 100644 --- a/docs/test_cases/t00018.md +++ b/docs/test_cases/t00018.md @@ -390,7 +390,7 @@ void widget::draw(const clanguml::t00018::widget &w) } ], "metadata": { - "clang_uml_version": "0.3.5-2-g7e9944c", + "clang_uml_version": "0.3.5-13-g57aa174", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00018_class.svg b/docs/test_cases/t00018_class.svg index 476cfbb8..38a508c4 100644 --- a/docs/test_cases/t00018_class.svg +++ b/docs/test_cases/t00018_class.svg @@ -1,6 +1,6 @@ - + @@ -9,18 +9,18 @@ - - + + impl::widget - + - + n : int @@ -30,18 +30,18 @@ draw(const widget & w) : void widget(int n) : void - - + + widget - + - + pImpl : std::unique_ptr<impl::widget> diff --git a/docs/test_cases/t00019.md b/docs/test_cases/t00019.md index 01b1c147..bf84662f 100644 --- a/docs/test_cases/t00019.md +++ b/docs/test_cases/t00019.md @@ -559,7 +559,7 @@ class Base { } ], "metadata": { - "clang_uml_version": "0.3.5-2-g7e9944c", + "clang_uml_version": "0.3.5-13-g57aa174", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00019_class.svg b/docs/test_cases/t00019_class.svg index ce54f2e3..626c9109 100644 --- a/docs/test_cases/t00019_class.svg +++ b/docs/test_cases/t00019_class.svg @@ -1,6 +1,6 @@ - + @@ -9,8 +9,8 @@ - - + + Base @@ -25,8 +25,8 @@ m2() : std::string - - + + Layer1 @@ -39,8 +39,8 @@ m2() : std::string - - + + Layer2 @@ -51,8 +51,8 @@ all_calls_count() const : int - - + + Layer3 @@ -60,18 +60,18 @@ LowerLayer - + - + m_m1_calls : int - + - + m_m2_calls : int @@ -83,7 +83,7 @@ m1_calls() const : int m2_calls() const : int - + Layer3 @@ -91,7 +91,7 @@ Base - + Layer2 @@ -99,7 +99,7 @@ Layer3<Base> - + Layer1 @@ -107,18 +107,18 @@ Layer2<Layer3<Base>> - - + + A - + - + layers : std::unique_ptr<Layer1<Layer2<Layer3<Base>>>> diff --git a/docs/test_cases/t00020.md b/docs/test_cases/t00020.md index 9640391d..5b5e3e0b 100644 --- a/docs/test_cases/t00020.md +++ b/docs/test_cases/t00020.md @@ -534,7 +534,7 @@ public: } ], "metadata": { - "clang_uml_version": "0.3.5-2-g7e9944c", + "clang_uml_version": "0.3.5-13-g57aa174", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00020_class.svg b/docs/test_cases/t00020_class.svg index 1f6173f9..8cd2754a 100644 --- a/docs/test_cases/t00020_class.svg +++ b/docs/test_cases/t00020_class.svg @@ -1,6 +1,6 @@ - + @@ -9,8 +9,8 @@ - - + + ProductA @@ -21,8 +21,8 @@ sell(int price) const = 0 : bool - - + + ProductA1 @@ -31,8 +31,8 @@ sell(int price) const : bool - - + + ProductA2 @@ -41,8 +41,8 @@ sell(int price) const : bool - - + + ProductB @@ -53,8 +53,8 @@ buy(int price) const = 0 : bool - - + + ProductB1 @@ -63,8 +63,8 @@ buy(int price) const : bool - - + + ProductB2 @@ -73,8 +73,8 @@ buy(int price) const : bool - - + + AbstractFactory @@ -85,8 +85,8 @@ make_b() const = 0 : std::unique_ptr<ProductB> - - + + Factory1 @@ -97,8 +97,8 @@ make_b() const : std::unique_ptr<ProductB> - - + + Factory2 diff --git a/docs/test_cases/t00021.md b/docs/test_cases/t00021.md index f7fd7a91..3d93837a 100644 --- a/docs/test_cases/t00021.md +++ b/docs/test_cases/t00021.md @@ -472,7 +472,7 @@ public: } ], "metadata": { - "clang_uml_version": "0.3.5-2-g7e9944c", + "clang_uml_version": "0.3.5-13-g57aa174", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00021_class.svg b/docs/test_cases/t00021_class.svg index 3a4d024f..78967dae 100644 --- a/docs/test_cases/t00021_class.svg +++ b/docs/test_cases/t00021_class.svg @@ -1,6 +1,6 @@ - + @@ -9,8 +9,8 @@ - - + + Visitor @@ -23,8 +23,8 @@ visit_B(const B & item) const = 0 : void - - + + Visitor1 @@ -35,8 +35,8 @@ visit_B(const B & item) const : void - - + + Visitor2 @@ -47,8 +47,8 @@ visit_B(const B & item) const : void - - + + Visitor3 @@ -59,8 +59,8 @@ visit_B(const B & item) const : void - - + + Item @@ -71,8 +71,8 @@ accept(const Visitor & visitor) const = 0 : void - - + + A @@ -81,8 +81,8 @@ accept(const Visitor & visitor) const : void - - + + B diff --git a/docs/test_cases/t00022.md b/docs/test_cases/t00022.md index 379b2dab..a43c383b 100644 --- a/docs/test_cases/t00022.md +++ b/docs/test_cases/t00022.md @@ -221,7 +221,7 @@ protected: } ], "metadata": { - "clang_uml_version": "0.3.5-2-g7e9944c", + "clang_uml_version": "0.3.5-13-g57aa174", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00022_class.svg b/docs/test_cases/t00022_class.svg index 6eb3825b..a13204a4 100644 --- a/docs/test_cases/t00022_class.svg +++ b/docs/test_cases/t00022_class.svg @@ -1,6 +1,6 @@ - + @@ -9,8 +9,8 @@ - - + + A @@ -23,8 +23,8 @@ method2() = 0 : void - - + + A1 @@ -35,8 +35,8 @@ method2() : void - - + + A2 diff --git a/docs/test_cases/t00023.md b/docs/test_cases/t00023.md index 2f1215df..1c94678a 100644 --- a/docs/test_cases/t00023.md +++ b/docs/test_cases/t00023.md @@ -295,7 +295,7 @@ private: } ], "metadata": { - "clang_uml_version": "0.3.5-2-g7e9944c", + "clang_uml_version": "0.3.5-13-g57aa174", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00023_class.svg b/docs/test_cases/t00023_class.svg index 50b9955b..538ad218 100644 --- a/docs/test_cases/t00023_class.svg +++ b/docs/test_cases/t00023_class.svg @@ -1,6 +1,6 @@ - + @@ -9,8 +9,8 @@ - - + + Strategy @@ -21,8 +21,8 @@ algorithm() = 0 : void - - + + StrategyA @@ -31,8 +31,8 @@ algorithm() : void - - + + StrategyB @@ -41,8 +41,8 @@ algorithm() : void - - + + StrategyC @@ -51,18 +51,18 @@ algorithm() : void - - + + Context - + - + m_strategy : std::unique_ptr<Strategy> diff --git a/docs/test_cases/t00024.md b/docs/test_cases/t00024.md index df101675..026a3eb9 100644 --- a/docs/test_cases/t00024.md +++ b/docs/test_cases/t00024.md @@ -309,7 +309,7 @@ private: } ], "metadata": { - "clang_uml_version": "0.3.5-2-g7e9944c", + "clang_uml_version": "0.3.5-13-g57aa174", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00024_class.svg b/docs/test_cases/t00024_class.svg index caa64757..358a5d27 100644 --- a/docs/test_cases/t00024_class.svg +++ b/docs/test_cases/t00024_class.svg @@ -1,6 +1,6 @@ - + @@ -9,8 +9,8 @@ - - + + Target @@ -23,8 +23,8 @@ m2() = 0 : void - - + + Target1 @@ -35,8 +35,8 @@ m2() : void - - + + Target2 @@ -47,18 +47,18 @@ m2() : void - - + + Proxy - + - + m_target : std::shared_ptr<Target> diff --git a/docs/test_cases/t00025.md b/docs/test_cases/t00025.md index 7406dda4..f6f5dd7d 100644 --- a/docs/test_cases/t00025.md +++ b/docs/test_cases/t00025.md @@ -184,7 +184,7 @@ public: "is_pure_virtual": false, "is_static": false, "is_virtual": false, - "name": "Proxy", + "name": "Proxy", "parameters": [ { "name": "target", @@ -323,7 +323,7 @@ public: } ], "metadata": { - "clang_uml_version": "0.3.5-2-g7e9944c", + "clang_uml_version": "0.3.5-13-g57aa174", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00025_class.svg b/docs/test_cases/t00025_class.svg index 1d4a64d8..49ce4ad4 100644 --- a/docs/test_cases/t00025_class.svg +++ b/docs/test_cases/t00025_class.svg @@ -1,6 +1,6 @@ - + - + @@ -9,8 +9,8 @@ - - + + Target1 @@ -21,94 +21,94 @@ m2() : void - - - - - Target2 - - - - m1() : void - - m2() : void + + + + + Target2 + + + + m1() : void + + m2() : void - - - - - Proxy - - T - + + + + + Proxy + + T + - - - + + + - - m_target : std::shared_ptr<T> + + m_target : std::shared_ptr<T> - - - Proxy<T>(std::shared_ptr<T> target) : void - - m1() : void - - m2() : void - - - - Proxy - - Target1 - - - - - - Proxy - - Target2 - - - - - - - ProxyHolder - + + + Proxy(std::shared_ptr<T> target) : void + + m1() : void + + m2() : void + + + + Proxy + + Target1 + + + + + + Proxy + + Target2 + + + + + + + ProxyHolder + - - - + + + - - proxy1 : Proxy<Target1> + + proxy1 : Proxy<Target1> - - - + + + - - proxy2 : Proxy<Target2> + + proxy2 : Proxy<Target2> - - - - - - - - - - - - - proxy1 - - - - proxy2 + + + + + + + + + + + + + proxy1 + + + + proxy2 diff --git a/docs/test_cases/t00026.md b/docs/test_cases/t00026.md index 2d0dad4e..1627d7ed 100644 --- a/docs/test_cases/t00026.md +++ b/docs/test_cases/t00026.md @@ -115,7 +115,7 @@ struct StringMemento { "is_pure_virtual": false, "is_static": false, "is_virtual": false, - "name": "Memento", + "name": "Memento", "parameters": [ { "name": "v", @@ -183,7 +183,7 @@ struct StringMemento { "is_pure_virtual": false, "is_static": false, "is_virtual": false, - "name": "Originator", + "name": "Originator", "parameters": [ { "name": "v", @@ -433,7 +433,7 @@ struct StringMemento { } ], "metadata": { - "clang_uml_version": "0.3.5-2-g7e9944c", + "clang_uml_version": "0.3.5-13-g57aa174", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00026_class.svg b/docs/test_cases/t00026_class.svg index 153cf21c..3676c338 100644 --- a/docs/test_cases/t00026_class.svg +++ b/docs/test_cases/t00026_class.svg @@ -1,6 +1,6 @@ - + @@ -9,29 +9,29 @@ - - - - - Memento - - T - + + + + + Memento + + T + - - - + + + - - m_value : T + + m_value : T - - - Memento<T>(T && v) : void - - value() const : T - - + + + Memento(T && v) : void + + value() const : T + + Originator @@ -39,16 +39,16 @@ T - + - + m_value : T - Originator<T>(T && v) : void + Originator(T && v) : void memoize_value() const : Memento<T> @@ -57,8 +57,8 @@ print() const : void set(T && v) : void - - + + Caretaker @@ -66,11 +66,11 @@ T - + - + m_mementos : std::unordered_map<std::string,Memento<T>> @@ -78,7 +78,7 @@ state(const std::string & n) : Memento<T> & set_state(const std::string & s, Memento<T> && m) : void - + Caretaker @@ -86,7 +86,7 @@ std::string - + Originator @@ -94,25 +94,25 @@ std::string - - + + StringMemento - + - + caretaker : Caretaker<std::string> - + - + originator : Originator<std::string> diff --git a/docs/test_cases/t00027.md b/docs/test_cases/t00027.md index 3b818a82..5a73decb 100644 --- a/docs/test_cases/t00027.md +++ b/docs/test_cases/t00027.md @@ -559,7 +559,7 @@ struct Window { } ], "metadata": { - "clang_uml_version": "0.3.5-2-g7e9944c", + "clang_uml_version": "0.3.5-13-g57aa174", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00027_class.svg b/docs/test_cases/t00027_class.svg index 405ade7e..90819359 100644 --- a/docs/test_cases/t00027_class.svg +++ b/docs/test_cases/t00027_class.svg @@ -1,6 +1,6 @@ - + @@ -9,8 +9,8 @@ - - + + Shape @@ -21,14 +21,14 @@ ~Shape() = default : void - + Line - - + + Line @@ -39,14 +39,14 @@ display() : void - + Text - - + + Text @@ -57,8 +57,8 @@ display() : void - - + + ShapeDecorator @@ -67,8 +67,8 @@ display() = 0 : void - - + + Color @@ -79,8 +79,8 @@ display() : void - - + + Weight @@ -91,7 +91,7 @@ display() : void - + Line @@ -99,7 +99,7 @@ Color,Weight - + Line @@ -107,7 +107,7 @@ Color - + Text @@ -115,7 +115,7 @@ Color,Weight - + Text @@ -123,39 +123,39 @@ Color - - + + Window - + - + border : Line<Color,Weight> - + - + divider : Line<Color> - + - + title : Text<Color,Weight> - + - + description : Text<Color> diff --git a/docs/test_cases/t00028.md b/docs/test_cases/t00028.md index b7734ff8..478bd81f 100644 --- a/docs/test_cases/t00028.md +++ b/docs/test_cases/t00028.md @@ -410,7 +410,7 @@ class R { } ], "metadata": { - "clang_uml_version": "0.3.5-2-g7e9944c", + "clang_uml_version": "0.3.5-13-g57aa174", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00028_class.svg b/docs/test_cases/t00028_class.svg index cda0eae8..f47acbce 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 @@ -64,27 +64,27 @@ T - + - + param : T - + E template class note. - - + + G - - + + F @@ -94,10 +94,10 @@ three - + F enum note. - + E @@ -105,65 +105,65 @@ int - - + + R - + - + aaa : A - + - + bbb : B * - + - + ccc : C & - + - + ddd : std::vector<std::shared_ptr<D>> - + - + eee : E<int> - + - + ggg : G ** R(C & c) : void - + 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 cfdd4cd0..3bc69fbe 100644 --- a/docs/test_cases/t00029.md +++ b/docs/test_cases/t00029.md @@ -286,7 +286,7 @@ struct R { } ], "metadata": { - "clang_uml_version": "0.3.5-2-g7e9944c", + "clang_uml_version": "0.3.5-13-g57aa174", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00029_class.svg b/docs/test_cases/t00029_class.svg index b5d7a9ce..2172d85a 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 @@ -26,16 +26,16 @@ T - + - + param : T - - + + E @@ -45,64 +45,64 @@ 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 4786bca4..045a281c 100644 --- a/docs/test_cases/t00030.md +++ b/docs/test_cases/t00030.md @@ -255,7 +255,7 @@ struct R { } ], "metadata": { - "clang_uml_version": "0.3.5-2-g7e9944c", + "clang_uml_version": "0.3.5-13-g57aa174", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00030_class.svg b/docs/test_cases/t00030_class.svg index 9d7fb5d7..5fb8be7d 100644 --- a/docs/test_cases/t00030_class.svg +++ b/docs/test_cases/t00030_class.svg @@ -1,6 +1,6 @@ - + @@ -9,86 +9,86 @@ - - + + 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 fbbabea7..eb1db3be 100644 --- a/docs/test_cases/t00031.md +++ b/docs/test_cases/t00031.md @@ -272,7 +272,7 @@ struct R { } ], "metadata": { - "clang_uml_version": "0.3.5-2-g7e9944c", + "clang_uml_version": "0.3.5-13-g57aa174", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00031_class.svg b/docs/test_cases/t00031_class.svg index 81a7c298..66b24c0b 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 - - + + @@ -47,23 +47,23 @@ T - + - + ttt : T - - + + D - + C @@ -71,39 +71,39 @@ int - - + + R - + - + 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 4dbd0b29..216a976f 100644 --- a/docs/test_cases/t00032.md +++ b/docs/test_cases/t00032.md @@ -364,7 +364,7 @@ struct R { } ], "metadata": { - "clang_uml_version": "0.3.5-2-g7e9944c", + "clang_uml_version": "0.3.5-13-g57aa174", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00032_class.svg b/docs/test_cases/t00032_class.svg index e123f4bd..b9c20337 100644 --- a/docs/test_cases/t00032_class.svg +++ b/docs/test_cases/t00032_class.svg @@ -1,6 +1,6 @@ - + @@ -9,24 +9,24 @@ - - + + Base - - + + TBase - - + + A @@ -35,8 +35,8 @@ operator()() : void - - + + B @@ -45,8 +45,8 @@ operator()() : void - - + + C @@ -55,8 +55,8 @@ operator()() : void - - + + Overload @@ -64,15 +64,15 @@ T,L,Ts... - + - + counter : L - + Overload @@ -80,18 +80,18 @@ TBase,int,A,B,C - - + + R - + - + overload : Overload<TBase,int,A,B,C> diff --git a/docs/test_cases/t00033.md b/docs/test_cases/t00033.md index 920aa420..94d194b1 100644 --- a/docs/test_cases/t00033.md +++ b/docs/test_cases/t00033.md @@ -337,7 +337,7 @@ struct R { } ], "metadata": { - "clang_uml_version": "0.3.5-2-g7e9944c", + "clang_uml_version": "0.3.5-13-g57aa174", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00033_class.svg b/docs/test_cases/t00033_class.svg index 61209d9e..5c9553fd 100644 --- a/docs/test_cases/t00033_class.svg +++ b/docs/test_cases/t00033_class.svg @@ -1,6 +1,6 @@ - + @@ -9,8 +9,8 @@ - - + + A @@ -18,16 +18,16 @@ T - + - + aaa : T - - + + B @@ -35,16 +35,16 @@ T - + - + bbb : T - - + + C @@ -52,30 +52,30 @@ T - + - + ccc : T - - + + D - + - + ddd : int - + C @@ -83,7 +83,7 @@ D - + B @@ -91,7 +91,7 @@ std::unique_ptr<C<D>> - + A @@ -99,18 +99,18 @@ B<std::unique_ptr<C<D>>> - - + + R - + - + abc : A<B<std::unique_ptr<C<D>>>> diff --git a/docs/test_cases/t00034.md b/docs/test_cases/t00034.md index 9c904b8d..522e2cf7 100644 --- a/docs/test_cases/t00034.md +++ b/docs/test_cases/t00034.md @@ -307,7 +307,7 @@ struct R { } ], "metadata": { - "clang_uml_version": "0.3.5-2-g7e9944c", + "clang_uml_version": "0.3.5-13-g57aa174", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00034_class.svg b/docs/test_cases/t00034_class.svg index 18239b2f..0f1518d9 100644 --- a/docs/test_cases/t00034_class.svg +++ b/docs/test_cases/t00034_class.svg @@ -1,6 +1,6 @@ - + @@ -9,8 +9,8 @@ - - + + Void @@ -21,8 +21,8 @@ operator!=(const Void & ) const : bool - - + + lift_void @@ -31,8 +31,8 @@ - - + + lift_void @@ -41,8 +41,8 @@ - - + + drop_void @@ -51,8 +51,8 @@ - - + + drop_void @@ -61,33 +61,33 @@ - - + + 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 9998c71a..b3ea97c4 100644 --- a/docs/test_cases/t00035.md +++ b/docs/test_cases/t00035.md @@ -150,7 +150,7 @@ struct Right { }; } ], "metadata": { - "clang_uml_version": "0.3.5-2-g7e9944c", + "clang_uml_version": "0.3.5-13-g57aa174", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00035_class.svg b/docs/test_cases/t00035_class.svg index 0c08d7c8..8e60faa6 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 7c1e9868..f5c8c6bf 100644 --- a/docs/test_cases/t00036.md +++ b/docs/test_cases/t00036.md @@ -226,7 +226,7 @@ struct C { }; } ], "metadata": { - "clang_uml_version": "0.3.5-2-g7e9944c", + "clang_uml_version": "0.3.5-13-g57aa174", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00036_class.svg b/docs/test_cases/t00036_class.svg index f636f804..a583a99c 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 @@ -43,15 +43,15 @@ T - + - + a : T - + A @@ -59,23 +59,23 @@ int - - + + B - + - + a_int : A<int> - - + + C diff --git a/docs/test_cases/t00037.md b/docs/test_cases/t00037.md index 54e4f7a3..ab99b46b 100644 --- a/docs/test_cases/t00037.md +++ b/docs/test_cases/t00037.md @@ -249,7 +249,7 @@ struct A { } ], "metadata": { - "clang_uml_version": "0.3.5-2-g7e9944c", + "clang_uml_version": "0.3.5-13-g57aa174", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00037_class.svg b/docs/test_cases/t00037_class.svg index dcd46eac..49f06702 100644 --- a/docs/test_cases/t00037_class.svg +++ b/docs/test_cases/t00037_class.svg @@ -1,6 +1,6 @@ - + @@ -9,98 +9,98 @@ - - + + 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 - + - + st : ST diff --git a/docs/test_cases/t00038.md b/docs/test_cases/t00038.md index 4f42e5ae..b4c43493 100644 --- a/docs/test_cases/t00038.md +++ b/docs/test_cases/t00038.md @@ -468,7 +468,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 6c951036..97f88f9d 100644 --- a/docs/test_cases/t00039.md +++ b/docs/test_cases/t00039.md @@ -570,7 +570,7 @@ template struct FFF : public FF { } ], "metadata": { - "clang_uml_version": "0.3.5-2-g7e9944c", + "clang_uml_version": "0.3.5-13-g57aa174", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00039_class.svg b/docs/test_cases/t00039_class.svg index 9158e031..0cbb8cc9 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 @@ -105,16 +105,16 @@ T - + - + t : T * - - + + ns3::FF @@ -122,16 +122,16 @@ T,M - + - + m : M * - - + + ns3::FE @@ -139,16 +139,16 @@ T,M - + - + m : M * - - + + ns3::FFF @@ -156,11 +156,11 @@ T,M,N - + - + n : N * diff --git a/docs/test_cases/t00040.md b/docs/test_cases/t00040.md index 0ded2a59..a40a4387 100644 --- a/docs/test_cases/t00040.md +++ b/docs/test_cases/t00040.md @@ -264,7 +264,7 @@ struct R { } ], "metadata": { - "clang_uml_version": "0.3.5-2-g7e9944c", + "clang_uml_version": "0.3.5-13-g57aa174", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00040_class.svg b/docs/test_cases/t00040_class.svg index b727c4e0..f5d88031 100644 --- a/docs/test_cases/t00040_class.svg +++ b/docs/test_cases/t00040_class.svg @@ -1,6 +1,6 @@ - + @@ -9,50 +9,50 @@ - - + + A - + - + ii_ : int get_a() : int - - + + AA - - + + AAA - + - + b : B * get_aaa() : int - - + + R diff --git a/docs/test_cases/t00041.md b/docs/test_cases/t00041.md index fe9ed854..0b612572 100644 --- a/docs/test_cases/t00041.md +++ b/docs/test_cases/t00041.md @@ -351,7 +351,7 @@ struct NM : public N { }; } ], "metadata": { - "clang_uml_version": "0.3.5-2-g7e9944c", + "clang_uml_version": "0.3.5-13-g57aa174", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00041_class.svg b/docs/test_cases/t00041_class.svg index db2dffc6..5ec2efcd 100644 --- a/docs/test_cases/t00041_class.svg +++ b/docs/test_cases/t00041_class.svg @@ -1,6 +1,6 @@ - + @@ -9,102 +9,102 @@ - - + + R - - + + D - + - + rr : RR * - - + + E - - + + F - - + + RR - + - + e : E * - + - + f : F * - + - + g : detail::G * foo(H * h) : void - - + + RRR - - + + ns1::N - - + + ns1::NN - - + + ns1::NM diff --git a/docs/test_cases/t00042.md b/docs/test_cases/t00042.md index f72924a2..45f70b9e 100644 --- a/docs/test_cases/t00042.md +++ b/docs/test_cases/t00042.md @@ -273,7 +273,7 @@ struct R { } ], "metadata": { - "clang_uml_version": "0.3.5-2-g7e9944c", + "clang_uml_version": "0.3.5-13-g57aa174", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00042_class.svg b/docs/test_cases/t00042_class.svg index b31e95fc..d0996a71 100644 --- a/docs/test_cases/t00042_class.svg +++ b/docs/test_cases/t00042_class.svg @@ -1,6 +1,6 @@ - + @@ -9,8 +9,8 @@ - - + + A @@ -18,16 +18,16 @@ T - + - + a : T - - + + A @@ -35,16 +35,16 @@ void - + - + a : void * - - + + B @@ -52,22 +52,22 @@ T,K - + - + b : T - + - + bb : K - + A @@ -75,7 +75,7 @@ double - + A @@ -83,7 +83,7 @@ std::string - + B diff --git a/docs/test_cases/t00043.md b/docs/test_cases/t00043.md index 3ba0c087..9a79adf1 100644 --- a/docs/test_cases/t00043.md +++ b/docs/test_cases/t00043.md @@ -499,7 +499,7 @@ struct J { } ], "metadata": { - "clang_uml_version": "0.3.5-2-g7e9944c", + "clang_uml_version": "0.3.5-13-g57aa174", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00043_class.svg b/docs/test_cases/t00043_class.svg index 0cdf037c..f7ef741d 100644 --- a/docs/test_cases/t00043_class.svg +++ b/docs/test_cases/t00043_class.svg @@ -1,6 +1,6 @@ - + @@ -9,22 +9,22 @@ - + dependants - + dependencies - - + + A - - + + B @@ -33,8 +33,8 @@ b(dependants::A * a) : void - - + + BB @@ -43,8 +43,8 @@ bb(dependants::A * a) : void - - + + C @@ -53,8 +53,8 @@ c(dependants::B * b) : void - - + + D @@ -65,8 +65,8 @@ dd(dependants::BB * bb) : void - - + + E @@ -75,24 +75,24 @@ e(dependants::D * d) : void - - + + G - - + + GG - - + + H @@ -103,8 +103,8 @@ hh(dependencies::GG * gg) : void - - + + I @@ -113,8 +113,8 @@ i(dependencies::H * h) : void - - + + J diff --git a/docs/test_cases/t00044.md b/docs/test_cases/t00044.md index b6a1342c..f89cd737 100644 --- a/docs/test_cases/t00044.md +++ b/docs/test_cases/t00044.md @@ -35,6 +35,8 @@ public: { } + template CastTo *get_signal() { return (CastTo *)signal; } + private: signal_t *signal; }; @@ -119,9 +121,9 @@ struct R { "name": "signal", "source_location": { "file": "../../tests/t00044/t00044.cc", - "line": 19 + "line": 21 }, - "type": "clanguml::t00044::sink>::signal_t *" + "type": "signal_t *" } ], "methods": [ @@ -133,14 +135,26 @@ struct R { "is_pure_virtual": false, "is_static": false, "is_virtual": false, - "name": "sink >", + "name": "sink", "parameters": [ { "name": "sh", - "type": "clanguml::t00044::sink>::signal_t &" + "type": "signal_t &" } ], "type": "void" + }, + { + "access": "public", + "is_const": false, + "is_defaulted": false, + "is_implicit": false, + "is_pure_virtual": false, + "is_static": false, + "is_virtual": false, + "name": "get_signal", + "parameters": [], + "type": "CastTo *" } ], "name": "sink", @@ -289,7 +303,7 @@ struct R { "name": "sink1", "source_location": { "file": "../../tests/t00044/t00044.cc", - "line": 32 + "line": 34 }, "type": "sink>" } @@ -299,7 +313,7 @@ struct R { "namespace": "clanguml::t00044", "source_location": { "file": "../../tests/t00044/t00044.cc", - "line": 31 + "line": 33 }, "template_parameters": [], "type": "class" @@ -366,7 +380,7 @@ struct R { } ], "metadata": { - "clang_uml_version": "0.3.5-2-g7e9944c", + "clang_uml_version": "0.3.5-13-g57aa174", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00044_class.svg b/docs/test_cases/t00044_class.svg index c6dccefd..e0075f8a 100644 --- a/docs/test_cases/t00044_class.svg +++ b/docs/test_cases/t00044_class.svg @@ -1,6 +1,6 @@ - + - + @@ -9,103 +9,105 @@ - - - - signal_handler - - Ret(Args...),A - - - - - - - sink - - signal_handler<Ret(Args...),A> - - - - sink<signal_handler<type-parameter-0-0 (type-parameter-0-1...), type-parameter-0-2> >(sink<signal_handler<type-parameter-0-0 (type-parameter-0-1...),type-parameter-0-2>>::signal_t & sh) : void + + + + signal_handler + + Ret(Args...),A + + + + + + + sink + + signal_handler<Ret(Args...),A> + - - - + + + - - signal : sink<signal_handler<type-parameter-0-0 (type-parameter-0-1...),type-parameter-0-2>>::signal_t * + + signal : signal_t * - - - - signal_handler - - void(int),bool - - - - - - sink - - signal_handler<void(int),bool> - - - - - - - R - - + + + sink(signal_t & sh) : void + + get_signal<CastTo>() : CastTo * + + + + signal_handler + + void(int),bool + + + + + + sink + + signal_handler<void(int),bool> + + + + + + + R + + - - - + + + - - sink1 : sink<signal_handler<void (int),bool>> + + sink1 : sink<signal_handler<void (int),bool>> - - - - - signal_handler - - T,A - - + + + + + signal_handler + + T,A + + - - - - - sink - - T - - + + + + + sink + + T + + - - - - - - - - signal - - - - - - - - - - - - sink1 + + + + + + + + signal + + + + + + + + + + + + sink1 diff --git a/docs/test_cases/t00045.md b/docs/test_cases/t00045.md index f8935a33..34ba2084 100644 --- a/docs/test_cases/t00045.md +++ b/docs/test_cases/t00045.md @@ -414,7 +414,7 @@ public: } ], "metadata": { - "clang_uml_version": "0.3.5-2-g7e9944c", + "clang_uml_version": "0.3.5-13-g57aa174", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00045_class.svg b/docs/test_cases/t00045_class.svg index 35f416cd..4d467040 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 @@ -42,103 +42,103 @@ T - + - + 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 - + - + 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 be853dd2..1c685800 100644 --- a/docs/test_cases/t00046.md +++ b/docs/test_cases/t00046.md @@ -358,7 +358,7 @@ public: } ], "metadata": { - "clang_uml_version": "0.3.5-2-g7e9944c", + "clang_uml_version": "0.3.5-13-g57aa174", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00046_class.svg b/docs/test_cases/t00046_class.svg index 8a3526ca..2ea05322 100644 --- a/docs/test_cases/t00046_class.svg +++ b/docs/test_cases/t00046_class.svg @@ -1,6 +1,6 @@ - + @@ -9,118 +9,118 @@ - + ns1 - + ns2 - + __gnu_cxx - - + + A - - + + A - - + + B - - + + C - - + + D - - + + E - - + + R - + - + a : ns1::ns2::A * - + - + ns1_a : ns1::A * - + - + ns1_ns2_a : ns1::ns2::A * - + - + root_a : ::A * - + - + i : std::vector<std::uint8_t> foo(AA & aa) : void - - + + A - - + + AA diff --git a/docs/test_cases/t00047.md b/docs/test_cases/t00047.md index 23836946..2a72fd39 100644 --- a/docs/test_cases/t00047.md +++ b/docs/test_cases/t00047.md @@ -184,7 +184,7 @@ using conditional = typename conditional_t::type; } ], "metadata": { - "clang_uml_version": "0.3.5-2-g7e9944c", + "clang_uml_version": "0.3.5-13-g57aa174", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00047_class.svg b/docs/test_cases/t00047_class.svg index c5a3a37b..d81f25e4 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 355a8cd9..9e668abc 100644 --- a/docs/test_cases/t00048.md +++ b/docs/test_cases/t00048.md @@ -442,7 +442,7 @@ template struct BaseTemplate { } ], "metadata": { - "clang_uml_version": "0.3.5-2-g7e9944c", + "clang_uml_version": "0.3.5-13-g57aa174", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00048_class.svg b/docs/test_cases/t00048_class.svg index 931bd76e..6c24b0fb 100644 --- a/docs/test_cases/t00048_class.svg +++ b/docs/test_cases/t00048_class.svg @@ -1,6 +1,6 @@ - + @@ -9,25 +9,25 @@ - - + + Base - + - + base : int foo() = 0 : void - - + + BaseTemplate @@ -35,35 +35,35 @@ T - + - + base : T foo() = 0 : void - - + + B - + - + b : int foo() : void - - + + BTemplate @@ -71,35 +71,35 @@ T - + - + b : T foo() : void - - + + A - + - + a : int foo() : void - - + + ATemplate @@ -107,11 +107,11 @@ T - + - + a : T diff --git a/docs/test_cases/t00049.md b/docs/test_cases/t00049.md index ba0b7e90..b4860558 100644 --- a/docs/test_cases/t00049.md +++ b/docs/test_cases/t00049.md @@ -256,7 +256,7 @@ struct R { } ], "metadata": { - "clang_uml_version": "0.3.5-2-g7e9944c", + "clang_uml_version": "0.3.5-13-g57aa174", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00049_class.svg b/docs/test_cases/t00049_class.svg index c3489c1e..49cac2c5 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,17 +18,17 @@ T - + - + a : T get_a() : T & - + A @@ -36,7 +36,7 @@ intmap - + A @@ -44,7 +44,7 @@ thestring - + A @@ -52,32 +52,32 @@ string_vector - - + + R - + - + a_string : A<thestring> - + - + a_vector_string : A<string_vector> - + - + a_int_map : A<intmap> diff --git a/docs/test_cases/t00050.md b/docs/test_cases/t00050.md index 45de8dd8..1c4ccbce 100644 --- a/docs/test_cases/t00050.md +++ b/docs/test_cases/t00050.md @@ -484,7 +484,7 @@ class NoComment { }; } ], "metadata": { - "clang_uml_version": "0.3.5-2-g7e9944c", + "clang_uml_version": "0.3.5-13-g57aa174", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00050_class.svg b/docs/test_cases/t00050_class.svg index 5e861d32..6a6fee44 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 @@ -61,44 +61,44 @@ T,V,int N - + - + t : T[N] - + - + v : V - - + + G - - + + NoComment - + Lorem ipsum dolor sit - + Lorem ipsum dolor sit - + Lorem ipsum dolor sit amet consectetur adipiscing elit, urna consequat felis vehicula class ultricies mollis dictumst, aenean non a in donec nulla. @@ -125,50 +125,50 @@ imperdiet praesent magnis ridiculus congue gravida curabitur dictum sagittis, enim et magna sit inceptos sodales parturient pharetra mollis, aenean vel nostra tellus commodo pretium sapien sociosqu. - + This is a short description of class G. - + This is an intermediate description of class G. - + This is a long description of class G. - + Lorem ipsum - + TODO 1. Write meaningful comment - + TODO 2. Write tests - + TODO 3. Implement - + Long comment example - + TODO Implement... - + Simple array wrapper. - + Template parameters @@ -181,6 +181,6 @@ N Size of T array. - + diff --git a/docs/test_cases/t00051.md b/docs/test_cases/t00051.md index 9e729e79..31c61d12 100644 --- a/docs/test_cases/t00051.md +++ b/docs/test_cases/t00051.md @@ -136,7 +136,7 @@ A::custom_thread2 A::start_thread2() "is_pure_virtual": false, "is_static": false, "is_virtual": false, - "name": "B", + "name": "B", "parameters": [ { "name": "f", @@ -469,7 +469,7 @@ A::custom_thread2 A::start_thread2() } ], "metadata": { - "clang_uml_version": "0.3.5-2-g7e9944c", + "clang_uml_version": "0.3.5-13-g57aa174", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00051_class.svg b/docs/test_cases/t00051_class.svg index 703d4b3b..71bdbe4a 100644 --- a/docs/test_cases/t00051_class.svg +++ b/docs/test_cases/t00051_class.svg @@ -1,6 +1,6 @@ - + @@ -9,38 +9,38 @@ - - + + B - - F,FF=F - + + F,FF=F + - - - + + + - - f_ : F + + f_ : F - - - + + + - - ff_ : FF + + ff_ : FF - - - B<F, FF>(F && f, FF && ff) : void - - f() : void - - ff() : void - - + + + B(F && f, FF && ff) : void + + f() : void + + ff() : void + + B<(lambda at ../../tests/t00051/t00051.cc:43:18),(lambda at ../../tests/t00051/t00051.cc:43:27)> @@ -53,22 +53,22 @@ ff() : void - + - + f_ : (lambda at ../../tests/t00051/t00051.cc:43:18) - + - + ff_ : (lambda at ../../tests/t00051/t00051.cc:43:27) - - + + A @@ -83,8 +83,8 @@ get_function() : (lambda at ../../tests/t00051/t00051.cc:48:16) - - + + A::custom_thread1 @@ -93,8 +93,8 @@ custom_thread1<Function,Args...>(Function && f, Args &&... args) : void - - + + A::custom_thread2 diff --git a/docs/test_cases/t00052.md b/docs/test_cases/t00052.md index 9a123759..ecd7fb83 100644 --- a/docs/test_cases/t00052.md +++ b/docs/test_cases/t00052.md @@ -329,7 +329,7 @@ struct R { } ], "metadata": { - "clang_uml_version": "0.3.5-2-g7e9944c", + "clang_uml_version": "0.3.5-13-g57aa174", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00052_class.svg b/docs/test_cases/t00052_class.svg index 33923bbb..b50567d7 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 @@ -35,8 +35,8 @@ bb<F>(F && f, T t) : T - - + + C @@ -47,7 +47,7 @@ c<P>(P p) : T - + B @@ -55,7 +55,7 @@ int - + C @@ -63,32 +63,32 @@ int - - + + R - + - + a : A - + - + b : B<int> - + - + c : C<int> diff --git a/docs/test_cases/t00053.md b/docs/test_cases/t00053.md index 56c51f7c..7981544b 100644 --- a/docs/test_cases/t00053.md +++ b/docs/test_cases/t00053.md @@ -384,7 +384,7 @@ enum class j { jjj }; } ], "metadata": { - "clang_uml_version": "0.3.5-2-g7e9944c", + "clang_uml_version": "0.3.5-13-g57aa174", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00053_class.svg b/docs/test_cases/t00053_class.svg index ad090fc5..bb092054 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 beeb82d6..0d7dc702 100644 --- a/docs/test_cases/t00054.md +++ b/docs/test_cases/t00054.md @@ -426,7 +426,7 @@ enum class j { jjj }; } ], "metadata": { - "clang_uml_version": "0.3.5-2-g7e9944c", + "clang_uml_version": "0.3.5-13-g57aa174", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00054_class.svg b/docs/test_cases/t00054_class.svg index 108d7c5a..4c2fe03e 100644 --- a/docs/test_cases/t00054_class.svg +++ b/docs/test_cases/t00054_class.svg @@ -1,6 +1,6 @@ - + @@ -9,116 +9,116 @@ - + detail - + detail2 - + detail3 - + detail4 - - + + d - - + + a - - + + c - - + + e - - + + C - - + + F - - + + D - - + + E - - + + A - - + + B - - + + f - - + + G - - + + h @@ -127,8 +127,8 @@ hhh - - + + i @@ -137,8 +137,8 @@ iii - - + + j @@ -147,16 +147,16 @@ jjj - - + + b - - + + g diff --git a/docs/test_cases/t00055.md b/docs/test_cases/t00055.md index 5b627aa9..b75fe787 100644 --- a/docs/test_cases/t00055.md +++ b/docs/test_cases/t00055.md @@ -246,7 +246,7 @@ struct J { }; } ], "metadata": { - "clang_uml_version": "0.3.5-2-g7e9944c", + "clang_uml_version": "0.3.5-13-g57aa174", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00055_class.svg b/docs/test_cases/t00055_class.svg index 69240504..f0a9ffe5 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 622dbda9..d62f25cd 100644 --- a/docs/test_cases/t00056.md +++ b/docs/test_cases/t00056.md @@ -559,7 +559,7 @@ struct F { } ], "metadata": { - "clang_uml_version": "0.3.5-2-g7e9944c", + "clang_uml_version": "0.3.5-13-g57aa174", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00056_class.svg b/docs/test_cases/t00056_class.svg index c2717ce2..609a7a22 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 @@ -117,16 +117,16 @@ max_four_bytes T - + - + a : T - - + + B @@ -134,16 +134,16 @@ T - + - + b : T - - + + C @@ -151,16 +151,16 @@ convertible_to_string T - + - + c : T - - + + D @@ -169,8 +169,8 @@ - - + + E @@ -178,30 +178,30 @@ T1,T2,T3 - + - + e1 : T1 - + - + e2 : T2 - + - + e3 : T3 - - + + F @@ -209,25 +209,25 @@ T1,T2,T3 - + - + f1 : T1 - + - + f2 : T2 - + - + f3 : T3 diff --git a/docs/test_cases/t00057.md b/docs/test_cases/t00057.md index d1f04352..f922fc87 100644 --- a/docs/test_cases/t00057.md +++ b/docs/test_cases/t00057.md @@ -488,7 +488,7 @@ struct t00057_R { } ], "metadata": { - "clang_uml_version": "0.3.5-2-g7e9944c", + "clang_uml_version": "0.3.5-13-g57aa174", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00057_class.svg b/docs/test_cases/t00057_class.svg index 44636d3b..dac17961 100644 --- a/docs/test_cases/t00057_class.svg +++ b/docs/test_cases/t00057_class.svg @@ -1,6 +1,6 @@ - + @@ -9,232 +9,232 @@ - - + + t00057_A - + - + a1 : int - - + + t00057_B - + - + b1 : int - - + + t00057_C - + - + c1 : int - - + + «union» t00057_D - + - + d1 : int - + - + d2 : float - - + + t00057_E - + - + e : int - + - + coordinates : t00057_E::(anonymous_739) - + - + height : t00057_E::(anonymous_807) - - + + t00057_E::(coordinates) - + - + x : int - + - + y : int - - + + «union» t00057_E::(height) - + - + z : int - + - + t : double - - + + 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 cd302a13..a113828a 100644 --- a/docs/test_cases/t00058.md +++ b/docs/test_cases/t00058.md @@ -395,7 +395,7 @@ struct R { } ], "metadata": { - "clang_uml_version": "0.3.5-2-g7e9944c", + "clang_uml_version": "0.3.5-13-g57aa174", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00058_class.svg b/docs/test_cases/t00058_class.svg index 20299f90..db85080f 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 @@ -39,16 +39,16 @@ T,Args... - + - + a : std::vector<T> - - + + B @@ -56,22 +56,22 @@ T,P,Args... - + - + b : std::vector<T> - + - + bb : P - + A @@ -79,7 +79,7 @@ int,int,double,std::string - + A @@ -87,7 +87,7 @@ int,int - + B @@ -95,25 +95,25 @@ int,std::string,int,double,A<int,int> - - + + 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 7a30b506..c3c94ed0 100644 --- a/docs/test_cases/t00059.md +++ b/docs/test_cases/t00059.md @@ -481,7 +481,7 @@ struct R { } ], "metadata": { - "clang_uml_version": "0.3.5-2-g7e9944c", + "clang_uml_version": "0.3.5-13-g57aa174", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00059_class.svg b/docs/test_cases/t00059_class.svg index 64c93fed..7f36ed0a 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,8 +49,8 @@ t.get_bitterness() - - + + gala_apple @@ -61,8 +61,8 @@ get_sweetness() const : float - - + + empire_apple @@ -73,8 +73,8 @@ get_sweetness() const : float - - + + lima_orange @@ -85,8 +85,8 @@ get_bitterness() const : float - - + + valencia_orange @@ -97,8 +97,8 @@ get_bitterness() const : float - - + + fruit_factory @@ -111,7 +111,7 @@ create_orange() const : TO - + fruit_factory @@ -119,7 +119,7 @@ gala_apple,valencia_orange - + fruit_factory @@ -127,25 +127,25 @@ empire_apple,lima_orange - - + + 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 7eaab393..5c6f7ca7 100644 --- a/docs/test_cases/t00060.md +++ b/docs/test_cases/t00060.md @@ -256,7 +256,7 @@ template struct H : public G { } ], "metadata": { - "clang_uml_version": "0.3.5-2-g7e9944c", + "clang_uml_version": "0.3.5-13-g57aa174", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00060_class.svg b/docs/test_cases/t00060_class.svg index 63da467d..c8a8cfa6 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 @@ -50,16 +50,16 @@ T - + - + g : T - - + + H @@ -67,18 +67,18 @@ T,P - + - + h : G<T> - + - + hh : P diff --git a/docs/test_cases/t00061.md b/docs/test_cases/t00061.md index f48149ab..adaaa992 100644 --- a/docs/test_cases/t00061.md +++ b/docs/test_cases/t00061.md @@ -61,7 +61,7 @@ struct C { } ], "metadata": { - "clang_uml_version": "0.3.5-2-g7e9944c", + "clang_uml_version": "0.3.5-13-g57aa174", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00061_class.svg b/docs/test_cases/t00061_class.svg index 4848b790..e0c98189 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 23c8f854..a8432544 100644 --- a/docs/test_cases/t00062.md +++ b/docs/test_cases/t00062.md @@ -349,8 +349,8 @@ struct A> { }, { "bases": [], - "display_name": "clanguml::t00062::A", - "id": "470851864467366761", + "display_name": "clanguml::t00062::A", + "id": "1407865337446777280", "is_abstract": false, "is_nested": false, "is_struct": true, @@ -1272,7 +1272,7 @@ struct A> { } ], "metadata": { - "clang_uml_version": "0.3.5-2-g7e9944c", + "clang_uml_version": "0.3.5-13-g57aa174", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, @@ -1311,7 +1311,7 @@ struct A> { { "access": "public", "destination": "121103565834936476", - "source": "470851864467366761", + "source": "1407865337446777280", "type": "instantiation" }, { diff --git a/docs/test_cases/t00062_class.svg b/docs/test_cases/t00062_class.svg index 78fa8f39..b57d2f87 100644 --- a/docs/test_cases/t00062_class.svg +++ b/docs/test_cases/t00062_class.svg @@ -1,6 +1,6 @@ - + - + @@ -9,25 +9,25 @@ - - - - - A - - U & - + + + + + A + + U & + - - - + + + - - u : U & + + u : U & - - - + + + A @@ -35,16 +35,16 @@ std::map<std::string,U> & - + - + u : U & - - + + A @@ -53,25 +53,25 @@ - - - - - A - - U * * - + + + + + A + + U * * + - - - + + + - - u : U ** + + u : U ** - - - + + + A @@ -79,91 +79,91 @@ U * * const* - + - + u : U *** - - - - - A - - U const* const volatile - + + + + + A + + U const volatile* const volatile + - - - + + + - - u : U *** + + u : U *** - - - - - - A - - U && - + + + + + + A + + U && + - - - + + + - - u : U && + + u : U && - - - - - - A - - U const& - + + + + + + A + + U const& + - - - + + + - - u : const U & + + u : const U & - - - - - - A - - M C::* - + + + + + + A + + M C::* + - - - + + + - - c : C & + + c : C & - - - + + + - - m : M C::* + + m : M C::* - - - + + + A @@ -171,47 +171,47 @@ M C::* && - + - + c : C && - + - + m : M C::* - - - - - A - - M (C::*)(Arg) - + + + + + A + + M (C::*)(Arg) + - - - + + + - - c : C & + + c : C & - - - + + + - - m : M C::* + + m : M C::* - - - + + + A @@ -219,16 +219,16 @@ int (C::*)(bool) - + - + c : C & - - + + A @@ -236,23 +236,23 @@ M (C::*)(Arg) && - + - + c : C && - + - + m : M C::* - - + + A @@ -260,64 +260,64 @@ float (C::*)(int) && - + - + c : C && - + - + mf : float C::* - - - - - A - - M (C::*)(Arg1,Arg2,Arg3) - + + + + + A + + M (C::*)(Arg1,Arg2,Arg3) + - - - + + + - - c : C & + + c : C & - - - + + + - - m : M C::* + + m : M C::* - - - - - - A - - char[N] - + + + + + + A + + char[N] + - - - + + + - - n : char[N] + + n : char[N] - - - + + + A @@ -325,140 +325,140 @@ char[1000] - + - + n : std::vector<char> - - - - - A - - char[M][L][K] - + + + + + A + + char[M][L][K] + - - - + + + - - klm : char[K][L][M] + + klm : char[K][L][M] - - - - - - A - - U(...) - + + + + + + A + + U(...) + - - - + + + - - u : bool + + u : bool - - - - - - A - - C<T> - + + + + + + A + + C<T> + - - - + + + - - c : C<T> + + c : C<T> - - - - - - A - - C<T,Args...> - + + + + + + A + + C<T,Args...> + - - - + + + - - c : C<T> + + c : C<T> - - - + + + - - args : std::tuple<Args...> + + args : std::tuple<Args...> - - - - - - A - - T - - + + + + + + A + + T + + - - - - + + + + - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - + + + + + + + + + + + + + + diff --git a/docs/test_cases/t00063.md b/docs/test_cases/t00063.md index c3383f92..993ccbc9 100644 --- a/docs/test_cases/t00063.md +++ b/docs/test_cases/t00063.md @@ -59,7 +59,7 @@ enum class C { c1, c2, c3 }; } ], "metadata": { - "clang_uml_version": "0.3.5-2-g7e9944c", + "clang_uml_version": "0.3.5-13-g57aa174", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00063_class.svg b/docs/test_cases/t00063_class.svg index 0579848d..84e89f9f 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 new file mode 100644 index 00000000..85432121 --- /dev/null +++ b/docs/test_cases/t00064.md @@ -0,0 +1,1089 @@ +# t00064 - Template type list test case +## Config +```yaml +compilation_database_dir: .. +output_directory: puml +diagrams: + t00064_class: + type: class + glob: + - ../../tests/t00064/t00064.cc + include: + namespaces: + - clanguml::t00064 + using_namespace: + - clanguml::t00064 + plantuml: + before: + - left to right direction +``` +## Source code +File t00064.cc +```cpp +#include +#include + +namespace clanguml { +namespace t00064 { + +// Loosely based on +template struct type_list { }; + +template +struct type_list { }; + +template struct type_list { }; + +template struct head; +template +struct head> { + using type = Head; +}; + +template using first_t = type_list; + +template using second_t = type_list; + +template class type_group_pair; +template +class type_group_pair, second_t> { + static constexpr size_t size = sizeof...(First) + sizeof...(Second); +}; + +template struct optional_ref { }; + +template class type_group_pair_it; +template +class type_group_pair_it, second_t> { +public: + using value_type = + decltype(std::tuple_cat(std::make_tuple(*std::declval()), + std::declval().get_as_tuple({})..., + std::declval().get_as_tuple({})...)); + + using ref_t = optional_ref; + + ref_t get(unsigned i) { return {}; } + + const value_type *getp(unsigned i) { return nullptr; } + + constexpr unsigned find(value_type const &v) { return 0; } +}; + +struct A { }; +struct B { }; +struct C { }; + +class R { +public: + type_list aboolint; + type_group_pair, type_list> abc; +}; +} +} +``` +## Generated UML diagrams +![t00064_class](./t00064_class.svg "Template type list test case") +## Generated JSON models +```json +{ + "diagram_type": "class", + "elements": [ + { + "bases": [], + "display_name": "clanguml::t00064::type_list", + "id": "2055044356505752139", + "is_abstract": false, + "is_nested": false, + "is_struct": true, + "is_template": true, + "is_union": false, + "members": [], + "methods": [], + "name": "type_list", + "namespace": "clanguml::t00064", + "source_location": { + "file": "../../tests/t00064/t00064.cc", + "line": 8 + }, + "template_parameters": [ + { + "is_variadic": true, + "kind": "template_type", + "name": "Ts...", + "template_parameters": [] + } + ], + "type": "class" + }, + { + "bases": [], + "display_name": "clanguml::t00064::type_list", + "id": "1536403088019105838", + "is_abstract": false, + "is_nested": false, + "is_struct": true, + "is_template": true, + "is_union": false, + "members": [], + "methods": [], + "name": "type_list", + "namespace": "clanguml::t00064", + "source_location": { + "file": "../../tests/t00064/t00064.cc", + "line": 11 + }, + "template_parameters": [ + { + "is_variadic": false, + "kind": "template_type", + "template_parameters": [ + { + "is_variadic": false, + "kind": "template_type", + "name": "Ret", + "template_parameters": [] + }, + { + "is_variadic": false, + "kind": "template_type", + "name": "Arg", + "template_parameters": [] + } + ] + }, + { + "is_variadic": true, + "kind": "template_type", + "name": "Ts...", + "template_parameters": [] + } + ], + "type": "class" + }, + { + "bases": [], + "display_name": "clanguml::t00064::type_list", + "id": "1613293628874851145", + "is_abstract": false, + "is_nested": false, + "is_struct": true, + "is_template": true, + "is_union": false, + "members": [], + "methods": [], + "name": "type_list", + "namespace": "clanguml::t00064", + "source_location": { + "file": "../../tests/t00064/t00064.cc", + "line": 13 + }, + "template_parameters": [ + { + "is_variadic": false, + "kind": "template_type", + "name": "T", + "template_parameters": [] + }, + { + "is_variadic": true, + "kind": "template_type", + "name": "Ts...", + "template_parameters": [] + } + ], + "type": "class" + }, + { + "bases": [], + "display_name": "clanguml::t00064::type_list", + "id": "96201031647373215", + "is_abstract": false, + "is_nested": false, + "is_struct": false, + "is_template": true, + "is_union": false, + "members": [], + "methods": [], + "name": "type_list", + "namespace": "clanguml::t00064", + "template_parameters": [ + { + "is_variadic": false, + "kind": "template_type", + "name": "Head", + "template_parameters": [] + }, + { + "is_variadic": true, + "kind": "template_type", + "name": "Tail...", + "template_parameters": [] + } + ], + "type": "class" + }, + { + "bases": [], + "display_name": "clanguml::t00064::head>", + "id": "1342666740698875376", + "is_abstract": false, + "is_nested": false, + "is_struct": true, + "is_template": true, + "is_union": false, + "members": [], + "methods": [], + "name": "head", + "namespace": "clanguml::t00064", + "source_location": { + "file": "../../tests/t00064/t00064.cc", + "line": 17 + }, + "template_parameters": [ + { + "is_variadic": false, + "kind": "argument", + "template_parameters": [ + { + "is_variadic": false, + "kind": "template_type", + "name": "Head", + "template_parameters": [] + }, + { + "is_variadic": true, + "kind": "template_type", + "name": "Tail...", + "template_parameters": [] + } + ], + "type": "clanguml::t00064::type_list" + } + ], + "type": "class" + }, + { + "bases": [], + "display_name": "clanguml::t00064::type_list", + "id": "74655005329778311", + "is_abstract": false, + "is_nested": false, + "is_struct": false, + "is_template": true, + "is_union": false, + "members": [], + "methods": [], + "name": "type_list", + "namespace": "clanguml::t00064", + "template_parameters": [ + { + "is_variadic": true, + "kind": "template_type", + "name": "Type...", + "template_parameters": [] + } + ], + "type": "class" + }, + { + "bases": [], + "display_name": "clanguml::t00064::type_list", + "id": "1877705309010128195", + "is_abstract": false, + "is_nested": false, + "is_struct": false, + "is_template": true, + "is_union": false, + "members": [], + "methods": [], + "name": "type_list", + "namespace": "clanguml::t00064", + "template_parameters": [ + { + "is_variadic": true, + "kind": "template_type", + "name": "First...", + "template_parameters": [] + } + ], + "type": "class" + }, + { + "bases": [], + "display_name": "clanguml::t00064::type_list", + "id": "1737554639587928188", + "is_abstract": false, + "is_nested": false, + "is_struct": false, + "is_template": true, + "is_union": false, + "members": [], + "methods": [], + "name": "type_list", + "namespace": "clanguml::t00064", + "template_parameters": [ + { + "is_variadic": true, + "kind": "template_type", + "name": "Second...", + "template_parameters": [] + } + ], + "type": "class" + }, + { + "bases": [], + "display_name": "clanguml::t00064::type_group_pair,clanguml::t00064::type_list>", + "id": "1313421318785708660", + "is_abstract": false, + "is_nested": false, + "is_struct": false, + "is_template": true, + "is_union": false, + "members": [ + { + "access": "private", + "is_static": true, + "name": "size", + "source_location": { + "file": "../../tests/t00064/t00064.cc", + "line": 28 + }, + "type": "const size_t" + } + ], + "methods": [], + "name": "type_group_pair", + "namespace": "clanguml::t00064", + "source_location": { + "file": "../../tests/t00064/t00064.cc", + "line": 27 + }, + "template_parameters": [ + { + "is_variadic": false, + "kind": "argument", + "template_parameters": [ + { + "is_variadic": true, + "kind": "template_type", + "name": "First...", + "template_parameters": [] + } + ], + "type": "clanguml::t00064::type_list" + }, + { + "is_variadic": false, + "kind": "argument", + "template_parameters": [ + { + "is_variadic": true, + "kind": "template_type", + "name": "Second...", + "template_parameters": [] + } + ], + "type": "clanguml::t00064::type_list" + } + ], + "type": "class" + }, + { + "bases": [], + "display_name": "clanguml::t00064::optional_ref", + "id": "2110316024454672764", + "is_abstract": false, + "is_nested": false, + "is_struct": true, + "is_template": true, + "is_union": false, + "members": [], + "methods": [], + "name": "optional_ref", + "namespace": "clanguml::t00064", + "source_location": { + "file": "../../tests/t00064/t00064.cc", + "line": 31 + }, + "template_parameters": [ + { + "is_variadic": false, + "kind": "template_type", + "name": "T", + "template_parameters": [] + } + ], + "type": "class" + }, + { + "bases": [], + "display_name": "clanguml::t00064::optional_ref,clanguml::t00064::type_list>::value_type>", + "id": "476531044436856932", + "is_abstract": false, + "is_nested": false, + "is_struct": false, + "is_template": true, + "is_union": false, + "members": [], + "methods": [], + "name": "optional_ref", + "namespace": "clanguml::t00064", + "template_parameters": [ + { + "is_variadic": false, + "kind": "argument", + "template_parameters": [], + "type": "clanguml::t00064::type_group_pair_it,clanguml::t00064::type_list>::value_type" + } + ], + "type": "class" + }, + { + "bases": [], + "display_name": "clanguml::t00064::type_group_pair_it,clanguml::t00064::type_list>", + "id": "1024383802991748694", + "is_abstract": false, + "is_nested": false, + "is_struct": false, + "is_template": true, + "is_union": false, + "members": [], + "methods": [ + { + "access": "public", + "is_const": false, + "is_defaulted": false, + "is_implicit": false, + "is_pure_virtual": false, + "is_static": false, + "is_virtual": false, + "name": "get", + "parameters": [ + { + "name": "i", + "type": "unsigned int" + } + ], + "type": "ref_t" + }, + { + "access": "public", + "is_const": false, + "is_defaulted": false, + "is_implicit": false, + "is_pure_virtual": false, + "is_static": false, + "is_virtual": false, + "name": "getp", + "parameters": [ + { + "name": "i", + "type": "unsigned int" + } + ], + "type": "value_type const*" + }, + { + "access": "public", + "is_const": false, + "is_defaulted": false, + "is_implicit": false, + "is_pure_virtual": false, + "is_static": false, + "is_virtual": false, + "name": "find", + "parameters": [ + { + "name": "v", + "type": "value_type const&" + } + ], + "type": "unsigned int" + } + ], + "name": "type_group_pair_it", + "namespace": "clanguml::t00064", + "source_location": { + "file": "../../tests/t00064/t00064.cc", + "line": 35 + }, + "template_parameters": [ + { + "is_variadic": false, + "kind": "template_type", + "name": "It", + "template_parameters": [] + }, + { + "is_variadic": false, + "kind": "argument", + "template_parameters": [ + { + "is_variadic": true, + "kind": "template_type", + "name": "First...", + "template_parameters": [] + } + ], + "type": "clanguml::t00064::type_list" + }, + { + "is_variadic": false, + "kind": "argument", + "template_parameters": [ + { + "is_variadic": true, + "kind": "template_type", + "name": "Second...", + "template_parameters": [] + } + ], + "type": "clanguml::t00064::type_list" + } + ], + "type": "class" + }, + { + "bases": [], + "display_name": "clanguml::t00064::A", + "id": "586286676481245707", + "is_abstract": false, + "is_nested": false, + "is_struct": true, + "is_template": false, + "is_union": false, + "members": [], + "methods": [], + "name": "A", + "namespace": "clanguml::t00064", + "source_location": { + "file": "../../tests/t00064/t00064.cc", + "line": 51 + }, + "template_parameters": [], + "type": "class" + }, + { + "bases": [], + "display_name": "clanguml::t00064::B", + "id": "1353306307770366167", + "is_abstract": false, + "is_nested": false, + "is_struct": true, + "is_template": false, + "is_union": false, + "members": [], + "methods": [], + "name": "B", + "namespace": "clanguml::t00064", + "source_location": { + "file": "../../tests/t00064/t00064.cc", + "line": 52 + }, + "template_parameters": [], + "type": "class" + }, + { + "bases": [], + "display_name": "clanguml::t00064::C", + "id": "598044391549147725", + "is_abstract": false, + "is_nested": false, + "is_struct": true, + "is_template": false, + "is_union": false, + "members": [], + "methods": [], + "name": "C", + "namespace": "clanguml::t00064", + "source_location": { + "file": "../../tests/t00064/t00064.cc", + "line": 53 + }, + "template_parameters": [], + "type": "class" + }, + { + "bases": [], + "display_name": "clanguml::t00064::type_list", + "id": "425551452299939770", + "is_abstract": false, + "is_nested": false, + "is_struct": false, + "is_template": true, + "is_union": false, + "members": [], + "methods": [], + "name": "type_list", + "namespace": "clanguml::t00064", + "template_parameters": [ + { + "is_variadic": false, + "kind": "argument", + "template_parameters": [], + "type": "clanguml::t00064::A" + }, + { + "is_variadic": false, + "kind": "argument", + "template_parameters": [], + "type": "bool" + }, + { + "is_variadic": false, + "kind": "argument", + "template_parameters": [], + "type": "int" + } + ], + "type": "class" + }, + { + "bases": [], + "display_name": "clanguml::t00064::type_list", + "id": "179850898515269194", + "is_abstract": false, + "is_nested": false, + "is_struct": false, + "is_template": true, + "is_union": false, + "members": [], + "methods": [], + "name": "type_list", + "namespace": "clanguml::t00064", + "template_parameters": [ + { + "is_variadic": false, + "kind": "argument", + "template_parameters": [], + "type": "float" + }, + { + "is_variadic": false, + "kind": "argument", + "template_parameters": [], + "type": "double" + } + ], + "type": "class" + }, + { + "bases": [], + "display_name": "clanguml::t00064::type_list", + "id": "1070380438303872295", + "is_abstract": false, + "is_nested": false, + "is_struct": false, + "is_template": true, + "is_union": false, + "members": [], + "methods": [], + "name": "type_list", + "namespace": "clanguml::t00064", + "template_parameters": [ + { + "is_variadic": false, + "kind": "argument", + "template_parameters": [], + "type": "clanguml::t00064::A" + }, + { + "is_variadic": false, + "kind": "argument", + "template_parameters": [], + "type": "clanguml::t00064::B" + }, + { + "is_variadic": false, + "kind": "argument", + "template_parameters": [], + "type": "clanguml::t00064::C" + } + ], + "type": "class" + }, + { + "bases": [], + "display_name": "clanguml::t00064::type_group_pair,clanguml::t00064::type_list>", + "id": "1854055939974723413", + "is_abstract": false, + "is_nested": false, + "is_struct": false, + "is_template": true, + "is_union": false, + "members": [], + "methods": [], + "name": "type_group_pair", + "namespace": "clanguml::t00064", + "template_parameters": [ + { + "is_variadic": false, + "kind": "argument", + "template_parameters": [ + { + "is_variadic": false, + "kind": "argument", + "template_parameters": [], + "type": "float" + }, + { + "is_variadic": false, + "kind": "argument", + "template_parameters": [], + "type": "double" + } + ], + "type": "clanguml::t00064::type_list" + }, + { + "is_variadic": false, + "kind": "argument", + "template_parameters": [ + { + "is_variadic": false, + "kind": "argument", + "template_parameters": [], + "type": "clanguml::t00064::A" + }, + { + "is_variadic": false, + "kind": "argument", + "template_parameters": [], + "type": "clanguml::t00064::B" + }, + { + "is_variadic": false, + "kind": "argument", + "template_parameters": [], + "type": "clanguml::t00064::C" + } + ], + "type": "clanguml::t00064::type_list" + } + ], + "type": "class" + }, + { + "bases": [], + "display_name": "clanguml::t00064::R", + "id": "2161425587790795236", + "is_abstract": false, + "is_nested": false, + "is_struct": false, + "is_template": false, + "is_union": false, + "members": [ + { + "access": "public", + "is_static": false, + "name": "aboolint", + "source_location": { + "file": "../../tests/t00064/t00064.cc", + "line": 57 + }, + "type": "type_list" + }, + { + "access": "public", + "is_static": false, + "name": "abc", + "source_location": { + "file": "../../tests/t00064/t00064.cc", + "line": 58 + }, + "type": "type_group_pair,type_list>" + } + ], + "methods": [], + "name": "R", + "namespace": "clanguml::t00064", + "source_location": { + "file": "../../tests/t00064/t00064.cc", + "line": 55 + }, + "template_parameters": [], + "type": "class" + }, + { + "bases": [], + "display_name": "clanguml::t00064::type_group_pair", + "id": "271990753639572557", + "is_abstract": false, + "is_nested": false, + "is_struct": false, + "is_template": true, + "is_union": false, + "members": [], + "methods": [], + "name": "type_group_pair", + "namespace": "clanguml::t00064", + "source_location": { + "file": "../../tests/t00064/t00064.cc", + "line": 25 + }, + "template_parameters": [ + { + "is_variadic": false, + "kind": "template_type", + "name": "typename", + "template_parameters": [] + }, + { + "is_variadic": false, + "kind": "template_type", + "name": "typename", + "template_parameters": [] + } + ], + "type": "class" + }, + { + "bases": [], + "display_name": "clanguml::t00064::type_group_pair_it", + "id": "1057906395469156958", + "is_abstract": false, + "is_nested": false, + "is_struct": false, + "is_template": true, + "is_union": false, + "members": [], + "methods": [], + "name": "type_group_pair_it", + "namespace": "clanguml::t00064", + "source_location": { + "file": "../../tests/t00064/t00064.cc", + "line": 33 + }, + "template_parameters": [ + { + "is_variadic": false, + "kind": "template_type", + "name": "typename", + "template_parameters": [] + }, + { + "is_variadic": false, + "kind": "template_type", + "name": "typename", + "template_parameters": [] + }, + { + "is_variadic": false, + "kind": "template_type", + "name": "typename", + "template_parameters": [] + } + ], + "type": "class" + }, + { + "bases": [], + "display_name": "clanguml::t00064::head", + "id": "1317314479884183399", + "is_abstract": false, + "is_nested": false, + "is_struct": true, + "is_template": true, + "is_union": false, + "members": [], + "methods": [], + "name": "head", + "namespace": "clanguml::t00064", + "source_location": { + "file": "../../tests/t00064/t00064.cc", + "line": 15 + }, + "template_parameters": [ + { + "is_variadic": false, + "kind": "template_type", + "name": "typename", + "template_parameters": [] + } + ], + "type": "class" + } + ], + "metadata": { + "clang_uml_version": "0.3.5-13-g57aa174", + "llvm_version": "Ubuntu clang version 15.0.6", + "schema_version": 1 + }, + "name": "t00064_class", + "relationships": [ + { + "access": "public", + "destination": "2055044356505752139", + "source": "1536403088019105838", + "type": "instantiation" + }, + { + "access": "public", + "destination": "2055044356505752139", + "source": "1613293628874851145", + "type": "instantiation" + }, + { + "access": "public", + "destination": "2055044356505752139", + "source": "96201031647373215", + "type": "instantiation" + }, + { + "access": "public", + "destination": "96201031647373215", + "source": "1342666740698875376", + "type": "dependency" + }, + { + "access": "public", + "destination": "1317314479884183399", + "source": "1342666740698875376", + "type": "instantiation" + }, + { + "access": "public", + "destination": "2055044356505752139", + "source": "74655005329778311", + "type": "instantiation" + }, + { + "access": "public", + "destination": "2055044356505752139", + "source": "1877705309010128195", + "type": "instantiation" + }, + { + "access": "public", + "destination": "2055044356505752139", + "source": "1737554639587928188", + "type": "instantiation" + }, + { + "access": "public", + "destination": "1877705309010128195", + "source": "1313421318785708660", + "type": "dependency" + }, + { + "access": "public", + "destination": "1737554639587928188", + "source": "1313421318785708660", + "type": "dependency" + }, + { + "access": "public", + "destination": "271990753639572557", + "source": "1313421318785708660", + "type": "instantiation" + }, + { + "access": "public", + "destination": "2110316024454672764", + "source": "476531044436856932", + "type": "instantiation" + }, + { + "access": "public", + "destination": "1877705309010128195", + "source": "1024383802991748694", + "type": "dependency" + }, + { + "access": "public", + "destination": "1737554639587928188", + "source": "1024383802991748694", + "type": "dependency" + }, + { + "access": "public", + "destination": "476531044436856932", + "source": "1024383802991748694", + "type": "dependency" + }, + { + "access": "public", + "destination": "1057906395469156958", + "source": "1024383802991748694", + "type": "instantiation" + }, + { + "access": "public", + "destination": "586286676481245707", + "source": "425551452299939770", + "type": "dependency" + }, + { + "access": "public", + "destination": "2055044356505752139", + "source": "425551452299939770", + "type": "instantiation" + }, + { + "access": "public", + "destination": "2055044356505752139", + "source": "179850898515269194", + "type": "instantiation" + }, + { + "access": "public", + "destination": "586286676481245707", + "source": "1070380438303872295", + "type": "dependency" + }, + { + "access": "public", + "destination": "1353306307770366167", + "source": "1070380438303872295", + "type": "dependency" + }, + { + "access": "public", + "destination": "598044391549147725", + "source": "1070380438303872295", + "type": "dependency" + }, + { + "access": "public", + "destination": "2055044356505752139", + "source": "1070380438303872295", + "type": "instantiation" + }, + { + "access": "public", + "destination": "179850898515269194", + "source": "1854055939974723413", + "type": "dependency" + }, + { + "access": "public", + "destination": "1070380438303872295", + "source": "1854055939974723413", + "type": "dependency" + }, + { + "access": "public", + "destination": "1313421318785708660", + "source": "1854055939974723413", + "type": "instantiation" + }, + { + "access": "public", + "destination": "425551452299939770", + "label": "aboolint", + "source": "2161425587790795236", + "type": "aggregation" + }, + { + "access": "public", + "destination": "1854055939974723413", + "label": "abc", + "source": "2161425587790795236", + "type": "aggregation" + } + ], + "using_namespace": "clanguml::t00064" +} +``` diff --git a/docs/test_cases/t00064_class.svg b/docs/test_cases/t00064_class.svg new file mode 100644 index 00000000..771a0730 --- /dev/null +++ b/docs/test_cases/t00064_class.svg @@ -0,0 +1,304 @@ + + + + + + + + + + + + + + + + type_list + + Ts... + + + + + + + + type_list + + Ret(Arg &&),Ts... + + + + + + + + type_list + + T const,Ts... + + + + + + + type_list + + Head,Tail... + + + + + + + head + + type_list<Head,Tail...> + + + + + + + type_list + + Type... + + + + + + type_list + + First... + + + + + + type_list + + Second... + + + + + + + type_group_pair + + type_list<First...>,type_list<Second...> + + + + + + + + size : const size_t + + + + + + + optional_ref + + T + + + + + + + optional_ref + + type_group_pair_it<It,type_list<First...>,type_list<Second...>>::value_type + + + + + + + type_group_pair_it + + It,type_list<First...>,type_list<Second...> + + + + get(unsigned int i) : ref_t + + getp(unsigned int i) : value_type const* + + find(value_type const& v) : unsigned int + + + + + + A + + + + + + + + B + + + + + + + + C + + + + + + + type_list + + A,bool,int + + + + + + type_list + + float,double + + + + + + type_list + + A,B,C + + + + + + type_group_pair + + type_list<float,double>,type_list<A,B,C> + + + + + + + R + + + + + + + + aboolint : type_list<A,bool,int> + + + + + + + abc : type_group_pair<type_list<float,double>,type_list<A,B,C>> + + + + + + + type_group_pair + + typename,typename + + + + + + + + type_group_pair_it + + typename,typename,typename + + + + + + + + head + + typename + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + aboolint + + + + abc + + diff --git a/docs/test_cases/t20001.md b/docs/test_cases/t20001.md index c3cf6dc8..4b29851f 100644 --- a/docs/test_cases/t20001.md +++ b/docs/test_cases/t20001.md @@ -108,7 +108,7 @@ int tmain() { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.3.5-2-g7e9944c", + "clang_uml_version": "0.3.5-13-g57aa174", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t20001_sequence.svg b/docs/test_cases/t20001_sequence.svg index f3dbe84c..99dab809 100644 --- a/docs/test_cases/t20001_sequence.svg +++ b/docs/test_cases/t20001_sequence.svg @@ -1,6 +1,6 @@ - + @@ -9,59 +9,59 @@ - - - - - - - + + + + + + + - - + + tmain() - + tmain() - - + + A - + A - - + + B - + B - - - - - - - - + + + + + + + + add(int,int) - + wrap_add3(int,int,int) - + add3(int,int,int) - + @@ -72,7 +72,7 @@ - + @@ -81,14 +81,14 @@ - + log_result(int) - + Main test function diff --git a/docs/test_cases/t20002.md b/docs/test_cases/t20002.md index c2d5711e..3b8045e6 100644 --- a/docs/test_cases/t20002.md +++ b/docs/test_cases/t20002.md @@ -45,7 +45,7 @@ void m1() { m2(); } { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.3.5-2-g7e9944c", + "clang_uml_version": "0.3.5-13-g57aa174", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t20002_sequence.svg b/docs/test_cases/t20002_sequence.svg index d3ca6c46..0ff1f11c 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 6c82b0f4..5996640e 100644 --- a/docs/test_cases/t20003.md +++ b/docs/test_cases/t20003.md @@ -41,7 +41,7 @@ template void m1(T p) { m2(p); } { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.3.5-2-g7e9944c", + "clang_uml_version": "0.3.5-13-g57aa174", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t20003_sequence.svg b/docs/test_cases/t20003_sequence.svg index 9765c8d1..fb47ccd2 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 00b5b3d0..e7a04d4e 100644 --- a/docs/test_cases/t20004.md +++ b/docs/test_cases/t20004.md @@ -77,7 +77,7 @@ int main() { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.3.5-2-g7e9944c", + "clang_uml_version": "0.3.5-13-g57aa174", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t20004_sequence.svg b/docs/test_cases/t20004_sequence.svg index 05a03059..46b06e9f 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 489f1132..b2c9a08d 100644 --- a/docs/test_cases/t20005.md +++ b/docs/test_cases/t20005.md @@ -48,7 +48,7 @@ template struct C { { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.3.5-2-g7e9944c", + "clang_uml_version": "0.3.5-13-g57aa174", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t20005_sequence.svg b/docs/test_cases/t20005_sequence.svg index ce31bcdd..c0c54d1f 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 c33a2365..bfdadecb 100644 --- a/docs/test_cases/t20006.md +++ b/docs/test_cases/t20006.md @@ -106,7 +106,7 @@ void tmain() { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.3.5-2-g7e9944c", + "clang_uml_version": "0.3.5-13-g57aa174", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t20006_sequence.svg b/docs/test_cases/t20006_sequence.svg index fa9fbccf..3c913b36 100644 --- a/docs/test_cases/t20006_sequence.svg +++ b/docs/test_cases/t20006_sequence.svg @@ -1,6 +1,6 @@ - + @@ -9,22 +9,22 @@ - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + @@ -34,82 +34,82 @@ - - + + tmain() - + tmain() - - + + B<int> - + B<int> - - + + A<int> - + A<int> - - + + B<std::string> - + B<std::string> - - + + A<std::string> - + A<std::string> - - + + BB<int,int> - + BB<int,int> - - + + AA<int> - + AA<int> - - + + BB<int,std::string> - + BB<int,std::string> - - + + BB<int,float> - + BB<int,float> - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + b(int) - + a1(int) @@ -118,12 +118,12 @@ - + b(std::string) - + a2(std::string) @@ -132,59 +132,59 @@ - + 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 d3508f71..d9bf430d 100644 --- a/docs/test_cases/t20007.md +++ b/docs/test_cases/t20007.md @@ -52,7 +52,7 @@ void tmain() { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.3.5-2-g7e9944c", + "clang_uml_version": "0.3.5-13-g57aa174", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t20007_sequence.svg b/docs/test_cases/t20007_sequence.svg index 65977225..dbfe7d8a 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 b70896ff..7512c07b 100644 --- a/docs/test_cases/t20008.md +++ b/docs/test_cases/t20008.md @@ -70,7 +70,7 @@ void tmain() { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.3.5-2-g7e9944c", + "clang_uml_version": "0.3.5-13-g57aa174", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t20008_sequence.svg b/docs/test_cases/t20008_sequence.svg index bda8b969..fdbf6189 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 4feec51e..564c52a6 100644 --- a/docs/test_cases/t20009.md +++ b/docs/test_cases/t20009.md @@ -56,7 +56,7 @@ void tmain() { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.3.5-2-g7e9944c", + "clang_uml_version": "0.3.5-13-g57aa174", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t20009_sequence.svg b/docs/test_cases/t20009_sequence.svg index e799c459..ab7ccccc 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 c0944ebd..d7387cea 100644 --- a/docs/test_cases/t20010.md +++ b/docs/test_cases/t20010.md @@ -66,7 +66,7 @@ void tmain() { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.3.5-2-g7e9944c", + "clang_uml_version": "0.3.5-13-g57aa174", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t20010_sequence.svg b/docs/test_cases/t20010_sequence.svg index ec892c72..cde277b4 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 c92108e6..46cabcf6 100644 --- a/docs/test_cases/t20011.md +++ b/docs/test_cases/t20011.md @@ -58,7 +58,7 @@ void tmain() { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.3.5-2-g7e9944c", + "clang_uml_version": "0.3.5-13-g57aa174", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t20011_sequence.svg b/docs/test_cases/t20011_sequence.svg index 1d2c3cc1..be0b86b3 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 270ac13c..f5457530 100644 --- a/docs/test_cases/t20012.md +++ b/docs/test_cases/t20012.md @@ -131,7 +131,7 @@ void tmain() { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.3.5-2-g7e9944c", + "clang_uml_version": "0.3.5-13-g57aa174", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t20012_sequence.svg b/docs/test_cases/t20012_sequence.svg index 97c964d4..3a69ca03 100644 --- a/docs/test_cases/t20012_sequence.svg +++ b/docs/test_cases/t20012_sequence.svg @@ -1,6 +1,6 @@ - + @@ -9,31 +9,31 @@ - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + @@ -43,122 +43,122 @@ - - + + tmain() - + tmain() - - + + tmain()::(lambda ../../tests/t20012/t20012.cc:66:20) - + tmain()::(lambda ../../tests/t20012/t20012.cc:66:20) - - + + A - + A - - + + B - + B - - + + tmain()::(lambda ../../tests/t20012/t20012.cc:79:20) - + tmain()::(lambda ../../tests/t20012/t20012.cc:79:20) - - + + C - + C - - + + R<R::(lambda ../../tests/t20012/t20012.cc:85:9)> - + R<R::(lambda ../../tests/t20012/t20012.cc:85:9)> - - + + tmain()::(lambda ../../tests/t20012/t20012.cc:85:9) - + tmain()::(lambda ../../tests/t20012/t20012.cc:85:9) - - + + D - + D - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + operator()() - + a() - + aa() - + aaa() - + b() - + bb() - + @@ -167,67 +167,67 @@ - + operator()() - + c() - + cc() - + ccc() - + operator()() - + a() - + aa() - + aaa() - + b() - + bb() - + @@ -238,29 +238,29 @@ - + r() - + operator()() - + c() - + cc() - + @@ -269,7 +269,7 @@ - + add5(int) diff --git a/docs/test_cases/t20013.md b/docs/test_cases/t20013.md index bedad116..74c0b7dc 100644 --- a/docs/test_cases/t20013.md +++ b/docs/test_cases/t20013.md @@ -54,7 +54,7 @@ void tmain(int argc, char **argv) { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.3.5-2-g7e9944c", + "clang_uml_version": "0.3.5-13-g57aa174", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t20013_sequence.svg b/docs/test_cases/t20013_sequence.svg index f96e7254..de4366c1 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 d26a3f28..09986593 100644 --- a/docs/test_cases/t20014.md +++ b/docs/test_cases/t20014.md @@ -89,7 +89,7 @@ namespace t20014 { { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.3.5-2-g7e9944c", + "clang_uml_version": "0.3.5-13-g57aa174", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t20014_sequence.svg b/docs/test_cases/t20014_sequence.svg index e4ecb55a..3fa8fed9 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 cb2a5084..b5316e11 100644 --- a/docs/test_cases/t20015.md +++ b/docs/test_cases/t20015.md @@ -70,7 +70,7 @@ void tmain() { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.3.5-2-g7e9944c", + "clang_uml_version": "0.3.5-13-g57aa174", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t20015_sequence.svg b/docs/test_cases/t20015_sequence.svg index 97fc9653..364fec0b 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 d1fd4136..5e97c7d4 100644 --- a/docs/test_cases/t20016.md +++ b/docs/test_cases/t20016.md @@ -52,7 +52,7 @@ void tmain() { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.3.5-2-g7e9944c", + "clang_uml_version": "0.3.5-13-g57aa174", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t20016_sequence.svg b/docs/test_cases/t20016_sequence.svg index 9365dd52..c67f049a 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 3c49bcfb..11fe8455 100644 --- a/docs/test_cases/t20017.md +++ b/docs/test_cases/t20017.md @@ -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.5-2-g7e9944c", + "clang_uml_version": "0.3.5-13-g57aa174", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t20017_sequence.svg b/docs/test_cases/t20017_sequence.svg index 8d981849..7bb4a29e 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 7180c23b..cb7aa523 100644 --- a/docs/test_cases/t20018.md +++ b/docs/test_cases/t20018.md @@ -54,7 +54,7 @@ void tmain() { Answer>::print(); } { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.3.5-2-g7e9944c", + "clang_uml_version": "0.3.5-13-g57aa174", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t20018_sequence.svg b/docs/test_cases/t20018_sequence.svg index 3f2d66f0..39253a16 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 d0bf893a..e2eee307 100644 --- a/docs/test_cases/t20019.md +++ b/docs/test_cases/t20019.md @@ -61,7 +61,7 @@ void tmain() { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.3.5-2-g7e9944c", + "clang_uml_version": "0.3.5-13-g57aa174", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t20019_sequence.svg b/docs/test_cases/t20019_sequence.svg index 0fc86460..60f99352 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 52c27d82..556b337b 100644 --- a/docs/test_cases/t20020.md +++ b/docs/test_cases/t20020.md @@ -113,7 +113,7 @@ int tmain() { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.3.5-2-g7e9944c", + "clang_uml_version": "0.3.5-13-g57aa174", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t20020_sequence.svg b/docs/test_cases/t20020_sequence.svg index 9379f60c..9af2fbc3 100644 --- a/docs/test_cases/t20020_sequence.svg +++ b/docs/test_cases/t20020_sequence.svg @@ -1,6 +1,6 @@ - + @@ -9,78 +9,78 @@ - - - - - - - - - - - - - - + + + + + + + + + + + + + + - + - - - + + + - - + + tmain() - + tmain() - - + + A - + A - - + + C - + C - - + + B - + B - - + + D<int> - + D<int> - - - - - - - - - - - - - + + + + + + + + + + + + + alt - + a1() @@ -91,7 +91,7 @@ alt - + [ @@ -100,7 +100,7 @@ - + [ @@ -109,7 +109,7 @@ - + b1() @@ -117,7 +117,7 @@ - + [ @@ -126,21 +126,21 @@ - + b2() - + a4() - + log() @@ -148,7 +148,7 @@ alt - + c1() @@ -156,7 +156,7 @@ alt - + @@ -169,7 +169,7 @@ - + @@ -179,7 +179,7 @@ alt - + d1(int,int) diff --git a/docs/test_cases/t20021.md b/docs/test_cases/t20021.md index 928319fb..0407d41b 100644 --- a/docs/test_cases/t20021.md +++ b/docs/test_cases/t20021.md @@ -84,7 +84,7 @@ int tmain() { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.3.5-2-g7e9944c", + "clang_uml_version": "0.3.5-13-g57aa174", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t20021_sequence.svg b/docs/test_cases/t20021_sequence.svg index b31d9c5e..ab641a3e 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() @@ -158,7 +158,7 @@ loop - + [ @@ -167,7 +167,7 @@ - + b2() diff --git a/docs/test_cases/t20022.md b/docs/test_cases/t20022.md index ef6b8909..324cfab1 100644 --- a/docs/test_cases/t20022.md +++ b/docs/test_cases/t20022.md @@ -64,7 +64,7 @@ int tmain() { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.3.5-2-g7e9944c", + "clang_uml_version": "0.3.5-13-g57aa174", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t20022_sequence.svg b/docs/test_cases/t20022_sequence.svg index 5fced059..52060294 100644 --- a/docs/test_cases/t20022_sequence.svg +++ b/docs/test_cases/t20022_sequence.svg @@ -1,6 +1,6 @@ - + @@ -9,39 +9,39 @@ - - - + + + - - + + tmain() - + tmain() - - + + A - + A - - + + B - + B - - - - + + + + a() - + b() diff --git a/docs/test_cases/t20023.md b/docs/test_cases/t20023.md index 4a44237e..a4f1e891 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.5-2-g7e9944c", + "clang_uml_version": "0.3.5-13-g57aa174", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t20023_sequence.svg b/docs/test_cases/t20023_sequence.svg index f707c88d..253fbe47 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 edbbeff7..8e403cc5 100644 --- a/docs/test_cases/t20024.md +++ b/docs/test_cases/t20024.md @@ -92,7 +92,7 @@ int tmain() { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.3.5-2-g7e9944c", + "clang_uml_version": "0.3.5-13-g57aa174", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t20024_sequence.svg b/docs/test_cases/t20024_sequence.svg index ebdd878a..a0012a1c 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 67f786eb..c2c11dc4 100644 --- a/docs/test_cases/t20025.md +++ b/docs/test_cases/t20025.md @@ -72,7 +72,7 @@ int tmain() { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.3.5-2-g7e9944c", + "clang_uml_version": "0.3.5-13-g57aa174", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t20025_sequence.svg b/docs/test_cases/t20025_sequence.svg index 26104e93..64cd95da 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 d7ea4d76..86da42d8 100644 --- a/docs/test_cases/t20026.md +++ b/docs/test_cases/t20026.md @@ -52,7 +52,7 @@ int tmain() { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.3.5-2-g7e9944c", + "clang_uml_version": "0.3.5-13-g57aa174", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t20026_sequence.svg b/docs/test_cases/t20026_sequence.svg index 775ea16e..9c89c87f 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 be6db600..4a4123fe 100644 --- a/docs/test_cases/t20027.md +++ b/docs/test_cases/t20027.md @@ -51,7 +51,7 @@ void tmain() { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.3.5-2-g7e9944c", + "clang_uml_version": "0.3.5-13-g57aa174", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t20027_sequence.svg b/docs/test_cases/t20027_sequence.svg index 2d698f16..651338da 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 46b6c730..796dff8d 100644 --- a/docs/test_cases/t20028.md +++ b/docs/test_cases/t20028.md @@ -61,7 +61,7 @@ int tmain() { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.3.5-2-g7e9944c", + "clang_uml_version": "0.3.5-13-g57aa174", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t20028_sequence.svg b/docs/test_cases/t20028_sequence.svg index 9b6e0cf5..bf265c92 100644 --- a/docs/test_cases/t20028_sequence.svg +++ b/docs/test_cases/t20028_sequence.svg @@ -1,6 +1,6 @@ - + @@ -9,50 +9,50 @@ - - - - - - + + + + + + - - + + tmain() - + tmain() - - + + A - + A - - - - - + + + + + alt - + a() - + b() - + c() @@ -60,7 +60,7 @@ - + d() diff --git a/docs/test_cases/t20029.md b/docs/test_cases/t20029.md index 744120ce..13081957 100644 --- a/docs/test_cases/t20029.md +++ b/docs/test_cases/t20029.md @@ -105,7 +105,7 @@ int tmain() { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.3.5-2-g7e9944c", + "clang_uml_version": "0.3.5-13-g57aa174", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t20029_sequence.svg b/docs/test_cases/t20029_sequence.svg index 3c53da0d..aa57ae8b 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/t30001.md b/docs/test_cases/t30001.md index 771ab7f0..bc35f63d 100644 --- a/docs/test_cases/t30001.md +++ b/docs/test_cases/t30001.md @@ -191,7 +191,7 @@ namespace BB { } ], "metadata": { - "clang_uml_version": "0.3.5-2-g7e9944c", + "clang_uml_version": "0.3.5-13-g57aa174", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t30001_package.svg b/docs/test_cases/t30001_package.svg index 47c928b3..abc3a195 100644 --- a/docs/test_cases/t30001_package.svg +++ b/docs/test_cases/t30001_package.svg @@ -1,6 +1,6 @@ - + @@ -9,67 +9,67 @@ - - + + 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 35fb41a9..b40e66ec 100644 --- a/docs/test_cases/t30002.md +++ b/docs/test_cases/t30002.md @@ -395,7 +395,7 @@ template std::map> cm() } ], "metadata": { - "clang_uml_version": "0.3.5-2-g7e9944c", + "clang_uml_version": "0.3.5-13-g57aa174", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t30002_package.svg b/docs/test_cases/t30002_package.svg index fe6517d3..2ccd2c59 100644 --- a/docs/test_cases/t30002_package.svg +++ b/docs/test_cases/t30002_package.svg @@ -1,6 +1,6 @@ - + @@ -9,113 +9,113 @@ - - + + A - - + + AA - - + + B - - + + BB - - + + A1 - - + + A2 - - + + A3 - - + + A4 - - + + A5 - - + + A6 - - + + A7 - - + + A8 - - + + A9 - - + + A10 - - + + A11 - - + + A12 - - + + A13 - - + + A14 - - + + A15 - - + + A16 - - + + A17 - - + + BBB diff --git a/docs/test_cases/t30003.md b/docs/test_cases/t30003.md index 78c732bb..6191963e 100644 --- a/docs/test_cases/t30003.md +++ b/docs/test_cases/t30003.md @@ -129,7 +129,7 @@ class B : public ns1::ns2::Anon { }; } ], "metadata": { - "clang_uml_version": "0.3.5-2-g7e9944c", + "clang_uml_version": "0.3.5-13-g57aa174", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t30003_package.svg b/docs/test_cases/t30003_package.svg index efa70623..a4f97c20 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 0eb93661..4de99845 100644 --- a/docs/test_cases/t30004.md +++ b/docs/test_cases/t30004.md @@ -142,7 +142,7 @@ namespace CCC { } ], "metadata": { - "clang_uml_version": "0.3.5-2-g7e9944c", + "clang_uml_version": "0.3.5-13-g57aa174", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t30004_package.svg b/docs/test_cases/t30004_package.svg index 5a1b4056..58cfce65 100644 --- a/docs/test_cases/t30004_package.svg +++ b/docs/test_cases/t30004_package.svg @@ -1,6 +1,6 @@ - + @@ -9,46 +9,46 @@ - - + + A - + Package AAA. - + Package BBB. - + CCCC package note. - + We skipped DDD. - - + + AAA - - + + BBB - - + + CCC - - + + EEE - - - - + + + + diff --git a/docs/test_cases/t30005.md b/docs/test_cases/t30005.md index f56382f5..807e60ab 100644 --- a/docs/test_cases/t30005.md +++ b/docs/test_cases/t30005.md @@ -168,7 +168,7 @@ struct C2 { } ], "metadata": { - "clang_uml_version": "0.3.5-2-g7e9944c", + "clang_uml_version": "0.3.5-13-g57aa174", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t30005_package.svg b/docs/test_cases/t30005_package.svg index 5649f89a..e289cd72 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 3b91ab76..f62ab14a 100644 --- a/docs/test_cases/t30006.md +++ b/docs/test_cases/t30006.md @@ -94,7 +94,7 @@ struct A2 { } ], "metadata": { - "clang_uml_version": "0.3.5-2-g7e9944c", + "clang_uml_version": "0.3.5-13-g57aa174", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t30006_package.svg b/docs/test_cases/t30006_package.svg index 4f7b26c5..59e66d63 100644 --- a/docs/test_cases/t30006_package.svg +++ b/docs/test_cases/t30006_package.svg @@ -1,6 +1,6 @@ - + @@ -9,25 +9,25 @@ - - + + B - - + + A - - + + C - + Top A note. - + diff --git a/docs/test_cases/t30007.md b/docs/test_cases/t30007.md index 35e01816..2d4e5ca1 100644 --- a/docs/test_cases/t30007.md +++ b/docs/test_cases/t30007.md @@ -115,7 +115,7 @@ struct A2 { } ], "metadata": { - "clang_uml_version": "0.3.5-2-g7e9944c", + "clang_uml_version": "0.3.5-13-g57aa174", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t30007_package.svg b/docs/test_cases/t30007_package.svg index db55d662..b8a07c60 100644 --- a/docs/test_cases/t30007_package.svg +++ b/docs/test_cases/t30007_package.svg @@ -1,6 +1,6 @@ - + @@ -9,30 +9,30 @@ - - + + A - - + + B - - + + AA - - + + C - + Compare layout with t30006. - + diff --git a/docs/test_cases/t30008.md b/docs/test_cases/t30008.md index 7f17ccaa..1bfd3f0e 100644 --- a/docs/test_cases/t30008.md +++ b/docs/test_cases/t30008.md @@ -191,7 +191,7 @@ struct FF { } ], "metadata": { - "clang_uml_version": "0.3.5-2-g7e9944c", + "clang_uml_version": "0.3.5-13-g57aa174", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t30008_package.svg b/docs/test_cases/t30008_package.svg index 6b90f01b..5f4b2446 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 1ea65a9f..f798908f 100644 --- a/docs/test_cases/t30009.md +++ b/docs/test_cases/t30009.md @@ -169,7 +169,7 @@ namespace D { } ], "metadata": { - "clang_uml_version": "0.3.5-2-g7e9944c", + "clang_uml_version": "0.3.5-13-g57aa174", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t30009_package.svg b/docs/test_cases/t30009_package.svg index b79a6eb2..623791a8 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/t40001.md b/docs/test_cases/t40001.md index 15bda7d8..c9c0794b 100644 --- a/docs/test_cases/t40001.md +++ b/docs/test_cases/t40001.md @@ -101,7 +101,7 @@ diagrams: } ], "metadata": { - "clang_uml_version": "0.3.5-2-g7e9944c", + "clang_uml_version": "0.3.5-13-g57aa174", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t40001_include.svg b/docs/test_cases/t40001_include.svg index 198b2971..8eb45d52 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 @@ -60,7 +60,7 @@ - - + + diff --git a/docs/test_cases/t40002.md b/docs/test_cases/t40002.md index 134fc96e..58db0af5 100644 --- a/docs/test_cases/t40002.md +++ b/docs/test_cases/t40002.md @@ -119,7 +119,7 @@ diagrams: } ], "metadata": { - "clang_uml_version": "0.3.5-2-g7e9944c", + "clang_uml_version": "0.3.5-13-g57aa174", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t40002_include.svg b/docs/test_cases/t40002_include.svg index e60c366b..27791df9 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 f89fcddd..24a52f57 100644 --- a/docs/test_cases/t40003.md +++ b/docs/test_cases/t40003.md @@ -145,7 +145,7 @@ diagrams: } ], "metadata": { - "clang_uml_version": "0.3.5-2-g7e9944c", + "clang_uml_version": "0.3.5-13-g57aa174", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t40003_include.svg b/docs/test_cases/t40003_include.svg index 2ad1d19a..83cc928e 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/class_diagram/visitor/template_builder.cc b/src/class_diagram/visitor/template_builder.cc index c7785ed6..0e56f5e9 100644 --- a/src/class_diagram/visitor/template_builder.cc +++ b/src/class_diagram/visitor/template_builder.cc @@ -452,10 +452,11 @@ void template_builder::argument_process_dispatch( case clang::TemplateArgument::Template: argument.push_back(process_template_argument(arg)); break; - case clang::TemplateArgument::Type: + case clang::TemplateArgument::Type: { argument.push_back(process_type_argument(parent, cls, template_decl, arg.getAsType(), template_instantiation, argument_index)); break; + } case clang::TemplateArgument::Declaration: break; case clang::TemplateArgument::NullPtr: @@ -509,79 +510,11 @@ template_parameter template_builder::process_template_expansion( clang::QualType template_builder::consume_context( clang::QualType type, template_parameter &tp) const { - while (true) { - bool try_again{false}; - common::model::context ctx; + auto [unqualified_type, context] = common::consume_type_context(type); - if (type->isPointerType() || type->isReferenceType()) { - if (type.isConstQualified() || type.isVolatileQualified()) { - ctx.is_ref_const = type.isConstQualified(); - ctx.is_ref_volatile = type.isVolatileQualified(); + tp.deduced_context(std::move(context)); - try_again = true; - } - } - - if (type->isLValueReferenceType()) { - ctx.pr = common::model::rpqualifier::kLValueReference; - try_again = true; - } - else if (type->isRValueReferenceType()) { - ctx.pr = common::model::rpqualifier::kRValueReference; - try_again = true; - } - else if (type->isMemberFunctionPointerType() && - type->getPointeeType()->getAs() != - nullptr) { - const auto ref_qualifier = - type->getPointeeType() // NOLINT - ->getAs() // NOLINT - ->getRefQualifier(); - - if (ref_qualifier == clang::RefQualifierKind::RQ_RValue) { - ctx.pr = common::model::rpqualifier::kRValueReference; - try_again = true; - } - else if (ref_qualifier == clang::RefQualifierKind::RQ_LValue) { - ctx.pr = common::model::rpqualifier::kLValueReference; - try_again = true; - } - } - else if (type->isPointerType()) { - ctx.pr = common::model::rpqualifier::kPointer; - try_again = true; - } - - if (try_again) { - if (type->isPointerType()) { - if (type->getPointeeType().isConstQualified()) - ctx.is_const = true; - if (type->getPointeeType().isVolatileQualified()) - ctx.is_volatile = true; - - type = type->getPointeeType().getUnqualifiedType(); - } - else if (type->isReferenceType()) { - if (type.getNonReferenceType().isConstQualified()) - ctx.is_const = true; - if (type.getNonReferenceType().isVolatileQualified()) - ctx.is_volatile = true; - - type = type.getNonReferenceType().getUnqualifiedType(); - } - else if (type.isConstQualified() || type.isVolatileQualified()) { - ctx.is_const = type.isConstQualified(); - ctx.is_volatile = type.isVolatileQualified(); - } - - tp.push_context(ctx); - - if (type->isMemberFunctionPointerType()) - return type; - } - else - return type; - } + return unqualified_type; } template_parameter template_builder::process_type_argument( @@ -626,6 +559,16 @@ template_parameter template_builder::process_type_argument( if (argument) return *argument; + argument = try_as_decl_type(parent, cls, template_decl, type, + template_instantiation, argument_index); + if (argument) + return *argument; + + argument = try_as_typedef_type(parent, cls, template_decl, type, + template_instantiation, argument_index); + if (argument) + return *argument; + argument = try_as_lambda(cls, template_decl, type); if (argument) return *argument; @@ -929,9 +872,19 @@ std::optional template_builder::try_as_function_prototype( size_t argument_index) { const auto *function_type = type->getAs(); + + if (function_type == nullptr && type->isFunctionPointerType()) { + function_type = + type->getPointeeType()->getAs(); + if (function_type == nullptr) + return {}; + } + if (function_type == nullptr) return {}; + LOG_DBG("Template argument is a function prototype"); + auto argument = template_parameter::make_template_type(""); type = consume_context(type, argument); @@ -961,6 +914,57 @@ std::optional template_builder::try_as_function_prototype( return argument; } +std::optional template_builder::try_as_decl_type( + std::optional & /*parent*/, + const clang::NamedDecl * /*cls*/, + const clang::TemplateDecl * /*template_decl*/, clang::QualType &type, + class_ & /*template_instantiation*/, size_t /*argument_index*/) +{ + const auto *decl_type = + common::dereference(type)->getAs(); + if (decl_type == nullptr) { + return {}; + } + + LOG_DBG("Template argument is a decltype()"); + + // TODO + return {}; +} + +std::optional template_builder::try_as_typedef_type( + std::optional &parent, + const clang::NamedDecl *cls, const clang::TemplateDecl *template_decl, + clang::QualType &type, class_ &template_instantiation, + size_t argument_index) +{ + const auto *typedef_type = + common::dereference(type)->getAs(); + if (typedef_type == nullptr) { + return {}; + } + + LOG_DBG("Template argument is a typedef/using"); + + // If this is a typedef/using alias to a decltype - we're not able + // to figure out anything out of it probably + if (typedef_type->getAs() != nullptr) { + // Here we need to figure out the parent context of this alias, + // it can be a: + // - class/struct + if (typedef_type->getDecl()->isCXXClassMember() && parent) { + return template_parameter::make_argument( + fmt::format("{}::{}", parent.value()->full_name(false), + typedef_type->getDecl()->getNameAsString())); + } + // - namespace + return template_parameter::make_argument( + typedef_type->getDecl()->getQualifiedNameAsString()); + } + + return {}; +} + std::optional template_builder::try_as_template_specialization_type( std::optional &parent, @@ -970,8 +974,11 @@ template_builder::try_as_template_specialization_type( { const auto *nested_template_type = common::dereference(type)->getAs(); - if (nested_template_type == nullptr) + if (nested_template_type == nullptr) { return {}; + } + + LOG_DBG("Template argument is a template specialization type"); auto argument = template_parameter::make_argument(""); type = consume_context(type, argument); @@ -1066,18 +1073,22 @@ std::optional template_builder::try_as_template_parm_type( if (type_parameter == nullptr) return {}; + LOG_DBG("Template argument is a template parameter type"); + auto argument = template_parameter::make_template_type(""); type = consume_context(type, argument); - argument.is_variadic(is_variadic); - auto type_parameter_name = common::to_string(type, cls->getASTContext()); - - ensure_lambda_type_is_relative(type_parameter_name); + if (type_parameter_name.empty()) + type_parameter_name = "typename"; argument.set_name(map_type_parameter_to_template_parameter_name( cls, type_parameter_name)); + argument.is_variadic(is_variadic); + + ensure_lambda_type_is_relative(type_parameter_name); + return argument; } @@ -1090,6 +1101,8 @@ std::optional template_builder::try_as_lambda( if (type_name.find("(lambda at ") != 0) return {}; + LOG_DBG("Template argument is a lambda"); + auto argument = template_parameter::make_argument(""); type = consume_context(type, argument); @@ -1110,6 +1123,8 @@ std::optional template_builder::try_as_record_type( if (record_type == nullptr) return {}; + LOG_DBG("Template argument is a c++ record"); + auto argument = template_parameter::make_argument({}); type = consume_context(type, argument); @@ -1166,6 +1181,8 @@ std::optional template_builder::try_as_enum_type( if (enum_type == nullptr) return {}; + LOG_DBG("Template argument is a an enum"); + auto argument = template_parameter::make_argument({}); type = consume_context(type, argument); @@ -1190,6 +1207,8 @@ std::optional template_builder::try_as_builtin_type( if (builtin_type == nullptr) return {}; + LOG_DBG("Template argument is a builtin type"); + auto type_name = common::to_string(type, template_decl->getASTContext()); auto argument = template_parameter::make_argument(type_name); diff --git a/src/class_diagram/visitor/template_builder.h b/src/class_diagram/visitor/template_builder.h index 9f34f699..428d4b68 100644 --- a/src/class_diagram/visitor/template_builder.h +++ b/src/class_diagram/visitor/template_builder.h @@ -157,6 +157,18 @@ public: clang::QualType &type, class_ &template_instantiation, size_t argument_index); + std::optional try_as_decl_type( + std::optional &parent, + const clang::NamedDecl *cls, const clang::TemplateDecl *template_decl, + clang::QualType &type, class_ &template_instantiation, + size_t argument_index); + + std::optional try_as_typedef_type( + std::optional &parent, + const clang::NamedDecl *cls, const clang::TemplateDecl *template_decl, + clang::QualType &type, class_ &template_instantiation, + size_t argument_index); + clang::QualType consume_context( clang::QualType type, template_parameter &tp) const; diff --git a/src/class_diagram/visitor/translation_unit_visitor.cc b/src/class_diagram/visitor/translation_unit_visitor.cc index 198f4b97..66d5a526 100644 --- a/src/class_diagram/visitor/translation_unit_visitor.cc +++ b/src/class_diagram/visitor/translation_unit_visitor.cc @@ -973,9 +973,13 @@ bool translation_unit_visitor::process_template_parameters( default_arg = template_type_parameter->getDefaultArgument().getAsString(); } - auto ct = template_parameter::make_template_type( - template_type_parameter->getNameAsString(), default_arg, - template_type_parameter->isParameterPack()); + + auto parameter_name = template_type_parameter->getNameAsString(); + if (parameter_name.empty()) + parameter_name = "typename"; + + auto ct = template_parameter::make_template_type(parameter_name, + default_arg, template_type_parameter->isParameterPack()); if (template_type_parameter->getTypeConstraint() != nullptr) { util::apply_if_not_null( @@ -1265,8 +1269,16 @@ void translation_unit_visitor::process_method( ensure_lambda_type_is_relative(method_return_type); + auto method_name = mf.getNameAsString(); + if (mf.isTemplated()) { + // Sometimes in template specializations method names contain the + // template parameters for some reason - drop them + // Is there a better way to do this? + method_name = method_name.substr(0, method_name.find('<')); + } + class_method method{common::access_specifier_to_access_t(mf.getAccess()), - util::trim(mf.getNameAsString()), method_return_type}; + util::trim(method_name), method_return_type}; method.is_pure_virtual(mf.isPure()); method.is_virtual(mf.isVirtual()); @@ -1287,6 +1299,32 @@ void translation_unit_visitor::process_method( // find relationship for return type found_relationships_t relationships; + // Move dereferencing to build() method of template_builder + if (const auto *templ = mf.getReturnType() + .getNonReferenceType() + .getUnqualifiedType() + ->getAs(); + templ != nullptr) { + auto *unaliased_type = templ; + if (unaliased_type->isTypeAlias()) + unaliased_type = unaliased_type->getAliasedType() + ->getAs(); + + if (unaliased_type != nullptr) { + auto template_specialization_ptr = tbuilder().build( + unaliased_type->getTemplateName().getAsTemplateDecl(), + *unaliased_type, &c); + + if (diagram().should_include( + template_specialization_ptr->full_name(false))) { + relationships.emplace_back(template_specialization_ptr->id(), + relationship_t::kDependency); + + diagram().add_class(std::move(template_specialization_ptr)); + } + } + } + find_relationships( mf.getReturnType(), relationships, relationship_t::kDependency); @@ -1313,13 +1351,8 @@ void translation_unit_visitor::process_method( if (underlying_type->isPointerType()) underlying_type = underlying_type->getPointeeType(); - if (const auto *tsp = - underlying_type->getAs(); - tsp != nullptr) { - process_function_parameter_find_relationships_in_template(c, {}, *tsp); - } - else if (const auto *atsp = underlying_type->getAs(); - atsp != nullptr) { + if (const auto *atsp = underlying_type->getAs(); + atsp != nullptr) { process_function_parameter_find_relationships_in_autotype(c, atsp); } @@ -1517,13 +1550,67 @@ bool translation_unit_visitor::find_relationships(const clang::QualType &type, result = true; } } + else if (const auto *template_specialization_type = + type->getAs(); + template_specialization_type != nullptr) { + if (should_include(template_specialization_type->getTemplateName() + .getAsTemplateDecl())) { + relationships.emplace_back( + template_specialization_type->getTemplateName() + .getAsTemplateDecl() + ->getID(), + relationship_hint); + } + for (const auto &template_argument : + template_specialization_type->template_arguments()) { + const auto template_argument_kind = template_argument.getKind(); + if (template_argument_kind == + clang::TemplateArgument::ArgKind::Integral) { + // pass + } + else if (template_argument_kind == + clang::TemplateArgument::ArgKind::Null) { + // pass + } + else if (template_argument_kind == + clang::TemplateArgument::ArgKind::Expression) { + // pass + } + else if (template_argument.getKind() == + clang::TemplateArgument::ArgKind::NullPtr) { + // pass + } + else if (template_argument_kind == + clang::TemplateArgument::ArgKind::Template) { + // pass + } + else if (template_argument_kind == + clang::TemplateArgument::ArgKind::TemplateExpansion) { + // pass + } + else if (const auto *function_type = + template_argument.getAsType() + ->getAs(); + function_type != nullptr) { + for (const auto ¶m_type : function_type->param_types()) { + result = find_relationships( + param_type, relationships, relationship_t::kDependency); + } + } + else if (template_argument_kind == + clang::TemplateArgument::ArgKind::Type) { + result = find_relationships(template_argument.getAsType(), + relationships, relationship_hint); + } + } + } return result; } void translation_unit_visitor::process_function_parameter( const clang::ParmVarDecl &p, class_method &method, class_ &c, - const std::set &template_parameter_names) + const std::set & /*template_parameter_names*/) { method_parameter parameter; parameter.set_name(p.getNameAsString()); @@ -1553,6 +1640,27 @@ void translation_unit_visitor::process_function_parameter( // find relationship for the type found_relationships_t relationships; + LOG_DBG("Looking for relationships in type: {}", + common::to_string(p.getType(), p.getASTContext())); + + if (const auto *templ = + p.getType() + .getNonReferenceType() + .getUnqualifiedType() + ->getAs(); + templ != nullptr) { + auto template_specialization_ptr = tbuilder().build( + templ->getTemplateName().getAsTemplateDecl(), *templ, &c); + + if (diagram().should_include( + template_specialization_ptr->full_name(false))) { + relationships.emplace_back(template_specialization_ptr->id(), + relationship_t::kDependency); + + diagram().add_class(std::move(template_specialization_ptr)); + } + } + find_relationships( p.getType(), relationships, relationship_t::kDependency); @@ -1569,22 +1677,6 @@ void translation_unit_visitor::process_function_parameter( c.add_relationship(std::move(r)); } } - - // Also consider the container itself if it is a template - // instantiation it's arguments could count as reference to relevant - // types - auto underlying_type = p.getType(); - if (underlying_type->isReferenceType()) - underlying_type = underlying_type.getNonReferenceType(); - if (underlying_type->isPointerType()) - underlying_type = underlying_type->getPointeeType(); - - if (const auto *tsp = - underlying_type->getAs(); - tsp != nullptr) { - process_function_parameter_find_relationships_in_template( - c, template_parameter_names, *tsp); - } } method.add_parameter(std::move(parameter)); @@ -1626,40 +1718,6 @@ void translation_unit_visitor::ensure_lambda_type_is_relative( } } -void translation_unit_visitor:: - process_function_parameter_find_relationships_in_template(class_ &c, - const std::set & /*template_parameter_names*/, - const clang::TemplateSpecializationType &template_instantiation_type) -{ - if (!should_include( - template_instantiation_type.getTemplateName().getAsTemplateDecl())) - return; - - auto template_specialization_ptr = tbuilder().build( - template_instantiation_type.getTemplateName().getAsTemplateDecl(), - template_instantiation_type, &c); - - if (template_instantiation_type.isDependentType()) { - if (template_specialization_ptr) { - relationship r{ - relationship_t::kDependency, template_specialization_ptr->id()}; - - c.add_relationship(std::move(r)); - } - } - else { - if (template_specialization_ptr) { - relationship r{ - relationship_t::kDependency, template_specialization_ptr->id()}; - - if (!diagram().has_element(template_specialization_ptr->id())) - diagram().add_class(std::move(template_specialization_ptr)); - - c.add_relationship(std::move(r)); - } - } -} - void translation_unit_visitor::add_relationships(class_ &c, const class_member &field, const found_relationships_t &relationships, bool break_on_first_aggregation) @@ -1852,8 +1910,11 @@ void translation_unit_visitor::process_field( if (template_field_type != nullptr && !field_type_is_template_template_parameter) { // Build the template instantiation for the field type - auto template_specialization_ptr = - tbuilder().build(&field_declaration, *template_field_type, {&c}); + auto template_specialization_ptr = tbuilder().build( + field_type->getAs() + ->getTemplateName() + .getAsTemplateDecl(), + *template_field_type, {&c}); if (!field.skip_relationship() && template_specialization_ptr) { const auto &template_specialization = *template_specialization_ptr; @@ -1862,14 +1923,14 @@ void translation_unit_visitor::process_field( // current diagram. Even if the top level template type for // this instantiation should not be part of the diagram, e.g. // it's a std::vector<>, it's nested types might be added - bool add_template_instantiation_to_diargam{false}; + bool add_template_instantiation_to_diagram{false}; if (diagram().should_include( template_specialization.full_name(false))) { found_relationships_t::value_type r{ template_specialization.id(), relationship_hint}; - add_template_instantiation_to_diargam = true; + add_template_instantiation_to_diagram = true; // If the template instantiation for the build type has been // added as aggregation, skip its nested templates @@ -1910,7 +1971,7 @@ void translation_unit_visitor::process_field( // Add the template instantiation object to the diagram if it // matches the include pattern - if (add_template_instantiation_to_diargam) + if (add_template_instantiation_to_diagram) diagram().add_class(std::move(template_specialization_ptr)); } } diff --git a/src/class_diagram/visitor/translation_unit_visitor.h b/src/class_diagram/visitor/translation_unit_visitor.h index 01b98387..ae12cf50 100644 --- a/src/class_diagram/visitor/translation_unit_visitor.h +++ b/src/class_diagram/visitor/translation_unit_visitor.h @@ -190,11 +190,6 @@ private: void process_function_parameter_find_relationships_in_autotype( model::class_ &c, const clang::AutoType *atsp); - void process_function_parameter_find_relationships_in_template( - clanguml::class_diagram::model::class_ &c, - const std::set &template_parameter_names, - const clang::TemplateSpecializationType &template_instantiation_type); - void find_relationships_in_constraint_expression( clanguml::common::model::element &c, const clang::Expr *expr); diff --git a/src/common/clang_utils.cc b/src/common/clang_utils.cc index 8c6ab799..8e44133d 100644 --- a/src/common/clang_utils.cc +++ b/src/common/clang_utils.cc @@ -161,6 +161,27 @@ std::string to_string(const clang::QualType &type, const clang::ASTContext &ctx, clanguml::util::replace_all(result, ", ", ","); clanguml::util::replace_all(result, "> >", ">>"); + // Try to get rid of 'type-parameter-X-Y' ugliness + if (result.find("type-parameter-") != std::string::npos) { + util::apply_if_not_null( + common::dereference(type)->getAs(), + [&result, &type](auto *p) { + auto [unqualified_type, context] = + common::consume_type_context(type); + result = p->getDecl()->getNameAsString(); + if (!context.empty()) { + std::vector deduced_contexts; + + for (const auto &c : context) { + deduced_contexts.push_back(c.to_string()); + } + + result = fmt::format( + "{} {}", result, fmt::join(deduced_contexts, " ")); + } + }); + } + return result; } @@ -541,6 +562,97 @@ clang::QualType dereference(clang::QualType type) return res; } +std::pair> +consume_type_context(clang::QualType type) +{ + std::deque res; + + while (true) { + bool try_again{false}; + common::model::context ctx; + + if (type.isConstQualified()) { + ctx.is_const = true; + try_again = true; + } + + if (type.isVolatileQualified()) { + ctx.is_volatile = true; + try_again = true; + } + + if (type->isPointerType() || type->isReferenceType()) { + if (type.isConstQualified() || type.isVolatileQualified()) { + ctx.is_ref_const = type.isConstQualified(); + ctx.is_ref_volatile = type.isVolatileQualified(); + + try_again = true; + } + } + + if (type->isLValueReferenceType()) { + ctx.pr = common::model::rpqualifier::kLValueReference; + try_again = true; + } + else if (type->isRValueReferenceType()) { + ctx.pr = common::model::rpqualifier::kRValueReference; + try_again = true; + } + else if (type->isMemberFunctionPointerType() && + type->getPointeeType()->getAs() != + nullptr) { + const auto ref_qualifier = + type->getPointeeType() // NOLINT + ->getAs() // NOLINT + ->getRefQualifier(); + + if (ref_qualifier == clang::RefQualifierKind::RQ_RValue) { + ctx.pr = common::model::rpqualifier::kRValueReference; + try_again = true; + } + else if (ref_qualifier == clang::RefQualifierKind::RQ_LValue) { + ctx.pr = common::model::rpqualifier::kLValueReference; + try_again = true; + } + } + else if (type->isPointerType()) { + ctx.pr = common::model::rpqualifier::kPointer; + try_again = true; + } + + if (try_again) { + if (type->isPointerType()) { + if (type->getPointeeType().isConstQualified()) + ctx.is_const = true; + if (type->getPointeeType().isVolatileQualified()) + ctx.is_volatile = true; + + type = type->getPointeeType().getUnqualifiedType(); + } + else if (type->isReferenceType()) { + if (type.getNonReferenceType().isConstQualified()) + ctx.is_const = true; + if (type.getNonReferenceType().isVolatileQualified()) + ctx.is_volatile = true; + + type = type.getNonReferenceType().getUnqualifiedType(); + } + else if (type.isConstQualified() || type.isVolatileQualified()) { + ctx.is_const = type.isConstQualified(); + ctx.is_volatile = type.isVolatileQualified(); + type = type.getUnqualifiedType(); + } + + res.push_front(ctx); + + if (type->isMemberFunctionPointerType()) + return std::make_pair(type, res); + } + else + return std::make_pair(type, res); + } +} + std::vector tokenize_unexposed_template_parameter( const std::string &t) { diff --git a/src/common/clang_utils.h b/src/common/clang_utils.h index e8cede7e..1aa906a4 100644 --- a/src/common/clang_utils.h +++ b/src/common/clang_utils.h @@ -186,4 +186,7 @@ bool is_type_token(const std::string &t); clang::QualType dereference(clang::QualType type); +std::pair> +consume_type_context(clang::QualType type); + } // namespace clanguml::common diff --git a/src/common/model/template_parameter.cc b/src/common/model/template_parameter.cc index 34cc243f..9cf86f95 100644 --- a/src/common/model/template_parameter.cc +++ b/src/common/model/template_parameter.cc @@ -197,6 +197,10 @@ std::optional template_parameter::name() const if (!name_) return {}; + if (kind_ == template_parameter_kind_t::template_type && + name_.has_value() && name_.value().empty()) + return "typename"; + if (is_variadic_ && (kind_ != template_parameter_kind_t::non_type_template)) return name_.value() + "..."; @@ -630,14 +634,15 @@ void template_parameter::push_context(const context &q) { context_.push_front(q); } + const std::deque &template_parameter::deduced_context() const { return context_; } -void template_parameter::deduced_context(const std::deque &c) +void template_parameter::deduced_context(std::deque c) { - context_ = c; + context_ = std::move(c); } void template_parameter::is_ellipsis(bool e) { is_ellipsis_ = e; } diff --git a/src/common/model/template_parameter.h b/src/common/model/template_parameter.h index 7c6d0790..15d29d51 100644 --- a/src/common/model/template_parameter.h +++ b/src/common/model/template_parameter.h @@ -166,8 +166,9 @@ public: bool is_array() const; void push_context(const context &q); + const std::deque &deduced_context() const; - void deduced_context(const std::deque &c); + void deduced_context(std::deque c); void is_ellipsis(bool e); bool is_ellipsis() const; diff --git a/tests/t00014/t00014.cc b/tests/t00014/t00014.cc index 8b01e1c1..4a2e6f09 100644 --- a/tests/t00014/t00014.cc +++ b/tests/t00014/t00014.cc @@ -36,6 +36,7 @@ using PairPairBA = std::pair>, long>; template using VectorPtr = std::unique_ptr>; template using APtr = std::unique_ptr>; template using ASharedPtr = std::shared_ptr>; + template using AAPtr = std::unique_ptr, A>>; @@ -52,7 +53,7 @@ using ACharString = AString; using AStringString = AString; using BStringString = AStringString; -class R { +template class R { using AWCharString = AString; PairPairBA bapair; @@ -65,6 +66,7 @@ class R { AIntString intstring; AStringString stringstring; BStringString bstringstring; + AAPtr atfloat; protected: BVector bs; diff --git a/tests/t00014/test_case.h b/tests/t00014/test_case.h index 78bcd34b..567cb280 100644 --- a/tests/t00014/test_case.h +++ b/tests/t00014/test_case.h @@ -35,6 +35,9 @@ TEST_CASE("t00014", "[test-case][class]") REQUIRE_THAT(puml, StartsWith("@startuml")); REQUIRE_THAT(puml, EndsWith("@enduml\n")); + + REQUIRE_THAT(puml, !Contains("type-parameter-")); + REQUIRE_THAT(puml, IsClassTemplate("A", "T,P")); REQUIRE_THAT(puml, IsClassTemplate("A", "T,std::string")); REQUIRE_THAT( @@ -53,6 +56,7 @@ TEST_CASE("t00014", "[test-case][class]") REQUIRE_THAT(puml, IsClassTemplate("A", "std::string,std::string")); REQUIRE_THAT(puml, IsClassTemplate("A", "char,std::string")); REQUIRE_THAT(puml, IsClass(_A("B"))); + REQUIRE_THAT(puml, IsClassTemplate("R", "T")); REQUIRE_THAT(puml, IsField("bapair", "PairPairBA")); REQUIRE_THAT(puml, IsField("abool", "APtr")); @@ -62,6 +66,8 @@ TEST_CASE("t00014", "[test-case][class]") puml, IsField("boolstring", "A")); REQUIRE_THAT( puml, IsField("floatstring", "AStringPtr")); + REQUIRE_THAT(puml, IsField("atfloat", "AAPtr")); + REQUIRE_THAT(puml, IsField("intstring", "AIntString")); REQUIRE_THAT(puml, IsField("stringstring", "AStringString")); REQUIRE_THAT(puml, IsField("bstringstring", "BStringString")); @@ -114,23 +120,29 @@ TEST_CASE("t00014", "[test-case][class]") IsInstantiation( _A("A"), _A("A>"))); - REQUIRE_THAT(puml, IsAggregation(_A("R"), _A("B"), "+vps")); - REQUIRE_THAT(puml, IsAggregation(_A("R"), _A("B"), "-bapair")); - REQUIRE_THAT( - puml, IsAggregation(_A("R"), _A("A"), "-aboolfloat")); - REQUIRE_THAT( - puml, IsAggregation(_A("R"), _A("A"), "-bapair")); - REQUIRE_THAT( - puml, IsAggregation(_A("R"), _A("A"), "-aboolfloat")); - REQUIRE_THAT( - puml, IsAssociation(_A("R"), _A("A"), "-afloat")); + REQUIRE_THAT(puml, IsAggregation(_A("R"), _A("B"), "+vps")); + REQUIRE_THAT(puml, IsAggregation(_A("R"), _A("B"), "-bapair")); REQUIRE_THAT(puml, - IsAggregation(_A("R"), _A("A"), "-boolstring")); + IsAggregation(_A("R"), _A("A"), "-aboolfloat")); + REQUIRE_THAT( + puml, IsAggregation(_A("R"), _A("A"), "-bapair")); REQUIRE_THAT(puml, - IsAggregation(_A("R"), _A("A>"), - "-floatstring")); - REQUIRE_THAT(puml, IsDependency(_A("R"), _A("A"))); - REQUIRE_THAT(puml, IsDependency(_A("R"), _A("A"))); + IsAggregation(_A("R"), _A("A"), "-aboolfloat")); + REQUIRE_THAT( + puml, IsAggregation(_A("R"), _A("A"), "-atfloat")); + REQUIRE_THAT( + puml, IsAggregation(_A("R"), _A("A"), "-atfloat")); + REQUIRE_THAT( + puml, IsAssociation(_A("R"), _A("A"), "-afloat")); + REQUIRE_THAT(puml, + IsAggregation( + _A("R"), _A("A"), "-boolstring")); + REQUIRE_THAT(puml, + IsAggregation(_A("R"), + _A("A>"), "-floatstring")); + REQUIRE_THAT(puml, IsDependency(_A("R"), _A("A"))); + REQUIRE_THAT( + puml, IsDependency(_A("R"), _A("A"))); save_puml( config.output_directory() + "/" + diagram->name + ".puml", puml); diff --git a/tests/t00016/test_case.h b/tests/t00016/test_case.h index f4b4d806..3ad8ec11 100644 --- a/tests/t00016/test_case.h +++ b/tests/t00016/test_case.h @@ -35,20 +35,23 @@ TEST_CASE("t00016", "[test-case][class]") REQUIRE_THAT(puml, StartsWith("@startuml")); REQUIRE_THAT(puml, EndsWith("@enduml\n")); - REQUIRE_THAT(puml, IsClassTemplate("is_numeric", "")); + REQUIRE_THAT(puml, IsClassTemplate("is_numeric", "typename")); REQUIRE_THAT(puml, IsClassTemplate("is_numeric", "int")); REQUIRE_THAT(puml, IsClassTemplate("is_numeric", "bool")); REQUIRE_THAT(puml, IsClassTemplate("is_numeric", "char")); REQUIRE_THAT(puml, IsClassTemplate("is_numeric", "float")); - REQUIRE_THAT( - puml, IsInstantiation(_A("is_numeric<>"), _A("is_numeric"))); - REQUIRE_THAT( - puml, IsInstantiation(_A("is_numeric<>"), _A("is_numeric"))); - REQUIRE_THAT( - puml, IsInstantiation(_A("is_numeric<>"), _A("is_numeric"))); - REQUIRE_THAT( - puml, IsInstantiation(_A("is_numeric<>"), _A("is_numeric"))); + REQUIRE_THAT(puml, + IsInstantiation(_A("is_numeric"), _A("is_numeric"))); + REQUIRE_THAT(puml, + IsInstantiation( + _A("is_numeric"), _A("is_numeric"))); + REQUIRE_THAT(puml, + IsInstantiation( + _A("is_numeric"), _A("is_numeric"))); + REQUIRE_THAT(puml, + IsInstantiation( + _A("is_numeric"), _A("is_numeric"))); save_puml( config.output_directory() + "/" + diagram->name + ".puml", puml); @@ -58,7 +61,7 @@ TEST_CASE("t00016", "[test-case][class]") using namespace json; - REQUIRE(IsClassTemplate(j, "is_numeric<>")); + REQUIRE(IsClassTemplate(j, "is_numeric")); REQUIRE(IsClass(j, "is_numeric")); REQUIRE(IsClass(j, "is_numeric")); REQUIRE(IsClass(j, "is_numeric")); diff --git a/tests/t00044/t00044.cc b/tests/t00044/t00044.cc index 33fb26d4..2d71d9bd 100644 --- a/tests/t00044/t00044.cc +++ b/tests/t00044/t00044.cc @@ -15,6 +15,8 @@ public: { } + template CastTo *get_signal() { return (CastTo *)signal; } + private: signal_t *signal; }; diff --git a/tests/t00044/test_case.h b/tests/t00044/test_case.h index 8ae83a72..e48ce76d 100644 --- a/tests/t00044/test_case.h +++ b/tests/t00044/test_case.h @@ -35,6 +35,8 @@ TEST_CASE("t00044", "[test-case][class]") REQUIRE_THAT(puml, StartsWith("@startuml")); REQUIRE_THAT(puml, EndsWith("@enduml\n")); + REQUIRE_THAT(puml, !Contains("type-parameter-")); + REQUIRE_THAT(puml, IsClassTemplate("sink", "T")); REQUIRE_THAT(puml, IsClassTemplate("signal_handler", "T,A")); diff --git a/tests/t00062/test_case.h b/tests/t00062/test_case.h index 5f55d1a2..054419d5 100644 --- a/tests/t00062/test_case.h +++ b/tests/t00062/test_case.h @@ -35,6 +35,8 @@ TEST_CASE("t00062", "[test-case][class]") REQUIRE_THAT(puml, StartsWith("@startuml")); REQUIRE_THAT(puml, EndsWith("@enduml\n")); + REQUIRE_THAT(puml, !Contains("type-parameter-")); + // Check if all classes exist REQUIRE_THAT(puml, IsClassTemplate("A", "T")); REQUIRE_THAT(puml, IsClassTemplate("A", "U &")); diff --git a/tests/t00064/.clang-uml b/tests/t00064/.clang-uml new file mode 100644 index 00000000..7a15ca17 --- /dev/null +++ b/tests/t00064/.clang-uml @@ -0,0 +1,15 @@ +compilation_database_dir: .. +output_directory: puml +diagrams: + t00064_class: + type: class + glob: + - ../../tests/t00064/t00064.cc + include: + namespaces: + - clanguml::t00064 + using_namespace: + - clanguml::t00064 + plantuml: + before: + - left to right direction \ No newline at end of file diff --git a/tests/t00064/t00064.cc b/tests/t00064/t00064.cc new file mode 100644 index 00000000..3d454d19 --- /dev/null +++ b/tests/t00064/t00064.cc @@ -0,0 +1,61 @@ +#include +#include + +namespace clanguml { +namespace t00064 { + +// Loosely based on +template struct type_list { }; + +template +struct type_list { }; + +template struct type_list { }; + +template struct head; +template +struct head> { + using type = Head; +}; + +template using first_t = type_list; + +template using second_t = type_list; + +template class type_group_pair; +template +class type_group_pair, second_t> { + static constexpr size_t size = sizeof...(First) + sizeof...(Second); +}; + +template struct optional_ref { }; + +template class type_group_pair_it; +template +class type_group_pair_it, second_t> { +public: + using value_type = + decltype(std::tuple_cat(std::make_tuple(*std::declval()), + std::declval().get_as_tuple({})..., + std::declval().get_as_tuple({})...)); + + using ref_t = optional_ref; + + ref_t get(unsigned i) { return {}; } + + const value_type *getp(unsigned i) { return nullptr; } + + constexpr unsigned find(value_type const &v) { return 0; } +}; + +struct A { }; +struct B { }; +struct C { }; + +class R { +public: + type_list aboolint; + type_group_pair, type_list> abc; +}; +} +} \ No newline at end of file diff --git a/tests/t00064/test_case.h b/tests/t00064/test_case.h new file mode 100644 index 00000000..804a4f96 --- /dev/null +++ b/tests/t00064/test_case.h @@ -0,0 +1,90 @@ +/** + * tests/t00064/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("t00064", "[test-case][class]") +{ + auto [config, db] = load_config("t00064"); + + auto diagram = config.diagrams["t00064_class"]; + + REQUIRE(diagram->name == "t00064_class"); + + auto model = generate_class_diagram(*db, diagram); + + REQUIRE(model->name() == "t00064_class"); + + { + auto puml = generate_class_puml(diagram, *model); + AliasMatcher _A(puml); + + REQUIRE_THAT(puml, StartsWith("@startuml")); + REQUIRE_THAT(puml, EndsWith("@enduml\n")); + + REQUIRE_THAT(puml, !Contains("type-parameter-")); + + REQUIRE_THAT(puml, IsClass(_A("A"))); + REQUIRE_THAT(puml, IsClass(_A("B"))); + REQUIRE_THAT(puml, IsClass(_A("C"))); + REQUIRE_THAT(puml, IsClass(_A("R"))); + + REQUIRE_THAT(puml, IsClassTemplate("type_list", "Ts...")); + REQUIRE_THAT(puml, IsClassTemplate("type_list", "Ret(Arg &&),Ts...")); + REQUIRE_THAT(puml, IsClassTemplate("type_list", "T const,Ts...")); + + REQUIRE_THAT(puml, IsClassTemplate("head", "typename")); + REQUIRE_THAT(puml, IsClassTemplate("head", "type_list")); + REQUIRE_THAT( + puml, IsClassTemplate("type_group_pair", "typename,typename")); + REQUIRE_THAT(puml, + IsClassTemplate( + "type_group_pair", "type_list,type_list")); + REQUIRE_THAT(puml, + IsClassTemplate( + "type_group_pair", "type_list,type_list")); + + REQUIRE_THAT(puml, IsClassTemplate("optional_ref", "T")); + + REQUIRE_THAT(puml, + IsClassTemplate("type_group_pair_it", + "It,type_list,type_list")); + REQUIRE_THAT( + puml, (IsMethod("get", "ref_t", "unsigned int i"))); +#if LLVM_VERSION_MAJOR < 16 + REQUIRE_THAT(puml, + (IsMethod("getp", "value_type const*", "unsigned int i"))); + REQUIRE_THAT(puml, + (IsMethod("find", "unsigned int", "value_type const& v"))); +#else + REQUIRE_THAT(puml, + (IsMethod("getp", "const value_type *", "unsigned int i"))); + REQUIRE_THAT(puml, + (IsMethod("find", "unsigned int", "const value_type & v"))); + +#endif + save_puml( + config.output_directory() + "/" + diagram->name + ".puml", puml); + } + + { + auto j = generate_class_json(diagram, *model); + + using namespace json; + + 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 68ec4684..6313f195 100644 --- a/tests/test_cases.cc +++ b/tests/test_cases.cc @@ -300,6 +300,7 @@ using namespace clanguml::test::matchers; #include "t00061/test_case.h" #include "t00062/test_case.h" #include "t00063/test_case.h" +#include "t00064/test_case.h" /// /// Sequence diagram tests diff --git a/tests/test_cases.yaml b/tests/test_cases.yaml index 1835d750..58189119 100644 --- a/tests/test_cases.yaml +++ b/tests/test_cases.yaml @@ -186,6 +186,9 @@ test_cases: - name: t00063 title: Element types diagram filter test case description: + - name: t00064 + title: Template type list test case + description: Sequence diagrams: - name: t20001 title: Basic sequence diagram test case