diff --git a/CHANGELOG.md b/CHANGELOG.md index 1886d5ec8..b5bb777d9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,6 @@ # CHANGELOG + * Updated thirdparty dependencies (#306) * Added regular expression support to remove_compile_flags (#303) * Fixed repeated comments in sequence diagrams (#301) * Added regular expression support to glob patterns (#299) diff --git a/docs/test_cases/t00002_class.svg b/docs/test_cases/t00002_class.svg index 0049cd0f0..e3d21ec18 100644 --- a/docs/test_cases/t00002_class.svg +++ b/docs/test_cases/t00002_class.svg @@ -4,122 +4,122 @@ Basic class diagram example - + A - + - + foo_a() = 0 : void - + - + foo_c() = 0 : void - + B - + - + foo_a() : void - + C - + - + foo_c() : void - + D - + - + foo_a() : void - + - + foo_c() : void - + - + as : std::vector<A *> - + E - + - + foo_a() : void - + - + foo_c() : void - + - + as : std::vector<A *> diff --git a/docs/test_cases/t00002_class_mermaid.svg b/docs/test_cases/t00002_class_mermaid.svg index d6405b38b..9945add06 100644 --- a/docs/test_cases/t00002_class_mermaid.svg +++ b/docs/test_cases/t00002_class_mermaid.svg @@ -169,7 +169,7 @@ - + @@ -198,7 +198,7 @@ - + @@ -222,7 +222,7 @@ - + @@ -246,7 +246,7 @@ - + @@ -280,7 +280,7 @@ - + diff --git a/docs/test_cases/t00003_class.svg b/docs/test_cases/t00003_class.svg index 258930664..0a517dc60 100644 --- a/docs/test_cases/t00003_class.svg +++ b/docs/test_cases/t00003_class.svg @@ -3,227 +3,227 @@ - + A - + - + A() = default : void - + - + A(int i) : void - + - + A(A &&) = default : void - + - + A(const A &) = deleted : void A<T>(T t) : void - + - + ~A() = default : void - + - + operator=(A && other) noexcept : A & - + - + operator=(A & other) noexcept : A & - + - + operator++() : A & - + - + auto_method() : int - + - + basic_method() : void - + - + const_method() const : void - + - + create_from_int(int i) : A - + - + default_int(int i = 12) : int - + - + default_string(int i, std::string s = "abc") : std::string - + - + double_int(const int i) : int - + - + private_method() : void - + - + protected_method() : void - + - + size() constexpr const : std::size_t - + - + static_method() : int - + - + sum(const double a, const double b) : int - + - + a_ : int - + - + auto_member : const unsigned long - + - + b_ : int - + - + c_ : int - + - + compare : std::function<bool (const int)> - + - + private_member : int - + - + protected_member : int - + - + public_member : int - + - + static_const_int : const int - + - + static_int : int diff --git a/docs/test_cases/t00003_class_mermaid.svg b/docs/test_cases/t00003_class_mermaid.svg index e35b2a3a0..ba1125604 100644 --- a/docs/test_cases/t00003_class_mermaid.svg +++ b/docs/test_cases/t00003_class_mermaid.svg @@ -52,7 +52,7 @@ - + diff --git a/docs/test_cases/t00004_class.svg b/docs/test_cases/t00004_class.svg index 5188f663a..b376db9cc 100644 --- a/docs/test_cases/t00004_class.svg +++ b/docs/test_cases/t00004_class.svg @@ -3,7 +3,7 @@ - + @@ -16,7 +16,7 @@ - + @@ -24,23 +24,23 @@ B - + - + aa : AA - + - + color : Color * - + @@ -53,31 +53,31 @@ - + A - + - + foo() const : void - + - + foo2() const : void - + @@ -87,7 +87,7 @@ - + @@ -100,7 +100,7 @@ - + @@ -108,16 +108,16 @@ A::AA::AAA - + - + lights : Lights - + @@ -129,7 +129,7 @@ - + @@ -139,23 +139,23 @@ T - + - + b_int : B<int> - + - + t : T - + @@ -165,7 +165,7 @@ - + @@ -175,7 +175,7 @@ - + @@ -187,7 +187,7 @@ - + @@ -197,16 +197,16 @@ V - + - + b : V - + @@ -218,7 +218,7 @@ - + @@ -228,7 +228,7 @@ - + @@ -241,7 +241,7 @@ - + diff --git a/docs/test_cases/t00004_class_mermaid.svg b/docs/test_cases/t00004_class_mermaid.svg index 0ebcd9930..928d8a1c5 100644 --- a/docs/test_cases/t00004_class_mermaid.svg +++ b/docs/test_cases/t00004_class_mermaid.svg @@ -246,7 +246,7 @@ - + @@ -280,7 +280,7 @@ - + @@ -309,7 +309,7 @@ - + @@ -343,7 +343,7 @@ - + @@ -372,7 +372,7 @@ - + @@ -391,7 +391,7 @@ - + @@ -425,7 +425,7 @@ - + @@ -449,7 +449,7 @@ - + @@ -468,7 +468,7 @@ - + @@ -497,7 +497,7 @@ - + @@ -516,7 +516,7 @@ - + @@ -535,7 +535,7 @@ - + @@ -564,7 +564,7 @@ - + @@ -588,7 +588,7 @@ - + @@ -617,7 +617,7 @@ - + @@ -636,7 +636,7 @@ - + @@ -670,7 +670,7 @@ - + diff --git a/docs/test_cases/t00005_class.svg b/docs/test_cases/t00005_class.svg index 8832e5456..1f9ff0d8b 100644 --- a/docs/test_cases/t00005_class.svg +++ b/docs/test_cases/t00005_class.svg @@ -3,7 +3,7 @@ - + @@ -13,7 +13,7 @@ - + @@ -23,7 +23,7 @@ - + @@ -33,7 +33,7 @@ - + @@ -43,7 +43,7 @@ - + @@ -53,7 +53,7 @@ - + @@ -63,7 +63,7 @@ - + @@ -73,7 +73,7 @@ - + @@ -83,7 +83,7 @@ - + @@ -93,7 +93,7 @@ - + @@ -103,7 +103,7 @@ - + @@ -113,7 +113,7 @@ - + @@ -121,109 +121,109 @@ R - + - + a : A - + - + b : B * - + - + c : C & - + - + d : const D * - + - + e : const E & - + - + f : F && - + - + g : G ** - + - + h : H *** - + - + i : I *& - + - + j : volatile J * - + - + k : K * - + - + some_int : int - + - + some_int_pointer : int * - + - + some_int_pointer_pointer : int ** - + - + some_int_reference : int & diff --git a/docs/test_cases/t00005_class_mermaid.svg b/docs/test_cases/t00005_class_mermaid.svg index f98fee15a..58ef21cde 100644 --- a/docs/test_cases/t00005_class_mermaid.svg +++ b/docs/test_cases/t00005_class_mermaid.svg @@ -186,7 +186,7 @@ - + @@ -205,7 +205,7 @@ - + @@ -224,7 +224,7 @@ - + @@ -243,7 +243,7 @@ - + @@ -262,7 +262,7 @@ - + @@ -281,7 +281,7 @@ - + @@ -300,7 +300,7 @@ - + @@ -319,7 +319,7 @@ - + @@ -338,7 +338,7 @@ - + @@ -357,7 +357,7 @@ - + @@ -376,7 +376,7 @@ - + @@ -395,7 +395,7 @@ - + diff --git a/docs/test_cases/t00006_class.svg b/docs/test_cases/t00006_class.svg index e956ea1f7..7d5954feb 100644 --- a/docs/test_cases/t00006_class.svg +++ b/docs/test_cases/t00006_class.svg @@ -3,7 +3,7 @@ - + @@ -13,7 +13,7 @@ - + @@ -23,7 +23,7 @@ - + @@ -33,7 +33,7 @@ - + @@ -43,7 +43,7 @@ - + @@ -53,7 +53,7 @@ - + @@ -63,7 +63,7 @@ - + @@ -73,7 +73,7 @@ - + @@ -83,7 +83,7 @@ - + @@ -93,7 +93,7 @@ - + @@ -103,7 +103,7 @@ - + @@ -113,7 +113,7 @@ - + @@ -123,7 +123,7 @@ - + @@ -133,7 +133,7 @@ - + @@ -143,7 +143,7 @@ - + @@ -153,7 +153,7 @@ - + @@ -163,7 +163,7 @@ - + @@ -173,16 +173,16 @@ T - + - + data : std::vector<T> - + @@ -194,7 +194,7 @@ - + @@ -202,95 +202,95 @@ R - + - + a : std::vector<A> - + - + b : std::vector<B *> - + - + c : std::map<int,C> - + - + d : std::map<int,D *> - + - + e : custom_container<E> - + - + f : std::vector<std::vector<F>> - + - + g : std::map<int,std::vector<G *>> - + - + h : std::array<H,10> - + - + i : std::array<I *,5> - + - + j : J[10] - + - + k : K *[20] - + - + lm : std::vector<std::pair<L,M>> - + - + ns : std::tuple<N,NN,NNN> diff --git a/docs/test_cases/t00006_class_mermaid.svg b/docs/test_cases/t00006_class_mermaid.svg index cd56c5de8..5eb25e40e 100644 --- a/docs/test_cases/t00006_class_mermaid.svg +++ b/docs/test_cases/t00006_class_mermaid.svg @@ -286,7 +286,7 @@ - + @@ -305,7 +305,7 @@ - + @@ -324,7 +324,7 @@ - + @@ -343,7 +343,7 @@ - + @@ -362,7 +362,7 @@ - + @@ -381,7 +381,7 @@ - + @@ -400,7 +400,7 @@ - + @@ -419,7 +419,7 @@ - + @@ -438,7 +438,7 @@ - + @@ -457,7 +457,7 @@ - + @@ -476,7 +476,7 @@ - + @@ -495,7 +495,7 @@ - + @@ -514,7 +514,7 @@ - + @@ -533,7 +533,7 @@ - + @@ -552,7 +552,7 @@ - + @@ -571,7 +571,7 @@ - + @@ -590,7 +590,7 @@ - + @@ -614,7 +614,7 @@ - + @@ -633,7 +633,7 @@ - + diff --git a/docs/test_cases/t00007_class.svg b/docs/test_cases/t00007_class.svg index 3f851bff5..079e999c3 100644 --- a/docs/test_cases/t00007_class.svg +++ b/docs/test_cases/t00007_class.svg @@ -3,7 +3,7 @@ - + @@ -13,7 +13,7 @@ - + @@ -23,7 +23,7 @@ - + @@ -33,7 +33,7 @@ - + @@ -41,25 +41,25 @@ R - + - + a : std::unique_ptr<A> - + - + b : std::shared_ptr<B> - + - + c : std::weak_ptr<C> diff --git a/docs/test_cases/t00007_class_mermaid.svg b/docs/test_cases/t00007_class_mermaid.svg index 60f425e19..baedd727f 100644 --- a/docs/test_cases/t00007_class_mermaid.svg +++ b/docs/test_cases/t00007_class_mermaid.svg @@ -90,7 +90,7 @@ - + @@ -109,7 +109,7 @@ - + @@ -128,7 +128,7 @@ - + @@ -147,7 +147,7 @@ - + diff --git a/docs/test_cases/t00008_class.svg b/docs/test_cases/t00008_class.svg index 0da69d0f3..261b9f41d 100644 --- a/docs/test_cases/t00008_class.svg +++ b/docs/test_cases/t00008_class.svg @@ -3,7 +3,7 @@ - + @@ -13,51 +13,51 @@ T,P=T,CMP=nullptr,int N=3 - + - + comparator : CMP - + - + ints : std::array<int,N> - + - + pointer : T * - + - + reference : T & - + - + value : T - + - + values : std::vector<P> - + @@ -67,16 +67,16 @@ T - + - + values : std::vector<T> - + @@ -86,16 +86,16 @@ T,C<> - + - + template_template : C<T> - + @@ -107,7 +107,7 @@ - + @@ -117,24 +117,24 @@ D<Items...>(std::tuple<Items...> *) : void - + - + add(int i) : void - + - + ints : B<int,Vector> - + @@ -144,7 +144,7 @@ - + @@ -153,17 +153,17 @@ ET - + - + get(ET * d) : DT * - + @@ -172,11 +172,11 @@ char - + - + getDecl(char * c) : DeclType * diff --git a/docs/test_cases/t00008_class_mermaid.svg b/docs/test_cases/t00008_class_mermaid.svg index 357b183ce..c452a414d 100644 --- a/docs/test_cases/t00008_class_mermaid.svg +++ b/docs/test_cases/t00008_class_mermaid.svg @@ -114,7 +114,7 @@ - + @@ -163,7 +163,7 @@ - + @@ -187,7 +187,7 @@ - + @@ -211,7 +211,7 @@ - + @@ -230,7 +230,7 @@ - + @@ -264,7 +264,7 @@ - + @@ -283,7 +283,7 @@ - + @@ -307,7 +307,7 @@ - + diff --git a/docs/test_cases/t00009_class.svg b/docs/test_cases/t00009_class.svg index 26f422bd3..c11e74505 100644 --- a/docs/test_cases/t00009_class.svg +++ b/docs/test_cases/t00009_class.svg @@ -3,7 +3,7 @@ - + @@ -13,16 +13,16 @@ T - + - + value : T - + @@ -34,7 +34,7 @@ - + @@ -46,7 +46,7 @@ - + @@ -58,7 +58,7 @@ - + @@ -66,25 +66,25 @@ B - + - + aint : A<int> - + - + astring : A<std::string> * - + - + avector : A<std::vector<std::string>> & diff --git a/docs/test_cases/t00009_class_mermaid.svg b/docs/test_cases/t00009_class_mermaid.svg index b308c55b1..3d0b93fd4 100644 --- a/docs/test_cases/t00009_class_mermaid.svg +++ b/docs/test_cases/t00009_class_mermaid.svg @@ -150,7 +150,7 @@ - + @@ -174,7 +174,7 @@ - + @@ -193,7 +193,7 @@ - + @@ -212,7 +212,7 @@ - + @@ -231,7 +231,7 @@ - + diff --git a/docs/test_cases/t00010_class.svg b/docs/test_cases/t00010_class.svg index ba536021a..6940f56d3 100644 --- a/docs/test_cases/t00010_class.svg +++ b/docs/test_cases/t00010_class.svg @@ -3,7 +3,7 @@ - + @@ -13,23 +13,23 @@ T,P - + - + first : T - + - + second : P - + @@ -41,7 +41,7 @@ - + @@ -51,16 +51,16 @@ T - + - + astring : A<T,std::string> - + @@ -72,7 +72,7 @@ - + @@ -80,11 +80,11 @@ C - + - + aintstring : B<int> diff --git a/docs/test_cases/t00010_class_mermaid.svg b/docs/test_cases/t00010_class_mermaid.svg index fb1f89ec9..b4976dfc3 100644 --- a/docs/test_cases/t00010_class_mermaid.svg +++ b/docs/test_cases/t00010_class_mermaid.svg @@ -102,7 +102,7 @@ - + @@ -131,7 +131,7 @@ - + @@ -150,7 +150,7 @@ - + @@ -174,7 +174,7 @@ - + @@ -193,7 +193,7 @@ - + diff --git a/docs/test_cases/t00011_class.svg b/docs/test_cases/t00011_class.svg index 94b324fbd..516a6121b 100644 --- a/docs/test_cases/t00011_class.svg +++ b/docs/test_cases/t00011_class.svg @@ -3,7 +3,7 @@ - + @@ -13,52 +13,52 @@ T - + - + value : T - + A - + - + foo() : void - + B - + - + foo() : void - + - + m_a : A * diff --git a/docs/test_cases/t00011_class_mermaid.svg b/docs/test_cases/t00011_class_mermaid.svg index ddffe7384..5130b12a6 100644 --- a/docs/test_cases/t00011_class_mermaid.svg +++ b/docs/test_cases/t00011_class_mermaid.svg @@ -78,7 +78,7 @@ - + @@ -102,7 +102,7 @@ - + @@ -126,7 +126,7 @@ - + diff --git a/docs/test_cases/t00012_class.svg b/docs/test_cases/t00012_class.svg index 7aabca2a8..3cc2852e5 100644 --- a/docs/test_cases/t00012_class.svg +++ b/docs/test_cases/t00012_class.svg @@ -3,7 +3,7 @@ - + @@ -13,23 +13,23 @@ T,Ts... - + - + value : T - + - + values : std::variant<Ts...> - + @@ -39,16 +39,16 @@ int... Is - + - + ints : std::array<int,sizeof...(Is)> - + @@ -58,16 +58,16 @@ T,int... Is - + - + ints : std::array<T,sizeof...(Is)> - + @@ -79,7 +79,7 @@ - + @@ -91,7 +91,7 @@ - + @@ -103,7 +103,7 @@ - + @@ -115,7 +115,7 @@ - + @@ -127,7 +127,7 @@ - + @@ -135,39 +135,39 @@ 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> diff --git a/docs/test_cases/t00012_class_mermaid.svg b/docs/test_cases/t00012_class_mermaid.svg index d392977b8..fe7a7ccaa 100644 --- a/docs/test_cases/t00012_class_mermaid.svg +++ b/docs/test_cases/t00012_class_mermaid.svg @@ -174,7 +174,7 @@ - + @@ -203,7 +203,7 @@ - + @@ -227,7 +227,7 @@ - + @@ -251,7 +251,7 @@ - + @@ -270,7 +270,7 @@ - + @@ -289,7 +289,7 @@ - + @@ -308,7 +308,7 @@ - + @@ -327,7 +327,7 @@ - + @@ -346,7 +346,7 @@ - + diff --git a/docs/test_cases/t00013_class.svg b/docs/test_cases/t00013_class.svg index c336c9b5d..3ce1275d2 100644 --- a/docs/test_cases/t00013_class.svg +++ b/docs/test_cases/t00013_class.svg @@ -3,7 +3,7 @@ - + @@ -13,16 +13,16 @@ T - + - + f : T - + @@ -34,7 +34,7 @@ - + @@ -42,16 +42,16 @@ A - + - + a : int - + @@ -59,16 +59,16 @@ B - + - + b : int - + @@ -76,40 +76,40 @@ C - + - + c : int - + D - + - + print(R * r) : void - + - + d : int - + @@ -119,16 +119,16 @@ T - + - + e : T - + @@ -138,23 +138,23 @@ T,Args... - + - + args : std::tuple<Args...> - + - + g : T - + @@ -166,7 +166,7 @@ - + @@ -178,7 +178,7 @@ - + @@ -190,93 +190,93 @@ - + R - + - + get_a(A * a) : int - + - + get_b(B & b) : int - + - + get_c(C c) : int - + - + get_const_b(const B & b) : int - + - + get_d(D && d) : int - + - + get_d2(D && d) : int get_e<T>(E<T> e) : T get_f<T>(const F<T> & f) : T - + - + get_int_e(const E<int> & e) : int - + - + get_int_e2(E<int> & e) : int - + - + get_int_f(const ABCD::F<int> & f) : int - + - + estring : E<std::string> - + - + gintstring : G<int,float,std::string> diff --git a/docs/test_cases/t00013_class_mermaid.svg b/docs/test_cases/t00013_class_mermaid.svg index ffa488439..db7d0f2af 100644 --- a/docs/test_cases/t00013_class_mermaid.svg +++ b/docs/test_cases/t00013_class_mermaid.svg @@ -234,7 +234,7 @@ - + @@ -258,7 +258,7 @@ - + @@ -277,7 +277,7 @@ - + @@ -301,7 +301,7 @@ - + @@ -325,7 +325,7 @@ - + @@ -349,7 +349,7 @@ - + @@ -378,7 +378,7 @@ - + @@ -402,7 +402,7 @@ - + @@ -431,7 +431,7 @@ - + @@ -450,7 +450,7 @@ - + @@ -469,7 +469,7 @@ - + @@ -488,7 +488,7 @@ - + diff --git a/docs/test_cases/t00014_class.svg b/docs/test_cases/t00014_class.svg index 52d52546c..94fe0cf24 100644 --- a/docs/test_cases/t00014_class.svg +++ b/docs/test_cases/t00014_class.svg @@ -3,7 +3,7 @@ - + @@ -13,23 +13,23 @@ T,P - + - + p : P - + - + t : T - + @@ -37,16 +37,16 @@ B - + - + value : std::string - + @@ -58,7 +58,7 @@ - + @@ -70,7 +70,7 @@ - + @@ -82,7 +82,7 @@ - + @@ -94,7 +94,7 @@ - + @@ -106,7 +106,7 @@ - + @@ -118,7 +118,7 @@ - + @@ -130,7 +130,7 @@ - + @@ -142,7 +142,7 @@ - + @@ -154,7 +154,7 @@ - + @@ -166,7 +166,7 @@ - + @@ -178,7 +178,7 @@ - + @@ -190,7 +190,7 @@ - + @@ -222,7 +222,7 @@ - + @@ -232,116 +232,116 @@ T - + - + abool : APtr<bool> - + - + aboolfloat : AAPtr<bool,float> - + - + afloat : ASharedPtr<float> - + - + atfloat : AAPtr<T,float> - + - + bapair : PairPairBA<bool> - + - + boolstring : A<bool,std::string> - + - + bs : BVector - + - + bs2 : BVector2 - + - + bstringstring : BStringString - + - + cb : SimpleCallback<ACharString> - + - + floatstring : AStringPtr<float> - + - + gcb : GenericCallback<AWCharString> - + - + intstring : AIntString - + - + stringstring : AStringString - + - + vcb : VoidCallback - + - + vps : VectorPtr<B> diff --git a/docs/test_cases/t00014_class_mermaid.svg b/docs/test_cases/t00014_class_mermaid.svg index 343473ee3..0a3f2a768 100644 --- a/docs/test_cases/t00014_class_mermaid.svg +++ b/docs/test_cases/t00014_class_mermaid.svg @@ -474,7 +474,7 @@ - + @@ -503,7 +503,7 @@ - + @@ -527,7 +527,7 @@ - + @@ -546,7 +546,7 @@ - + @@ -565,7 +565,7 @@ - + @@ -584,7 +584,7 @@ - + @@ -603,7 +603,7 @@ - + @@ -622,7 +622,7 @@ - + @@ -641,7 +641,7 @@ - + @@ -660,7 +660,7 @@ - + @@ -679,7 +679,7 @@ - + @@ -698,7 +698,7 @@ - + @@ -717,7 +717,7 @@ - + @@ -736,7 +736,7 @@ - + @@ -755,7 +755,7 @@ - + @@ -808,7 +808,7 @@ - + diff --git a/docs/test_cases/t00015_class.svg b/docs/test_cases/t00015_class.svg index 25e1cbc1d..e6dc0fbec 100644 --- a/docs/test_cases/t00015_class.svg +++ b/docs/test_cases/t00015_class.svg @@ -3,7 +3,7 @@ - + @@ -13,7 +13,7 @@ - + @@ -23,7 +23,7 @@ - + @@ -33,7 +33,7 @@ - + @@ -43,7 +43,7 @@ - + diff --git a/docs/test_cases/t00015_class_mermaid.svg b/docs/test_cases/t00015_class_mermaid.svg index e176e8990..e254c6a4d 100644 --- a/docs/test_cases/t00015_class_mermaid.svg +++ b/docs/test_cases/t00015_class_mermaid.svg @@ -84,7 +84,7 @@ - + @@ -103,7 +103,7 @@ - + @@ -122,7 +122,7 @@ - + @@ -141,7 +141,7 @@ - + @@ -160,7 +160,7 @@ - + diff --git a/docs/test_cases/t00016_class.svg b/docs/test_cases/t00016_class.svg index 3155d7330..a82083de4 100644 --- a/docs/test_cases/t00016_class.svg +++ b/docs/test_cases/t00016_class.svg @@ -3,7 +3,7 @@ - + @@ -17,7 +17,7 @@ value : enum - + @@ -31,7 +31,7 @@ value : enum - + @@ -45,7 +45,7 @@ value : enum - + @@ -59,7 +59,7 @@ value : enum - + @@ -73,7 +73,7 @@ value : enum - + diff --git a/docs/test_cases/t00016_class_mermaid.svg b/docs/test_cases/t00016_class_mermaid.svg index c483a07f9..faadc86b6 100644 --- a/docs/test_cases/t00016_class_mermaid.svg +++ b/docs/test_cases/t00016_class_mermaid.svg @@ -114,7 +114,7 @@ - + @@ -138,7 +138,7 @@ - + @@ -162,7 +162,7 @@ - + @@ -186,7 +186,7 @@ - + @@ -210,7 +210,7 @@ - + @@ -234,7 +234,7 @@ - + diff --git a/docs/test_cases/t00017_class.svg b/docs/test_cases/t00017_class.svg index 51141eb37..78f2e3899 100644 --- a/docs/test_cases/t00017_class.svg +++ b/docs/test_cases/t00017_class.svg @@ -3,7 +3,7 @@ - + @@ -13,7 +13,7 @@ - + @@ -23,7 +23,7 @@ - + @@ -33,7 +33,7 @@ - + @@ -43,7 +43,7 @@ - + @@ -53,7 +53,7 @@ - + @@ -63,7 +63,7 @@ - + @@ -73,7 +73,7 @@ - + @@ -83,7 +83,7 @@ - + @@ -93,7 +93,7 @@ - + @@ -103,7 +103,7 @@ - + @@ -113,47 +113,47 @@ - + R - + - + R(int & some_int, C & cc, const E & ee, F && ff, I *& ii) : void - + - + some_int : int - + - + some_int_pointer : int * - + - + some_int_pointer_pointer : int ** - + - + some_int_reference : int & diff --git a/docs/test_cases/t00017_class_mermaid.svg b/docs/test_cases/t00017_class_mermaid.svg index debccf96e..ed8bd1f81 100644 --- a/docs/test_cases/t00017_class_mermaid.svg +++ b/docs/test_cases/t00017_class_mermaid.svg @@ -186,7 +186,7 @@ - + @@ -205,7 +205,7 @@ - + @@ -224,7 +224,7 @@ - + @@ -243,7 +243,7 @@ - + @@ -262,7 +262,7 @@ - + @@ -281,7 +281,7 @@ - + @@ -300,7 +300,7 @@ - + @@ -319,7 +319,7 @@ - + @@ -338,7 +338,7 @@ - + @@ -357,7 +357,7 @@ - + @@ -376,7 +376,7 @@ - + @@ -395,7 +395,7 @@ - + diff --git a/docs/test_cases/t00018_class.svg b/docs/test_cases/t00018_class.svg index 78b5b9a2b..da8956264 100644 --- a/docs/test_cases/t00018_class.svg +++ b/docs/test_cases/t00018_class.svg @@ -3,123 +3,123 @@ - + impl::widget - + - + widget(int n) : void - + - + draw(const widget & w) const : void - + - + draw(const widget & w) : void - + - + n : int - + widget - + - + widget(int) : void - + - + widget(widget &&) : void - + - + widget(const widget &) = deleted : void - + - + ~widget() : void - + - + operator=(widget &&) : widget & - + - + operator=(const widget &) = deleted : widget & - + - + draw() const : void - + - + draw() : void - + - + shown() const : bool - + - + pImpl : std::unique_ptr<impl::widget> diff --git a/docs/test_cases/t00018_class_mermaid.svg b/docs/test_cases/t00018_class_mermaid.svg index df06970e0..4a5b33d70 100644 --- a/docs/test_cases/t00018_class_mermaid.svg +++ b/docs/test_cases/t00018_class_mermaid.svg @@ -78,7 +78,7 @@ - + @@ -117,7 +117,7 @@ - + diff --git a/docs/test_cases/t00019_class.svg b/docs/test_cases/t00019_class.svg index d774e16c6..6caa77b00 100644 --- a/docs/test_cases/t00019_class.svg +++ b/docs/test_cases/t00019_class.svg @@ -3,46 +3,46 @@ - + Base - + - + Base() = default : void - + - + ~Base() constexpr = default : void - + - + m1() : int - + - + m2() : std::string - + @@ -51,24 +51,24 @@ LowerLayer - + - + m1() : int - + - + m2() : std::string - + @@ -77,17 +77,17 @@ LowerLayer - + - + all_calls_count() const : int - + @@ -96,47 +96,47 @@ LowerLayer - + - + m1() : int - + - + m1_calls() const : int - + - + m2() : std::string - + - + m2_calls() const : int - + - + m_m1_calls : int - + - + m_m2_calls : int @@ -171,7 +171,7 @@ - + @@ -179,11 +179,11 @@ A - + - + layers : std::unique_ptr<Layer1<Layer2<Layer3<Base>>>> diff --git a/docs/test_cases/t00019_class_mermaid.svg b/docs/test_cases/t00019_class_mermaid.svg index ecc3f8f63..123f3b447 100644 --- a/docs/test_cases/t00019_class_mermaid.svg +++ b/docs/test_cases/t00019_class_mermaid.svg @@ -132,7 +132,7 @@ - + @@ -171,7 +171,7 @@ - + @@ -200,7 +200,7 @@ - + @@ -224,7 +224,7 @@ - + @@ -324,7 +324,7 @@ - + diff --git a/docs/test_cases/t00020_class.svg b/docs/test_cases/t00020_class.svg index 9d3628672..2dd599197 100644 --- a/docs/test_cases/t00020_class.svg +++ b/docs/test_cases/t00020_class.svg @@ -3,191 +3,191 @@ - + ProductA - + - + ~ProductA() constexpr = default : void - + - + sell(int price) const = 0 : bool - + ProductA1 - + - + sell(int price) const : bool - + ProductA2 - + - + sell(int price) const : bool - + ProductB - + - + ~ProductB() constexpr = default : void - + - + buy(int price) const = 0 : bool - + ProductB1 - + - + buy(int price) const : bool - + ProductB2 - + - + buy(int price) const : bool - + AbstractFactory - + - + make_a() const = 0 : std::unique_ptr<ProductA> - + - + make_b() const = 0 : std::unique_ptr<ProductB> - + Factory1 - + - + make_a() const : std::unique_ptr<ProductA> - + - + make_b() const : std::unique_ptr<ProductB> - + Factory2 - + - + make_a() const : std::unique_ptr<ProductA> - + - + make_b() const : std::unique_ptr<ProductB> diff --git a/docs/test_cases/t00020_class_mermaid.svg b/docs/test_cases/t00020_class_mermaid.svg index 3c2685c3f..6d6716169 100644 --- a/docs/test_cases/t00020_class_mermaid.svg +++ b/docs/test_cases/t00020_class_mermaid.svg @@ -226,7 +226,7 @@ - + @@ -255,7 +255,7 @@ - + @@ -279,7 +279,7 @@ - + @@ -303,7 +303,7 @@ - + @@ -332,7 +332,7 @@ - + @@ -356,7 +356,7 @@ - + @@ -380,7 +380,7 @@ - + @@ -409,7 +409,7 @@ - + @@ -438,7 +438,7 @@ - + diff --git a/docs/test_cases/t00021_class.svg b/docs/test_cases/t00021_class.svg index 4372ee197..f5bc10e8d 100644 --- a/docs/test_cases/t00021_class.svg +++ b/docs/test_cases/t00021_class.svg @@ -3,164 +3,164 @@ - + Visitor - + - + ~Visitor() constexpr = default : void - + - + visit_A(const A & item) const = 0 : void - + - + visit_B(const B & item) const = 0 : void - + Visitor1 - + - + visit_A(const A & item) const : void - + - + visit_B(const B & item) const : void - + Visitor2 - + - + visit_A(const A & item) const : void - + - + visit_B(const B & item) const : void - + Visitor3 - + - + visit_A(const A & item) const : void - + - + visit_B(const B & item) const : void - + Item - + - + ~Item() constexpr = default : void - + - + accept(const Visitor & visitor) const = 0 : void - + A - + - + accept(const Visitor & visitor) const : void - + B - + - + accept(const Visitor & visitor) const : void diff --git a/docs/test_cases/t00021_class_mermaid.svg b/docs/test_cases/t00021_class_mermaid.svg index e7aed9eea..8debbd2de 100644 --- a/docs/test_cases/t00021_class_mermaid.svg +++ b/docs/test_cases/t00021_class_mermaid.svg @@ -236,7 +236,7 @@ - + @@ -270,7 +270,7 @@ - + @@ -299,7 +299,7 @@ - + @@ -328,7 +328,7 @@ - + @@ -357,7 +357,7 @@ - + @@ -386,7 +386,7 @@ - + @@ -410,7 +410,7 @@ - + diff --git a/docs/test_cases/t00022_class.svg b/docs/test_cases/t00022_class.svg index f4b4e15e3..d1d4f3579 100644 --- a/docs/test_cases/t00022_class.svg +++ b/docs/test_cases/t00022_class.svg @@ -3,80 +3,80 @@ - + A - + - + method1() = 0 : void - + - + method2() = 0 : void - + - + template_method() : void - + A1 - + - + method1() : void - + - + method2() : void - + A2 - + - + method1() : void - + - + method2() : void diff --git a/docs/test_cases/t00022_class_mermaid.svg b/docs/test_cases/t00022_class_mermaid.svg index a60df7227..eb4d73d65 100644 --- a/docs/test_cases/t00022_class_mermaid.svg +++ b/docs/test_cases/t00022_class_mermaid.svg @@ -74,7 +74,7 @@ - + @@ -108,7 +108,7 @@ - + @@ -137,7 +137,7 @@ - + diff --git a/docs/test_cases/t00023_class.svg b/docs/test_cases/t00023_class.svg index d08bfea69..cda34eec6 100644 --- a/docs/test_cases/t00023_class.svg +++ b/docs/test_cases/t00023_class.svg @@ -3,110 +3,110 @@ - + Strategy - + - + ~Strategy() constexpr = default : void - + - + algorithm() = 0 : void - + StrategyA - + - + algorithm() : void - + StrategyB - + - + algorithm() : void - + StrategyC - + - + algorithm() : void - + Context - + - + Context(std::unique_ptr<Strategy> strategy) : void - + - + apply() : void - + - + m_strategy : std::unique_ptr<Strategy> diff --git a/docs/test_cases/t00023_class_mermaid.svg b/docs/test_cases/t00023_class_mermaid.svg index 675f08ae8..ceb018da9 100644 --- a/docs/test_cases/t00023_class_mermaid.svg +++ b/docs/test_cases/t00023_class_mermaid.svg @@ -96,7 +96,7 @@ - + @@ -125,7 +125,7 @@ - + @@ -149,7 +149,7 @@ - + @@ -173,7 +173,7 @@ - + @@ -197,7 +197,7 @@ - + diff --git a/docs/test_cases/t00024_class.svg b/docs/test_cases/t00024_class.svg index 93280d539..beb3c18f0 100644 --- a/docs/test_cases/t00024_class.svg +++ b/docs/test_cases/t00024_class.svg @@ -3,121 +3,121 @@ - + Target - + - + ~Target() = 0 : void - + - + m1() = 0 : void - + - + m2() = 0 : void - + Target1 - + - + m1() : void - + - + m2() : void - + Target2 - + - + m1() : void - + - + m2() : void - + Proxy - + - + Proxy(std::shared_ptr<Target> target) : void - + - + m1() : void - + - + m2() : void - + - + m_target : std::shared_ptr<Target> diff --git a/docs/test_cases/t00024_class_mermaid.svg b/docs/test_cases/t00024_class_mermaid.svg index 788b7032f..1410acdaf 100644 --- a/docs/test_cases/t00024_class_mermaid.svg +++ b/docs/test_cases/t00024_class_mermaid.svg @@ -96,7 +96,7 @@ - + @@ -130,7 +130,7 @@ - + @@ -159,7 +159,7 @@ - + @@ -188,7 +188,7 @@ - + diff --git a/docs/test_cases/t00025_class.svg b/docs/test_cases/t00025_class.svg index 35534124b..45bf253bc 100644 --- a/docs/test_cases/t00025_class.svg +++ b/docs/test_cases/t00025_class.svg @@ -3,55 +3,55 @@ - + Target1 - + - + m1() : void - + - + m2() : void - + Target2 - + - + m1() : void - + - + m2() : void - + @@ -60,39 +60,39 @@ T - + - + Proxy(std::shared_ptr<T> target) : void - + - + m1() : void - + - + m2() : void - + - + m_target : std::shared_ptr<T> - + @@ -104,7 +104,7 @@ - + @@ -116,7 +116,7 @@ - + @@ -124,18 +124,18 @@ ProxyHolder - + - + proxy1 : Proxy<Target1> - + - + proxy2 : Proxy<Target2> diff --git a/docs/test_cases/t00025_class_mermaid.svg b/docs/test_cases/t00025_class_mermaid.svg index f11a5e1a4..318ff85d2 100644 --- a/docs/test_cases/t00025_class_mermaid.svg +++ b/docs/test_cases/t00025_class_mermaid.svg @@ -126,7 +126,7 @@ - + @@ -155,7 +155,7 @@ - + @@ -184,7 +184,7 @@ - + @@ -223,7 +223,7 @@ - + @@ -242,7 +242,7 @@ - + @@ -261,7 +261,7 @@ - + diff --git a/docs/test_cases/t00026_class.svg b/docs/test_cases/t00026_class.svg index b34406a69..5b4739f8b 100644 --- a/docs/test_cases/t00026_class.svg +++ b/docs/test_cases/t00026_class.svg @@ -3,7 +3,7 @@ - + @@ -12,32 +12,32 @@ T - + - + Memento(T && v) : void - + - + value() const : T - + - + m_value : T - + @@ -46,53 +46,53 @@ T - + - + Originator(T && v) : void - + - + load(const Memento<T> & m) : void - + - + memoize_value() const : Memento<T> - + - + print() const : void - + - + set(T && v) : void - + - + m_value : T - + @@ -101,31 +101,31 @@ T - + - + set_state(const std::string & s, Memento<T> && m) : void - + - + state(const std::string & n) : Memento<T> & - + - + m_mementos : std::unordered_map<std::string,Memento<T>> - + @@ -137,7 +137,7 @@ - + @@ -149,7 +149,7 @@ - + @@ -157,18 +157,18 @@ StringMemento - + - + caretaker : Caretaker<std::string> - + - + originator : Originator<std::string> diff --git a/docs/test_cases/t00026_class_mermaid.svg b/docs/test_cases/t00026_class_mermaid.svg index b313cc644..f75bea252 100644 --- a/docs/test_cases/t00026_class_mermaid.svg +++ b/docs/test_cases/t00026_class_mermaid.svg @@ -126,7 +126,7 @@ - + @@ -160,7 +160,7 @@ - + @@ -209,7 +209,7 @@ - + @@ -243,7 +243,7 @@ - + @@ -262,7 +262,7 @@ - + @@ -281,7 +281,7 @@ - + diff --git a/docs/test_cases/t00027_class.svg b/docs/test_cases/t00027_class.svg index d6666b899..9b316bdd5 100644 --- a/docs/test_cases/t00027_class.svg +++ b/docs/test_cases/t00027_class.svg @@ -3,32 +3,32 @@ - + Shape - + - + ~Shape() constexpr = default : void - + - + display() = 0 : void - + @@ -38,7 +38,7 @@ - + @@ -47,17 +47,17 @@ T<>... - + - + display() : void - + @@ -67,7 +67,7 @@ - + @@ -76,34 +76,34 @@ T<>... - + - + display() : void - + ShapeDecorator - + - + display() = 0 : void - + @@ -112,17 +112,17 @@ T - + - + display() : void - + @@ -131,17 +131,17 @@ T - + - + display() : void - + @@ -153,7 +153,7 @@ - + @@ -165,7 +165,7 @@ - + @@ -177,7 +177,7 @@ - + @@ -189,7 +189,7 @@ - + @@ -197,32 +197,32 @@ Window - + - + border : Line<Color,Weight> - + - + description : Text<Color> - + - + divider : Line<Color> - + - + title : Text<Color,Weight> diff --git a/docs/test_cases/t00027_class_mermaid.svg b/docs/test_cases/t00027_class_mermaid.svg index ef89fff70..df444738a 100644 --- a/docs/test_cases/t00027_class_mermaid.svg +++ b/docs/test_cases/t00027_class_mermaid.svg @@ -190,7 +190,7 @@ - + @@ -219,7 +219,7 @@ - + @@ -238,7 +238,7 @@ - + @@ -262,7 +262,7 @@ - + @@ -281,7 +281,7 @@ - + @@ -305,7 +305,7 @@ - + @@ -329,7 +329,7 @@ - + @@ -353,7 +353,7 @@ - + @@ -377,7 +377,7 @@ - + @@ -396,7 +396,7 @@ - + @@ -415,7 +415,7 @@ - + @@ -434,7 +434,7 @@ - + @@ -453,7 +453,7 @@ - + diff --git a/docs/test_cases/t00028_class.svg b/docs/test_cases/t00028_class.svg index 168eb742c..baef27bc3 100644 --- a/docs/test_cases/t00028_class.svg +++ b/docs/test_cases/t00028_class.svg @@ -3,7 +3,7 @@ - + @@ -18,7 +18,7 @@ A class note. - + @@ -33,7 +33,7 @@ B class note. - + @@ -48,7 +48,7 @@ C class note. - + @@ -65,7 +65,7 @@ class note. - + @@ -75,11 +75,11 @@ T - + - + param : T @@ -89,7 +89,7 @@ E template class note. - + @@ -99,7 +99,7 @@ - + @@ -117,7 +117,7 @@ F enum note. - + @@ -129,61 +129,61 @@ - + R - + - + R(C & c) : void - + - + aaa : A - + - + bbb : B * - + - + ccc : C & - + - + ddd : std::vector<std::shared_ptr<D>> - + - + eee : E<int> - + - + ggg : G ** diff --git a/docs/test_cases/t00028_class_mermaid.svg b/docs/test_cases/t00028_class_mermaid.svg index 8c76bede8..0b1f447d3 100644 --- a/docs/test_cases/t00028_class_mermaid.svg +++ b/docs/test_cases/t00028_class_mermaid.svg @@ -218,7 +218,7 @@ - + @@ -237,7 +237,7 @@ - + @@ -256,7 +256,7 @@ - + @@ -275,7 +275,7 @@ - + @@ -294,7 +294,7 @@ - + @@ -318,7 +318,7 @@ - + @@ -337,7 +337,7 @@ - + @@ -371,7 +371,7 @@ - + @@ -390,7 +390,7 @@ - + diff --git a/docs/test_cases/t00029_class.svg b/docs/test_cases/t00029_class.svg index f01a14a73..fc229ab8c 100644 --- a/docs/test_cases/t00029_class.svg +++ b/docs/test_cases/t00029_class.svg @@ -3,7 +3,7 @@ - + @@ -13,7 +13,7 @@ - + @@ -23,16 +23,16 @@ T - + - + param : T - + @@ -40,16 +40,16 @@ D - + - + param : T - + @@ -62,7 +62,7 @@ - + @@ -72,7 +72,7 @@ - + @@ -82,7 +82,7 @@ - + @@ -92,7 +92,7 @@ - + @@ -102,7 +102,7 @@ - + @@ -110,25 +110,25 @@ R - + - + g1 : G1 - + - + g3 : G3 & - + - + g4 : std::shared_ptr<G4> diff --git a/docs/test_cases/t00029_class_mermaid.svg b/docs/test_cases/t00029_class_mermaid.svg index a00244618..2fdad2082 100644 --- a/docs/test_cases/t00029_class_mermaid.svg +++ b/docs/test_cases/t00029_class_mermaid.svg @@ -78,7 +78,7 @@ - + @@ -97,7 +97,7 @@ - + @@ -121,7 +121,7 @@ - + @@ -145,7 +145,7 @@ - + @@ -179,7 +179,7 @@ - + @@ -198,7 +198,7 @@ - + @@ -217,7 +217,7 @@ - + @@ -236,7 +236,7 @@ - + @@ -255,7 +255,7 @@ - + diff --git a/docs/test_cases/t00030_class.svg b/docs/test_cases/t00030_class.svg index 7504c3334..38d6252a3 100644 --- a/docs/test_cases/t00030_class.svg +++ b/docs/test_cases/t00030_class.svg @@ -3,7 +3,7 @@ - + @@ -13,7 +13,7 @@ - + @@ -23,7 +23,7 @@ - + @@ -33,7 +33,7 @@ - + @@ -43,7 +43,7 @@ - + @@ -53,7 +53,7 @@ - + @@ -61,39 +61,39 @@ R - + - + aaa : A - + - + bbb : std::vector<B> - + - + ccc : std::vector<C> - + - + ddd : D - + - + eee : E * diff --git a/docs/test_cases/t00030_class_mermaid.svg b/docs/test_cases/t00030_class_mermaid.svg index 15330910a..2dd9aed5d 100644 --- a/docs/test_cases/t00030_class_mermaid.svg +++ b/docs/test_cases/t00030_class_mermaid.svg @@ -164,7 +164,7 @@ - + @@ -183,7 +183,7 @@ - + @@ -202,7 +202,7 @@ - + @@ -221,7 +221,7 @@ - + @@ -240,7 +240,7 @@ - + @@ -259,7 +259,7 @@ - + diff --git a/docs/test_cases/t00031_class.svg b/docs/test_cases/t00031_class.svg index f614cb43b..5634cf666 100644 --- a/docs/test_cases/t00031_class.svg +++ b/docs/test_cases/t00031_class.svg @@ -1,21 +1,21 @@ - + - + - + - - - + + + @@ -24,7 +24,7 @@ - + @@ -37,7 +37,7 @@ - + @@ -47,16 +47,16 @@ T - + - + ttt : T - + @@ -66,7 +66,7 @@ - + @@ -78,47 +78,47 @@ - + R - + - + add_b(B b) : void - + - + aaa : A * - + - + bbb : std::vector<B> - + - + ccc : C<int> - + - + ddd : D * diff --git a/docs/test_cases/t00031_class_mermaid.svg b/docs/test_cases/t00031_class_mermaid.svg index b4f6d247f..98168211a 100644 --- a/docs/test_cases/t00031_class_mermaid.svg +++ b/docs/test_cases/t00031_class_mermaid.svg @@ -126,7 +126,7 @@ - + @@ -145,7 +145,7 @@ - + @@ -179,7 +179,7 @@ - + @@ -203,7 +203,7 @@ - + @@ -222,7 +222,7 @@ - + @@ -241,7 +241,7 @@ - + diff --git a/docs/test_cases/t00032_class.svg b/docs/test_cases/t00032_class.svg index ec0805526..5d002580a 100644 --- a/docs/test_cases/t00032_class.svg +++ b/docs/test_cases/t00032_class.svg @@ -3,7 +3,7 @@ - + @@ -13,7 +13,7 @@ - + @@ -23,58 +23,58 @@ - + A - + - + operator()() : void - + B - + - + operator()() : void - + C - + - + operator()() : void - + @@ -84,16 +84,16 @@ T,L,Ts... - + - + counter : L - + @@ -105,7 +105,7 @@ - + @@ -113,11 +113,11 @@ R - + - + overload : Overload<TBase,int,A,B,C> diff --git a/docs/test_cases/t00032_class_mermaid.svg b/docs/test_cases/t00032_class_mermaid.svg index 877140a8f..f2e9137c9 100644 --- a/docs/test_cases/t00032_class_mermaid.svg +++ b/docs/test_cases/t00032_class_mermaid.svg @@ -128,7 +128,7 @@ - + @@ -147,7 +147,7 @@ - + @@ -166,7 +166,7 @@ - + @@ -190,7 +190,7 @@ - + @@ -214,7 +214,7 @@ - + @@ -238,7 +238,7 @@ - + @@ -262,7 +262,7 @@ - + @@ -281,7 +281,7 @@ - + diff --git a/docs/test_cases/t00033_class.svg b/docs/test_cases/t00033_class.svg index f555373b5..12684b95f 100644 --- a/docs/test_cases/t00033_class.svg +++ b/docs/test_cases/t00033_class.svg @@ -3,7 +3,7 @@ - + @@ -13,16 +13,16 @@ T - + - + aaa : T - + @@ -32,16 +32,16 @@ T - + - + bbb : T - + @@ -51,16 +51,16 @@ T - + - + ccc : T - + @@ -68,16 +68,16 @@ D - + - + ddd : int - + @@ -89,7 +89,7 @@ - + @@ -101,7 +101,7 @@ - + @@ -113,7 +113,7 @@ - + @@ -121,11 +121,11 @@ R - + - + abc : A<B<std::unique_ptr<C<D>>>> diff --git a/docs/test_cases/t00033_class_mermaid.svg b/docs/test_cases/t00033_class_mermaid.svg index a40217b5e..f118dbc61 100644 --- a/docs/test_cases/t00033_class_mermaid.svg +++ b/docs/test_cases/t00033_class_mermaid.svg @@ -138,7 +138,7 @@ - + @@ -162,7 +162,7 @@ - + @@ -186,7 +186,7 @@ - + @@ -210,7 +210,7 @@ - + @@ -234,7 +234,7 @@ - + @@ -253,7 +253,7 @@ - + @@ -272,7 +272,7 @@ - + @@ -291,7 +291,7 @@ - + diff --git a/docs/test_cases/t00034_class.svg b/docs/test_cases/t00034_class.svg index 7635a56c6..19b39df24 100644 --- a/docs/test_cases/t00034_class.svg +++ b/docs/test_cases/t00034_class.svg @@ -3,31 +3,31 @@ - + Void - + - + operator!=(const Void &) constexpr const : bool - + - + operator==(const Void &) constexpr const : bool - + @@ -39,7 +39,7 @@ - + @@ -51,7 +51,7 @@ - + @@ -63,7 +63,7 @@ - + @@ -75,7 +75,7 @@ - + @@ -85,7 +85,7 @@ - + @@ -93,18 +93,18 @@ R - + - + la : lift_void_t<A> * - + - + lv : lift_void_t<void> * diff --git a/docs/test_cases/t00034_class_mermaid.svg b/docs/test_cases/t00034_class_mermaid.svg index 7c7acc4af..27766afa3 100644 --- a/docs/test_cases/t00034_class_mermaid.svg +++ b/docs/test_cases/t00034_class_mermaid.svg @@ -102,7 +102,7 @@ - + @@ -131,7 +131,7 @@ - + @@ -150,7 +150,7 @@ - + @@ -169,7 +169,7 @@ - + @@ -188,7 +188,7 @@ - + @@ -207,7 +207,7 @@ - + @@ -226,7 +226,7 @@ - + diff --git a/docs/test_cases/t00035_class.svg b/docs/test_cases/t00035_class.svg index 29352da03..3d124f4a4 100644 --- a/docs/test_cases/t00035_class.svg +++ b/docs/test_cases/t00035_class.svg @@ -3,7 +3,7 @@ - + @@ -13,7 +13,7 @@ - + @@ -23,7 +23,7 @@ - + @@ -33,7 +33,7 @@ - + @@ -43,7 +43,7 @@ - + diff --git a/docs/test_cases/t00035_class_mermaid.svg b/docs/test_cases/t00035_class_mermaid.svg index a9099c211..185733b47 100644 --- a/docs/test_cases/t00035_class_mermaid.svg +++ b/docs/test_cases/t00035_class_mermaid.svg @@ -52,7 +52,7 @@ - + @@ -71,7 +71,7 @@ - + @@ -90,7 +90,7 @@ - + @@ -109,7 +109,7 @@ - + @@ -128,7 +128,7 @@ - + diff --git a/docs/test_cases/t00036_class.svg b/docs/test_cases/t00036_class.svg index 67d72a32d..28235d067 100644 --- a/docs/test_cases/t00036_class.svg +++ b/docs/test_cases/t00036_class.svg @@ -28,7 +28,7 @@ ns22 - + @@ -40,7 +40,7 @@ - + @@ -50,16 +50,16 @@ T - + - + a : T - + @@ -71,7 +71,7 @@ - + @@ -79,16 +79,16 @@ B - + - + a_int : A<int> - + diff --git a/docs/test_cases/t00036_class_mermaid.svg b/docs/test_cases/t00036_class_mermaid.svg index 20a78db8b..a954ce7c5 100644 --- a/docs/test_cases/t00036_class_mermaid.svg +++ b/docs/test_cases/t00036_class_mermaid.svg @@ -78,7 +78,7 @@ - + @@ -107,7 +107,7 @@ - + @@ -131,7 +131,7 @@ - + @@ -155,7 +155,7 @@ - + @@ -174,7 +174,7 @@ - + diff --git a/docs/test_cases/t00037_class.svg b/docs/test_cases/t00037_class.svg index c506e1013..6cbca852c 100644 --- a/docs/test_cases/t00037_class.svg +++ b/docs/test_cases/t00037_class.svg @@ -3,7 +3,7 @@ - + @@ -11,23 +11,23 @@ S - + - + x : double - + - + y : double - + @@ -35,37 +35,37 @@ ST - + - + bars : ST::(bars)[10] - + - + dimensions : ST::(dimensions) - + - + s : S[4][3][2] - + - + units : ST::(units) - + @@ -73,37 +73,37 @@ ST::(dimensions) - + - + t : double - + - + x : double - + - + y : double - + - + z : double - + @@ -111,23 +111,23 @@ ST::(bars) - + - + flags : int - + - + len : int - + @@ -135,42 +135,42 @@ ST::(units) - + - + c : double - + - + h : double - + A - + - + A() : void - + - + st : ST diff --git a/docs/test_cases/t00037_class_mermaid.svg b/docs/test_cases/t00037_class_mermaid.svg index f498c1fc0..e175f3a3b 100644 --- a/docs/test_cases/t00037_class_mermaid.svg +++ b/docs/test_cases/t00037_class_mermaid.svg @@ -130,7 +130,7 @@ - + @@ -159,7 +159,7 @@ - + @@ -198,7 +198,7 @@ - + @@ -237,7 +237,7 @@ - + @@ -266,7 +266,7 @@ - + @@ -295,7 +295,7 @@ - + diff --git a/docs/test_cases/t00038_class.svg b/docs/test_cases/t00038_class.svg index b39620ebb..224b6e5ac 100644 --- a/docs/test_cases/t00038_class.svg +++ b/docs/test_cases/t00038_class.svg @@ -3,7 +3,7 @@ - + @@ -16,7 +16,7 @@ - + @@ -26,7 +26,7 @@ - + @@ -39,7 +39,7 @@ - + @@ -49,7 +49,7 @@ - + @@ -59,7 +59,7 @@ - + @@ -69,7 +69,7 @@ - + @@ -77,16 +77,16 @@ key_t - + - + key : std::string - + @@ -98,7 +98,7 @@ - + @@ -110,7 +110,7 @@ - + @@ -122,7 +122,7 @@ - + @@ -134,7 +134,7 @@ - + diff --git a/docs/test_cases/t00038_class_mermaid.svg b/docs/test_cases/t00038_class_mermaid.svg index 34b78c9f0..302cdc378 100644 --- a/docs/test_cases/t00038_class_mermaid.svg +++ b/docs/test_cases/t00038_class_mermaid.svg @@ -202,7 +202,7 @@ - + @@ -236,7 +236,7 @@ - + @@ -255,7 +255,7 @@ - + @@ -289,7 +289,7 @@ - + @@ -308,7 +308,7 @@ - + @@ -327,7 +327,7 @@ - + @@ -346,7 +346,7 @@ - + @@ -370,7 +370,7 @@ - + @@ -389,7 +389,7 @@ - + @@ -408,7 +408,7 @@ - + @@ -427,7 +427,7 @@ - + @@ -446,7 +446,7 @@ - + diff --git a/docs/test_cases/t00039_class.svg b/docs/test_cases/t00039_class.svg index 74c9b369e..aa6cc5857 100644 --- a/docs/test_cases/t00039_class.svg +++ b/docs/test_cases/t00039_class.svg @@ -3,7 +3,7 @@ - + @@ -13,7 +13,7 @@ - + @@ -23,7 +23,7 @@ - + @@ -33,7 +33,7 @@ - + @@ -43,7 +43,7 @@ - + @@ -53,7 +53,7 @@ - + @@ -63,7 +63,7 @@ - + @@ -73,7 +73,7 @@ - + @@ -83,7 +83,7 @@ - + @@ -91,16 +91,16 @@ AAA - + - + b : B * - + @@ -110,7 +110,7 @@ - + @@ -120,16 +120,16 @@ T - + - + t : T * - + @@ -139,16 +139,16 @@ T,M - + - + m : M * - + @@ -158,16 +158,16 @@ T,M - + - + m : M * - + @@ -177,11 +177,11 @@ T,M,N - + - + n : N * diff --git a/docs/test_cases/t00039_class_mermaid.svg b/docs/test_cases/t00039_class_mermaid.svg index d5e45b796..8f648c259 100644 --- a/docs/test_cases/t00039_class_mermaid.svg +++ b/docs/test_cases/t00039_class_mermaid.svg @@ -184,7 +184,7 @@ - + @@ -203,7 +203,7 @@ - + @@ -222,7 +222,7 @@ - + @@ -241,7 +241,7 @@ - + @@ -260,7 +260,7 @@ - + @@ -279,7 +279,7 @@ - + @@ -298,7 +298,7 @@ - + @@ -317,7 +317,7 @@ - + @@ -336,7 +336,7 @@ - + @@ -360,7 +360,7 @@ - + @@ -379,7 +379,7 @@ - + @@ -403,7 +403,7 @@ - + @@ -427,7 +427,7 @@ - + @@ -451,7 +451,7 @@ - + diff --git a/docs/test_cases/t00040_class.svg b/docs/test_cases/t00040_class.svg index 261a68540..de0e5cb27 100644 --- a/docs/test_cases/t00040_class.svg +++ b/docs/test_cases/t00040_class.svg @@ -3,31 +3,31 @@ - + A - + - + get_a() : int - + - + ii_ : int - + @@ -37,42 +37,42 @@ - + AAA - + - + get_aaa() : int - + - + b : B * - + R - + - + foo(A * a) : void diff --git a/docs/test_cases/t00040_class_mermaid.svg b/docs/test_cases/t00040_class_mermaid.svg index 9dec581bb..dbcf260c6 100644 --- a/docs/test_cases/t00040_class_mermaid.svg +++ b/docs/test_cases/t00040_class_mermaid.svg @@ -74,7 +74,7 @@ - + @@ -103,7 +103,7 @@ - + @@ -122,7 +122,7 @@ - + @@ -151,7 +151,7 @@ - + diff --git a/docs/test_cases/t00041_class.svg b/docs/test_cases/t00041_class.svg index fd33ea47e..dbcf1380f 100644 --- a/docs/test_cases/t00041_class.svg +++ b/docs/test_cases/t00041_class.svg @@ -3,7 +3,7 @@ - + @@ -13,7 +13,7 @@ - + @@ -21,16 +21,16 @@ D - + - + rr : RR * - + @@ -40,7 +40,7 @@ - + @@ -50,52 +50,52 @@ - + RR - + - + foo(H * h) : void - + - + e : E * - + - + f : F * - + - + g : detail::G * - + - + k : K - + @@ -108,7 +108,7 @@ - + @@ -118,7 +118,7 @@ - + @@ -128,7 +128,7 @@ - + @@ -138,7 +138,7 @@ - + @@ -148,7 +148,7 @@ - + @@ -161,7 +161,7 @@ - + @@ -169,16 +169,16 @@ S - + - + c : Color - + @@ -186,16 +186,16 @@ T - + - + d : Direction - + diff --git a/docs/test_cases/t00041_class_mermaid.svg b/docs/test_cases/t00041_class_mermaid.svg index fc992bfc9..41630d9b9 100644 --- a/docs/test_cases/t00041_class_mermaid.svg +++ b/docs/test_cases/t00041_class_mermaid.svg @@ -190,7 +190,7 @@ - + @@ -209,7 +209,7 @@ - + @@ -233,7 +233,7 @@ - + @@ -252,7 +252,7 @@ - + @@ -271,7 +271,7 @@ - + @@ -315,7 +315,7 @@ - + @@ -349,7 +349,7 @@ - + @@ -368,7 +368,7 @@ - + @@ -387,7 +387,7 @@ - + @@ -406,7 +406,7 @@ - + @@ -425,7 +425,7 @@ - + @@ -459,7 +459,7 @@ - + @@ -483,7 +483,7 @@ - + @@ -507,7 +507,7 @@ - + diff --git a/docs/test_cases/t00042_class.svg b/docs/test_cases/t00042_class.svg index b3b9d5a8f..4dab037ad 100644 --- a/docs/test_cases/t00042_class.svg +++ b/docs/test_cases/t00042_class.svg @@ -3,7 +3,7 @@ - + @@ -13,16 +13,16 @@ T - + - + a : T - + @@ -32,16 +32,16 @@ void - + - + a : void * - + @@ -51,23 +51,23 @@ T,K - + - + b : T - + - + bb : K - + @@ -79,7 +79,7 @@ - + @@ -91,7 +91,7 @@ - + diff --git a/docs/test_cases/t00042_class_mermaid.svg b/docs/test_cases/t00042_class_mermaid.svg index 1e7eb6d39..4eb346f7f 100644 --- a/docs/test_cases/t00042_class_mermaid.svg +++ b/docs/test_cases/t00042_class_mermaid.svg @@ -102,7 +102,7 @@ - + @@ -126,7 +126,7 @@ - + @@ -150,7 +150,7 @@ - + @@ -179,7 +179,7 @@ - + @@ -198,7 +198,7 @@ - + @@ -217,7 +217,7 @@ - + diff --git a/docs/test_cases/t00043_class.svg b/docs/test_cases/t00043_class.svg index 074c010d0..a5a847289 100644 --- a/docs/test_cases/t00043_class.svg +++ b/docs/test_cases/t00043_class.svg @@ -13,7 +13,7 @@ dependencies - + @@ -23,99 +23,99 @@ - + B - + - + b(A * a) : void - + BB - + - + bb(A * a) : void - + C - + - + c(B * b) : void - + D - + - + d(C * c) : void - + - + dd(BB * bb) : void - + E - + - + e(D * d) : void - + @@ -125,7 +125,7 @@ - + @@ -135,66 +135,66 @@ - + H - + - + h(G * g) : void - + - + hh(GG * gg) : void - + I - + - + i(H * h) : void - + J - + - + i(I * i) : void - + - + ii(II * ii) : void diff --git a/docs/test_cases/t00043_class_mermaid.svg b/docs/test_cases/t00043_class_mermaid.svg index 6e6dfb020..fc02511e1 100644 --- a/docs/test_cases/t00043_class_mermaid.svg +++ b/docs/test_cases/t00043_class_mermaid.svg @@ -174,7 +174,7 @@ - + @@ -193,7 +193,7 @@ - + @@ -217,7 +217,7 @@ - + @@ -241,7 +241,7 @@ - + @@ -265,7 +265,7 @@ - + @@ -294,7 +294,7 @@ - + @@ -318,7 +318,7 @@ - + @@ -337,7 +337,7 @@ - + @@ -356,7 +356,7 @@ - + @@ -385,7 +385,7 @@ - + @@ -409,7 +409,7 @@ - + diff --git a/docs/test_cases/t00044_class.svg b/docs/test_cases/t00044_class.svg index edb45166a..738071747 100644 --- a/docs/test_cases/t00044_class.svg +++ b/docs/test_cases/t00044_class.svg @@ -3,7 +3,7 @@ - + @@ -15,7 +15,7 @@ - + @@ -24,27 +24,27 @@ signal_handler<Ret(Args...),A> - + - + sink(signal_t & sh) : void get_signal<CastTo>() : CastTo * - + - + signal : signal_t * - + @@ -56,7 +56,7 @@ - + @@ -68,7 +68,7 @@ - + @@ -76,16 +76,16 @@ R - + - + sink1 : sink<signal_handler<void (int),bool>> - + @@ -97,7 +97,7 @@ - + diff --git a/docs/test_cases/t00044_class_mermaid.svg b/docs/test_cases/t00044_class_mermaid.svg index 85a52b52e..7b775fa66 100644 --- a/docs/test_cases/t00044_class_mermaid.svg +++ b/docs/test_cases/t00044_class_mermaid.svg @@ -150,7 +150,7 @@ - + @@ -169,7 +169,7 @@ - + @@ -203,7 +203,7 @@ - + @@ -222,7 +222,7 @@ - + @@ -241,7 +241,7 @@ - + @@ -265,7 +265,7 @@ - + @@ -284,7 +284,7 @@ - + diff --git a/docs/test_cases/t00045_class.svg b/docs/test_cases/t00045_class.svg index 68ac795d2..6c232506c 100644 --- a/docs/test_cases/t00045_class.svg +++ b/docs/test_cases/t00045_class.svg @@ -3,7 +3,7 @@ - + @@ -13,7 +13,7 @@ - + @@ -23,7 +23,7 @@ - + @@ -33,7 +33,7 @@ - + @@ -43,16 +43,16 @@ T - + - + t : T - + @@ -62,7 +62,7 @@ - + @@ -72,7 +72,7 @@ - + @@ -82,7 +82,7 @@ - + @@ -92,7 +92,7 @@ - + @@ -102,7 +102,7 @@ - + @@ -112,7 +112,7 @@ - + @@ -122,47 +122,47 @@ - + ns1::ns2::R - + - + foo(AA & aa) : void - + - + a : A * - + - + ns1_a : ns1::A * - + - + ns1_ns2_a : ns1::ns2::A * - + - + root_a : ::A * diff --git a/docs/test_cases/t00045_class_mermaid.svg b/docs/test_cases/t00045_class_mermaid.svg index ad2e3b307..0fef7c87b 100644 --- a/docs/test_cases/t00045_class_mermaid.svg +++ b/docs/test_cases/t00045_class_mermaid.svg @@ -166,7 +166,7 @@ - + @@ -185,7 +185,7 @@ - + @@ -204,7 +204,7 @@ - + @@ -223,7 +223,7 @@ - + @@ -247,7 +247,7 @@ - + @@ -266,7 +266,7 @@ - + @@ -285,7 +285,7 @@ - + @@ -304,7 +304,7 @@ - + @@ -323,7 +323,7 @@ - + @@ -342,7 +342,7 @@ - + @@ -361,7 +361,7 @@ - + @@ -380,7 +380,7 @@ - + diff --git a/docs/test_cases/t00046_class.svg b/docs/test_cases/t00046_class.svg index e4febc7b0..99be5a7d0 100644 --- a/docs/test_cases/t00046_class.svg +++ b/docs/test_cases/t00046_class.svg @@ -13,7 +13,7 @@ ns2 - + @@ -23,7 +23,7 @@ - + @@ -33,7 +33,7 @@ - + @@ -43,7 +43,7 @@ - + @@ -53,7 +53,7 @@ - + @@ -63,7 +63,7 @@ - + @@ -73,59 +73,59 @@ - + R - + - + foo(AA & aa) : void - + - + a : A * - + - + i : std::vector<std::uint8_t> - + - + ns1_a : ns1::A * - + - + ns1_ns2_a : ns1::ns2::A * - + - + root_a : ::A * - + @@ -135,7 +135,7 @@ - + diff --git a/docs/test_cases/t00046_class_mermaid.svg b/docs/test_cases/t00046_class_mermaid.svg index fc0c82c8f..0c2fe699a 100644 --- a/docs/test_cases/t00046_class_mermaid.svg +++ b/docs/test_cases/t00046_class_mermaid.svg @@ -154,7 +154,7 @@ - + @@ -173,7 +173,7 @@ - + @@ -192,7 +192,7 @@ - + @@ -211,7 +211,7 @@ - + @@ -230,7 +230,7 @@ - + @@ -249,7 +249,7 @@ - + @@ -268,7 +268,7 @@ - + @@ -287,7 +287,7 @@ - + @@ -306,7 +306,7 @@ - + diff --git a/docs/test_cases/t00047_class.svg b/docs/test_cases/t00047_class.svg index 10b474341..650fe8526 100644 --- a/docs/test_cases/t00047_class.svg +++ b/docs/test_cases/t00047_class.svg @@ -3,7 +3,7 @@ - + @@ -15,7 +15,7 @@ - + @@ -27,7 +27,7 @@ - + @@ -39,7 +39,7 @@ - + diff --git a/docs/test_cases/t00047_class_mermaid.svg b/docs/test_cases/t00047_class_mermaid.svg index 83da6cad5..a215f04cb 100644 --- a/docs/test_cases/t00047_class_mermaid.svg +++ b/docs/test_cases/t00047_class_mermaid.svg @@ -90,7 +90,7 @@ - + @@ -109,7 +109,7 @@ - + @@ -128,7 +128,7 @@ - + @@ -147,7 +147,7 @@ - + diff --git a/docs/test_cases/t00048_class.svg b/docs/test_cases/t00048_class.svg index befd00d67..37bcd834a 100644 --- a/docs/test_cases/t00048_class.svg +++ b/docs/test_cases/t00048_class.svg @@ -3,31 +3,31 @@ - + Base - + - + foo() = 0 : void - + - + base : int - + @@ -36,48 +36,48 @@ T - + - + foo() = 0 : void - + - + base : T - + B - + - + foo() : void - + - + b : int - + @@ -86,48 +86,48 @@ T - + - + foo() : void - + - + b : T - + A - + - + foo() : void - + - + a : int - + @@ -136,19 +136,19 @@ T - + - + foo() : void - + - + a : T diff --git a/docs/test_cases/t00048_class_mermaid.svg b/docs/test_cases/t00048_class_mermaid.svg index a9ff05421..0a570db14 100644 --- a/docs/test_cases/t00048_class_mermaid.svg +++ b/docs/test_cases/t00048_class_mermaid.svg @@ -94,7 +94,7 @@ - + @@ -123,7 +123,7 @@ - + @@ -152,7 +152,7 @@ - + @@ -181,7 +181,7 @@ - + @@ -210,7 +210,7 @@ - + @@ -239,7 +239,7 @@ - + diff --git a/docs/test_cases/t00049_class.svg b/docs/test_cases/t00049_class.svg index 01eb3db8d..24115e6a0 100644 --- a/docs/test_cases/t00049_class.svg +++ b/docs/test_cases/t00049_class.svg @@ -3,7 +3,7 @@ - + @@ -12,24 +12,24 @@ T - + - + get_a() : T & - + - + a : T - + @@ -41,7 +41,7 @@ - + @@ -53,7 +53,7 @@ - + @@ -65,47 +65,47 @@ - + R - + - + get_int_map() : A<intmap> - + - + set_int_map(A<intmap> && int_map) : void - + - + a_int_map : A<intmap> - + - + a_string : A<thestring> - + - + a_vector_string : A<string_vector> diff --git a/docs/test_cases/t00049_class_mermaid.svg b/docs/test_cases/t00049_class_mermaid.svg index 66b2f420f..a15669e56 100644 --- a/docs/test_cases/t00049_class_mermaid.svg +++ b/docs/test_cases/t00049_class_mermaid.svg @@ -138,7 +138,7 @@ - + @@ -167,7 +167,7 @@ - + @@ -186,7 +186,7 @@ - + @@ -205,7 +205,7 @@ - + @@ -224,7 +224,7 @@ - + diff --git a/docs/test_cases/t00050_class.svg b/docs/test_cases/t00050_class.svg index 3cdc755e3..73a9b84ce 100644 --- a/docs/test_cases/t00050_class.svg +++ b/docs/test_cases/t00050_class.svg @@ -3,7 +3,7 @@ - + @@ -13,7 +13,7 @@ - + @@ -23,7 +23,7 @@ - + @@ -33,7 +33,7 @@ - + @@ -43,7 +43,7 @@ - + @@ -56,7 +56,7 @@ - + @@ -65,31 +65,31 @@ T,V,int N - + - + set_value(V v_) const : V - + - + t : T[] - + - + v : V - + @@ -99,7 +99,7 @@ - + diff --git a/docs/test_cases/t00050_class_mermaid.svg b/docs/test_cases/t00050_class_mermaid.svg index a8e752018..9d3017625 100644 --- a/docs/test_cases/t00050_class_mermaid.svg +++ b/docs/test_cases/t00050_class_mermaid.svg @@ -184,7 +184,7 @@ - + @@ -203,7 +203,7 @@ - + @@ -222,7 +222,7 @@ - + @@ -241,7 +241,7 @@ - + @@ -260,7 +260,7 @@ - + @@ -294,7 +294,7 @@ - + @@ -328,7 +328,7 @@ - + @@ -347,7 +347,7 @@ - + diff --git a/docs/test_cases/t00051_class.svg b/docs/test_cases/t00051_class.svg index 4b5a15c8d..be3b85f02 100644 --- a/docs/test_cases/t00051_class.svg +++ b/docs/test_cases/t00051_class.svg @@ -3,7 +3,7 @@ - + @@ -12,46 +12,46 @@ F,FF=F - + - + B(F && f, FF && ff) : void - + - + f() : void - + - + ff() : void - + - + f_ : F - + - + ff_ : FF - + @@ -60,84 +60,84 @@ (lambda at t00051.cc:43:18),(lambda at t00051.cc:43:27) - + - + B((lambda at t00051.cc:43:18) && f, (lambda at t00051.cc:43:27) && ff) : void - + - + f() : void - + - + ff() : void - + - + f_ : (lambda at t00051.cc:43:18) - + - + ff_ : (lambda at t00051.cc:43:27) - + A - + - + get_function() : (lambda at t00051.cc:48:16) - + - + start_thread1() : custom_thread1 - + - + start_thread2() : custom_thread2 - + - + start_thread3() : B<(lambda at t00051.cc:43:18),(lambda at t00051.cc:43:27)> - + @@ -149,18 +149,18 @@ - + A::custom_thread2 - + - + thread((lambda at t00051.cc:59:27) &&) : void diff --git a/docs/test_cases/t00051_class_mermaid.svg b/docs/test_cases/t00051_class_mermaid.svg index c3400879b..105a37c50 100644 --- a/docs/test_cases/t00051_class_mermaid.svg +++ b/docs/test_cases/t00051_class_mermaid.svg @@ -126,7 +126,7 @@ - + @@ -170,7 +170,7 @@ - + @@ -214,7 +214,7 @@ - + @@ -253,7 +253,7 @@ - + @@ -277,7 +277,7 @@ - + diff --git a/docs/test_cases/t00052_class.svg b/docs/test_cases/t00052_class.svg index 6f318059d..0f4c6868f 100644 --- a/docs/test_cases/t00052_class.svg +++ b/docs/test_cases/t00052_class.svg @@ -3,7 +3,7 @@ - + @@ -17,7 +17,7 @@ - + @@ -26,11 +26,11 @@ T - + - + b(T t) : T @@ -38,7 +38,7 @@ - + @@ -52,7 +52,7 @@ - + @@ -64,7 +64,7 @@ - + @@ -76,7 +76,7 @@ - + @@ -84,25 +84,25 @@ R - + - + a : A - + - + b : B<int> - + - + c : C<int> diff --git a/docs/test_cases/t00052_class_mermaid.svg b/docs/test_cases/t00052_class_mermaid.svg index 06b2c20f8..c0020656c 100644 --- a/docs/test_cases/t00052_class_mermaid.svg +++ b/docs/test_cases/t00052_class_mermaid.svg @@ -114,7 +114,7 @@ - + @@ -143,7 +143,7 @@ - + @@ -172,7 +172,7 @@ - + @@ -196,7 +196,7 @@ - + @@ -215,7 +215,7 @@ - + @@ -234,7 +234,7 @@ - + diff --git a/docs/test_cases/t00053_class.svg b/docs/test_cases/t00053_class.svg index 9dd6c6b4e..079747d8c 100644 --- a/docs/test_cases/t00053_class.svg +++ b/docs/test_cases/t00053_class.svg @@ -3,7 +3,7 @@ - + @@ -13,7 +13,7 @@ - + @@ -23,7 +23,7 @@ - + @@ -33,7 +33,7 @@ - + @@ -43,7 +43,7 @@ - + @@ -53,7 +53,7 @@ - + @@ -63,7 +63,7 @@ - + @@ -74,7 +74,7 @@ - + @@ -84,7 +84,7 @@ - + @@ -94,7 +94,7 @@ - + @@ -104,7 +104,7 @@ - + @@ -114,7 +114,7 @@ - + @@ -124,7 +124,7 @@ - + @@ -134,7 +134,7 @@ - + @@ -144,7 +144,7 @@ - + @@ -154,7 +154,7 @@ - + @@ -165,7 +165,7 @@ - + diff --git a/docs/test_cases/t00053_class_mermaid.svg b/docs/test_cases/t00053_class_mermaid.svg index 07926df43..65e8ab9b2 100644 --- a/docs/test_cases/t00053_class_mermaid.svg +++ b/docs/test_cases/t00053_class_mermaid.svg @@ -52,7 +52,7 @@ - + @@ -71,7 +71,7 @@ - + @@ -90,7 +90,7 @@ - + @@ -109,7 +109,7 @@ - + @@ -128,7 +128,7 @@ - + @@ -147,7 +147,7 @@ - + @@ -166,7 +166,7 @@ - + @@ -190,7 +190,7 @@ - + @@ -209,7 +209,7 @@ - + @@ -228,7 +228,7 @@ - + @@ -247,7 +247,7 @@ - + @@ -266,7 +266,7 @@ - + @@ -285,7 +285,7 @@ - + @@ -304,7 +304,7 @@ - + @@ -323,7 +323,7 @@ - + @@ -342,7 +342,7 @@ - + @@ -366,7 +366,7 @@ - + diff --git a/docs/test_cases/t00054_class.svg b/docs/test_cases/t00054_class.svg index dff354e0f..a733de34a 100644 --- a/docs/test_cases/t00054_class.svg +++ b/docs/test_cases/t00054_class.svg @@ -23,7 +23,7 @@ detail4 - + @@ -33,7 +33,7 @@ - + @@ -43,7 +43,7 @@ - + @@ -53,7 +53,7 @@ - + @@ -63,7 +63,7 @@ - + @@ -73,7 +73,7 @@ - + @@ -83,7 +83,7 @@ - + @@ -93,7 +93,7 @@ - + @@ -103,7 +103,7 @@ - + @@ -113,7 +113,7 @@ - + @@ -123,7 +123,7 @@ - + @@ -133,7 +133,7 @@ - + @@ -143,7 +143,7 @@ - + @@ -153,7 +153,7 @@ - + @@ -163,7 +163,7 @@ - + @@ -173,7 +173,7 @@ - + @@ -183,7 +183,7 @@ - + @@ -193,7 +193,7 @@ - + @@ -203,7 +203,7 @@ - + @@ -213,7 +213,7 @@ - + @@ -224,7 +224,7 @@ - + @@ -235,7 +235,7 @@ - + @@ -246,7 +246,7 @@ - + @@ -256,7 +256,7 @@ - + @@ -266,7 +266,7 @@ - + @@ -276,7 +276,7 @@ - + @@ -286,7 +286,7 @@ - + @@ -296,7 +296,7 @@ - + @@ -306,7 +306,7 @@ - + @@ -316,7 +316,7 @@ - + @@ -326,7 +326,7 @@ - + @@ -336,7 +336,7 @@ - + @@ -347,7 +347,7 @@ - + @@ -358,7 +358,7 @@ - + @@ -369,7 +369,7 @@ - + @@ -379,7 +379,7 @@ - + diff --git a/docs/test_cases/t00054_class_mermaid.svg b/docs/test_cases/t00054_class_mermaid.svg index 9e12803f6..b41d91c2d 100644 --- a/docs/test_cases/t00054_class_mermaid.svg +++ b/docs/test_cases/t00054_class_mermaid.svg @@ -52,7 +52,7 @@ - + @@ -71,7 +71,7 @@ - + @@ -90,7 +90,7 @@ - + @@ -109,7 +109,7 @@ - + @@ -128,7 +128,7 @@ - + @@ -147,7 +147,7 @@ - + @@ -166,7 +166,7 @@ - + @@ -185,7 +185,7 @@ - + @@ -204,7 +204,7 @@ - + @@ -223,7 +223,7 @@ - + @@ -242,7 +242,7 @@ - + @@ -261,7 +261,7 @@ - + @@ -280,7 +280,7 @@ - + @@ -304,7 +304,7 @@ - + @@ -328,7 +328,7 @@ - + @@ -352,7 +352,7 @@ - + @@ -371,7 +371,7 @@ - + diff --git a/docs/test_cases/t00055_class.svg b/docs/test_cases/t00055_class.svg index 42663f46b..f59d443e2 100644 --- a/docs/test_cases/t00055_class.svg +++ b/docs/test_cases/t00055_class.svg @@ -3,7 +3,7 @@ - + @@ -13,7 +13,7 @@ - + @@ -23,7 +23,7 @@ - + @@ -33,7 +33,7 @@ - + @@ -43,7 +43,7 @@ - + @@ -53,7 +53,7 @@ - + @@ -63,7 +63,7 @@ - + @@ -73,7 +73,7 @@ - + @@ -83,7 +83,7 @@ - + @@ -93,7 +93,7 @@ - + diff --git a/docs/test_cases/t00055_class_mermaid.svg b/docs/test_cases/t00055_class_mermaid.svg index 815865e1c..69490d337 100644 --- a/docs/test_cases/t00055_class_mermaid.svg +++ b/docs/test_cases/t00055_class_mermaid.svg @@ -52,7 +52,7 @@ - + @@ -71,7 +71,7 @@ - + @@ -90,7 +90,7 @@ - + @@ -109,7 +109,7 @@ - + @@ -128,7 +128,7 @@ - + @@ -147,7 +147,7 @@ - + @@ -166,7 +166,7 @@ - + @@ -185,7 +185,7 @@ - + @@ -204,7 +204,7 @@ - + @@ -223,7 +223,7 @@ - + diff --git a/docs/test_cases/t00056_class.svg b/docs/test_cases/t00056_class.svg index 9b9b2043a..0a4aa4fb0 100644 --- a/docs/test_cases/t00056_class.svg +++ b/docs/test_cases/t00056_class.svg @@ -3,7 +3,7 @@ - + @@ -16,7 +16,7 @@ - + @@ -31,7 +31,7 @@ sizeof (l) > sizeof (r) - + @@ -44,7 +44,7 @@ - + @@ -60,7 +60,7 @@ container.end() - + @@ -75,7 +75,7 @@ typename T::value_type - + @@ -92,7 +92,7 @@ {std::to_string(s)} -> std::same_as<std::string> - + @@ -105,7 +105,7 @@ - + @@ -118,7 +118,7 @@ - + @@ -128,16 +128,16 @@ max_four_bytes T - + - + a : T - + @@ -147,16 +147,16 @@ T - + - + b : T - + @@ -166,16 +166,16 @@ convertible_to_string T - + - + c : T - + @@ -187,7 +187,7 @@ - + @@ -197,30 +197,30 @@ T1,T2,T3 - + - + e1 : T1 - + - + e2 : T2 - + - + e3 : T3 - + @@ -230,25 +230,25 @@ T1,T2,T3 - + - + f1 : T1 - + - + f2 : T2 - + - + f3 : T3 diff --git a/docs/test_cases/t00056_class_mermaid.svg b/docs/test_cases/t00056_class_mermaid.svg index 196e3a6d7..dff53ed7a 100644 --- a/docs/test_cases/t00056_class_mermaid.svg +++ b/docs/test_cases/t00056_class_mermaid.svg @@ -222,7 +222,7 @@ - + @@ -241,7 +241,7 @@ - + @@ -270,7 +270,7 @@ - + @@ -289,7 +289,7 @@ - + @@ -323,7 +323,7 @@ - + @@ -352,7 +352,7 @@ - + @@ -391,7 +391,7 @@ - + @@ -410,7 +410,7 @@ - + @@ -429,7 +429,7 @@ - + @@ -453,7 +453,7 @@ - + @@ -477,7 +477,7 @@ - + @@ -501,7 +501,7 @@ - + @@ -520,7 +520,7 @@ - + @@ -554,7 +554,7 @@ - + diff --git a/docs/test_cases/t00057_class.svg b/docs/test_cases/t00057_class.svg index c3533a62d..470dba525 100644 --- a/docs/test_cases/t00057_class.svg +++ b/docs/test_cases/t00057_class.svg @@ -3,7 +3,7 @@ - + @@ -11,16 +11,16 @@ t00057_A - + - + a1 : int - + @@ -28,16 +28,16 @@ t00057_B - + - + b1 : int - + @@ -45,16 +45,16 @@ t00057_C - + - + c1 : int - + @@ -63,23 +63,23 @@ t00057_D - + - + d1 : int - + - + d2 : float - + @@ -87,30 +87,30 @@ t00057_E - + - + coordinates : t00057_E::(coordinates) - + - + e : int - + - + height : t00057_E::(height) - + @@ -118,23 +118,23 @@ t00057_E::(coordinates) - + - + x : int - + - + y : int - + @@ -143,23 +143,23 @@ t00057_E::(height) - + - + t : double - + - + z : int - + @@ -167,16 +167,16 @@ t00057_G - + - + g1 : int - + @@ -184,58 +184,58 @@ 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 * - + @@ -243,11 +243,11 @@ t00057_F - + - + f1 : int diff --git a/docs/test_cases/t00057_class_mermaid.svg b/docs/test_cases/t00057_class_mermaid.svg index 59724a331..df4c4bc52 100644 --- a/docs/test_cases/t00057_class_mermaid.svg +++ b/docs/test_cases/t00057_class_mermaid.svg @@ -162,7 +162,7 @@ - + @@ -186,7 +186,7 @@ - + @@ -210,7 +210,7 @@ - + @@ -234,7 +234,7 @@ - + @@ -263,7 +263,7 @@ - + @@ -297,7 +297,7 @@ - + @@ -326,7 +326,7 @@ - + @@ -355,7 +355,7 @@ - + @@ -379,7 +379,7 @@ - + @@ -433,7 +433,7 @@ - + diff --git a/docs/test_cases/t00058_class.svg b/docs/test_cases/t00058_class.svg index 56dc0be3a..4c3dd6b40 100644 --- a/docs/test_cases/t00058_class.svg +++ b/docs/test_cases/t00058_class.svg @@ -3,7 +3,7 @@ - + @@ -15,7 +15,7 @@ - + @@ -28,7 +28,7 @@ - + @@ -38,16 +38,16 @@ T,Args... - + - + a : std::vector<T> - + @@ -57,23 +57,23 @@ T,P,Args... - + - + b : std::vector<T> - + - + bb : P - + @@ -85,7 +85,7 @@ - + @@ -97,7 +97,7 @@ - + @@ -109,7 +109,7 @@ - + @@ -117,18 +117,18 @@ R - + - + aa : A<int,int,double,std::string> - + - + bb : B<int,std::string,int,double,A<int,int>> diff --git a/docs/test_cases/t00058_class_mermaid.svg b/docs/test_cases/t00058_class_mermaid.svg index e54a94610..d136a692f 100644 --- a/docs/test_cases/t00058_class_mermaid.svg +++ b/docs/test_cases/t00058_class_mermaid.svg @@ -160,7 +160,7 @@ - + @@ -179,7 +179,7 @@ - + @@ -198,7 +198,7 @@ - + @@ -222,7 +222,7 @@ - + @@ -251,7 +251,7 @@ - + @@ -270,7 +270,7 @@ - + @@ -289,7 +289,7 @@ - + @@ -308,7 +308,7 @@ - + diff --git a/docs/test_cases/t00059_class.svg b/docs/test_cases/t00059_class.svg index 6bb33a233..d3dc9ae40 100644 --- a/docs/test_cases/t00059_class.svg +++ b/docs/test_cases/t00059_class.svg @@ -3,7 +3,7 @@ - + @@ -19,7 +19,7 @@ t.get_name() - + @@ -34,7 +34,7 @@ t.get_sweetness() - + @@ -49,103 +49,103 @@ t.get_bitterness() - + gala_apple - + - + get_name() const : std::string - + - + get_sweetness() const : float - + empire_apple - + - + get_name() const : std::string - + - + get_sweetness() const : float - + lima_orange - + - + get_bitterness() const : float - + - + get_name() const : std::string - + valencia_orange - + - + get_bitterness() const : float - + - + get_name() const : std::string - + @@ -154,24 +154,24 @@ apple_c TA,orange_c TO - + - + create_apple() const : TA - + - + create_orange() const : TO - + @@ -183,7 +183,7 @@ - + @@ -195,7 +195,7 @@ - + @@ -203,18 +203,18 @@ R - + - + factory_1 : fruit_factory_1 - + - + factory_2 : fruit_factory_2 diff --git a/docs/test_cases/t00059_class_mermaid.svg b/docs/test_cases/t00059_class_mermaid.svg index 27a574ce1..0134e99c0 100644 --- a/docs/test_cases/t00059_class_mermaid.svg +++ b/docs/test_cases/t00059_class_mermaid.svg @@ -198,7 +198,7 @@ - + @@ -232,7 +232,7 @@ - + @@ -261,7 +261,7 @@ - + @@ -290,7 +290,7 @@ - + @@ -319,7 +319,7 @@ - + @@ -348,7 +348,7 @@ - + @@ -377,7 +377,7 @@ - + @@ -406,7 +406,7 @@ - + @@ -435,7 +435,7 @@ - + @@ -454,7 +454,7 @@ - + @@ -473,7 +473,7 @@ - + diff --git a/docs/test_cases/t00060_class.svg b/docs/test_cases/t00060_class.svg index 754c48b57..eed0110aa 100644 --- a/docs/test_cases/t00060_class.svg +++ b/docs/test_cases/t00060_class.svg @@ -3,7 +3,7 @@ - + @@ -13,7 +13,7 @@ - + @@ -23,7 +23,7 @@ - + @@ -33,7 +33,7 @@ - + @@ -43,7 +43,7 @@ - + @@ -53,16 +53,16 @@ T - + - + g : T - + @@ -72,18 +72,18 @@ T,P - + - + h : G<T> - + - + hh : P diff --git a/docs/test_cases/t00060_class_mermaid.svg b/docs/test_cases/t00060_class_mermaid.svg index aae549316..c52ec84a3 100644 --- a/docs/test_cases/t00060_class_mermaid.svg +++ b/docs/test_cases/t00060_class_mermaid.svg @@ -116,7 +116,7 @@ - + @@ -135,7 +135,7 @@ - + @@ -154,7 +154,7 @@ - + @@ -173,7 +173,7 @@ - + @@ -192,7 +192,7 @@ - + @@ -216,7 +216,7 @@ - + diff --git a/docs/test_cases/t00061_class.svg b/docs/test_cases/t00061_class.svg index 0e684cd9e..e6711831b 100644 --- a/docs/test_cases/t00061_class.svg +++ b/docs/test_cases/t00061_class.svg @@ -3,7 +3,7 @@ - + diff --git a/docs/test_cases/t00061_class_mermaid.svg b/docs/test_cases/t00061_class_mermaid.svg index af859007a..994f8bcf4 100644 --- a/docs/test_cases/t00061_class_mermaid.svg +++ b/docs/test_cases/t00061_class_mermaid.svg @@ -52,7 +52,7 @@ - + diff --git a/docs/test_cases/t00062_class.svg b/docs/test_cases/t00062_class.svg index 2e7ed4a0c..c8faf87a2 100644 --- a/docs/test_cases/t00062_class.svg +++ b/docs/test_cases/t00062_class.svg @@ -3,7 +3,7 @@ - + @@ -13,16 +13,16 @@ U & - + - + u : U & - + @@ -32,16 +32,16 @@ std::map<std::string,U> & - + - + u : U & - + @@ -53,7 +53,7 @@ - + @@ -63,16 +63,16 @@ U * * - + - + u : U ** - + @@ -82,16 +82,16 @@ U * * const* - + - + u : U *** - + @@ -101,16 +101,16 @@ U const volatile* const volatile - + - + u : U *** - + @@ -120,16 +120,16 @@ U && - + - + u : U && - + @@ -139,16 +139,16 @@ U const& - + - + u : const U & - + @@ -158,23 +158,23 @@ M C::* - + - + c : C & - + - + m : M C::* - + @@ -184,23 +184,23 @@ M C::* && - + - + c : C && - + - + m : M C::* - + @@ -210,23 +210,23 @@ M (C::*)(Arg) - + - + c : C & - + - + m : M C::* - + @@ -236,16 +236,16 @@ int (C::*)(bool) - + - + c : C & - + @@ -255,23 +255,23 @@ M (C::*)(Arg) && - + - + c : C && - + - + m : M C::* - + @@ -281,23 +281,23 @@ float (C::*)(int) && - + - + c : C && - + - + mf : float C::* - + @@ -307,23 +307,23 @@ M (C::*)(Arg1,Arg2,Arg3) - + - + c : C & - + - + m : M C::* - + @@ -333,16 +333,16 @@ char[N] - + - + n : char[] - + @@ -352,16 +352,16 @@ char[1000] - + - + n : std::vector<char> - + @@ -371,16 +371,16 @@ char[M][L][K] - + - + klm : char[][][] - + @@ -390,16 +390,16 @@ U(...) - + - + u : bool - + @@ -409,16 +409,16 @@ C<T> - + - + c : C<T> - + @@ -428,23 +428,23 @@ C<T,Args...> - + - + args : std::tuple<Args...> - + - + c : C<T> - + diff --git a/docs/test_cases/t00062_class_mermaid.svg b/docs/test_cases/t00062_class_mermaid.svg index 2d1362ba2..0965f8c2a 100644 --- a/docs/test_cases/t00062_class_mermaid.svg +++ b/docs/test_cases/t00062_class_mermaid.svg @@ -306,7 +306,7 @@ - + @@ -330,7 +330,7 @@ - + @@ -354,7 +354,7 @@ - + @@ -373,7 +373,7 @@ - + @@ -397,7 +397,7 @@ - + @@ -421,7 +421,7 @@ - + @@ -445,7 +445,7 @@ - + @@ -469,7 +469,7 @@ - + @@ -493,7 +493,7 @@ - + @@ -522,7 +522,7 @@ - + @@ -551,7 +551,7 @@ - + @@ -580,7 +580,7 @@ - + @@ -604,7 +604,7 @@ - + @@ -633,7 +633,7 @@ - + @@ -662,7 +662,7 @@ - + @@ -691,7 +691,7 @@ - + @@ -715,7 +715,7 @@ - + @@ -739,7 +739,7 @@ - + @@ -763,7 +763,7 @@ - + @@ -787,7 +787,7 @@ - + @@ -811,7 +811,7 @@ - + @@ -840,7 +840,7 @@ - + diff --git a/docs/test_cases/t00063_class.svg b/docs/test_cases/t00063_class.svg index 78beaae3f..6e2fdcfbc 100644 --- a/docs/test_cases/t00063_class.svg +++ b/docs/test_cases/t00063_class.svg @@ -3,7 +3,7 @@ - + diff --git a/docs/test_cases/t00063_class_mermaid.svg b/docs/test_cases/t00063_class_mermaid.svg index 91e4a55af..8c4eb6b15 100644 --- a/docs/test_cases/t00063_class_mermaid.svg +++ b/docs/test_cases/t00063_class_mermaid.svg @@ -52,7 +52,7 @@ - + diff --git a/docs/test_cases/t00064_class.svg b/docs/test_cases/t00064_class.svg index 6b72afd45..ff743bf50 100644 --- a/docs/test_cases/t00064_class.svg +++ b/docs/test_cases/t00064_class.svg @@ -3,7 +3,7 @@ - + @@ -15,7 +15,7 @@ - + @@ -27,7 +27,7 @@ - + @@ -39,7 +39,7 @@ - + @@ -51,7 +51,7 @@ - + @@ -63,7 +63,7 @@ - + @@ -75,7 +75,7 @@ - + @@ -87,7 +87,7 @@ - + @@ -99,7 +99,7 @@ - + @@ -109,16 +109,16 @@ type_list<First...>,type_list<Second...> - + - + size : const size_t - + @@ -130,7 +130,7 @@ - + @@ -142,7 +142,7 @@ - + @@ -151,31 +151,31 @@ It,type_list<First...>,type_list<Second...> - + - + find(const value_type & v) constexpr : unsigned int - + - + get(unsigned int i) : ref_t - + - + getp(unsigned int i) : const value_type * - + @@ -185,7 +185,7 @@ - + @@ -195,7 +195,7 @@ - + @@ -205,7 +205,7 @@ - + @@ -217,7 +217,7 @@ - + @@ -229,7 +229,7 @@ - + @@ -241,7 +241,7 @@ - + @@ -253,7 +253,7 @@ - + @@ -261,23 +261,23 @@ R - + - + abc : type_group_pair<type_list<float,double>,type_list<A,B,C>> - + - + aboolint : type_list<A,bool,int> - + @@ -289,7 +289,7 @@ - + @@ -301,7 +301,7 @@ - + diff --git a/docs/test_cases/t00064_class_mermaid.svg b/docs/test_cases/t00064_class_mermaid.svg index f9ed1edca..8d850a130 100644 --- a/docs/test_cases/t00064_class_mermaid.svg +++ b/docs/test_cases/t00064_class_mermaid.svg @@ -402,7 +402,7 @@ - + @@ -421,7 +421,7 @@ - + @@ -440,7 +440,7 @@ - + @@ -459,7 +459,7 @@ - + @@ -478,7 +478,7 @@ - + @@ -497,7 +497,7 @@ - + @@ -516,7 +516,7 @@ - + @@ -535,7 +535,7 @@ - + @@ -554,7 +554,7 @@ - + @@ -578,7 +578,7 @@ - + @@ -597,7 +597,7 @@ - + @@ -616,7 +616,7 @@ - + @@ -650,7 +650,7 @@ - + @@ -669,7 +669,7 @@ - + @@ -688,7 +688,7 @@ - + @@ -707,7 +707,7 @@ - + @@ -726,7 +726,7 @@ - + @@ -745,7 +745,7 @@ - + @@ -764,7 +764,7 @@ - + @@ -783,7 +783,7 @@ - + @@ -812,7 +812,7 @@ - + @@ -831,7 +831,7 @@ - + @@ -850,7 +850,7 @@ - + diff --git a/docs/test_cases/t00065_class.svg b/docs/test_cases/t00065_class.svg index 62fbe4f91..e6e0e8f73 100644 --- a/docs/test_cases/t00065_class.svg +++ b/docs/test_cases/t00065_class.svg @@ -23,7 +23,7 @@ concepts - + @@ -36,7 +36,7 @@ - + @@ -49,7 +49,7 @@ - + @@ -57,30 +57,30 @@ A - + - + abc : ABC - + - + pimpl : detail::AImpl * - + - + xyz : XYZ - + @@ -90,32 +90,32 @@ - + B - + - + B() = default : void - + - + b() : void - + @@ -125,16 +125,16 @@ T - + - + t : T * - + @@ -146,7 +146,7 @@ - + @@ -156,23 +156,23 @@ bconcept T - + - + c : C<int> - + - + t : T - + @@ -184,7 +184,7 @@ - + @@ -196,7 +196,7 @@ - + @@ -212,7 +212,7 @@ t.b() - + @@ -220,25 +220,25 @@ R - + - + a : A * - + - + c : C<B> - + - + d : D<B> diff --git a/docs/test_cases/t00065_class_mermaid.svg b/docs/test_cases/t00065_class_mermaid.svg index 727094886..3a9724536 100644 --- a/docs/test_cases/t00065_class_mermaid.svg +++ b/docs/test_cases/t00065_class_mermaid.svg @@ -210,7 +210,7 @@ - + @@ -229,7 +229,7 @@ - + @@ -263,7 +263,7 @@ - + @@ -297,7 +297,7 @@ - + @@ -331,7 +331,7 @@ - + @@ -365,7 +365,7 @@ - + @@ -394,7 +394,7 @@ - + @@ -418,7 +418,7 @@ - + @@ -437,7 +437,7 @@ - + @@ -466,7 +466,7 @@ - + @@ -485,7 +485,7 @@ - + @@ -504,7 +504,7 @@ - + diff --git a/docs/test_cases/t00066_class.svg b/docs/test_cases/t00066_class.svg index 344639fd1..0e0354582 100644 --- a/docs/test_cases/t00066_class.svg +++ b/docs/test_cases/t00066_class.svg @@ -3,222 +3,222 @@ - + A - + - + public_member : int - + - + protected_member : int - + - + private_member : int - + - + a_ : int - + - + b_ : int - + - + c_ : int - + - + static_int : int - + - + static_const_int : const int - + - + auto_member : const unsigned long - + - + A() = default : void - + - + A(int i) : void - + - + A(A &&) = default : void - + - + A(const A &) = deleted : void - + - + ~A() = default : void - + - + basic_method() : void - + - + static_method() : int - + - + const_method() const : void - + - + auto_method() : int - + - + operator++() : A & - + - + operator=(A && other) noexcept : A & - + - + operator=(A & other) noexcept : A & - + - + size() const : std::size_t - + - + double_int(const int i) : int - + - + sum(const double a, const double b) : int - + - + default_int(int i = 12) : int - + - + default_string(int i, std::string s = "abc") : std::string - + - + create_from_int(int i) : A - + - + protected_method() : void - + - + private_method() : void - + - + compare : std::function<bool (const int)> diff --git a/docs/test_cases/t00066_class_mermaid.svg b/docs/test_cases/t00066_class_mermaid.svg index 088f7c9b6..78f9333bb 100644 --- a/docs/test_cases/t00066_class_mermaid.svg +++ b/docs/test_cases/t00066_class_mermaid.svg @@ -52,7 +52,7 @@ - + diff --git a/docs/test_cases/t00067_class.svg b/docs/test_cases/t00067_class.svg index 0cd5b4ed9..92623b93d 100644 --- a/docs/test_cases/t00067_class.svg +++ b/docs/test_cases/t00067_class.svg @@ -3,152 +3,152 @@ - + A - + - + auto_method() : int - + - + basic_method() : void - + - + const_method() const : void - + - + default_int(int i = 12) : int - + - + default_string(int i, std::string s = "abc") : std::string - + - + double_int(const int i) : int - + - + private_method() : void - + - + protected_method() : void - + - + size() const : std::size_t - + - + sum(const double a, const double b) : int - + - + a_ : int - + - + auto_member : const unsigned long - + - + b_ : int - + - + c_ : int - + - + compare : std::function<bool (const int)> - + - + private_member : int - + - + protected_member : int - + - + public_member : int - + - + static_const_int : const int - + - + static_int : int diff --git a/docs/test_cases/t00067_class_mermaid.svg b/docs/test_cases/t00067_class_mermaid.svg index 5721d47c2..0dfcb16c6 100644 --- a/docs/test_cases/t00067_class_mermaid.svg +++ b/docs/test_cases/t00067_class_mermaid.svg @@ -52,7 +52,7 @@ - + diff --git a/docs/test_cases/t00068_r0_class.svg b/docs/test_cases/t00068_r0_class.svg index 3d024372f..cdae82af8 100644 --- a/docs/test_cases/t00068_r0_class.svg +++ b/docs/test_cases/t00068_r0_class.svg @@ -4,7 +4,7 @@ AAA context of radius 0 - + @@ -12,18 +12,18 @@ AAA - + - + akind : AKind - + - + bb : BB * diff --git a/docs/test_cases/t00068_r0_class_mermaid.svg b/docs/test_cases/t00068_r0_class_mermaid.svg index cd1a0d3f7..6431f7831 100644 --- a/docs/test_cases/t00068_r0_class_mermaid.svg +++ b/docs/test_cases/t00068_r0_class_mermaid.svg @@ -53,7 +53,7 @@ - + diff --git a/docs/test_cases/t00068_r1_class.svg b/docs/test_cases/t00068_r1_class.svg index f82331586..85825a6df 100644 --- a/docs/test_cases/t00068_r1_class.svg +++ b/docs/test_cases/t00068_r1_class.svg @@ -4,7 +4,7 @@ AAA context of radius 1 - + @@ -12,16 +12,16 @@ BB - + - + b : std::vector<B> - + @@ -34,7 +34,7 @@ - + @@ -44,7 +44,7 @@ - + @@ -52,23 +52,23 @@ AAA - + - + akind : AKind - + - + bb : BB * - + @@ -76,11 +76,11 @@ R - + - + aaa : AAA * diff --git a/docs/test_cases/t00068_r1_class_mermaid.svg b/docs/test_cases/t00068_r1_class_mermaid.svg index ac4d71623..22cdcf46f 100644 --- a/docs/test_cases/t00068_r1_class_mermaid.svg +++ b/docs/test_cases/t00068_r1_class_mermaid.svg @@ -101,7 +101,7 @@ - + @@ -125,7 +125,7 @@ - + @@ -159,7 +159,7 @@ - + @@ -178,7 +178,7 @@ - + @@ -207,7 +207,7 @@ - + diff --git a/docs/test_cases/t00068_r2_class.svg b/docs/test_cases/t00068_r2_class.svg index 50c196fde..9141a506e 100644 --- a/docs/test_cases/t00068_r2_class.svg +++ b/docs/test_cases/t00068_r2_class.svg @@ -4,7 +4,7 @@ AAA context of radius 2 - + @@ -14,7 +14,7 @@ - + @@ -22,16 +22,16 @@ BB - + - + b : std::vector<B> - + @@ -44,7 +44,7 @@ - + @@ -54,7 +54,7 @@ - + @@ -64,7 +64,7 @@ - + @@ -72,23 +72,23 @@ AAA - + - + akind : AKind - + - + bb : BB * - + @@ -96,16 +96,16 @@ R - + - + aaa : AAA * - + @@ -113,11 +113,11 @@ RR - + - + r : std::shared_ptr<R> diff --git a/docs/test_cases/t00068_r2_class_mermaid.svg b/docs/test_cases/t00068_r2_class_mermaid.svg index 13f7610b3..0c0d92435 100644 --- a/docs/test_cases/t00068_r2_class_mermaid.svg +++ b/docs/test_cases/t00068_r2_class_mermaid.svg @@ -135,7 +135,7 @@ - + @@ -154,7 +154,7 @@ - + @@ -178,7 +178,7 @@ - + @@ -212,7 +212,7 @@ - + @@ -231,7 +231,7 @@ - + @@ -250,7 +250,7 @@ - + @@ -279,7 +279,7 @@ - + @@ -303,7 +303,7 @@ - + diff --git a/docs/test_cases/t00069_class.svg b/docs/test_cases/t00069_class.svg index 58ca2de8b..f74a5ebe1 100644 --- a/docs/test_cases/t00069_class.svg +++ b/docs/test_cases/t00069_class.svg @@ -3,7 +3,7 @@ - + @@ -12,99 +12,99 @@ T - + - + generator(handle_type h) : void - + - + ~generator() : void - + - + full_ : bool - + - + h_ : handle_type - + generator::promise_type - + - + final_suspend() noexcept : std::suspend_always - + - + get_return_object() : generator<T> - + - + initial_suspend() : std::suspend_always - + - + return_void() : void - + - + unhandled_exception() : void yield_value<std::convertible_to From>(From && from) : std::suspend_always - + - + exception_ : std::exception_ptr - + - + value_ : T - + @@ -116,33 +116,33 @@ - + A - + - + iota() [coroutine] : generator<unsigned long> - + - + seed() [coroutine] : generator<unsigned long> - + - + counter_ : unsigned long diff --git a/docs/test_cases/t00069_class_mermaid.svg b/docs/test_cases/t00069_class_mermaid.svg index da3e61b87..9b58f1c95 100644 --- a/docs/test_cases/t00069_class_mermaid.svg +++ b/docs/test_cases/t00069_class_mermaid.svg @@ -114,7 +114,7 @@ - + @@ -153,7 +153,7 @@ - + @@ -212,7 +212,7 @@ - + @@ -231,7 +231,7 @@ - + diff --git a/docs/test_cases/t00070_class.svg b/docs/test_cases/t00070_class.svg index 561829dab..336803e38 100644 --- a/docs/test_cases/t00070_class.svg +++ b/docs/test_cases/t00070_class.svg @@ -3,7 +3,7 @@ - + @@ -13,7 +13,7 @@ - + @@ -23,16 +23,16 @@ T - + - + t : T - + @@ -44,26 +44,26 @@ - + A - + - + get() : int - + - + a : int diff --git a/docs/test_cases/t00070_class_mermaid.svg b/docs/test_cases/t00070_class_mermaid.svg index 2b4345cb9..fce50a5f5 100644 --- a/docs/test_cases/t00070_class_mermaid.svg +++ b/docs/test_cases/t00070_class_mermaid.svg @@ -52,7 +52,7 @@ - + @@ -71,7 +71,7 @@ - + @@ -95,7 +95,7 @@ - + @@ -124,7 +124,7 @@ - + diff --git a/docs/test_cases/t00071_class.svg b/docs/test_cases/t00071_class.svg index 55cec0880..3fb6f043f 100644 --- a/docs/test_cases/t00071_class.svg +++ b/docs/test_cases/t00071_class.svg @@ -28,31 +28,31 @@ lib2 - + A - + - + get() : int - + - + a : int - + @@ -62,7 +62,7 @@ - + @@ -72,16 +72,16 @@ T - + - + t : T - + @@ -93,7 +93,7 @@ - + @@ -103,7 +103,7 @@ - + @@ -113,7 +113,7 @@ - + @@ -123,7 +123,7 @@ - + @@ -133,16 +133,16 @@ T - + - + t : T - + @@ -154,7 +154,7 @@ - + @@ -162,25 +162,25 @@ R - + - + a : A * - + - + b : B * - + - + c : C * diff --git a/docs/test_cases/t00071_class_mermaid.svg b/docs/test_cases/t00071_class_mermaid.svg index 22c1eaaca..dec9650e5 100644 --- a/docs/test_cases/t00071_class_mermaid.svg +++ b/docs/test_cases/t00071_class_mermaid.svg @@ -90,7 +90,7 @@ - + @@ -109,7 +109,7 @@ - + @@ -133,7 +133,7 @@ - + @@ -162,7 +162,7 @@ - + @@ -181,7 +181,7 @@ - + @@ -200,7 +200,7 @@ - + @@ -219,7 +219,7 @@ - + @@ -243,7 +243,7 @@ - + @@ -272,7 +272,7 @@ - + @@ -301,7 +301,7 @@ - + diff --git a/docs/test_cases/t00072_class.svg b/docs/test_cases/t00072_class.svg index aee13f7a7..f5c127ffc 100644 --- a/docs/test_cases/t00072_class.svg +++ b/docs/test_cases/t00072_class.svg @@ -28,31 +28,31 @@ :lib2 - + A - + - + get() : int - + - + a : int - + @@ -62,7 +62,7 @@ - + @@ -72,16 +72,16 @@ T - + - + t : T - + @@ -93,7 +93,7 @@ - + @@ -103,7 +103,7 @@ - + @@ -113,7 +113,7 @@ - + @@ -123,7 +123,7 @@ - + @@ -133,16 +133,16 @@ T - + - + t : T - + diff --git a/docs/test_cases/t00072_class_mermaid.svg b/docs/test_cases/t00072_class_mermaid.svg index 4ed66a302..9db880b44 100644 --- a/docs/test_cases/t00072_class_mermaid.svg +++ b/docs/test_cases/t00072_class_mermaid.svg @@ -52,7 +52,7 @@ - + @@ -71,7 +71,7 @@ - + @@ -95,7 +95,7 @@ - + @@ -124,7 +124,7 @@ - + @@ -143,7 +143,7 @@ - + @@ -162,7 +162,7 @@ - + @@ -181,7 +181,7 @@ - + @@ -205,7 +205,7 @@ - + @@ -234,7 +234,7 @@ - + diff --git a/docs/test_cases/t00073_class.svg b/docs/test_cases/t00073_class.svg index fe7a24839..a36ceee1d 100644 --- a/docs/test_cases/t00073_class.svg +++ b/docs/test_cases/t00073_class.svg @@ -3,7 +3,7 @@ - + @@ -13,32 +13,32 @@ - + AHandler - + - + operator()(A & a) const : void - + - + handle(A & a) const : void - + @@ -48,32 +48,32 @@ - + BHandler - + - + operator()(B & b) const : void - + - + handle(B & b) const : void - + @@ -85,7 +85,7 @@ - + @@ -97,7 +97,7 @@ - + @@ -105,11 +105,11 @@ R - + - + dispatch : Overload<AHandler,BHandler> diff --git a/docs/test_cases/t00073_class_mermaid.svg b/docs/test_cases/t00073_class_mermaid.svg index 4b8233cd4..04e358c72 100644 --- a/docs/test_cases/t00073_class_mermaid.svg +++ b/docs/test_cases/t00073_class_mermaid.svg @@ -122,7 +122,7 @@ - + @@ -141,7 +141,7 @@ - + @@ -170,7 +170,7 @@ - + @@ -189,7 +189,7 @@ - + @@ -218,7 +218,7 @@ - + @@ -237,7 +237,7 @@ - + @@ -256,7 +256,7 @@ - + diff --git a/docs/test_cases/t00074_class.svg b/docs/test_cases/t00074_class.svg index 5be4570e3..e039036c2 100644 --- a/docs/test_cases/t00074_class.svg +++ b/docs/test_cases/t00074_class.svg @@ -3,7 +3,7 @@ - + @@ -16,7 +16,7 @@ - + @@ -29,7 +29,7 @@ - + diff --git a/docs/test_cases/t00074_class_mermaid.svg b/docs/test_cases/t00074_class_mermaid.svg index e726867a4..78a9a8b22 100644 --- a/docs/test_cases/t00074_class_mermaid.svg +++ b/docs/test_cases/t00074_class_mermaid.svg @@ -78,7 +78,7 @@ - + @@ -97,7 +97,7 @@ - + @@ -116,7 +116,7 @@ - + diff --git a/docs/test_cases/t00075_class.svg b/docs/test_cases/t00075_class.svg index 8850067c3..bbf2e3c3d 100644 --- a/docs/test_cases/t00075_class.svg +++ b/docs/test_cases/t00075_class.svg @@ -13,7 +13,7 @@ ns2 - + @@ -29,7 +29,7 @@ t.e() - + @@ -41,41 +41,41 @@ - + A - + - + e() const : E - + B - + - + e() const : E - + @@ -85,16 +85,16 @@ ns1::ns2::C T - + - + a_or_b : T - + @@ -106,7 +106,7 @@ - + @@ -118,7 +118,7 @@ - + @@ -126,18 +126,18 @@ R - + - + a : ABE<A> - + - + b : ABE<B> diff --git a/docs/test_cases/t00075_class_mermaid.svg b/docs/test_cases/t00075_class_mermaid.svg index 6207ea269..8d035e652 100644 --- a/docs/test_cases/t00075_class_mermaid.svg +++ b/docs/test_cases/t00075_class_mermaid.svg @@ -162,7 +162,7 @@ - + @@ -196,7 +196,7 @@ - + @@ -225,7 +225,7 @@ - + @@ -249,7 +249,7 @@ - + @@ -273,7 +273,7 @@ - + @@ -297,7 +297,7 @@ - + @@ -316,7 +316,7 @@ - + @@ -335,7 +335,7 @@ - + diff --git a/docs/test_cases/t00076_class.svg b/docs/test_cases/t00076_class.svg index 3fb20168d..e1800932e 100644 --- a/docs/test_cases/t00076_class.svg +++ b/docs/test_cases/t00076_class.svg @@ -3,7 +3,7 @@ - + @@ -16,7 +16,7 @@ - + @@ -26,7 +26,7 @@ - + @@ -34,16 +34,16 @@ G - + - + gg : GG - + @@ -53,59 +53,59 @@ - + B - + - + a(H * h) : void - + - + bb : BB * - + - + c : Color - + - + f : F * - + - + g : G - + - + j : J - + @@ -115,7 +115,7 @@ - + @@ -125,7 +125,7 @@ - + @@ -135,7 +135,7 @@ - + @@ -143,23 +143,23 @@ E - + - + b : B * - + - + ee : EE * - + @@ -167,27 +167,27 @@ EEE - + - + e : E * - + I - + - + i(B * b) : void diff --git a/docs/test_cases/t00076_class_mermaid.svg b/docs/test_cases/t00076_class_mermaid.svg index 025da1db6..da721f7cf 100644 --- a/docs/test_cases/t00076_class_mermaid.svg +++ b/docs/test_cases/t00076_class_mermaid.svg @@ -199,7 +199,7 @@ - + @@ -233,7 +233,7 @@ - + @@ -252,7 +252,7 @@ - + @@ -276,7 +276,7 @@ - + @@ -295,7 +295,7 @@ - + @@ -344,7 +344,7 @@ - + @@ -363,7 +363,7 @@ - + @@ -382,7 +382,7 @@ - + @@ -401,7 +401,7 @@ - + @@ -430,7 +430,7 @@ - + @@ -454,7 +454,7 @@ - + diff --git a/docs/test_cases/t00077_class.svg b/docs/test_cases/t00077_class.svg index 749f9a984..d25ddb6e2 100644 --- a/docs/test_cases/t00077_class.svg +++ b/docs/test_cases/t00077_class.svg @@ -3,7 +3,7 @@ - + @@ -13,7 +13,7 @@ - + @@ -23,7 +23,7 @@ - + @@ -33,52 +33,52 @@ - + B - + - + a(H * h) : void - + - + c : Color - + - + f : F * - + - + g : G - + - + j : J - + @@ -88,7 +88,7 @@ - + @@ -96,16 +96,16 @@ F - + - + ff : FF * - + @@ -113,23 +113,23 @@ K - + - + b : B - + - + kkk : KKK - + @@ -137,11 +137,11 @@ KK - + - + k : K diff --git a/docs/test_cases/t00077_class_mermaid.svg b/docs/test_cases/t00077_class_mermaid.svg index 8d05381e2..466cf6b5b 100644 --- a/docs/test_cases/t00077_class_mermaid.svg +++ b/docs/test_cases/t00077_class_mermaid.svg @@ -134,7 +134,7 @@ - + @@ -153,7 +153,7 @@ - + @@ -172,7 +172,7 @@ - + @@ -191,7 +191,7 @@ - + @@ -235,7 +235,7 @@ - + @@ -254,7 +254,7 @@ - + @@ -278,7 +278,7 @@ - + @@ -307,7 +307,7 @@ - + diff --git a/docs/test_cases/t00078_class.svg b/docs/test_cases/t00078_class.svg index fdc5bbfe0..d7b03facb 100644 --- a/docs/test_cases/t00078_class.svg +++ b/docs/test_cases/t00078_class.svg @@ -3,7 +3,7 @@ - + @@ -13,7 +13,7 @@ - + @@ -23,7 +23,7 @@ - + @@ -31,23 +31,23 @@ A - + - + d : D - + - + e : E * - + @@ -55,11 +55,11 @@ C - + - + a : A diff --git a/docs/test_cases/t00078_class_mermaid.svg b/docs/test_cases/t00078_class_mermaid.svg index 4fdabf486..133a19351 100644 --- a/docs/test_cases/t00078_class_mermaid.svg +++ b/docs/test_cases/t00078_class_mermaid.svg @@ -88,7 +88,7 @@ - + @@ -107,7 +107,7 @@ - + @@ -126,7 +126,7 @@ - + @@ -155,7 +155,7 @@ - + diff --git a/docs/test_cases/t00079_class.svg b/docs/test_cases/t00079_class.svg index cd4bf5efc..10463bc61 100644 --- a/docs/test_cases/t00079_class.svg +++ b/docs/test_cases/t00079_class.svg @@ -3,7 +3,7 @@ - + @@ -13,7 +13,7 @@ - + @@ -21,11 +21,11 @@ B - + - + a : A * diff --git a/docs/test_cases/t00079_class_mermaid.svg b/docs/test_cases/t00079_class_mermaid.svg index ed29763b7..0fa1ce282 100644 --- a/docs/test_cases/t00079_class_mermaid.svg +++ b/docs/test_cases/t00079_class_mermaid.svg @@ -52,7 +52,7 @@ - + @@ -71,7 +71,7 @@ - + diff --git a/docs/test_cases/t00080_class.svg b/docs/test_cases/t00080_class.svg index 8c46c406d..28a7b2df5 100644 --- a/docs/test_cases/t00080_class.svg +++ b/docs/test_cases/t00080_class.svg @@ -45,32 +45,32 @@ _M_id : id - + Worker - + - + ~Worker() : void - + - + start(int delay) : void - + @@ -78,11 +78,11 @@ R - + - + w : Worker * diff --git a/docs/test_cases/t00080_class_mermaid.svg b/docs/test_cases/t00080_class_mermaid.svg index cff44953d..e7f89d71d 100644 --- a/docs/test_cases/t00080_class_mermaid.svg +++ b/docs/test_cases/t00080_class_mermaid.svg @@ -173,7 +173,7 @@ - + @@ -202,7 +202,7 @@ - + diff --git a/docs/test_cases/t00081_class.svg b/docs/test_cases/t00081_class.svg index 32021c69f..ce4bb4014 100644 --- a/docs/test_cases/t00081_class.svg +++ b/docs/test_cases/t00081_class.svg @@ -61,7 +61,7 @@ - + diff --git a/docs/test_cases/t00081_class_mermaid.svg b/docs/test_cases/t00081_class_mermaid.svg index d064c8ad0..bdcfa50a1 100644 --- a/docs/test_cases/t00081_class_mermaid.svg +++ b/docs/test_cases/t00081_class_mermaid.svg @@ -228,7 +228,7 @@ - + diff --git a/docs/test_cases/t00082_class.svg b/docs/test_cases/t00082_class.svg index ec6674395..24683727f 100644 --- a/docs/test_cases/t00082_class.svg +++ b/docs/test_cases/t00082_class.svg @@ -33,7 +33,7 @@ nsC - + @@ -43,7 +43,7 @@ - + @@ -53,7 +53,7 @@ - + @@ -63,7 +63,7 @@ - + @@ -73,7 +73,7 @@ - + @@ -83,7 +83,7 @@ - + @@ -93,7 +93,7 @@ - + @@ -103,7 +103,7 @@ - + diff --git a/docs/test_cases/t00082_class_mermaid.svg b/docs/test_cases/t00082_class_mermaid.svg index 6db71b66b..142d9c1b3 100644 --- a/docs/test_cases/t00082_class_mermaid.svg +++ b/docs/test_cases/t00082_class_mermaid.svg @@ -104,7 +104,7 @@ - + @@ -123,7 +123,7 @@ - + @@ -142,7 +142,7 @@ - + @@ -161,7 +161,7 @@ - + @@ -180,7 +180,7 @@ - + @@ -199,7 +199,7 @@ - + @@ -218,7 +218,7 @@ - + @@ -237,7 +237,7 @@ - + diff --git a/docs/test_cases/t00083_class.svg b/docs/test_cases/t00083_class.svg index 3c20b65e7..3aac72b93 100644 --- a/docs/test_cases/t00083_class.svg +++ b/docs/test_cases/t00083_class.svg @@ -33,7 +33,7 @@ nsD - + @@ -43,7 +43,7 @@ - + @@ -53,7 +53,7 @@ - + diff --git a/docs/test_cases/t00083_class_mermaid.svg b/docs/test_cases/t00083_class_mermaid.svg index 785995835..7b457cb59 100644 --- a/docs/test_cases/t00083_class_mermaid.svg +++ b/docs/test_cases/t00083_class_mermaid.svg @@ -52,7 +52,7 @@ - + @@ -71,7 +71,7 @@ - + @@ -90,7 +90,7 @@ - + diff --git a/docs/test_cases/t20001_sequence.svg b/docs/test_cases/t20001_sequence.svg index ef766111b..0647869bd 100644 --- a/docs/test_cases/t20001_sequence.svg +++ b/docs/test_cases/t20001_sequence.svg @@ -1,4 +1,4 @@ - + @@ -13,26 +13,26 @@ - - - - + + + + tmain() - - tmain() + + tmain() - + A - - A + + A - + B - - B + + B @@ -43,12 +43,12 @@ - + A() - + B(A &) @@ -56,7 +56,7 @@ Just add 2 numbers - + add(int,int) @@ -66,17 +66,17 @@ And now add another 2 - + wrap_add3(int,int,int) - + add3(int,int,int) - + @@ -87,7 +87,7 @@ - + @@ -96,15 +96,12 @@ - + log_result(int) - - - Main test function diff --git a/docs/test_cases/t20001_sequence_mermaid.svg b/docs/test_cases/t20001_sequence_mermaid.svg index 51e395798..edbb55665 100644 --- a/docs/test_cases/t20001_sequence_mermaid.svg +++ b/docs/test_cases/t20001_sequence_mermaid.svg @@ -1,25 +1,25 @@ - + Basic sequence diagram example - - + + B - - + + A - - + + tmain() - + @@ -28,7 +28,7 @@ - + @@ -37,7 +37,7 @@ - + @@ -122,12 +122,6 @@ - - - - Main test function - - A() B(A &) diff --git a/docs/test_cases/t20002_sequence.svg b/docs/test_cases/t20002_sequence.svg index dcb90bdee..3766792c9 100644 --- a/docs/test_cases/t20002_sequence.svg +++ b/docs/test_cases/t20002_sequence.svg @@ -11,25 +11,25 @@ - + m1() m1() - + m2() m2() - + m3() m3() - + m4() @@ -39,15 +39,15 @@ - + - + - + diff --git a/docs/test_cases/t20003_sequence.svg b/docs/test_cases/t20003_sequence.svg index 026970a92..599b4d7d1 100644 --- a/docs/test_cases/t20003_sequence.svg +++ b/docs/test_cases/t20003_sequence.svg @@ -11,25 +11,25 @@ - + m1<T>(T) m1<T>(T) - + m2<T>(T) m2<T>(T) - + m3<T>(T) m3<T>(T) - + m4<T>(T) @@ -39,15 +39,15 @@ - + - + - + diff --git a/docs/test_cases/t20004_sequence.svg b/docs/test_cases/t20004_sequence.svg index a4dd88c97..bf118ed5b 100644 --- a/docs/test_cases/t20004_sequence.svg +++ b/docs/test_cases/t20004_sequence.svg @@ -23,61 +23,61 @@ - + 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) @@ -93,17 +93,17 @@ - + - + - + @@ -111,11 +111,11 @@ - + - + @@ -123,19 +123,19 @@ - + - + - + - + diff --git a/docs/test_cases/t20005_sequence.svg b/docs/test_cases/t20005_sequence.svg index 06e117e4b..5ffd6b6c9 100644 --- a/docs/test_cases/t20005_sequence.svg +++ b/docs/test_cases/t20005_sequence.svg @@ -9,19 +9,19 @@ - + C<T> C<T> - + B<T> B<T> - + A<T> @@ -33,12 +33,12 @@ c(T) - + b(T) - + a(T) diff --git a/docs/test_cases/t20006_sequence.svg b/docs/test_cases/t20006_sequence.svg index fcef88bd9..3d15eedcb 100644 --- a/docs/test_cases/t20006_sequence.svg +++ b/docs/test_cases/t20006_sequence.svg @@ -30,55 +30,55 @@ - + tmain() tmain() - + B<int> B<int> - + A<int> A<int> - + B<std::string> B<std::string> - + A<std::string> A<std::string> - + BB<int,std::string> BB<int,std::string> - + BB<int,float> BB<int,float> - + BB<int,int> BB<int,int> - + AA<int> @@ -102,12 +102,12 @@ - + b(int) - + a1(int) @@ -116,12 +116,12 @@ - + b(std::string) - + a2(std::string) @@ -130,69 +130,69 @@ - + BB(AA<int> *) - + BB(AA<int> &) - + bb1(int,int) - + aa1(int) - + bb2(int,int) - + aa2(int) - + bb1(int,std::string) - + aa2(int) - + bb2(int,std::string) - + aa1(int) - + bb1(int,float) - + bb2(int,float) - + aa2(int) diff --git a/docs/test_cases/t20007_sequence.svg b/docs/test_cases/t20007_sequence.svg index 2c59aed49..ab980e774 100644 --- a/docs/test_cases/t20007_sequence.svg +++ b/docs/test_cases/t20007_sequence.svg @@ -11,25 +11,25 @@ - + tmain() tmain() - + Adder<int,int> Adder<int,int> - + Adder<int,float,double> Adder<int,float,double> - + Adder<std::string,std::string,std::string> @@ -39,21 +39,21 @@ - + add(int &&,int &&) - + add(int &&,float &&,double &&) - + add(std::string &&,std::string &&,std::string &&) diff --git a/docs/test_cases/t20008_sequence.svg b/docs/test_cases/t20008_sequence.svg index eafc099a0..888b4aab4 100644 --- a/docs/test_cases/t20008_sequence.svg +++ b/docs/test_cases/t20008_sequence.svg @@ -17,43 +17,43 @@ - + 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> @@ -66,32 +66,32 @@ - + b(int) - + a1(int) - + b(const char *) - + a2(const char *) - + b(std::string) - + a3(std::string) diff --git a/docs/test_cases/t20009_sequence.svg b/docs/test_cases/t20009_sequence.svg index 93bca68ff..8c970e422 100644 --- a/docs/test_cases/t20009_sequence.svg +++ b/docs/test_cases/t20009_sequence.svg @@ -17,43 +17,43 @@ - + 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> @@ -66,32 +66,32 @@ - + b(std::string) - + a(std::string) - + b(int) - + a(int) - + b(float) - + a(float) diff --git a/docs/test_cases/t20010_sequence.svg b/docs/test_cases/t20010_sequence.svg index e8ada750e..aeba2262f 100644 --- a/docs/test_cases/t20010_sequence.svg +++ b/docs/test_cases/t20010_sequence.svg @@ -15,19 +15,19 @@ - + tmain() tmain() - + B<int> B<int> - + A @@ -42,42 +42,42 @@ - + b1() - + a1() - + b2() - + a2() - + b3() - + a3() - + b4() - + a4() diff --git a/docs/test_cases/t20011_sequence.svg b/docs/test_cases/t20011_sequence.svg index 88e5d7f87..363b620ba 100644 --- a/docs/test_cases/t20011_sequence.svg +++ b/docs/test_cases/t20011_sequence.svg @@ -17,13 +17,13 @@ - + tmain() tmain() - + A @@ -38,7 +38,7 @@ - + a(int) @@ -46,26 +46,26 @@ alt - + a(int) - + b(int) - + c(int) - + @@ -75,14 +75,14 @@ alt - + b(int) - + @@ -92,7 +92,7 @@ alt - + diff --git a/docs/test_cases/t20012_sequence.svg b/docs/test_cases/t20012_sequence.svg index 7cd1e73a6..be04cebf6 100644 --- a/docs/test_cases/t20012_sequence.svg +++ b/docs/test_cases/t20012_sequence.svg @@ -40,61 +40,61 @@ - + tmain() tmain() - + tmain()::(lambda t20012.cc:67:20) tmain()::(lambda t20012.cc:67:20) - + A A - + B B - + tmain()::(lambda t20012.cc:80:20) tmain()::(lambda t20012.cc:80:20) - + C C - + R<(lambda at t20012.cc:86:9)> R<(lambda at t20012.cc:86:9)> - + tmain()::(lambda t20012.cc:86:9) tmain()::(lambda t20012.cc:86:9) - + tmain()::(lambda t20012.cc:94:9) tmain()::(lambda t20012.cc:94:9) - + D @@ -127,156 +127,156 @@ - + operator()() const - + a() - + aa() - + aaa() - + b() - + bb() - + bbb() - + operator()() const - + c() - + cc() - + ccc() - + operator()() const - + a() - + aa() - + aaa() - + b() - + bb() - + bbb() - + R((lambda at t20012.cc:86:9) &&) - + r() - + operator()() const - + c() - + cc() - + ccc() - + operator()(auto) const - + add5(int) const diff --git a/docs/test_cases/t20013_sequence.svg b/docs/test_cases/t20013_sequence.svg index 86cc18a4f..fc6942be7 100644 --- a/docs/test_cases/t20013_sequence.svg +++ b/docs/test_cases/t20013_sequence.svg @@ -13,19 +13,19 @@ - + tmain(int,char **) tmain(int,char **) - + B B - + A @@ -38,12 +38,12 @@ - + b(int) - + a1(int) @@ -52,12 +52,12 @@ - + b(double) - + a2(double) @@ -66,12 +66,12 @@ - + b(const char *) - + a3(const char *) diff --git a/docs/test_cases/t20014_sequence.svg b/docs/test_cases/t20014_sequence.svg index 957fc808c..9cf571aea 100644 --- a/docs/test_cases/t20014_sequence.svg +++ b/docs/test_cases/t20014_sequence.svg @@ -15,25 +15,25 @@ - + tmain() tmain() - + B B - + A A - + C<B,int> @@ -47,12 +47,12 @@ - + b1(int,int) - + a1(int,int) @@ -61,12 +61,12 @@ - + b2(int,int) - + a2(int,int) @@ -75,17 +75,17 @@ - + c1(int,int) - + b1(int,int) - + a1(int,int) diff --git a/docs/test_cases/t20015_sequence.svg b/docs/test_cases/t20015_sequence.svg index 4ee62ea18..78af558e6 100644 --- a/docs/test_cases/t20015_sequence.svg +++ b/docs/test_cases/t20015_sequence.svg @@ -7,13 +7,13 @@ - + tmain() tmain() - + B @@ -21,7 +21,7 @@ - + setup_a(std::shared_ptr<detail::A> &) diff --git a/docs/test_cases/t20016_sequence.svg b/docs/test_cases/t20016_sequence.svg index 7f0f384f9..533399032 100644 --- a/docs/test_cases/t20016_sequence.svg +++ b/docs/test_cases/t20016_sequence.svg @@ -11,19 +11,19 @@ - + tmain() tmain() - + B<long> B<long> - + A @@ -34,22 +34,22 @@ - + b1(long) - + a1(int) - + b2(long) - + a2(const long &) diff --git a/docs/test_cases/t20017_sequence.svg b/docs/test_cases/t20017_sequence.svg index f6e23cf48..446e93637 100644 --- a/docs/test_cases/t20017_sequence.svg +++ b/docs/test_cases/t20017_sequence.svg @@ -33,35 +33,35 @@ tmain() - + a3(int,int) - + b1(int,int) - + a2(int,int) - + a1(int,int) - + b2<int>(int,int) diff --git a/docs/test_cases/t20018_sequence.svg b/docs/test_cases/t20018_sequence.svg index 9563772e9..7adfc96f4 100644 --- a/docs/test_cases/t20018_sequence.svg +++ b/docs/test_cases/t20018_sequence.svg @@ -19,49 +19,49 @@ - + 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> @@ -75,37 +75,37 @@ - + print() - + print(int) - + print(int) - + print(int) - + print(int) - + print(int) - + print(int) diff --git a/docs/test_cases/t20019_sequence.svg b/docs/test_cases/t20019_sequence.svg index bc9a634d9..ba1ee21bb 100644 --- a/docs/test_cases/t20019_sequence.svg +++ b/docs/test_cases/t20019_sequence.svg @@ -17,31 +17,31 @@ - + tmain() tmain() - + Base<D1> Base<D1> - + D1 D1 - + Base<D2> Base<D2> - + D2 @@ -56,42 +56,42 @@ - + name() - + impl() - + name() - + impl() - + name() - + impl() - + name() - + impl() diff --git a/docs/test_cases/t20020_sequence.svg b/docs/test_cases/t20020_sequence.svg index 411d4b664..b0a9b8ca9 100644 --- a/docs/test_cases/t20020_sequence.svg +++ b/docs/test_cases/t20020_sequence.svg @@ -27,31 +27,31 @@ - + tmain() tmain() - + A A - + C C - + B B - + D<int> @@ -74,7 +74,7 @@ alt - + a1() @@ -82,7 +82,7 @@ - + a5() @@ -93,7 +93,7 @@ alt - + [ @@ -102,7 +102,7 @@ - + [ @@ -111,7 +111,7 @@ - + b1() @@ -119,7 +119,7 @@ - + [ @@ -128,7 +128,7 @@ - + b2() @@ -136,14 +136,14 @@ - + a4() - + log() @@ -151,7 +151,7 @@ alt - + c1() const @@ -159,7 +159,7 @@ alt - + @@ -172,7 +172,7 @@ - + @@ -182,7 +182,7 @@ alt - + d1(int,int) diff --git a/docs/test_cases/t20021_sequence.svg b/docs/test_cases/t20021_sequence.svg index de3117803..dea1de774 100644 --- a/docs/test_cases/t20021_sequence.svg +++ b/docs/test_cases/t20021_sequence.svg @@ -24,25 +24,25 @@ - + tmain() tmain() - + C C - + A A - + B @@ -63,14 +63,14 @@ loop - + [ c4() ] - + @@ -83,7 +83,7 @@ - + a3() @@ -96,7 +96,7 @@ loop - + [ @@ -105,7 +105,7 @@ - + [ @@ -114,7 +114,7 @@ - + [ @@ -123,14 +123,14 @@ - + a1() - + [ @@ -142,7 +142,7 @@ loop - + b2() const @@ -152,7 +152,7 @@ loop - + [ @@ -161,7 +161,7 @@ - + b2() const diff --git a/docs/test_cases/t20022_sequence.svg b/docs/test_cases/t20022_sequence.svg index 228970549..ef230bf20 100644 --- a/docs/test_cases/t20022_sequence.svg +++ b/docs/test_cases/t20022_sequence.svg @@ -10,19 +10,19 @@ - + tmain() tmain() - + A A - + B @@ -32,18 +32,18 @@ - + A(std::unique_ptr ) - + a() - + b() diff --git a/docs/test_cases/t20023_sequence.svg b/docs/test_cases/t20023_sequence.svg index 19cb0b471..ffda789f4 100644 --- a/docs/test_cases/t20023_sequence.svg +++ b/docs/test_cases/t20023_sequence.svg @@ -12,13 +12,13 @@ - + tmain() tmain() - + A @@ -30,7 +30,7 @@ - + a() @@ -38,7 +38,7 @@ try - + @@ -51,7 +51,7 @@ [std::runtime_error &] - + @@ -64,7 +64,7 @@ [std::logic_error &] - + @@ -77,7 +77,7 @@ [...] - + diff --git a/docs/test_cases/t20024_sequence.svg b/docs/test_cases/t20024_sequence.svg index a71485941..32c599ebf 100644 --- a/docs/test_cases/t20024_sequence.svg +++ b/docs/test_cases/t20024_sequence.svg @@ -19,19 +19,19 @@ - + tmain() tmain() - + A A - + B @@ -48,7 +48,7 @@ - + select(enum_a) @@ -58,7 +58,7 @@ switch [zero] - + @@ -71,7 +71,7 @@ [one] - + @@ -84,7 +84,7 @@ [two] - + @@ -97,7 +97,7 @@ [default] - + @@ -110,7 +110,7 @@ - + select(colors) @@ -120,7 +120,7 @@ switch [enum colors::red] - + @@ -129,7 +129,7 @@ [enum colors::orange] - + @@ -138,7 +138,7 @@ [enum colors::green] - + @@ -147,7 +147,7 @@ [default] - + diff --git a/docs/test_cases/t20025_sequence.svg b/docs/test_cases/t20025_sequence.svg index db568940c..078cda504 100644 --- a/docs/test_cases/t20025_sequence.svg +++ b/docs/test_cases/t20025_sequence.svg @@ -9,19 +9,19 @@ - + tmain() tmain() - + A A - + add(int,int) @@ -30,14 +30,14 @@ - + a() - + diff --git a/docs/test_cases/t20026_sequence.svg b/docs/test_cases/t20026_sequence.svg index 5b577b2c7..e1a6f6f19 100644 --- a/docs/test_cases/t20026_sequence.svg +++ b/docs/test_cases/t20026_sequence.svg @@ -7,13 +7,13 @@ - + tmain() tmain() - + A @@ -21,7 +21,7 @@ - + a() diff --git a/docs/test_cases/t20027_sequence.svg b/docs/test_cases/t20027_sequence.svg index 6375a2380..cf0951792 100644 --- a/docs/test_cases/t20027_sequence.svg +++ b/docs/test_cases/t20027_sequence.svg @@ -7,13 +7,13 @@ - + tmain() tmain() - + A @@ -21,7 +21,7 @@ - + a() diff --git a/docs/test_cases/t20028_sequence.svg b/docs/test_cases/t20028_sequence.svg index a79970ae7..69dbc88fb 100644 --- a/docs/test_cases/t20028_sequence.svg +++ b/docs/test_cases/t20028_sequence.svg @@ -11,13 +11,13 @@ - + tmain() tmain() - + A @@ -31,7 +31,7 @@ alt - + [ @@ -40,14 +40,14 @@ - + b() - + c() @@ -55,7 +55,7 @@ - + d() diff --git a/docs/test_cases/t20029_sequence.svg b/docs/test_cases/t20029_sequence.svg index db843bb71..9be23be05 100644 --- a/docs/test_cases/t20029_sequence.svg +++ b/docs/test_cases/t20029_sequence.svg @@ -19,31 +19,31 @@ - + tmain() tmain() - + Encoder<Retrier<ConnectionPool>> Encoder<Retrier<ConnectionPool>> - + Retrier<ConnectionPool> Retrier<ConnectionPool> - + ConnectionPool ConnectionPool - + encode_b64(std::string &&) @@ -60,7 +60,7 @@ Establish connection to the remote server synchronously - + connect() @@ -75,7 +75,7 @@ alt - + [ @@ -87,14 +87,14 @@ Encode the message using Base64 encoding and pass it to the next layer - + encode(std::string &&) - + @@ -104,7 +104,7 @@ - + send(std::string &&) @@ -119,7 +119,7 @@ alt - + [ diff --git a/docs/test_cases/t20030_sequence.svg b/docs/test_cases/t20030_sequence.svg index 8cf6c4a45..233cccc84 100644 --- a/docs/test_cases/t20030_sequence.svg +++ b/docs/test_cases/t20030_sequence.svg @@ -22,25 +22,25 @@ - + tmain(int) tmain(int) - + magic() magic() - + A A - + tmain(bool,int) @@ -61,23 +61,23 @@ - + - + A(int) - + operator+=(int) - + @@ -86,36 +86,36 @@ - + A() - + create() - + A() - + create() - + operator+=(int) - + @@ -124,12 +124,12 @@ - + operator=(const A &) - + @@ -138,7 +138,7 @@ - + value() const diff --git a/docs/test_cases/t20031_sequence.svg b/docs/test_cases/t20031_sequence.svg index 40e21a861..0b9e33b2e 100644 --- a/docs/test_cases/t20031_sequence.svg +++ b/docs/test_cases/t20031_sequence.svg @@ -13,31 +13,31 @@ - + tmain(int) tmain(int) - + magic() magic() - + tmain(bool,int) tmain(bool,int) - + execute(std::function<int ()>) execute(std::function<int ()>) - + A @@ -48,19 +48,19 @@ - + - + - + value() const diff --git a/docs/test_cases/t20032_sequence.svg b/docs/test_cases/t20032_sequence.svg index 348c3f4f0..bec0c89b9 100644 --- a/docs/test_cases/t20032_sequence.svg +++ b/docs/test_cases/t20032_sequence.svg @@ -13,19 +13,19 @@ - + tmain(int,char **) tmain(int,char **) - + B B - + A @@ -38,12 +38,12 @@ - + b(int) - + a1(int) @@ -54,12 +54,12 @@ int - + b(double) - + a2(double) @@ -70,12 +70,12 @@ double - + b(const char *) - + a3(const char *) diff --git a/docs/test_cases/t20033_sequence.svg b/docs/test_cases/t20033_sequence.svg index 7680e314b..211ff50dd 100644 --- a/docs/test_cases/t20033_sequence.svg +++ b/docs/test_cases/t20033_sequence.svg @@ -29,13 +29,13 @@ - + tmain() tmain() - + A @@ -64,7 +64,7 @@ [false] [reinterpret_cast<uint64_t>(&a) % 100 == 0ULL] - + a1() @@ -73,7 +73,7 @@ [reinterpret_cast<uint64_t>(&a) % 64 == 0ULL] - + a2() @@ -82,7 +82,7 @@ [a.a2() == 2 && a.a3() == 3] - + [ @@ -91,7 +91,7 @@ - + [ @@ -100,7 +100,7 @@ - + a3() @@ -108,7 +108,7 @@ - + a4() @@ -119,7 +119,7 @@ alt [int i = a.a2(); i != 2] - + [ @@ -128,7 +128,7 @@ - + a3() @@ -139,7 +139,7 @@ loop [int i = 0; i < a.a2(); i++] - + [ @@ -148,14 +148,14 @@ - + a3() - + a3() @@ -166,7 +166,7 @@ loop [retry_count--] - + a2() @@ -177,14 +177,14 @@ loop [retry_count++ < a.a3()] - + a4() - + [ @@ -197,7 +197,7 @@ alt [a.a4() % 6] - + [ @@ -211,7 +211,7 @@ loop [ints] - + a4() diff --git a/docs/test_cases/t20034_sequence.svg b/docs/test_cases/t20034_sequence.svg index bc46bb365..9b3941ab8 100644 --- a/docs/test_cases/t20034_sequence.svg +++ b/docs/test_cases/t20034_sequence.svg @@ -8,31 +8,31 @@ - + D D - + C C - + B B - + A A - + D::d2()::(lambda t20034.cc:56:18) @@ -41,17 +41,17 @@ d2() - + c2() - + b2() - + a2() @@ -62,12 +62,12 @@ d2() - + operator()() const - + a2() @@ -78,7 +78,7 @@ d2() - + a2() @@ -89,24 +89,24 @@ d2() - + c4() - + b4() - + b2() - + a2() @@ -117,17 +117,17 @@ d2() - + c1() - + b1() - + a2() @@ -138,24 +138,24 @@ d2() - + c3() - + c2() - + b2() - + a2() diff --git a/docs/test_cases/t20035_sequence.svg b/docs/test_cases/t20035_sequence.svg index c3478f4da..6397be58f 100644 --- a/docs/test_cases/t20035_sequence.svg +++ b/docs/test_cases/t20035_sequence.svg @@ -7,39 +7,39 @@ - + tmain(int,char **) tmain(int,char **) - + a(int) a(int) - + b1(int) b1(int) - + c(int) c(int) - + - + - + diff --git a/docs/test_cases/t20036_sequence.svg b/docs/test_cases/t20036_sequence.svg index 564d73ac9..32a6c54b1 100644 --- a/docs/test_cases/t20036_sequence.svg +++ b/docs/test_cases/t20036_sequence.svg @@ -7,25 +7,25 @@ - + C C - + B B - + A A - + D @@ -34,12 +34,12 @@ c1() - + b1() - + a2() @@ -50,17 +50,17 @@ d1() - + c2() - + b2() - + a2() @@ -71,7 +71,7 @@ d3() - + a2() @@ -82,12 +82,12 @@ c4() - + b2() - + a2() @@ -98,19 +98,19 @@ c3() - + c2() - + b2() - + a2() @@ -121,17 +121,17 @@ d2() - + c2() - + b2() - + a2() diff --git a/docs/test_cases/t20037_sequence.svg b/docs/test_cases/t20037_sequence.svg index 8fd522175..ce10aef07 100644 --- a/docs/test_cases/t20037_sequence.svg +++ b/docs/test_cases/t20037_sequence.svg @@ -21,37 +21,37 @@ - + tmain(int,char **) tmain(int,char **) - + a() a() - + A A - + initb() initb() - + B B - + c() @@ -69,29 +69,29 @@ - + - + A() - + - + get() - + @@ -99,18 +99,18 @@ - + - + get() - + @@ -118,18 +118,18 @@ - + - + get() - + diff --git a/docs/test_cases/t20038_sequence.svg b/docs/test_cases/t20038_sequence.svg index c0ef6636e..83e6d9adf 100644 --- a/docs/test_cases/t20038_sequence.svg +++ b/docs/test_cases/t20038_sequence.svg @@ -1,22 +1,22 @@ - + - + - + - + @@ -24,63 +24,63 @@ - - - - - - - - + + + + + + + + tmain() - - tmain() + + tmain() - + B - - B + + B - + A - - A + + A - + add<int>(int,int) - - add<int>(int,int) + + add<int>(int,int) - + add_impl<int>(int,int) - - add_impl<int>(int,int) + + add_impl<int>(int,int) - + add_impl<double>(double,double) - - add_impl<double>(double,double) + + add_impl<double>(double,double) - + - + - + @@ -109,12 +109,12 @@ loop - + b() - + a() @@ -127,12 +127,12 @@ ... or just once - + b() - + a() @@ -141,12 +141,12 @@ - + bbb() - + aaa() @@ -155,21 +155,21 @@ - + bbbb() - + aaaa() - + - + @@ -185,7 +185,7 @@ This comment should be rendered only once - + wrap(int) @@ -195,7 +195,7 @@ What is 2 + 2? - + @@ -204,21 +204,21 @@ Calling B::bbbbb() - + bbbbb() - + aaaa() - + - + @@ -233,28 +233,25 @@ This is a conditional operator - - - alt - - - This is a conditional operator - - - - [ - bbb() - ] + + + alt + + + + [ + bbb() + ] - - - - aaa() + + + + aaa() - - - - - + + + + + diff --git a/docs/test_cases/t20038_sequence_mermaid.svg b/docs/test_cases/t20038_sequence_mermaid.svg index e99128785..3288a0211 100644 --- a/docs/test_cases/t20038_sequence_mermaid.svg +++ b/docs/test_cases/t20038_sequence_mermaid.svg @@ -1,42 +1,42 @@ - + - - + + add_impl<double>(double,double) - - + + add_impl<int>(int,int) - - + + add<int>(int,int) - - + + A - - + + B - - + + tmain() - + @@ -45,7 +45,7 @@ - + @@ -54,7 +54,7 @@ - + @@ -63,7 +63,7 @@ - + @@ -72,7 +72,7 @@ - + @@ -81,7 +81,7 @@ - + @@ -128,7 +128,7 @@ - + @@ -280,27 +280,21 @@ - - - This is a conditional operator - + - + - - - - - - - - - - alt - - ​ + + + + + + + alt + + ​ b() @@ -367,12 +361,12 @@ ​ - [bbb()] - - aaa() - - ​ - - ​ - + [bbb()] + + aaa() + + ​ + + ​ + diff --git a/docs/test_cases/t20039_sequence.svg b/docs/test_cases/t20039_sequence.svg index bea60b35f..bc2030f1b 100644 --- a/docs/test_cases/t20039_sequence.svg +++ b/docs/test_cases/t20039_sequence.svg @@ -17,43 +17,43 @@ - + tmain() tmain() - + R R - + A<int> A<int> - + A<int_vec_t> A<int_vec_t> - + A<string_vec_t> A<string_vec_t> - + A<int_map_t> A<int_map_t> - + A<string_map_t> @@ -66,40 +66,40 @@ - + run() - + a(int) - + a(int_vec_t) - + a(string_vec_t) - + a(int_map_t) - + a(string_map_t) diff --git a/docs/test_cases/t20040_sequence.svg b/docs/test_cases/t20040_sequence.svg index 31aa8d251..b5d218bea 100644 --- a/docs/test_cases/t20040_sequence.svg +++ b/docs/test_cases/t20040_sequence.svg @@ -20,49 +20,49 @@ - + tmain() tmain() - + print<int,double,std::string>(int,double,std::string) print<int,double,std::string>(int,double,std::string) - + print<double,std::string>(double,std::string) print<double,std::string>(double,std::string) - + print<std::string>(std::string) print<std::string>(std::string) - + print() print() - + doublePrint<std::string,int>(std::string,int) doublePrint<std::string,int>(std::string,int) - + print<std::string,int>(std::string,int) print<std::string,int>(std::string,int) - + print<int>(int) @@ -77,35 +77,35 @@ - + - + - + - + - + - + - + - + diff --git a/docs/test_cases/t20041_sequence.svg b/docs/test_cases/t20041_sequence.svg index c284d05ca..be003bbbc 100644 --- a/docs/test_cases/t20041_sequence.svg +++ b/docs/test_cases/t20041_sequence.svg @@ -13,31 +13,31 @@ - + tmain() tmain() - + A<int,double,std::string> A<int,double,std::string> - + A<double,std::string> A<double,std::string> - + A<std::string> A<std::string> - + A @@ -48,22 +48,22 @@ - + print(int,double,std::string) - + print(double,std::string) - + print(std::string) - + print() diff --git a/docs/test_cases/t20042_sequence.svg b/docs/test_cases/t20042_sequence.svg index 175f1ad24..40fa405bf 100644 --- a/docs/test_cases/t20042_sequence.svg +++ b/docs/test_cases/t20042_sequence.svg @@ -11,19 +11,19 @@ - + tmain() tmain() - + AHandler AHandler - + BHandler @@ -34,24 +34,24 @@ - + operator()(A &) const - + handle(A &) const - + operator()(B &) const - + diff --git a/docs/test_cases/t20043_sequence.svg b/docs/test_cases/t20043_sequence.svg index bf398eeab..21e9a4336 100644 --- a/docs/test_cases/t20043_sequence.svg +++ b/docs/test_cases/t20043_sequence.svg @@ -9,19 +9,19 @@ - + tmain() tmain() - + D D - + C @@ -30,12 +30,12 @@ - + d() - + c() diff --git a/docs/test_cases/t20044_sequence.svg b/docs/test_cases/t20044_sequence.svg index e04d76fef..aa9b33cdb 100644 --- a/docs/test_cases/t20044_sequence.svg +++ b/docs/test_cases/t20044_sequence.svg @@ -26,43 +26,43 @@ - + tmain() tmain() - + R R - + tmain()::(lambda t20044.cc:74:9) tmain()::(lambda t20044.cc:74:9) - + A A - + tmain()::(lambda t20044.cc:84:18) tmain()::(lambda t20044.cc:84:18) - + result_t result_t - + tmain()::(lambda t20044.cc:90:19) @@ -83,12 +83,12 @@ - + R((lambda at t20044.cc:74:9) &&) - + operator()() const @@ -98,12 +98,12 @@ Call to template constructor with callable parameter and lambda expression as argument - + a() const - + operator()() const @@ -117,24 +117,24 @@ rendered TODO: Add some marker to highlight that this is not a direct call - + a5() - + a1() const - + expected(int) - + and_then((lambda at t20044.cc:90:19) &&) @@ -142,7 +142,7 @@ alt - + operator()(auto &&) const @@ -154,12 +154,12 @@ lambda expression as argument, fully tracked showing method's activity and - + a2(int) const - + expected(int) @@ -170,21 +170,21 @@ - + and_then(result_t (&)(int)) - + and_then(std::function<result_t (int)> &) - + value() const diff --git a/docs/test_cases/t20045_sequence.svg b/docs/test_cases/t20045_sequence.svg index 7d62758ad..4f19f4b37 100644 --- a/docs/test_cases/t20045_sequence.svg +++ b/docs/test_cases/t20045_sequence.svg @@ -25,67 +25,67 @@ - + tmain() tmain() - + a2(int) a2(int) - + a1<(lambda at t20045.cc:35:18)>((lambda at t20045.cc:35:18) &&) a1<(lambda at t20045.cc:35:18)>((lambda at t20045.cc:35:18) &&) - + tmain()::(lambda t20045.cc:35:18) tmain()::(lambda t20045.cc:35:18) - + a3(int) a3(int) - + a1<(lambda at t20045.cc:37:18)>((lambda at t20045.cc:37:18) &&) a1<(lambda at t20045.cc:37:18)>((lambda at t20045.cc:37:18) &&) - + tmain()::(lambda t20045.cc:37:18) tmain()::(lambda t20045.cc:37:18) - + B B - + a1<(lambda at t20045.cc:39:18)>((lambda at t20045.cc:39:18) &&) a1<(lambda at t20045.cc:39:18)>((lambda at t20045.cc:39:18) &&) - + tmain()::(lambda t20045.cc:39:18) tmain()::(lambda t20045.cc:39:18) - + C @@ -102,22 +102,22 @@ - + - + - + operator()(auto &&) const - + @@ -127,16 +127,16 @@ - + - + operator()(auto &&) const - + b1(int) @@ -147,16 +147,16 @@ - + - + operator()(auto &&) const - + get_x() const diff --git a/docs/test_cases/t20046_sequence.svg b/docs/test_cases/t20046_sequence.svg index ad01265f7..28f0de191 100644 --- a/docs/test_cases/t20046_sequence.svg +++ b/docs/test_cases/t20046_sequence.svg @@ -19,49 +19,49 @@ - + tmain() tmain() - + tmain()::(lambda t20046.cc:13:15) tmain()::(lambda t20046.cc:13:15) - + tmain()::(lambda t20046.cc:13:15)::(lambda t20046.cc:14:16) tmain()::(lambda t20046.cc:13:15)::(lambda t20046.cc:14:16) - + a2(int) a2(int) - + a1<(lambda at t20046.cc:19:9)>((lambda at t20046.cc:19:9) &&) a1<(lambda at t20046.cc:19:9)>((lambda at t20046.cc:19:9) &&) - + tmain()::(lambda t20046.cc:19:9) tmain()::(lambda t20046.cc:19:9) - + tmain()::(lambda t20046.cc:19:9)::(lambda t20046.cc:19:34) tmain()::(lambda t20046.cc:19:9)::(lambda t20046.cc:19:34) - + a3(int) @@ -75,17 +75,17 @@ - + operator()(auto &&) const - + operator()(auto &&) const - + @@ -95,21 +95,21 @@ - + - + operator()(auto &&) const - + operator()(auto &&) const - + diff --git a/docs/test_cases/t20047_sequence.svg b/docs/test_cases/t20047_sequence.svg index fe921479c..c8887a328 100644 --- a/docs/test_cases/t20047_sequence.svg +++ b/docs/test_cases/t20047_sequence.svg @@ -17,43 +17,43 @@ - + tmain() tmain() - + a1(int) a1(int) - + a2(int) a2(int) - + a3(int) a3(int) - + a4(int) a4(int) - + a5(int) a5(int) - + a6(int) @@ -66,37 +66,37 @@ - + - + - + - + - + - + diff --git a/docs/test_cases/t20048_sequence.svg b/docs/test_cases/t20048_sequence.svg index fb189d8cf..7a1fd774f 100644 --- a/docs/test_cases/t20048_sequence.svg +++ b/docs/test_cases/t20048_sequence.svg @@ -21,55 +21,55 @@ - + tmain() tmain() - + a3(int) a3(int) - + a2(int) a2(int) - + a1(int) a1(int) - + tmain()::(lambda t20048.cc:26:11) tmain()::(lambda t20048.cc:26:11) - + a4(int) a4(int) - + a6(int) a6(int) - + a5(int) a5(int) - + a7(int) @@ -84,13 +84,13 @@ - + - + @@ -100,7 +100,7 @@ a1() adds `1` to the result of a2() - + @@ -110,12 +110,12 @@ This lambda calls a4() which adds `4` to it's argument - + operator()(auto &&) const - + @@ -126,7 +126,7 @@ a6() adds `1` to its argument - + @@ -136,7 +136,7 @@ a5() adds `1` to the result of a6() - + @@ -145,7 +145,7 @@ a7() is called via add std::async - + diff --git a/docs/test_cases/t20049_sequence.svg b/docs/test_cases/t20049_sequence.svg index 857ef66fb..fec0a0969 100644 --- a/docs/test_cases/t20049_sequence.svg +++ b/docs/test_cases/t20049_sequence.svg @@ -13,13 +13,13 @@ - + tmain() tmain() - + «CUDA Kernel» vector_square_add(float *,float *,float *,int) @@ -27,7 +27,7 @@ «CUDA Kernel» vector_square_add(float *,float *,float *,int) - + «CUDA Device» square(float) @@ -35,7 +35,7 @@ «CUDA Device» square(float) - + «CUDA Device» add<float>(float,float) @@ -48,26 +48,26 @@ - + loop - + - + - + diff --git a/docs/test_cases/t20050_sequence.svg b/docs/test_cases/t20050_sequence.svg index 6986a1be0..aac242fd5 100644 --- a/docs/test_cases/t20050_sequence.svg +++ b/docs/test_cases/t20050_sequence.svg @@ -22,7 +22,7 @@ tmain() - + @@ -33,7 +33,7 @@ loop - + @@ -45,7 +45,7 @@ - + @@ -57,7 +57,7 @@ - + diff --git a/docs/test_cases/t20051_sequence.svg b/docs/test_cases/t20051_sequence.svg index eed44133c..01bb1f103 100644 --- a/docs/test_cases/t20051_sequence.svg +++ b/docs/test_cases/t20051_sequence.svg @@ -7,13 +7,13 @@ - + tmain() tmain() - + «CUDA Kernel» vector_square_add(float *,float *,float *,int) @@ -23,7 +23,7 @@ - + diff --git a/docs/test_cases/t20052_sequence.svg b/docs/test_cases/t20052_sequence.svg index 30bb5e6a7..df4b43fb5 100644 --- a/docs/test_cases/t20052_sequence.svg +++ b/docs/test_cases/t20052_sequence.svg @@ -31,37 +31,37 @@ - + tmain() tmain() - + A A - + B B - + C C - + R<(lambda at t20052.cc:86:9)> R<(lambda at t20052.cc:86:9)> - + D @@ -89,131 +89,131 @@ - + a() - + aa() - + aaa() - + b() - + bb() - + bbb() - + c() - + cc() - + ccc() - + a() - + aa() - + aaa() - + b() - + bb() - + bbb() - + R((lambda at t20052.cc:86:9) &&) - + r() - + c() - + cc() - + ccc() - + add5(int) const diff --git a/docs/test_cases/t20053_sequence.svg b/docs/test_cases/t20053_sequence.svg index 3e76e4196..4c9eea8fc 100644 --- a/docs/test_cases/t20053_sequence.svg +++ b/docs/test_cases/t20053_sequence.svg @@ -11,25 +11,25 @@ - + tmain() tmain() - + a2(int) a2(int) - + a1<(lambda at t20053.cc:23:9)>((lambda at t20053.cc:23:9) &&) a1<(lambda at t20053.cc:23:9)>((lambda at t20053.cc:23:9) &&) - + a3(int) @@ -39,17 +39,17 @@ - + - + - + diff --git a/docs/test_cases/t20054_sequence.svg b/docs/test_cases/t20054_sequence.svg index 1355dc160..f95a779e4 100644 --- a/docs/test_cases/t20054_sequence.svg +++ b/docs/test_cases/t20054_sequence.svg @@ -14,31 +14,31 @@ - + tmain() tmain() - + A A - + A::AA A::AA - + A::AA::AAA A::AA::AAA - + A::AA::BBB @@ -50,17 +50,17 @@ - + a() - + aa() - + aaa() @@ -72,7 +72,7 @@ bb() - + bbb() diff --git a/docs/test_cases/t20055_sequence.svg b/docs/test_cases/t20055_sequence.svg index 0c2158760..9fa41dfd5 100644 --- a/docs/test_cases/t20055_sequence.svg +++ b/docs/test_cases/t20055_sequence.svg @@ -13,31 +13,31 @@ - + ns2::tmain() ns2::tmain() - + ns2::C ns2::C - + ns1::B ns1::B - + ns1::d() ns1::d() - + ns2::f() @@ -48,21 +48,21 @@ - + c() - + b() - + - + diff --git a/docs/test_cases/t30001_package.svg b/docs/test_cases/t30001_package.svg index 092d63b43..781ee6919 100644 --- a/docs/test_cases/t30001_package.svg +++ b/docs/test_cases/t30001_package.svg @@ -5,59 +5,59 @@ Basic package diagram example - + A - + AA - + B - + AA - + AAA - + BBB - + BB - + AAA - + BBB - + BB diff --git a/docs/test_cases/t30002_package.svg b/docs/test_cases/t30002_package.svg index 110eb2bdc..6885b6ddf 100644 --- a/docs/test_cases/t30002_package.svg +++ b/docs/test_cases/t30002_package.svg @@ -4,124 +4,124 @@ - + A - + AA - + B - + BB - + A1 - + A2 - + A3 - + A4 - + A5 - + A6 - + A7 - + A8 - + A9 - + A10 - + A11 - + A12 - + A13 - + A14 - + A15 - + A16 - + A17 - + A18 - + BBB diff --git a/docs/test_cases/t30003_package.svg b/docs/test_cases/t30003_package.svg index 59ece3495..565e69e27 100644 --- a/docs/test_cases/t30003_package.svg +++ b/docs/test_cases/t30003_package.svg @@ -4,14 +4,14 @@ - + ns1 - + ns3 @@ -19,24 +19,24 @@ - + ns1 - + ns2_v1_0_0 - + ns2_v0_9_0 «deprecated» - + ns2 diff --git a/docs/test_cases/t30004_package.svg b/docs/test_cases/t30004_package.svg index e26df1d17..fa82075c8 100644 --- a/docs/test_cases/t30004_package.svg +++ b/docs/test_cases/t30004_package.svg @@ -4,7 +4,7 @@ - + A @@ -30,22 +30,22 @@ We skipped DDD. - + AAA - + BBB - + CCC - + EEE diff --git a/docs/test_cases/t30005_package.svg b/docs/test_cases/t30005_package.svg index ec44a8f3a..aeb49c627 100644 --- a/docs/test_cases/t30005_package.svg +++ b/docs/test_cases/t30005_package.svg @@ -4,58 +4,58 @@ - + A - + AA - + B - + BB - + C - + CC - + AAA - + BBB - + CCC diff --git a/docs/test_cases/t30006_package.svg b/docs/test_cases/t30006_package.svg index ea31a4a4f..f82b34184 100644 --- a/docs/test_cases/t30006_package.svg +++ b/docs/test_cases/t30006_package.svg @@ -3,17 +3,17 @@ - + B - + A - + C diff --git a/docs/test_cases/t30007_package.svg b/docs/test_cases/t30007_package.svg index 8fcd748dc..eed1a0946 100644 --- a/docs/test_cases/t30007_package.svg +++ b/docs/test_cases/t30007_package.svg @@ -4,23 +4,23 @@ - + A - + B - + AA - + C diff --git a/docs/test_cases/t30008_package.svg b/docs/test_cases/t30008_package.svg index 6e8a07aa4..aebeddde9 100644 --- a/docs/test_cases/t30008_package.svg +++ b/docs/test_cases/t30008_package.svg @@ -4,45 +4,45 @@ - + dependants - + dependencies - + A - + B - + C - + D - + E - + F diff --git a/docs/test_cases/t30009_package.svg b/docs/test_cases/t30009_package.svg index 117c017d7..e3f26672c 100644 --- a/docs/test_cases/t30009_package.svg +++ b/docs/test_cases/t30009_package.svg @@ -4,55 +4,55 @@ - + One - + Two - + B - + D - + A - + C - + A - + B - + C - + D diff --git a/docs/test_cases/t30010_package.svg b/docs/test_cases/t30010_package.svg index 016e2771c..965fa25d5 100644 --- a/docs/test_cases/t30010_package.svg +++ b/docs/test_cases/t30010_package.svg @@ -8,27 +8,27 @@ libraries - + lib1 - + lib2 - + lib3 - + lib4 - + app diff --git a/docs/test_cases/t30011_package.svg b/docs/test_cases/t30011_package.svg index 7ce24d682..0ceb6fe9f 100644 --- a/docs/test_cases/t30011_package.svg +++ b/docs/test_cases/t30011_package.svg @@ -8,27 +8,27 @@ libraries - + lib1 - + lib2 - + lib3 - + lib4 - + app diff --git a/docs/test_cases/t30012_package.svg b/docs/test_cases/t30012_package.svg index 0eae61655..cb9832ac4 100644 --- a/docs/test_cases/t30012_package.svg +++ b/docs/test_cases/t30012_package.svg @@ -9,23 +9,23 @@ app - + lib1 - + mod1 - + mod2 - + lib2 diff --git a/docs/test_cases/t30013_package.svg b/docs/test_cases/t30013_package.svg index 9390f7dce..0e294a051 100644 --- a/docs/test_cases/t30013_package.svg +++ b/docs/test_cases/t30013_package.svg @@ -3,97 +3,97 @@ - + mod1 - + mod2 - + mod3 - + mod4 - + mod5 - + mod6 - + mod7 - + mod8 - + mod9 - + mod10 - + mod11 - + mod12 - + mod13 - + mod14 - + mod15 - + mod16 - + mod17 - + mod18 - + app diff --git a/docs/test_cases/t30014_package.svg b/docs/test_cases/t30014_package.svg index 4e0e42613..6e5f9dd4a 100644 --- a/docs/test_cases/t30014_package.svg +++ b/docs/test_cases/t30014_package.svg @@ -9,18 +9,18 @@ app - + :lib1 - + mod1 - + :lib2 diff --git a/docs/test_cases/t30015_package.svg b/docs/test_cases/t30015_package.svg index c2550710c..23459287d 100644 --- a/docs/test_cases/t30015_package.svg +++ b/docs/test_cases/t30015_package.svg @@ -8,97 +8,97 @@ lib1 - + :mod1 - + :mod2 - + :mod3 - + :mod4 - + :mod5 - + :mod6 - + :mod7 - + :mod8 - + :mod9 - + :mod10 - + :mod11 - + :mod12 - + :mod13 - + :mod14 - + :mod15 - + :mod16 - + :mod17 - + :mod18 - + app diff --git a/docs/test_cases/t40001_include.svg b/docs/test_cases/t40001_include.svg index 6656dbade..a579eea0d 100644 --- a/docs/test_cases/t40001_include.svg +++ b/docs/test_cases/t40001_include.svg @@ -20,14 +20,14 @@ lib1 - + t40001.cc - + t40001_include1.h diff --git a/docs/test_cases/t40001_include_mermaid.svg b/docs/test_cases/t40001_include_mermaid.svg index 4af87fea0..d5b7ab762 100644 --- a/docs/test_cases/t40001_include_mermaid.svg +++ b/docs/test_cases/t40001_include_mermaid.svg @@ -138,7 +138,7 @@ - + @@ -162,7 +162,7 @@ - + diff --git a/docs/test_cases/t40002_include.svg b/docs/test_cases/t40002_include.svg index 1ac197b8a..4bb241887 100644 --- a/docs/test_cases/t40002_include.svg +++ b/docs/test_cases/t40002_include.svg @@ -34,35 +34,35 @@ lib2 - + t40002.cc - + lib1.cc - + lib2.cc - + lib1.h - + lib2.h diff --git a/docs/test_cases/t40002_include_mermaid.svg b/docs/test_cases/t40002_include_mermaid.svg index ef35d96f1..b7e2c006d 100644 --- a/docs/test_cases/t40002_include_mermaid.svg +++ b/docs/test_cases/t40002_include_mermaid.svg @@ -137,7 +137,7 @@ - + @@ -150,7 +150,7 @@ - + @@ -163,7 +163,7 @@ - + @@ -176,7 +176,7 @@ - + @@ -189,7 +189,7 @@ - + diff --git a/docs/test_cases/t40003_include.svg b/docs/test_cases/t40003_include.svg index 95f883076..a71b0d5a0 100644 --- a/docs/test_cases/t40003_include.svg +++ b/docs/test_cases/t40003_include.svg @@ -34,28 +34,28 @@ dependencies - + t1.cc - + t2.cc - + t3.h - + t2.h @@ -67,14 +67,14 @@ t1.h - + t3.h - + t2.h @@ -86,7 +86,7 @@ t1.h - + t5.h diff --git a/docs/test_cases/t40003_include_mermaid.svg b/docs/test_cases/t40003_include_mermaid.svg index f7924af67..b8fe1eadb 100644 --- a/docs/test_cases/t40003_include_mermaid.svg +++ b/docs/test_cases/t40003_include_mermaid.svg @@ -167,7 +167,7 @@ - + @@ -180,7 +180,7 @@ - + @@ -204,7 +204,7 @@ - + @@ -217,7 +217,7 @@ - + @@ -230,7 +230,7 @@ - + @@ -254,7 +254,7 @@ - + @@ -267,7 +267,7 @@ - + diff --git a/src/class_diagram/visitor/translation_unit_visitor.cc b/src/class_diagram/visitor/translation_unit_visitor.cc index 3aaf03a3b..e893b92a7 100644 --- a/src/class_diagram/visitor/translation_unit_visitor.cc +++ b/src/class_diagram/visitor/translation_unit_visitor.cc @@ -449,8 +449,9 @@ void translation_unit_visitor::process_constraint_requirements( LOG_DBG("== Processing constraint: '{}'", constraint_source); - for (const auto *requirement : constraint->getRequirements()) { - LOG_DBG("== Processing requirement: '{}'", requirement->getKind()); + for ([[maybe_unused]] const auto *requirement : + constraint->getRequirements()) { + // TODO } // process 'requires (...)' declaration diff --git a/src/sequence_diagram/generators/json/sequence_diagram_generator.cc b/src/sequence_diagram/generators/json/sequence_diagram_generator.cc index 5d4857b0e..592fc4df3 100644 --- a/src/sequence_diagram/generators/json/sequence_diagram_generator.cc +++ b/src/sequence_diagram/generators/json/sequence_diagram_generator.cc @@ -181,8 +181,9 @@ void generator::generate_call(const message &m, nlohmann::json &parent) const parent["messages"].push_back(std::move(msg)); - LOG_DBG("Generated call '{}' from {} [{}] to {} [{}]", message, from, - m.from(), to, m.to()); + LOG_DBG("Generated call '{}' from {} [{}] to {} [{}]", message, + from.value().full_name(false), m.from(), to.value().full_name(false), + m.to()); } void generator::generate_activity( diff --git a/src/sequence_diagram/generators/mermaid/sequence_diagram_generator.cc b/src/sequence_diagram/generators/mermaid/sequence_diagram_generator.cc index c170186d3..4dd23ee65 100644 --- a/src/sequence_diagram/generators/mermaid/sequence_diagram_generator.cc +++ b/src/sequence_diagram/generators/mermaid/sequence_diagram_generator.cc @@ -166,8 +166,9 @@ void generator::generate_call(const message &m, std::ostream &ostr) const ostr << '\n'; - LOG_DBG("Generated call '{}' from {} [{}] to {} [{}]", message, from, - m.from(), to, m.to()); + LOG_DBG("Generated call '{}' from {} [{}] to {} [{}]", message, + from.value().full_name(false), m.from(), to.value().full_name(false), + m.to()); } void generator::generate_return(const message &m, std::ostream &ostr) const diff --git a/src/sequence_diagram/generators/plantuml/sequence_diagram_generator.cc b/src/sequence_diagram/generators/plantuml/sequence_diagram_generator.cc index e2ae9e9d7..8f446f660 100644 --- a/src/sequence_diagram/generators/plantuml/sequence_diagram_generator.cc +++ b/src/sequence_diagram/generators/plantuml/sequence_diagram_generator.cc @@ -119,8 +119,9 @@ void generator::generate_call(const message &m, std::ostream &ostr) const ostr << '\n'; - LOG_DBG("Generated call '{}' from {} [{}] to {} [{}]", message, from, - m.from(), to, m.to()); + LOG_DBG("Generated call '{}' from {} [{}] to {} [{}]", message, + from.value().full_name(false), m.from(), to.value().full_name(false), + m.to()); } void generator::generate_return(const message &m, std::ostream &ostr) const diff --git a/tests/test_cases.h b/tests/test_cases.h index 7b923ec3b..4d4544845 100644 --- a/tests/test_cases.h +++ b/tests/test_cases.h @@ -366,7 +366,7 @@ auto get_relationship(const nlohmann::json &j, const nlohmann::json &from, if (match && label.empty()) return true; - if (match && (label == it["label"])) + if (match && (it["label"] == label)) return true; return false; @@ -1970,7 +1970,7 @@ bool IsAssociation(const json_t &d, std::string const &from, if (rel == j["relationships"].end()) return false; - if (!label.empty() && (label != rel->at("label"))) + if (!label.empty() && (rel->at("label") != label)) return false; std::string access; @@ -1981,7 +1981,7 @@ bool IsAssociation(const json_t &d, std::string const &from, else access = "private"; - if (access != rel->at("access")) + if (rel->at("access") != access) return false; return true; @@ -2001,7 +2001,7 @@ bool IsComposition(const json_t &d, std::string const &from, if (rel == j["relationships"].end()) return false; - if (!label.empty() && label != rel->at("label")) + if (!label.empty() && (rel->at("label") != label)) return false; std::string access; @@ -2012,7 +2012,7 @@ bool IsComposition(const json_t &d, std::string const &from, else access = "private"; - if (access != rel->at("access")) + if (rel->at("access") != access) return false; return true; @@ -2032,7 +2032,7 @@ bool IsAggregation(const json_t &d, std::string const &from, if (rel == j["relationships"].end()) return false; - if (!label.empty() && label != rel->at("label")) + if (!label.empty() && (rel->at("label") != label)) return false; std::string access; @@ -2043,7 +2043,7 @@ bool IsAggregation(const json_t &d, std::string const &from, else access = "private"; - if (access != rel->at("access")) + if (rel->at("access") != access) return false; return true; @@ -2190,7 +2190,8 @@ bool IsConceptParameterList( std::vector params; for (const auto &it : parameters) { - params.push_back(fmt::format("{} {}", it["type"], it["name"])); + params.push_back(fmt::format("{} {}", it["type"].get(), + it["name"].get())); } return parameter_list == fmt::format("({})", fmt::join(params, ",")); diff --git a/thirdparty/cli11/CLI11.hpp b/thirdparty/cli11/CLI11.hpp index 3913fa9ca..8a5b4c544 100644 --- a/thirdparty/cli11/CLI11.hpp +++ b/thirdparty/cli11/CLI11.hpp @@ -1,11 +1,11 @@ -// CLI11: Version 2.3.2 +// CLI11: Version 2.4.2 // Originally designed by Henry Schreiner // https://github.com/CLIUtils/CLI11 // // This is a standalone header file generated by MakeSingleHeader.py in CLI11/scripts -// from: v2.3.2 +// from: v2.4.2 // -// CLI11 2.3.2 Copyright (c) 2017-2022 University of Cincinnati, developed by Henry +// CLI11 2.4.2 Copyright (c) 2017-2024 University of Cincinnati, developed by Henry // Schreiner under NSF AWARD 1414736. All rights reserved. // // Redistribution and use in source and binary forms of CLI11, with or without @@ -34,34 +34,40 @@ #pragma once // Standard combined includes: -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include #include +#include #include #include -#include +#include +#include +#include +#include #include -#include +#include +#include +#include #include -#include #include -#include -#include -#include -#include -#include -#include +#include +#include +#include #define CLI11_VERSION_MAJOR 2 -#define CLI11_VERSION_MINOR 3 +#define CLI11_VERSION_MINOR 4 #define CLI11_VERSION_PATCH 2 -#define CLI11_VERSION "2.3.2" +#define CLI11_VERSION "2.4.2" @@ -124,17 +130,7 @@ #endif #endif -/** Inline macro **/ -#ifdef CLI11_COMPILE -#define CLI11_INLINE -#else -#define CLI11_INLINE inline -#endif - - - -// C standard library -// Only needed for existence checking +/** availability */ #if defined CLI11_CPP17 && defined __has_include && !defined CLI11_HAS_FILESYSTEM #if __has_include() // Filesystem cannot be used if targeting macOS < 10.15 @@ -161,6 +157,44 @@ #endif #endif +/** availability */ +#if defined(__GNUC__) && !defined(__llvm__) && !defined(__INTEL_COMPILER) && __GNUC__ < 5 +#define CLI11_HAS_CODECVT 0 +#else +#define CLI11_HAS_CODECVT 1 +#include +#endif + +/** disable deprecations */ +#if defined(__GNUC__) // GCC or clang +#define CLI11_DIAGNOSTIC_PUSH _Pragma("GCC diagnostic push") +#define CLI11_DIAGNOSTIC_POP _Pragma("GCC diagnostic pop") + +#define CLI11_DIAGNOSTIC_IGNORE_DEPRECATED _Pragma("GCC diagnostic ignored \"-Wdeprecated-declarations\"") + +#elif defined(_MSC_VER) +#define CLI11_DIAGNOSTIC_PUSH __pragma(warning(push)) +#define CLI11_DIAGNOSTIC_POP __pragma(warning(pop)) + +#define CLI11_DIAGNOSTIC_IGNORE_DEPRECATED __pragma(warning(disable : 4996)) + +#else +#define CLI11_DIAGNOSTIC_PUSH +#define CLI11_DIAGNOSTIC_POP + +#define CLI11_DIAGNOSTIC_IGNORE_DEPRECATED + +#endif + +/** Inline macro **/ +#ifdef CLI11_COMPILE +#define CLI11_INLINE +#else +#define CLI11_INLINE inline +#endif + + + #if defined CLI11_HAS_FILESYSTEM && CLI11_HAS_FILESYSTEM > 0 #include // NOLINT(build/include) #else @@ -170,9 +204,244 @@ + +#ifdef CLI11_CPP17 +#include +#endif // CLI11_CPP17 + +#if defined CLI11_HAS_FILESYSTEM && CLI11_HAS_FILESYSTEM > 0 +#include +#include // NOLINT(build/include) +#endif // CLI11_HAS_FILESYSTEM + + + +#if defined(_WIN32) +#if !(defined(_AMD64_) || defined(_X86_) || defined(_ARM_)) +#if defined(__amd64__) || defined(__amd64) || defined(__x86_64__) || defined(__x86_64) || defined(_M_X64) || \ + defined(_M_AMD64) +#define _AMD64_ +#elif defined(i386) || defined(__i386) || defined(__i386__) || defined(__i386__) || defined(_M_IX86) +#define _X86_ +#elif defined(__arm__) || defined(_M_ARM) || defined(_M_ARMT) +#define _ARM_ +#elif defined(__aarch64__) || defined(_M_ARM64) +#define _ARM64_ +#elif defined(_M_ARM64EC) +#define _ARM64EC_ +#endif +#endif + +// first +#ifndef NOMINMAX +// if NOMINMAX is already defined we don't want to mess with that either way +#define NOMINMAX +#include +#undef NOMINMAX +#else +#include +#endif + +// second +#include +// third +#include +#include +#endif + + namespace CLI { +/// Convert a wide string to a narrow string. +CLI11_INLINE std::string narrow(const std::wstring &str); +CLI11_INLINE std::string narrow(const wchar_t *str); +CLI11_INLINE std::string narrow(const wchar_t *str, std::size_t size); + +/// Convert a narrow string to a wide string. +CLI11_INLINE std::wstring widen(const std::string &str); +CLI11_INLINE std::wstring widen(const char *str); +CLI11_INLINE std::wstring widen(const char *str, std::size_t size); + +#ifdef CLI11_CPP17 +CLI11_INLINE std::string narrow(std::wstring_view str); +CLI11_INLINE std::wstring widen(std::string_view str); +#endif // CLI11_CPP17 + +#if defined CLI11_HAS_FILESYSTEM && CLI11_HAS_FILESYSTEM > 0 +/// Convert a char-string to a native path correctly. +CLI11_INLINE std::filesystem::path to_path(std::string_view str); +#endif // CLI11_HAS_FILESYSTEM + + + + +namespace detail { + +#if !CLI11_HAS_CODECVT +/// Attempt to set one of the acceptable unicode locales for conversion +CLI11_INLINE void set_unicode_locale() { + static const std::array unicode_locales{{"C.UTF-8", "en_US.UTF-8", ".UTF-8"}}; + + for(const auto &locale_name : unicode_locales) { + if(std::setlocale(LC_ALL, locale_name) != nullptr) { + return; + } + } + throw std::runtime_error("CLI::narrow: could not set locale to C.UTF-8"); +} + +template struct scope_guard_t { + F closure; + + explicit scope_guard_t(F closure_) : closure(closure_) {} + ~scope_guard_t() { closure(); } +}; + +template CLI11_NODISCARD CLI11_INLINE scope_guard_t scope_guard(F &&closure) { + return scope_guard_t{std::forward(closure)}; +} + +#endif // !CLI11_HAS_CODECVT + +CLI11_DIAGNOSTIC_PUSH +CLI11_DIAGNOSTIC_IGNORE_DEPRECATED + +CLI11_INLINE std::string narrow_impl(const wchar_t *str, std::size_t str_size) { +#if CLI11_HAS_CODECVT +#ifdef _WIN32 + return std::wstring_convert>().to_bytes(str, str + str_size); + +#else + return std::wstring_convert>().to_bytes(str, str + str_size); + +#endif // _WIN32 +#else // CLI11_HAS_CODECVT + (void)str_size; + std::mbstate_t state = std::mbstate_t(); + const wchar_t *it = str; + + std::string old_locale = std::setlocale(LC_ALL, nullptr); + auto sg = scope_guard([&] { std::setlocale(LC_ALL, old_locale.c_str()); }); + set_unicode_locale(); + + std::size_t new_size = std::wcsrtombs(nullptr, &it, 0, &state); + if(new_size == static_cast(-1)) { + throw std::runtime_error("CLI::narrow: conversion error in std::wcsrtombs at offset " + + std::to_string(it - str)); + } + std::string result(new_size, '\0'); + std::wcsrtombs(const_cast(result.data()), &str, new_size, &state); + + return result; + +#endif // CLI11_HAS_CODECVT +} + +CLI11_INLINE std::wstring widen_impl(const char *str, std::size_t str_size) { +#if CLI11_HAS_CODECVT +#ifdef _WIN32 + return std::wstring_convert>().from_bytes(str, str + str_size); + +#else + return std::wstring_convert>().from_bytes(str, str + str_size); + +#endif // _WIN32 +#else // CLI11_HAS_CODECVT + (void)str_size; + std::mbstate_t state = std::mbstate_t(); + const char *it = str; + + std::string old_locale = std::setlocale(LC_ALL, nullptr); + auto sg = scope_guard([&] { std::setlocale(LC_ALL, old_locale.c_str()); }); + set_unicode_locale(); + + std::size_t new_size = std::mbsrtowcs(nullptr, &it, 0, &state); + if(new_size == static_cast(-1)) { + throw std::runtime_error("CLI::widen: conversion error in std::mbsrtowcs at offset " + + std::to_string(it - str)); + } + std::wstring result(new_size, L'\0'); + std::mbsrtowcs(const_cast(result.data()), &str, new_size, &state); + + return result; + +#endif // CLI11_HAS_CODECVT +} + +CLI11_DIAGNOSTIC_POP + +} // namespace detail + +CLI11_INLINE std::string narrow(const wchar_t *str, std::size_t str_size) { return detail::narrow_impl(str, str_size); } +CLI11_INLINE std::string narrow(const std::wstring &str) { return detail::narrow_impl(str.data(), str.size()); } +// Flawfinder: ignore +CLI11_INLINE std::string narrow(const wchar_t *str) { return detail::narrow_impl(str, std::wcslen(str)); } + +CLI11_INLINE std::wstring widen(const char *str, std::size_t str_size) { return detail::widen_impl(str, str_size); } +CLI11_INLINE std::wstring widen(const std::string &str) { return detail::widen_impl(str.data(), str.size()); } +// Flawfinder: ignore +CLI11_INLINE std::wstring widen(const char *str) { return detail::widen_impl(str, std::strlen(str)); } + +#ifdef CLI11_CPP17 +CLI11_INLINE std::string narrow(std::wstring_view str) { return detail::narrow_impl(str.data(), str.size()); } +CLI11_INLINE std::wstring widen(std::string_view str) { return detail::widen_impl(str.data(), str.size()); } +#endif // CLI11_CPP17 + +#if defined CLI11_HAS_FILESYSTEM && CLI11_HAS_FILESYSTEM > 0 +CLI11_INLINE std::filesystem::path to_path(std::string_view str) { + return std::filesystem::path{ +#ifdef _WIN32 + widen(str) +#else + str +#endif // _WIN32 + }; +} +#endif // CLI11_HAS_FILESYSTEM + + + + +namespace detail { +#ifdef _WIN32 +/// Decode and return UTF-8 argv from GetCommandLineW. +CLI11_INLINE std::vector compute_win32_argv(); +#endif +} // namespace detail + + + +namespace detail { + +#ifdef _WIN32 +CLI11_INLINE std::vector compute_win32_argv() { + std::vector result; + int argc = 0; + + auto deleter = [](wchar_t **ptr) { LocalFree(ptr); }; + // NOLINTBEGIN(*-avoid-c-arrays) + auto wargv = std::unique_ptr(CommandLineToArgvW(GetCommandLineW(), &argc), deleter); + // NOLINTEND(*-avoid-c-arrays) + + if(wargv == nullptr) { + throw std::runtime_error("CommandLineToArgvW failed with code " + std::to_string(GetLastError())); + } + + result.reserve(static_cast(argc)); + for(size_t i = 0; i < static_cast(argc); ++i) { + result.push_back(narrow(wargv[i])); + } + + return result; +} +#endif + +} // namespace detail + + + + /// Include the items in this namespace to get free conversion of enums to/from streams. /// (This is available inside CLI as well, so CLI11 will use this without a using statement). namespace enums { @@ -270,6 +539,9 @@ inline std::string trim_copy(const std::string &str) { /// remove quotes at the front and back of a string either '"' or '\'' CLI11_INLINE std::string &remove_quotes(std::string &str); +/// remove quotes from all elements of a string vector and process escaped components +CLI11_INLINE void remove_quotes(std::vector &args); + /// Add a leader to the beginning of all new lines (nothing is added /// at the start of the first line). `"; "` would be for ini files /// @@ -290,14 +562,16 @@ CLI11_INLINE std::ostream &format_aliases(std::ostream &out, const std::vector bool valid_first_char(T c) { return ((c != '-') && (c != '!') && (c != ' ') && c != '\n'); } +template bool valid_first_char(T c) { + return ((c != '-') && (static_cast(c) > 33)); // space and '!' not allowed +} /// Verify following characters of an option template bool valid_later_char(T c) { // = and : are value separators, { has special meaning for option defaults, - // and \n would just be annoying to deal with in many places allowing space here has too much potential for - // inadvertent entry errors and bugs - return ((c != '=') && (c != ':') && (c != '{') && (c != ' ') && c != '\n'); + // and control codes other than tab would just be annoying to deal with in many places allowing space here has too + // much potential for inadvertent entry errors and bugs + return ((c != '=') && (c != ':') && (c != '{') && ((static_cast(c) > 32) || c == '\t')); } /// Verify an option/subcommand name @@ -360,18 +634,46 @@ template inline std::string find_and_modify(std::string str, return str; } +/// close a sequence of characters indicated by a closure character. Brackets allows sub sequences +/// recognized bracket sequences include "'`[(<{ other closure characters are assumed to be literal strings +CLI11_INLINE std::size_t close_sequence(const std::string &str, std::size_t start, char closure_char); + /// Split a string '"one two" "three"' into 'one two', 'three' -/// Quote characters can be ` ' or " +/// Quote characters can be ` ' or " or bracket characters [{(< with matching to the matching bracket CLI11_INLINE std::vector split_up(std::string str, char delimiter = '\0'); +/// get the value of an environmental variable or empty string if empty +CLI11_INLINE std::string get_environment_value(const std::string &env_name); + /// This function detects an equal or colon followed by an escaped quote after an argument /// then modifies the string to replace the equality with a space. This is needed /// to allow the split up function to work properly and is intended to be used with the find_and_modify function /// the return value is the offset+1 which is required by the find_and_modify function. CLI11_INLINE std::size_t escape_detect(std::string &str, std::size_t offset); -/// Add quotes if the string contains spaces -CLI11_INLINE std::string &add_quotes_if_needed(std::string &str); +/// @brief detect if a string has escapable characters +/// @param str the string to do the detection on +/// @return true if the string has escapable characters +CLI11_INLINE bool has_escapable_character(const std::string &str); + +/// @brief escape all escapable characters +/// @param str the string to escape +/// @return a string with the escapble characters escaped with '\' +CLI11_INLINE std::string add_escaped_characters(const std::string &str); + +/// @brief replace the escaped characters with their equivalent +CLI11_INLINE std::string remove_escaped_characters(const std::string &str); + +/// generate a string with all non printable characters escaped to hex codes +CLI11_INLINE std::string binary_escape_string(const std::string &string_to_escape); + +CLI11_INLINE bool is_binary_escaped_string(const std::string &escaped_string); + +/// extract an escaped binary_string +CLI11_INLINE std::string extract_binary_string(const std::string &escaped_string); + +/// process a quoted string, remove the quotes and if appropriate handle escaped characters +CLI11_INLINE bool process_quoted_string(std::string &str, char string_char = '\"', char literal_char = '\''); } // namespace detail @@ -421,7 +723,17 @@ CLI11_INLINE std::string &rtrim(std::string &str, const std::string &filter) { } CLI11_INLINE std::string &remove_quotes(std::string &str) { - if(str.length() > 1 && (str.front() == '"' || str.front() == '\'')) { + if(str.length() > 1 && (str.front() == '"' || str.front() == '\'' || str.front() == '`')) { + if(str.front() == str.back()) { + str.pop_back(); + str.erase(str.begin(), str.begin() + 1); + } + } + return str; +} + +CLI11_INLINE std::string &remove_outer(std::string &str, char key) { + if(str.length() > 1 && (str.front() == key)) { if(str.front() == str.back()) { str.pop_back(); str.erase(str.begin(), str.begin() + 1); @@ -541,37 +853,220 @@ find_member(std::string name, const std::vector names, bool ignore_ return (it != std::end(names)) ? (it - std::begin(names)) : (-1); } +static const std::string escapedChars("\b\t\n\f\r\"\\"); +static const std::string escapedCharsCode("btnfr\"\\"); +static const std::string bracketChars{"\"'`[(<{"}; +static const std::string matchBracketChars("\"'`])>}"); + +CLI11_INLINE bool has_escapable_character(const std::string &str) { + return (str.find_first_of(escapedChars) != std::string::npos); +} + +CLI11_INLINE std::string add_escaped_characters(const std::string &str) { + std::string out; + out.reserve(str.size() + 4); + for(char s : str) { + auto sloc = escapedChars.find_first_of(s); + if(sloc != std::string::npos) { + out.push_back('\\'); + out.push_back(escapedCharsCode[sloc]); + } else { + out.push_back(s); + } + } + return out; +} + +CLI11_INLINE std::uint32_t hexConvert(char hc) { + int hcode{0}; + if(hc >= '0' && hc <= '9') { + hcode = (hc - '0'); + } else if(hc >= 'A' && hc <= 'F') { + hcode = (hc - 'A' + 10); + } else if(hc >= 'a' && hc <= 'f') { + hcode = (hc - 'a' + 10); + } else { + hcode = -1; + } + return static_cast(hcode); +} + +CLI11_INLINE char make_char(std::uint32_t code) { return static_cast(static_cast(code)); } + +CLI11_INLINE void append_codepoint(std::string &str, std::uint32_t code) { + if(code < 0x80) { // ascii code equivalent + str.push_back(static_cast(code)); + } else if(code < 0x800) { // \u0080 to \u07FF + // 110yyyyx 10xxxxxx; 0x3f == 0b0011'1111 + str.push_back(make_char(0xC0 | code >> 6)); + str.push_back(make_char(0x80 | (code & 0x3F))); + } else if(code < 0x10000) { // U+0800...U+FFFF + if(0xD800 <= code && code <= 0xDFFF) { + throw std::invalid_argument("[0xD800, 0xDFFF] are not valid UTF-8."); + } + // 1110yyyy 10yxxxxx 10xxxxxx + str.push_back(make_char(0xE0 | code >> 12)); + str.push_back(make_char(0x80 | (code >> 6 & 0x3F))); + str.push_back(make_char(0x80 | (code & 0x3F))); + } else if(code < 0x110000) { // U+010000 ... U+10FFFF + // 11110yyy 10yyxxxx 10xxxxxx 10xxxxxx + str.push_back(make_char(0xF0 | code >> 18)); + str.push_back(make_char(0x80 | (code >> 12 & 0x3F))); + str.push_back(make_char(0x80 | (code >> 6 & 0x3F))); + str.push_back(make_char(0x80 | (code & 0x3F))); + } +} + +CLI11_INLINE std::string remove_escaped_characters(const std::string &str) { + + std::string out; + out.reserve(str.size()); + for(auto loc = str.begin(); loc < str.end(); ++loc) { + if(*loc == '\\') { + if(str.end() - loc < 2) { + throw std::invalid_argument("invalid escape sequence " + str); + } + auto ecloc = escapedCharsCode.find_first_of(*(loc + 1)); + if(ecloc != std::string::npos) { + out.push_back(escapedChars[ecloc]); + ++loc; + } else if(*(loc + 1) == 'u') { + // must have 4 hex characters + if(str.end() - loc < 6) { + throw std::invalid_argument("unicode sequence must have 4 hex codes " + str); + } + std::uint32_t code{0}; + std::uint32_t mplier{16 * 16 * 16}; + for(int ii = 2; ii < 6; ++ii) { + std::uint32_t res = hexConvert(*(loc + ii)); + if(res > 0x0F) { + throw std::invalid_argument("unicode sequence must have 4 hex codes " + str); + } + code += res * mplier; + mplier = mplier / 16; + } + append_codepoint(out, code); + loc += 5; + } else if(*(loc + 1) == 'U') { + // must have 8 hex characters + if(str.end() - loc < 10) { + throw std::invalid_argument("unicode sequence must have 8 hex codes " + str); + } + std::uint32_t code{0}; + std::uint32_t mplier{16 * 16 * 16 * 16 * 16 * 16 * 16}; + for(int ii = 2; ii < 10; ++ii) { + std::uint32_t res = hexConvert(*(loc + ii)); + if(res > 0x0F) { + throw std::invalid_argument("unicode sequence must have 8 hex codes " + str); + } + code += res * mplier; + mplier = mplier / 16; + } + append_codepoint(out, code); + loc += 9; + } else if(*(loc + 1) == '0') { + out.push_back('\0'); + ++loc; + } else { + throw std::invalid_argument(std::string("unrecognized escape sequence \\") + *(loc + 1) + " in " + str); + } + } else { + out.push_back(*loc); + } + } + return out; +} + +CLI11_INLINE std::size_t close_string_quote(const std::string &str, std::size_t start, char closure_char) { + std::size_t loc{0}; + for(loc = start + 1; loc < str.size(); ++loc) { + if(str[loc] == closure_char) { + break; + } + if(str[loc] == '\\') { + // skip the next character for escaped sequences + ++loc; + } + } + return loc; +} + +CLI11_INLINE std::size_t close_literal_quote(const std::string &str, std::size_t start, char closure_char) { + auto loc = str.find_first_of(closure_char, start + 1); + return (loc != std::string::npos ? loc : str.size()); +} + +CLI11_INLINE std::size_t close_sequence(const std::string &str, std::size_t start, char closure_char) { + + auto bracket_loc = matchBracketChars.find(closure_char); + switch(bracket_loc) { + case 0: + return close_string_quote(str, start, closure_char); + case 1: + case 2: + case std::string::npos: + return close_literal_quote(str, start, closure_char); + default: + break; + } + + std::string closures(1, closure_char); + auto loc = start + 1; + + while(loc < str.size()) { + if(str[loc] == closures.back()) { + closures.pop_back(); + if(closures.empty()) { + return loc; + } + } + bracket_loc = bracketChars.find(str[loc]); + if(bracket_loc != std::string::npos) { + switch(bracket_loc) { + case 0: + loc = close_string_quote(str, loc, str[loc]); + break; + case 1: + case 2: + loc = close_literal_quote(str, loc, str[loc]); + break; + default: + closures.push_back(matchBracketChars[bracket_loc]); + break; + } + } + ++loc; + } + if(loc > str.size()) { + loc = str.size(); + } + return loc; +} + CLI11_INLINE std::vector split_up(std::string str, char delimiter) { - const std::string delims("\'\"`"); auto find_ws = [delimiter](char ch) { return (delimiter == '\0') ? std::isspace(ch, std::locale()) : (ch == delimiter); }; trim(str); std::vector output; - bool embeddedQuote = false; - char keyChar = ' '; while(!str.empty()) { - if(delims.find_first_of(str[0]) != std::string::npos) { - keyChar = str[0]; - auto end = str.find_first_of(keyChar, 1); - while((end != std::string::npos) && (str[end - 1] == '\\')) { // deal with escaped quotes - end = str.find_first_of(keyChar, end + 1); - embeddedQuote = true; - } - if(end != std::string::npos) { - output.push_back(str.substr(1, end - 1)); + if(bracketChars.find_first_of(str[0]) != std::string::npos) { + auto bracketLoc = bracketChars.find_first_of(str[0]); + auto end = close_sequence(str, 0, matchBracketChars[bracketLoc]); + if(end >= str.size()) { + output.push_back(std::move(str)); + str.clear(); + } else { + output.push_back(str.substr(0, end + 1)); if(end + 2 < str.size()) { str = str.substr(end + 2); } else { str.clear(); } - - } else { - output.push_back(str.substr(1)); - str = ""; } + } else { auto it = std::find_if(std::begin(str), std::end(str), find_ws); if(it != std::end(str)) { @@ -580,14 +1075,9 @@ CLI11_INLINE std::vector split_up(std::string str, char delimiter) str = std::string(it + 1, str.end()); } else { output.push_back(str); - str = ""; + str.clear(); } } - // transform any embedded quotes into the regular character - if(embeddedQuote) { - output.back() = find_and_replace(output.back(), std::string("\\") + keyChar, std::string(1, keyChar)); - embeddedQuote = false; - } trim(str); } return output; @@ -605,15 +1095,140 @@ CLI11_INLINE std::size_t escape_detect(std::string &str, std::size_t offset) { return offset + 1; } -CLI11_INLINE std::string &add_quotes_if_needed(std::string &str) { - if((str.front() != '"' && str.front() != '\'') || str.front() != str.back()) { - char quote = str.find('"') < str.find('\'') ? '\'' : '"'; - if(str.find(' ') != std::string::npos) { - str.insert(0, 1, quote); - str.append(1, quote); +CLI11_INLINE std::string binary_escape_string(const std::string &string_to_escape) { + // s is our escaped output string + std::string escaped_string{}; + // loop through all characters + for(char c : string_to_escape) { + // check if a given character is printable + // the cast is necessary to avoid undefined behaviour + if(isprint(static_cast(c)) == 0) { + std::stringstream stream; + // if the character is not printable + // we'll convert it to a hex string using a stringstream + // note that since char is signed we have to cast it to unsigned first + stream << std::hex << static_cast(static_cast(c)); + std::string code = stream.str(); + escaped_string += std::string("\\x") + (code.size() < 2 ? "0" : "") + code; + + } else { + escaped_string.push_back(c); } } - return str; + if(escaped_string != string_to_escape) { + auto sqLoc = escaped_string.find('\''); + while(sqLoc != std::string::npos) { + escaped_string.replace(sqLoc, sqLoc + 1, "\\x27"); + sqLoc = escaped_string.find('\''); + } + escaped_string.insert(0, "'B\"("); + escaped_string.push_back(')'); + escaped_string.push_back('"'); + escaped_string.push_back('\''); + } + return escaped_string; +} + +CLI11_INLINE bool is_binary_escaped_string(const std::string &escaped_string) { + size_t ssize = escaped_string.size(); + if(escaped_string.compare(0, 3, "B\"(") == 0 && escaped_string.compare(ssize - 2, 2, ")\"") == 0) { + return true; + } + return (escaped_string.compare(0, 4, "'B\"(") == 0 && escaped_string.compare(ssize - 3, 3, ")\"'") == 0); +} + +CLI11_INLINE std::string extract_binary_string(const std::string &escaped_string) { + std::size_t start{0}; + std::size_t tail{0}; + size_t ssize = escaped_string.size(); + if(escaped_string.compare(0, 3, "B\"(") == 0 && escaped_string.compare(ssize - 2, 2, ")\"") == 0) { + start = 3; + tail = 2; + } else if(escaped_string.compare(0, 4, "'B\"(") == 0 && escaped_string.compare(ssize - 3, 3, ")\"'") == 0) { + start = 4; + tail = 3; + } + + if(start == 0) { + return escaped_string; + } + std::string outstring; + + outstring.reserve(ssize - start - tail); + std::size_t loc = start; + while(loc < ssize - tail) { + // ssize-2 to skip )" at the end + if(escaped_string[loc] == '\\' && (escaped_string[loc + 1] == 'x' || escaped_string[loc + 1] == 'X')) { + auto c1 = escaped_string[loc + 2]; + auto c2 = escaped_string[loc + 3]; + + std::uint32_t res1 = hexConvert(c1); + std::uint32_t res2 = hexConvert(c2); + if(res1 <= 0x0F && res2 <= 0x0F) { + loc += 4; + outstring.push_back(static_cast(res1 * 16 + res2)); + continue; + } + } + outstring.push_back(escaped_string[loc]); + ++loc; + } + return outstring; +} + +CLI11_INLINE void remove_quotes(std::vector &args) { + for(auto &arg : args) { + if(arg.front() == '\"' && arg.back() == '\"') { + remove_quotes(arg); + // only remove escaped for string arguments not literal strings + arg = remove_escaped_characters(arg); + } else { + remove_quotes(arg); + } + } +} + +CLI11_INLINE bool process_quoted_string(std::string &str, char string_char, char literal_char) { + if(str.size() <= 1) { + return false; + } + if(detail::is_binary_escaped_string(str)) { + str = detail::extract_binary_string(str); + return true; + } + if(str.front() == string_char && str.back() == string_char) { + detail::remove_outer(str, string_char); + if(str.find_first_of('\\') != std::string::npos) { + str = detail::remove_escaped_characters(str); + } + return true; + } + if((str.front() == literal_char || str.front() == '`') && str.back() == str.front()) { + detail::remove_outer(str, str.front()); + return true; + } + return false; +} + +std::string get_environment_value(const std::string &env_name) { + char *buffer = nullptr; + std::string ename_string; + +#ifdef _MSC_VER + // Windows version + std::size_t sz = 0; + if(_dupenv_s(&buffer, &sz, env_name.c_str()) == 0 && buffer != nullptr) { + ename_string = std::string(buffer); + free(buffer); + } +#else + // This also works on Windows, but gives a warning + buffer = std::getenv(env_name.c_str()); + if(buffer != nullptr) { + ename_string = std::string(buffer); + } +#endif + return ename_string; } } // namespace detail @@ -722,7 +1337,13 @@ class BadNameString : public ConstructionError { CLI11_ERROR_DEF(ConstructionError, BadNameString) CLI11_ERROR_SIMPLE(BadNameString) static BadNameString OneCharName(std::string name) { return BadNameString("Invalid one char name: " + name); } + static BadNameString MissingDash(std::string name) { + return BadNameString("Long names strings require 2 dashes " + name); + } static BadNameString BadLongName(std::string name) { return BadNameString("Bad long name: " + name); } + static BadNameString BadPositionalName(std::string name) { + return BadNameString("Invalid positional Name: " + name); + } static BadNameString DashesOnly(std::string name) { return BadNameString("Must have a name, not just dashes: " + name); } @@ -830,22 +1451,22 @@ class RequiredError : public ParseError { if((min_option == 1) && (max_option == 1) && (used == 0)) return RequiredError("Exactly 1 option from [" + option_list + "]"); if((min_option == 1) && (max_option == 1) && (used > 1)) { - return {"Exactly 1 option from [" + option_list + "] is required and " + std::to_string(used) + + return {"Exactly 1 option from [" + option_list + "] is required but " + std::to_string(used) + " were given", ExitCodes::RequiredError}; } if((min_option == 1) && (used == 0)) return RequiredError("At least 1 option from [" + option_list + "]"); if(used < min_option) { - return {"Requires at least " + std::to_string(min_option) + " options used and only " + - std::to_string(used) + "were given from [" + option_list + "]", + return {"Requires at least " + std::to_string(min_option) + " options used but only " + + std::to_string(used) + " were given from [" + option_list + "]", ExitCodes::RequiredError}; } if(max_option == 1) return {"Requires at most 1 options be given from [" + option_list + "]", ExitCodes::RequiredError}; - return {"Requires at most " + std::to_string(max_option) + " options be used and " + std::to_string(used) + - "were given from [" + option_list + "]", + return {"Requires at most " + std::to_string(max_option) + " options be used but " + std::to_string(used) + + " were given from [" + option_list + "]", ExitCodes::RequiredError}; } }; @@ -1012,6 +1633,23 @@ template <> struct IsMemberType { using type = std::string; }; +namespace adl_detail { +/// Check for existence of user-supplied lexical_cast. +/// +/// This struct has to be in a separate namespace so that it doesn't see our lexical_cast overloads in CLI::detail. +/// Standard says it shouldn't see them if it's defined before the corresponding lexical_cast declarations, but this +/// requires a working implementation of two-phase lookup, and not all compilers can boast that (msvc, ahem). +template class is_lexical_castable { + template + static auto test(int) -> decltype(lexical_cast(std::declval(), std::declval()), std::true_type()); + + template static auto test(...) -> std::false_type; + + public: + static constexpr bool value = decltype(test(0))::value; +}; +} // namespace adl_detail + namespace detail { // These are utilities for IsMember and other transforming objects @@ -1087,14 +1725,22 @@ template class is_direct_constructible { static auto test(int, std::true_type) -> decltype( // NVCC warns about narrowing conversions here #ifdef __CUDACC__ +#ifdef __NVCC_DIAG_PRAGMA_SUPPORT__ +#pragma nv_diag_suppress 2361 +#else #pragma diag_suppress 2361 #endif - TT{std::declval()} +#endif + TT{std::declval()} #ifdef __CUDACC__ +#ifdef __NVCC_DIAG_PRAGMA_SUPPORT__ +#pragma nv_diag_default 2361 +#else #pragma diag_default 2361 #endif - , - std::is_move_assignable()); +#endif + , + std::is_move_assignable()); template static auto test(int, std::false_type) -> std::false_type; @@ -1171,8 +1817,10 @@ struct is_mutable_container< decltype(std::declval().clear()), decltype(std::declval().insert(std::declval().end())>(), std::declval()))>, - void>> - : public conditional_t::value, std::false_type, std::true_type> {}; + void>> : public conditional_t::value || + std::is_constructible::value, + std::false_type, + std::true_type> {}; // check to see if an object is a mutable container (fail by default) template struct is_readable_container : std::false_type {}; @@ -1475,6 +2123,8 @@ enum class object_category : int { // string like types string_assignable = 23, string_constructible = 24, + wstring_assignable = 25, + wstring_constructible = 26, other = 45, // special wrapper or container types wrapper_value = 50, @@ -1523,12 +2173,23 @@ template struct classify_object struct classify_object::value>::type> { static constexpr object_category value{object_category::floating_point}; }; +#if defined _MSC_VER +// in MSVC wstring should take precedence if available this isn't as useful on other compilers due to the broader use of +// utf-8 encoding +#define WIDE_STRING_CHECK \ + !std::is_assignable::value && !std::is_constructible::value +#define STRING_CHECK true +#else +#define WIDE_STRING_CHECK true +#define STRING_CHECK !std::is_assignable::value && !std::is_constructible::value +#endif /// String and similar direct assignment template -struct classify_object::value && !std::is_integral::value && - std::is_assignable::value>::type> { +struct classify_object< + T, + typename std::enable_if::value && !std::is_integral::value && WIDE_STRING_CHECK && + std::is_assignable::value>::type> { static constexpr object_category value{object_category::string_assignable}; }; @@ -1538,10 +2199,27 @@ struct classify_object< T, typename std::enable_if::value && !std::is_integral::value && !std::is_assignable::value && (type_count::value == 1) && - std::is_constructible::value>::type> { + WIDE_STRING_CHECK && std::is_constructible::value>::type> { static constexpr object_category value{object_category::string_constructible}; }; +/// Wide strings +template +struct classify_object::value && !std::is_integral::value && + STRING_CHECK && std::is_assignable::value>::type> { + static constexpr object_category value{object_category::wstring_assignable}; +}; + +template +struct classify_object< + T, + typename std::enable_if::value && !std::is_integral::value && + !std::is_assignable::value && (type_count::value == 1) && + STRING_CHECK && std::is_constructible::value>::type> { + static constexpr object_category value{object_category::wstring_constructible}; +}; + /// Enumerations template struct classify_object::value>::type> { static constexpr object_category value{object_category::enumeration}; @@ -1554,12 +2232,13 @@ template struct classify_object struct uncommon_type { - using type = typename std::conditional::value && !std::is_integral::value && - !std::is_assignable::value && - !std::is_constructible::value && !is_complex::value && - !is_mutable_container::value && !std::is_enum::value, - std::true_type, - std::false_type>::type; + using type = typename std::conditional< + !std::is_floating_point::value && !std::is_integral::value && + !std::is_assignable::value && !std::is_constructible::value && + !std::is_assignable::value && !std::is_constructible::value && + !is_complex::value && !is_mutable_container::value && !std::is_enum::value, + std::true_type, + std::false_type>::type; static constexpr bool value = type::value; }; @@ -1748,7 +2427,7 @@ bool integral_conversion(const std::string &input, T &output) noexcept { if(input.empty() || input.front() == '-') { return false; } - char *val = nullptr; + char *val{nullptr}; errno = 0; std::uint64_t output_ll = std::strtoull(input.c_str(), &val, 0); if(errno == ERANGE) { @@ -1764,6 +2443,33 @@ bool integral_conversion(const std::string &input, T &output) noexcept { output = (output_sll < 0) ? static_cast(0) : static_cast(output_sll); return (static_cast(output) == output_sll); } + // remove separators + if(input.find_first_of("_'") != std::string::npos) { + std::string nstring = input; + nstring.erase(std::remove(nstring.begin(), nstring.end(), '_'), nstring.end()); + nstring.erase(std::remove(nstring.begin(), nstring.end(), '\''), nstring.end()); + return integral_conversion(nstring, output); + } + if(input.compare(0, 2, "0o") == 0) { + val = nullptr; + errno = 0; + output_ll = std::strtoull(input.c_str() + 2, &val, 8); + if(errno == ERANGE) { + return false; + } + output = static_cast(output_ll); + return (val == (input.c_str() + input.size()) && static_cast(output) == output_ll); + } + if(input.compare(0, 2, "0b") == 0) { + val = nullptr; + errno = 0; + output_ll = std::strtoull(input.c_str() + 2, &val, 2); + if(errno == ERANGE) { + return false; + } + output = static_cast(output_ll); + return (val == (input.c_str() + input.size()) && static_cast(output) == output_ll); + } return false; } @@ -1788,11 +2494,38 @@ bool integral_conversion(const std::string &input, T &output) noexcept { output = static_cast(1); return true; } + // remove separators + if(input.find_first_of("_'") != std::string::npos) { + std::string nstring = input; + nstring.erase(std::remove(nstring.begin(), nstring.end(), '_'), nstring.end()); + nstring.erase(std::remove(nstring.begin(), nstring.end(), '\''), nstring.end()); + return integral_conversion(nstring, output); + } + if(input.compare(0, 2, "0o") == 0) { + val = nullptr; + errno = 0; + output_ll = std::strtoll(input.c_str() + 2, &val, 8); + if(errno == ERANGE) { + return false; + } + output = static_cast(output_ll); + return (val == (input.c_str() + input.size()) && static_cast(output) == output_ll); + } + if(input.compare(0, 2, "0b") == 0) { + val = nullptr; + errno = 0; + output_ll = std::strtoll(input.c_str() + 2, &val, 2); + if(errno == ERANGE) { + return false; + } + output = static_cast(output_ll); + return (val == (input.c_str() + input.size()) && static_cast(output) == output_ll); + } return false; } -/// Convert a flag into an integer value typically binary flags -inline std::int64_t to_flag_value(std::string val) { +/// Convert a flag into an integer value typically binary flags sets errno to nonzero if conversion failed +inline std::int64_t to_flag_value(std::string val) noexcept { static const std::string trueString("true"); static const std::string falseString("false"); if(val == trueString) { @@ -1820,7 +2553,8 @@ inline std::int64_t to_flag_value(std::string val) { ret = 1; break; default: - throw std::invalid_argument("unrecognized character"); + errno = EINVAL; + return -1; } return ret; } @@ -1829,7 +2563,11 @@ inline std::int64_t to_flag_value(std::string val) { } else if(val == falseString || val == "off" || val == "no" || val == "disable") { ret = -1; } else { - ret = std::stoll(val); + char *loc_ptr{nullptr}; + ret = std::strtoll(val.c_str(), &loc_ptr, 0); + if(loc_ptr != (val.c_str() + val.size()) && errno == 0) { + errno = EINVAL; + } } return ret; } @@ -1858,18 +2596,16 @@ bool lexical_cast(const std::string &input, T &output) { template ::value == object_category::boolean_value, detail::enabler> = detail::dummy> bool lexical_cast(const std::string &input, T &output) { - try { - auto out = to_flag_value(input); + errno = 0; + auto out = to_flag_value(input); + if(errno == 0) { output = (out > 0); - return true; - } catch(const std::invalid_argument &) { - return false; - } catch(const std::out_of_range &) { - // if the number is out of the range of a 64 bit value then it is still a number and for this purpose is still - // valid all we care about the sign + } else if(errno == ERANGE) { output = (input[0] != '-'); - return true; + } else { + return false; } + return true; } /// Floats @@ -1882,7 +2618,17 @@ bool lexical_cast(const std::string &input, T &output) { char *val = nullptr; auto output_ld = std::strtold(input.c_str(), &val); output = static_cast(output_ld); - return val == (input.c_str() + input.size()); + if(val == (input.c_str() + input.size())) { + return true; + } + // remove separators + if(input.find_first_of("_'") != std::string::npos) { + std::string nstring = input; + nstring.erase(std::remove(nstring.begin(), nstring.end(), '_'), nstring.end()); + nstring.erase(std::remove(nstring.begin(), nstring.end(), '\''), nstring.end()); + return lexical_cast(nstring, output); + } + return false; } /// complex @@ -1934,6 +2680,23 @@ bool lexical_cast(const std::string &input, T &output) { return true; } +/// Wide strings +template < + typename T, + enable_if_t::value == object_category::wstring_assignable, detail::enabler> = detail::dummy> +bool lexical_cast(const std::string &input, T &output) { + output = widen(input); + return true; +} + +template < + typename T, + enable_if_t::value == object_category::wstring_constructible, detail::enabler> = detail::dummy> +bool lexical_cast(const std::string &input, T &output) { + output = T{widen(input)}; + return true; +} + /// Enumerations template ::value == object_category::enumeration, detail::enabler> = detail::dummy> @@ -2047,13 +2810,24 @@ bool lexical_cast(const std::string &input, T &output) { /// Non-string parsable by a stream template ::value == object_category::other && !std::is_assignable::value, + enable_if_t::value == object_category::other && !std::is_assignable::value && + is_istreamable::value, detail::enabler> = detail::dummy> bool lexical_cast(const std::string &input, T &output) { - static_assert(is_istreamable::value, + return from_stream(input, output); +} + +/// Fallback overload that prints a human-readable error for types that we don't recognize and that don't have a +/// user-supplied lexical_cast overload. +template ::value == object_category::other && !std::is_assignable::value && + !is_istreamable::value && !adl_detail::is_lexical_castable::value, + detail::enabler> = detail::dummy> +bool lexical_cast(const std::string & /*input*/, T & /*output*/) { + static_assert(!std::is_same::value, // Can't just write false here. "option object type must have a lexical cast overload or streaming input operator(>>) defined, if it " "is convertible from another type use the add_option(...) with XC being the known type"); - return from_stream(input, output); + return false; } /// Assign a value through lexical cast operations @@ -2062,7 +2836,9 @@ template ::value && (classify_object::value == object_category::string_assignable || - classify_object::value == object_category::string_constructible), + classify_object::value == object_category::string_constructible || + classify_object::value == object_category::wstring_assignable || + classify_object::value == object_category::wstring_constructible), detail::enabler> = detail::dummy> bool lexical_assign(const std::string &input, AssignTo &output) { return lexical_cast(input, output); @@ -2073,7 +2849,9 @@ template ::value && std::is_assignable::value && classify_object::value != object_category::string_assignable && - classify_object::value != object_category::string_constructible, + classify_object::value != object_category::string_constructible && + classify_object::value != object_category::wstring_assignable && + classify_object::value != object_category::wstring_constructible, detail::enabler> = detail::dummy> bool lexical_assign(const std::string &input, AssignTo &output) { if(input.empty()) { @@ -2112,9 +2890,17 @@ bool lexical_assign(const std::string &input, AssignTo &output) { output = 0; return true; } - int val = 0; + int val{0}; if(lexical_cast(input, val)) { +#if defined(__clang__) +/* on some older clang compilers */ +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wsign-conversion" +#endif output = val; +#if defined(__clang__) +#pragma clang diagnostic pop +#endif return true; } return false; @@ -2169,12 +2955,12 @@ template = detail::dummy> bool lexical_conversion(const std::vector &strings, AssignTo &output) { // the remove const is to handle pair types coming from a container - typename std::remove_const::type>::type v1; - typename std::tuple_element<1, ConvertTo>::type v2; - bool retval = lexical_assign(strings[0], v1); - if(strings.size() > 1) { - retval = retval && lexical_assign(strings[1], v2); - } + using FirstType = typename std::remove_const::type>::type; + using SecondType = typename std::tuple_element<1, ConvertTo>::type; + FirstType v1; + SecondType v2; + bool retval = lexical_assign(strings[0], v1); + retval = retval && lexical_assign((strings.size() > 1) ? strings[1] : std::string{}, v2); if(retval) { output = AssignTo{v1, v2}; } @@ -2189,6 +2975,9 @@ template = detail::dummy> bool lexical_conversion(const std::vector &strings, AssignTo &output) { output.erase(output.begin(), output.end()); + if(strings.empty()) { + return true; + } if(strings.size() == 1 && strings[0] == "{}") { return true; } @@ -2333,7 +3122,7 @@ tuple_type_conversion(std::vector &strings, AssignTo &output) { std::size_t index{subtype_count_min::value}; const std::size_t mx_count{subtype_count::value}; - const std::size_t mx{(std::max)(mx_count, strings.size())}; + const std::size_t mx{(std::min)(mx_count, strings.size() - 1)}; while(index < mx) { if(is_separator(strings[index])) { @@ -2343,7 +3132,11 @@ tuple_type_conversion(std::vector &strings, AssignTo &output) { } bool retval = lexical_conversion( std::vector(strings.begin(), strings.begin() + static_cast(index)), output); - strings.erase(strings.begin(), strings.begin() + static_cast(index) + 1); + if(strings.size() > index) { + strings.erase(strings.begin(), strings.begin() + static_cast(index) + 1); + } else { + strings.clear(); + } return retval; } @@ -2487,12 +3280,13 @@ inline std::string sum_string_vector(const std::vector &values) { double tv{0.0}; auto comp = lexical_cast(arg, tv); if(!comp) { - try { - tv = static_cast(detail::to_flag_value(arg)); - } catch(const std::exception &) { - fail = true; + errno = 0; + auto fv = detail::to_flag_value(arg); + fail = (errno != 0); + if(fail) { break; } + tv = static_cast(fv); } val += tv; } @@ -2501,13 +3295,10 @@ inline std::string sum_string_vector(const std::vector &values) { output.append(arg); } } else { - if(val <= static_cast((std::numeric_limits::min)()) || - val >= static_cast((std::numeric_limits::max)()) || - std::ceil(val) == std::floor(val)) { - output = detail::value_string(static_cast(val)); - } else { - output = detail::value_string(val); - } + std::ostringstream out; + out.precision(16); + out << val; + output = out.str(); } return output; } @@ -2553,7 +3344,7 @@ CLI11_INLINE bool split_short(const std::string ¤t, std::string &name, std } CLI11_INLINE bool split_long(const std::string ¤t, std::string &name, std::string &value) { - if(current.size() > 2 && current.substr(0, 2) == "--" && valid_first_char(current[2])) { + if(current.size() > 2 && current.compare(0, 2, "--") == 0 && valid_first_char(current[2])) { auto loc = current.find_first_of('='); if(loc != std::string::npos) { name = current.substr(2, loc - 2); @@ -2625,7 +3416,6 @@ get_names(const std::vector &input) { std::vector short_names; std::vector long_names; std::string pos_name; - for(std::string name : input) { if(name.length() == 0) { continue; @@ -2633,6 +3423,8 @@ get_names(const std::vector &input) { if(name.length() > 1 && name[0] == '-' && name[1] != '-') { if(name.length() == 2 && valid_first_char(name[1])) short_names.emplace_back(1, name[1]); + else if(name.length() > 2) + throw BadNameString::MissingDash(name); else throw BadNameString::OneCharName(name); } else if(name.length() > 2 && name.substr(0, 2) == "--") { @@ -2644,12 +3436,15 @@ get_names(const std::vector &input) { } else if(name == "-" || name == "--") { throw BadNameString::DashesOnly(name); } else { - if(pos_name.length() > 0) + if(!pos_name.empty()) throw BadNameString::MultiPositionalNames(name); - pos_name = name; + if(valid_name_string(name)) { + pos_name = name; + } else { + throw BadNameString::BadPositionalName(name); + } } } - return std::make_tuple(short_names, long_names, pos_name); } @@ -2666,7 +3461,6 @@ struct ConfigItem { /// This is the name std::string name{}; - /// Listing of inputs std::vector inputs{}; @@ -2729,8 +3523,8 @@ class ConfigBase : public Config { char valueDelimiter = '='; /// the character to use around strings char stringQuote = '"'; - /// the character to use around single characters - char characterQuote = '\''; + /// the character to use around single characters and literal strings + char literalQuote = '\''; /// the maximum number of layers to allow uint8_t maximumLayers{255}; /// the separator used to separator parent layers @@ -2766,10 +3560,10 @@ class ConfigBase : public Config { valueDelimiter = vSep; return this; } - /// Specify the quote characters used around strings and characters - ConfigBase *quoteCharacter(char qString, char qChar) { + /// Specify the quote characters used around strings and literal strings + ConfigBase *quoteCharacter(char qString, char literalChar) { stringQuote = qString; - characterQuote = qChar; + literalQuote = literalChar; return this; } /// Specify the maximum number of parents @@ -3001,6 +3795,11 @@ class IPV4Validator : public Validator { IPV4Validator(); }; +class EscapedStringTransformer : public Validator { + public: + EscapedStringTransformer(); +}; + } // namespace detail // Static is not needed here, because global const implies static. @@ -3020,6 +3819,9 @@ const detail::NonexistentPathValidator NonexistentPath; /// Check for an IP4 address const detail::IPV4Validator ValidIPV4; +/// convert escaped characters into their associated values +const detail::EscapedStringTransformer EscapedString; + /// Validate the input as a particular type template class TypeValidator : public Validator { public: @@ -3772,14 +4574,14 @@ namespace detail { #if defined CLI11_HAS_FILESYSTEM && CLI11_HAS_FILESYSTEM > 0 CLI11_INLINE path_type check_path(const char *file) noexcept { std::error_code ec; - auto stat = std::filesystem::status(file, ec); + auto stat = std::filesystem::status(to_path(file), ec); if(ec) { return path_type::nonexistent; } switch(stat.type()) { case std::filesystem::file_type::none: // LCOV_EXCL_LINE case std::filesystem::file_type::not_found: - return path_type::nonexistent; + return path_type::nonexistent; // LCOV_EXCL_LINE case std::filesystem::file_type::directory: return path_type::directory; case std::filesystem::file_type::symlink: @@ -3873,10 +4675,29 @@ CLI11_INLINE IPV4Validator::IPV4Validator() : Validator("IPV4") { return std::string("Each IP number must be between 0 and 255 ") + var; } } - return std::string(); + return std::string{}; + }; +} + +CLI11_INLINE EscapedStringTransformer::EscapedStringTransformer() { + func_ = [](std::string &str) { + try { + if(str.size() > 1 && (str.front() == '\"' || str.front() == '\'' || str.front() == '`') && + str.front() == str.back()) { + process_quoted_string(str); + } else if(str.find_first_of('\\') != std::string::npos) { + if(detail::is_binary_escaped_string(str)) { + str = detail::extract_binary_string(str); + } else { + str = remove_escaped_characters(str); + } + } + return std::string{}; + } catch(const std::invalid_argument &ia) { + return std::string(ia.what()); + } }; } - } // namespace detail CLI11_INLINE FileOnDefaultPath::FileOnDefaultPath(std::string default_path, bool enableErrorReturn) @@ -4175,7 +4996,8 @@ enum class MultiOptionPolicy : char { TakeFirst, //!< take only the first Expected number of arguments Join, //!< merge all the arguments together into a single string via the delimiter character default('\n') TakeAll, //!< just get all the passed argument regardless - Sum //!< sum all the arguments together if numerical or concatenate directly without delimiter + Sum, //!< sum all the arguments together if numerical or concatenate directly without delimiter + Reverse, //!< take only the last Expected number of arguments in reverse order }; /// This is the CRTP base class for Option and OptionDefaults. It was designed this way @@ -4683,12 +5505,12 @@ class Option : public OptionBase