diff --git a/CHANGELOG.md b/CHANGELOG.md index e3fcbfe3..1394dcf8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # CHANGELOG + * Added method type diagram filter (#145) + * Added default method grouping and sorting in class diagrams (#36) + * Improved generation of method attributes (e.g. constexpr, noexcept) (#142) + ### 0.3.6 * Added generation of packages in class and package diagrams from filesystem directories (#144) diff --git a/README.md b/README.md index addaa08e..e8eb761d 100644 --- a/README.md +++ b/README.md @@ -439,6 +439,7 @@ This project relies on the following great tools: * [inja](https://github.com/pantor/inja) - a template engine for modern C++ * [backward-cpp](https://github.com/bombela/backward-cpp) - stack trace pretty printer for C++ * [yaml-cpp](https://github.com/jbeder/yaml-cpp) - YAML parser library for C++ +* [spdlog](https://github.com/gabime/spdlog) - Fast C++ logging library ## Contributing diff --git a/docs/diagram_filters.md b/docs/diagram_filters.md index 860888f4..41ac062a 100644 --- a/docs/diagram_filters.md +++ b/docs/diagram_filters.md @@ -11,6 +11,8 @@ * [`subclasses`](#subclasses) * [`parents`](#parents) * [`specializations`](#specializations) +* [`access`](#access) +* [`method_types`](#method_types) * [`dependants` and `dependencies`](#dependants-and-dependencies) @@ -131,6 +133,28 @@ This filter allows to include or exclude all parents (base classes) of a given c This filter allows to include or exclude specializations and instantiations of a specific template from the diagram. +## `access` + +This filter allows to include or exclude class methods and members based on their access scope, allowed values are: + + * `public` + * `protected` + * `private` + +## `method_types` + +This filter allows to include or exclude various method types from the class diagram, allowed values are: + * constructor + * destructor + * assignment + * operator + * defaulted + * deleted + * static + +This filter is independent of the `access` filter, which controls which methods +are included based on access scope (e.g. `public`). + ## `dependants` and `dependencies` These filters allow to specify that only dependants or dependencies of a given class should be included in the diagram. diff --git a/docs/test_cases.md b/docs/test_cases.md index 35c1755a..03d7bf9b 100644 --- a/docs/test_cases.md +++ b/docs/test_cases.md @@ -1,7 +1,7 @@ # Test cases index ## Class diagrams * [t00002](./test_cases/t00002.md) - Basic class inheritance - * [t00003](./test_cases/t00003.md) - Class field and methods + * [t00003](./test_cases/t00003.md) - Class fields and methods * [t00004](./test_cases/t00004.md) - Nested classes and enums * [t00005](./test_cases/t00005.md) - Basic class field relationships * [t00006](./test_cases/t00006.md) - Class field relationships inferred from templates @@ -64,6 +64,8 @@ * [t00063](./test_cases/t00063.md) - Element types diagram filter test case * [t00064](./test_cases/t00064.md) - Template type list test case * [t00065](./test_cases/t00065.md) - Class diagram with packages from directory structure + * [t00066](./test_cases/t00066.md) - Class fields and methods without grouping and sorting + * [t00067](./test_cases/t00067.md) - Class method type filter test case ## Sequence diagrams * [t20001](./test_cases/t20001.md) - Basic sequence diagram test case * [t20002](./test_cases/t20002.md) - Free function sequence diagram test case diff --git a/docs/test_cases/t00002.md b/docs/test_cases/t00002.md index 848f2ac8..31016770 100644 --- a/docs/test_cases/t00002.md +++ b/docs/test_cases/t00002.md @@ -154,8 +154,15 @@ private: "text": "\n Abstract foo_a\n" }, "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": true, "is_static": false, "is_virtual": true, @@ -174,8 +181,15 @@ private: "text": "\n Abstract foo_c\n" }, "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": true, "is_static": false, "is_virtual": true, @@ -225,8 +239,15 @@ private: { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": true, @@ -285,8 +306,15 @@ private: "text": "\n Do nothing unless override is provided\n" }, "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": true, @@ -366,8 +394,15 @@ private: "text": "\n Forward foo_a\n" }, "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": true, @@ -386,8 +421,15 @@ private: "text": "\n Forward foo_c\n" }, "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": true, @@ -459,8 +501,15 @@ private: "text": "\n Forward foo_a\n" }, "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": true, @@ -479,8 +528,15 @@ private: "text": "\n Forward foo_c\n" }, "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": true, @@ -500,7 +556,7 @@ private: } ], "metadata": { - "clang_uml_version": "0.3.5-27-g81c7ce7", + "clang_uml_version": "0.3.6-11-g75d1daa", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00002_class.svg b/docs/test_cases/t00002_class.svg index 22b9853d..a91d7588 100644 --- a/docs/test_cases/t00002_class.svg +++ b/docs/test_cases/t00002_class.svg @@ -1,6 +1,6 @@ - + @@ -9,83 +9,83 @@ - - + + A - - - foo_a() = 0 : void - - foo_c() = 0 : void + + foo_a() = 0 : void + + foo_c() = 0 : void + - - + + B - - - foo_a() : void + + foo_a() : void + - - + + C - - - foo_c() : void + + foo_c() : void + - - + + D + + foo_a() : void + + foo_c() : void + - - - + + + - - as : std::vector<A *> + + as : std::vector<A *> - - - foo_a() : void - - foo_c() : void - - + + E + + foo_a() : void + + foo_c() : void + - - - + + + - - as : std::vector<A *> + + as : std::vector<A *> - - - foo_a() : void - - foo_c() : void - + This is class A - + This is class B - + This is class D diff --git a/docs/test_cases/t00003.md b/docs/test_cases/t00003.md index 536bb8b8..cf7f20e1 100644 --- a/docs/test_cases/t00003.md +++ b/docs/test_cases/t00003.md @@ -1,4 +1,4 @@ -# t00003 - Class field and methods +# t00003 - Class fields and methods ## Config ```yaml compilation_database_dir: .. @@ -31,8 +31,15 @@ public: : private_member{i} { } + + template + A(T t) + : private_member{t.get()} + { + } + A(A &&) = default; - A(const A &) = default; + A(const A &) = delete; virtual ~A() = default; void basic_method() { } @@ -40,6 +47,17 @@ public: void const_method() const { } auto auto_method() { return 1; } + A &operator++() + { + private_member++; + return *this; + } + + A &operator=(A &&other) noexcept { return *this; } + A &operator=(A &other) noexcept { return *this; } + + constexpr std::size_t size() const { return private_member; } + auto double_int(const int i) { return 2 * i; } auto sum(const double a, const double b) { return a_ + b_ + c_; } @@ -78,7 +96,7 @@ int A::static_int = 1; ``` ## Generated UML diagrams -![t00003_class](./t00003_class.svg "Class field and methods") +![t00003_class](./t00003_class.svg "Class fields and methods") ## Generated JSON models ```json { @@ -100,7 +118,7 @@ int A::static_int = 1; "name": "public_member", "source_location": { "file": "../../tests/t00003/t00003.cc", - "line": 34 + "line": 52 }, "type": "int" }, @@ -110,7 +128,7 @@ int A::static_int = 1; "name": "protected_member", "source_location": { "file": "../../tests/t00003/t00003.cc", - "line": 42 + "line": 60 }, "type": "int" }, @@ -120,7 +138,7 @@ int A::static_int = 1; "name": "compare", "source_location": { "file": "../../tests/t00003/t00003.cc", - "line": 44 + "line": 62 }, "type": "std::function" }, @@ -130,7 +148,7 @@ int A::static_int = 1; "name": "private_member", "source_location": { "file": "../../tests/t00003/t00003.cc", - "line": 51 + "line": 69 }, "type": "int" }, @@ -140,7 +158,7 @@ int A::static_int = 1; "name": "a_", "source_location": { "file": "../../tests/t00003/t00003.cc", - "line": 52 + "line": 70 }, "type": "int" }, @@ -150,7 +168,7 @@ int A::static_int = 1; "name": "b_", "source_location": { "file": "../../tests/t00003/t00003.cc", - "line": 52 + "line": 70 }, "type": "int" }, @@ -160,7 +178,7 @@ int A::static_int = 1; "name": "c_", "source_location": { "file": "../../tests/t00003/t00003.cc", - "line": 52 + "line": 70 }, "type": "int" }, @@ -170,7 +188,7 @@ int A::static_int = 1; "name": "static_int", "source_location": { "file": "../../tests/t00003/t00003.cc", - "line": 35 + "line": 53 }, "type": "int" }, @@ -180,7 +198,7 @@ int A::static_int = 1; "name": "static_const_int", "source_location": { "file": "../../tests/t00003/t00003.cc", - "line": 36 + "line": 54 }, "type": "const int" }, @@ -190,7 +208,7 @@ int A::static_int = 1; "name": "auto_member", "source_location": { "file": "../../tests/t00003/t00003.cc", - "line": 37 + "line": 55 }, "type": "const unsigned long" } @@ -199,8 +217,15 @@ int A::static_int = 1; { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": true, + "is_copy_assignment": false, "is_defaulted": true, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -211,8 +236,15 @@ int A::static_int = 1; { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": true, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -228,8 +260,15 @@ int A::static_int = 1; { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": true, + "is_copy_assignment": false, "is_defaulted": true, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -245,8 +284,15 @@ int A::static_int = 1; { "access": "public", "is_const": false, - "is_defaulted": true, - "is_implicit": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": true, + "is_copy_assignment": false, + "is_defaulted": false, + "is_deleted": true, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -262,8 +308,15 @@ int A::static_int = 1; { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": true, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": true, @@ -274,8 +327,15 @@ int A::static_int = 1; { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -286,8 +346,15 @@ int A::static_int = 1; { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": true, "is_virtual": false, @@ -298,8 +365,15 @@ int A::static_int = 1; { "access": "public", "is_const": true, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -310,8 +384,15 @@ int A::static_int = 1; { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -322,8 +403,101 @@ int A::static_int = 1; { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": true, + "is_pure_virtual": false, + "is_static": false, + "is_virtual": false, + "name": "operator++", + "parameters": [], + "type": "clanguml::t00003::A &" + }, + { + "access": "public", + "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, + "is_defaulted": false, + "is_deleted": false, + "is_move_assignment": true, + "is_noexcept": true, + "is_operator": true, + "is_pure_virtual": false, + "is_static": false, + "is_virtual": false, + "name": "operator=", + "parameters": [ + { + "name": "other", + "type": "clanguml::t00003::A &&" + } + ], + "type": "clanguml::t00003::A &" + }, + { + "access": "public", + "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": true, + "is_defaulted": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": true, + "is_operator": true, + "is_pure_virtual": false, + "is_static": false, + "is_virtual": false, + "name": "operator=", + "parameters": [ + { + "name": "other", + "type": "clanguml::t00003::A &" + } + ], + "type": "clanguml::t00003::A &" + }, + { + "access": "public", + "is_const": true, + "is_consteval": false, + "is_constexpr": true, + "is_constructor": false, + "is_copy_assignment": false, + "is_defaulted": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, + "is_pure_virtual": false, + "is_static": false, + "is_virtual": false, + "name": "size", + "parameters": [], + "type": "std::size_t" + }, + { + "access": "public", + "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, + "is_defaulted": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -339,8 +513,15 @@ int A::static_int = 1; { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -360,8 +541,15 @@ int A::static_int = 1; { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -378,8 +566,15 @@ int A::static_int = 1; { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -400,8 +595,15 @@ int A::static_int = 1; { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": true, "is_virtual": false, @@ -417,8 +619,15 @@ int A::static_int = 1; { "access": "protected", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -429,14 +638,45 @@ int A::static_int = 1; { "access": "private", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, "name": "private_method", "parameters": [], "type": "void" + }, + { + "access": "public", + "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": true, + "is_copy_assignment": false, + "is_defaulted": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, + "is_pure_virtual": false, + "is_static": false, + "is_virtual": false, + "name": "A", + "parameters": [ + { + "name": "t", + "type": "T" + } + ], + "type": "void" } ], "name": "A", @@ -450,7 +690,7 @@ int A::static_int = 1; } ], "metadata": { - "clang_uml_version": "0.3.5-27-g81c7ce7", + "clang_uml_version": "0.3.6-11-g75d1daa", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00003_class.svg b/docs/test_cases/t00003_class.svg index a76f7ae3..72d39e0b 100644 --- a/docs/test_cases/t00003_class.svg +++ b/docs/test_cases/t00003_class.svg @@ -1,6 +1,6 @@ - + - + @@ -9,115 +9,128 @@ - - + + 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 + - - - + + + - - public_member : int + + a_ : int - - - + + + - - protected_member : int + + auto_member : const unsigned long - - - + + + - - private_member : int + + b_ : int - - - + + + - - a_ : int + + c_ : int - - - + + + - - b_ : int + + compare : std::function<bool (const int)> - - - + + + - - c_ : int + + private_member : int - - - + + + - - static_int : int + + protected_member : int - - - + + + - - static_const_int : const int + + public_member : int - - - + + + - - auto_member : const unsigned long + + static_const_int : const int - - - A() = default : void - - A(int i) : void - - A(A && ) = default : void - - A(const A & ) = default : void - - ~A() = default : void - - basic_method() : void - - static_method() : int - - const_method() const : void - - auto_method() : int - - 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)> + + static_int : int diff --git a/docs/test_cases/t00004.md b/docs/test_cases/t00004.md index 6404d1dd..bfcce3d0 100644 --- a/docs/test_cases/t00004.md +++ b/docs/test_cases/t00004.md @@ -132,8 +132,15 @@ public: { "access": "public", "is_const": true, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -144,8 +151,15 @@ public: { "access": "public", "is_const": true, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -464,7 +478,7 @@ public: } ], "metadata": { - "clang_uml_version": "0.3.5-27-g81c7ce7", + "clang_uml_version": "0.3.6-11-g75d1daa", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00004_class.svg b/docs/test_cases/t00004_class.svg index a9addc98..731eb2b5 100644 --- a/docs/test_cases/t00004_class.svg +++ b/docs/test_cases/t00004_class.svg @@ -1,6 +1,6 @@ - + @@ -9,16 +9,16 @@ - - + + B - - + + B::AA @@ -28,28 +28,28 @@ AA_3 - - + + A - - - foo() const : void - - foo2() const : void + + foo() const : void + + foo2() const : void + - - + + A::AA - - + + A::AA::Lights @@ -59,16 +59,16 @@ Red - - + + A::AA::AAA - - + + C::B @@ -77,48 +77,48 @@ - - + + C T + - - - + + + - - t : T + + b_int : B<int> - - - + + + - - b_int : B<int> + + t : T - - - + + C::AA - - + + C::AA::AAA - - + + C::AA::CCC @@ -127,25 +127,25 @@ CCC_2 - - + + C::B V + - - - + + + - - b : V + + b : V - - - + + C::CC @@ -154,16 +154,16 @@ CC_2 - - + + detail::D - - + + detail::D::AA @@ -173,8 +173,8 @@ AA_3 - - + + detail::D::DD diff --git a/docs/test_cases/t00005.md b/docs/test_cases/t00005.md index fdb33504..9067d37e 100644 --- a/docs/test_cases/t00005.md +++ b/docs/test_cases/t00005.md @@ -464,7 +464,7 @@ public: } ], "metadata": { - "clang_uml_version": "0.3.5-27-g81c7ce7", + "clang_uml_version": "0.3.6-11-g75d1daa", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00005_class.svg b/docs/test_cases/t00005_class.svg index 0a64db19..a7678b6f 100644 --- a/docs/test_cases/t00005_class.svg +++ b/docs/test_cases/t00005_class.svg @@ -1,6 +1,6 @@ - + @@ -9,207 +9,207 @@ - - + + A - - + + B - - + + C - - + + D - - + + E - - + + F - - + + G - - + + H - - + + I - - + + J - - + + K - - + + R + - - - + + + - - some_int : int + + a : A - - - + + + - - some_int_pointer : int * + + b : B * - - - + + + - - some_int_pointer_pointer : int ** + + c : C & - - - + + + - - some_int_reference : int & + + d : const D * - - - + + + - - a : A + + e : const E & - - - + + + - - b : B * + + f : F && - - - + + + - - c : C & + + g : G ** - - - + + + - - d : const D * + + h : H *** - - - + + + - - e : const E & + + i : I *& - - - + + + - - f : F && + + j : volatile J * - - - + + + - - g : G ** + + k : K * - - - + + + - - h : H *** + + some_int : int - - - + + + - - i : I *& + + some_int_pointer : int * - - - + + + - - j : volatile J * + + some_int_pointer_pointer : int ** - - - + + + - - k : K * + + some_int_reference : int & - +a diff --git a/docs/test_cases/t00006.md b/docs/test_cases/t00006.md index 64d37a28..e23924a0 100644 --- a/docs/test_cases/t00006.md +++ b/docs/test_cases/t00006.md @@ -633,7 +633,7 @@ public: } ], "metadata": { - "clang_uml_version": "0.3.5-27-g81c7ce7", + "clang_uml_version": "0.3.6-11-g75d1daa", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00006_class.svg b/docs/test_cases/t00006_class.svg index 39c414bc..9451eb1f 100644 --- a/docs/test_cases/t00006_class.svg +++ b/docs/test_cases/t00006_class.svg @@ -1,6 +1,6 @@ - + @@ -9,153 +9,153 @@ - - + + A - - + + B - - + + C - - + + D - - + + E - - + + F - - + + G - - + + H - - + + I - - + + J - - + + K - - + + L - - + + M - - + + N - - + + NN - - + + NNN - - + + custom_container T + - - - + + + - - data : std::vector<T> + + data : std::vector<T> - - - + + custom_container @@ -164,105 +164,105 @@ - - + + R + - - - + + + - - a : std::vector<A> + + a : std::vector<A> - - - + + + - - b : std::vector<B *> + + b : std::vector<B *> - - - + + + - - c : std::map<int,C> + + c : std::map<int,C> - - - + + + - - d : std::map<int,D *> + + d : std::map<int,D *> - - - + + + - - e : custom_container<E> + + e : custom_container<E> - - - + + + - - f : std::vector<std::vector<F>> + + f : std::vector<std::vector<F>> - - - + + + - - g : std::map<int,std::vector<G *>> + + g : std::map<int,std::vector<G *>> - - - + + + - - h : std::array<H,10> + + h : std::array<H,10> - - - + + + - - i : std::array<I *,5> + + i : std::array<I *,5> - - - + + + - - j : J[10] + + j : J[10] - - - + + + - - k : K *[20] + + k : K *[20] - - - + + + - - lm : std::vector<std::pair<L,M>> + + lm : std::vector<std::pair<L,M>> - - - + + + - - ns : std::tuple<N,NN,NNN> + + ns : std::tuple<N,NN,NNN> - diff --git a/docs/test_cases/t00007.md b/docs/test_cases/t00007.md index 564cf9ec..da27e823 100644 --- a/docs/test_cases/t00007.md +++ b/docs/test_cases/t00007.md @@ -158,7 +158,7 @@ public: } ], "metadata": { - "clang_uml_version": "0.3.5-27-g81c7ce7", + "clang_uml_version": "0.3.6-11-g75d1daa", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00007_class.svg b/docs/test_cases/t00007_class.svg index ff981cd6..f82dff9c 100644 --- a/docs/test_cases/t00007_class.svg +++ b/docs/test_cases/t00007_class.svg @@ -1,6 +1,6 @@ - + @@ -9,59 +9,59 @@ - - + + A - - + + B - - + + C - - + + R + - - - + + + - - a : std::unique_ptr<A> + + a : std::unique_ptr<A> - - - + + + - - b : std::shared_ptr<B> + + b : std::shared_ptr<B> - - - + + + - - c : std::weak_ptr<C> + + c : std::weak_ptr<C> - +a diff --git a/docs/test_cases/t00008.md b/docs/test_cases/t00008.md index 7dab367a..3b1716a5 100644 --- a/docs/test_cases/t00008.md +++ b/docs/test_cases/t00008.md @@ -328,8 +328,15 @@ template <> struct E::nested_template { { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -345,8 +352,15 @@ template <> struct E::nested_template { { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": true, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -403,8 +417,15 @@ template <> struct E::nested_template { { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": true, "is_virtual": false, @@ -448,8 +469,15 @@ template <> struct E::nested_template { { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": true, "is_virtual": false, @@ -481,7 +509,7 @@ template <> struct E::nested_template { } ], "metadata": { - "clang_uml_version": "0.3.5-27-g81c7ce7", + "clang_uml_version": "0.3.6-11-g75d1daa", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00008_class.svg b/docs/test_cases/t00008_class.svg index f5f4ac51..31b847f6 100644 --- a/docs/test_cases/t00008_class.svg +++ b/docs/test_cases/t00008_class.svg @@ -1,6 +1,6 @@ - + - + @@ -9,168 +9,169 @@ - - + + A T,P=T,CMP=nullptr,int N=3 + - - - + + + - - value : T + + comparator : CMP - - - + + + - - pointer : T * + + ints : std::array<int,N> - - - + + + - - reference : T & + + pointer : T * - - - + + + - - values : std::vector<P> + + reference : T & - - - + + + - - ints : std::array<int,N> + + value : T - - - + + + - - comparator : CMP + + values : std::vector<P> - - - + + Vector T + - - - + + + - - values : std::vector<T> + + values : std::vector<T> - - - - - - B - - T,C<> - + + + + + B + + T,C<> + + - - - + + + - - template_template : C<T> + + template_template : C<T> - - - - - - B - - int,Vector - - + + + + + B + + int,Vector + + - - - - - D - + + + + + D + + + D<Items...>(std::tuple<Items...> *) : void + + + add(int i) : void + - - - + + + - - ints : B<int,Vector> + + ints : B<int,Vector> - - - add(int i) : void - - D<Items...>(std::tuple<Items...> * ) : void - - - - - E - - + + + + + E + + - - - - - E::nested_template - - ET - - - - get(ET * d) : E::nested_template::DT * + + + + + E::nested_template + + ET + + + get(ET * d) : E::nested_template::DT * + - - - - - E::nested_template - - char - - - - getDecl(char * c) : E::nested_template<char>::DeclType * + + + + + E::nested_template + + char + + + getDecl(char * c) : E::nested_template<char>::DeclType * + - - - - - - ints - - - - - - - - - - + + + + + + ints + + + + + + + + + + diff --git a/docs/test_cases/t00009.md b/docs/test_cases/t00009.md index 192c23c8..04789143 100644 --- a/docs/test_cases/t00009.md +++ b/docs/test_cases/t00009.md @@ -225,7 +225,7 @@ public: } ], "metadata": { - "clang_uml_version": "0.3.5-27-g81c7ce7", + "clang_uml_version": "0.3.6-11-g75d1daa", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00009_class.svg b/docs/test_cases/t00009_class.svg index f66ad2de..f5a505df 100644 --- a/docs/test_cases/t00009_class.svg +++ b/docs/test_cases/t00009_class.svg @@ -1,6 +1,6 @@ - + @@ -9,25 +9,25 @@ - - + + A T + - - - + + + - - value : T + + value : T - - - + + A @@ -36,8 +36,8 @@ - - + + A @@ -46,8 +46,8 @@ - - + + A @@ -56,35 +56,35 @@ - - + + B + - - - + + + - - aint : A<int> + + aint : A<int> - - - + + + - - astring : A<std::string> * + + astring : A<std::string> * - - - + + + - - avector : A<std::vector<std::string>> & + + avector : A<std::vector<std::string>> & - diff --git a/docs/test_cases/t00010.md b/docs/test_cases/t00010.md index 506355ee..eadcaa76 100644 --- a/docs/test_cases/t00010.md +++ b/docs/test_cases/t00010.md @@ -235,7 +235,7 @@ public: } ], "metadata": { - "clang_uml_version": "0.3.5-27-g81c7ce7", + "clang_uml_version": "0.3.6-11-g75d1daa", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00010_class.svg b/docs/test_cases/t00010_class.svg index 0fa28584..dc53d68b 100644 --- a/docs/test_cases/t00010_class.svg +++ b/docs/test_cases/t00010_class.svg @@ -1,6 +1,6 @@ - + @@ -9,32 +9,32 @@ - - + + A T,P + - - - + + + - - first : T + + first : T - - - + + + - - second : P + + second : P - - - + + A @@ -43,25 +43,25 @@ - - + + B T + - - - + + + - - astring : A<T,std::string> + + astring : A<T,std::string> - - - + + B @@ -70,21 +70,21 @@ - - + + C + - - - + + + - - aintstring : B<int> + + aintstring : B<int> - diff --git a/docs/test_cases/t00011.md b/docs/test_cases/t00011.md index 55d17294..e5043624 100644 --- a/docs/test_cases/t00011.md +++ b/docs/test_cases/t00011.md @@ -111,8 +111,15 @@ public: { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -155,8 +162,15 @@ public: { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -176,7 +190,7 @@ public: } ], "metadata": { - "clang_uml_version": "0.3.5-27-g81c7ce7", + "clang_uml_version": "0.3.6-11-g75d1daa", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00011_class.svg b/docs/test_cases/t00011_class.svg index 2589db5c..8d12bb1d 100644 --- a/docs/test_cases/t00011_class.svg +++ b/docs/test_cases/t00011_class.svg @@ -1,6 +1,6 @@ - + @@ -9,50 +9,50 @@ - - + + D T + - - - + + + - - value : T + + value : T - - - + + A - - - foo() : void + + foo() : void + - - + + B + + foo() : void + - - - + + + - - m_a : A * + + m_a : A * - - - foo() : void diff --git a/docs/test_cases/t00012.md b/docs/test_cases/t00012.md index 16bf27f2..3fcdb830 100644 --- a/docs/test_cases/t00012.md +++ b/docs/test_cases/t00012.md @@ -518,7 +518,7 @@ class R { } ], "metadata": { - "clang_uml_version": "0.3.5-27-g81c7ce7", + "clang_uml_version": "0.3.6-11-g75d1daa", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00012_class.svg b/docs/test_cases/t00012_class.svg index 0f3aa642..a852a8eb 100644 --- a/docs/test_cases/t00012_class.svg +++ b/docs/test_cases/t00012_class.svg @@ -1,6 +1,6 @@ - + @@ -9,32 +9,32 @@ - - + + A T,Ts... + - - - + + + - - value : T + + value : T - - - + + + - - values : std::variant<Ts...> + + values : std::variant<Ts...> - - - + + B @@ -43,15 +43,15 @@ - + - + ints : std::array<int,sizeof...(Is)> - - + + C @@ -60,15 +60,15 @@ - + - + ints : std::array<T,sizeof...(Is)> - - + + A @@ -77,8 +77,8 @@ - - + + A @@ -87,8 +87,8 @@ - - + + B @@ -97,8 +97,8 @@ - - + + B @@ -107,8 +107,8 @@ - - + + C @@ -117,50 +117,50 @@ - - + + R + - - - + + + - - a1 : A<int,std::string,float> + + a1 : A<int,std::string,float> - - - + + + - - a2 : A<int,std::string,bool> + + a2 : A<int,std::string,bool> - - - + + + - - b1 : B<3,2,1> + + b1 : B<3,2,1> - - - + + + - - b2 : B<1,1,1,1> + + b2 : B<1,1,1,1> - - - + + + - - c1 : C<std::map<int,std::vector<std::vector<std::vector<std::string>>>>,3,3,3> + + c1 : C<std::map<int,std::vector<std::vector<std::vector<std::string>>>>,3,3,3> - - + Long template annotation diff --git a/docs/test_cases/t00013.md b/docs/test_cases/t00013.md index e8d4ab94..9eb71a0b 100644 --- a/docs/test_cases/t00013.md +++ b/docs/test_cases/t00013.md @@ -277,8 +277,15 @@ private: { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -521,8 +528,15 @@ private: { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -538,8 +552,15 @@ private: { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -555,8 +576,15 @@ private: { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -572,8 +600,15 @@ private: { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -589,8 +624,15 @@ private: { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -606,8 +648,15 @@ private: { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -623,8 +672,15 @@ private: { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -640,8 +696,15 @@ private: { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -657,8 +720,15 @@ private: { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -674,8 +744,15 @@ private: { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -691,8 +768,15 @@ private: { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -717,7 +801,7 @@ private: } ], "metadata": { - "clang_uml_version": "0.3.5-27-g81c7ce7", + "clang_uml_version": "0.3.6-11-g75d1daa", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00013_class.svg b/docs/test_cases/t00013_class.svg index d25a0d58..5518c0ae 100644 --- a/docs/test_cases/t00013_class.svg +++ b/docs/test_cases/t00013_class.svg @@ -1,6 +1,6 @@ - + @@ -9,25 +9,25 @@ - - + + ABCD::F T + - - - + + + - - f : T + + f : T - - - + + ABCD::F @@ -36,111 +36,111 @@ - - + + A + - - - + + + - - a : int + + a : int - - - + + B + - - - + + + - - b : int + + b : int - - - + + C + - - - + + + - - c : int + + c : int - - - + + D + + print(R * r) : void + - - - + + + - - d : int + + d : int - - - print(R * r) : void - - + + E T + - - - + + + - - e : T + + e : T - - - + + G T,Args... + - - - + + + - - g : T + + args : std::tuple<Args...> - - - + + + - - args : std::tuple<Args...> + + g : T - - - + + E @@ -149,8 +149,8 @@ - - + + G @@ -159,8 +159,8 @@ - - + + E @@ -169,50 +169,50 @@ - - + + 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 + - - - + + + - - gintstring : G<int,float,std::string> + + estring : E<std::string> - - - + + + - - estring : E<std::string> + + gintstring : G<int,float,std::string> - - - get_a(A * a) : int - - get_b(B & b) : int - - get_const_b(const B & b) : int - - get_c(C c) : int - - get_d(D && d) : int - - get_d2(D && d) : int - - get_int_e(const E<int> & e) : int - - get_int_e2(E<int> & e) : int - - get_int_f(const ABCD::F<int> & f) : int - - get_e<T>(E<T> e) : T - - get_f<T>(const F<T> & f) : T diff --git a/docs/test_cases/t00014.md b/docs/test_cases/t00014.md index 294a0db3..078bf115 100644 --- a/docs/test_cases/t00014.md +++ b/docs/test_cases/t00014.md @@ -895,7 +895,7 @@ public: } ], "metadata": { - "clang_uml_version": "0.3.5-27-g81c7ce7", + "clang_uml_version": "0.3.6-11-g75d1daa", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00014_class.svg b/docs/test_cases/t00014_class.svg index f1776804..88739a23 100644 --- a/docs/test_cases/t00014_class.svg +++ b/docs/test_cases/t00014_class.svg @@ -1,6 +1,6 @@ - + @@ -9,47 +9,47 @@ - - + + A T,P + - - - + + + - - t : T + + p : P - - - + + + - - p : P + + t : T - - - + + B + - - - + + + - - value : std::string + + value : std::string - - - + + A @@ -58,8 +58,8 @@ - - + + A @@ -68,8 +68,8 @@ - - + + A @@ -78,8 +78,8 @@ - - + + A @@ -88,8 +88,8 @@ - - + + A @@ -98,8 +98,8 @@ - - + + A @@ -108,8 +108,8 @@ - - + + A @@ -118,8 +118,8 @@ - - + + A @@ -128,8 +128,8 @@ - - + + A @@ -138,8 +138,8 @@ - - + + A @@ -148,8 +148,8 @@ - - + + A @@ -158,8 +158,8 @@ - - + + A @@ -168,8 +168,8 @@ - - + + A @@ -178,8 +178,8 @@ - - + + A @@ -188,8 +188,8 @@ - - + + A @@ -198,128 +198,128 @@ - - + + R T + - - - + + + - - bapair : PairPairBA<bool> + + abool : APtr<bool> - - - + + + - - abool : APtr<bool> + + aboolfloat : AAPtr<bool,float> - - - + + + - - aboolfloat : AAPtr<bool,float> + + afloat : ASharedPtr<float> - - - + + + - - afloat : ASharedPtr<float> + + atfloat : AAPtr<T,float> - - - + + + - - boolstring : A<bool,std::string> + + bapair : PairPairBA<bool> - - - + + + - - floatstring : AStringPtr<float> + + boolstring : A<bool,std::string> - - - + + + - - intstring : AIntString + + bs : BVector - - - + + + - - stringstring : AStringString + + bs2 : BVector2 - - - + + + - - bstringstring : BStringString + + bstringstring : BStringString - - - + + + - - atfloat : AAPtr<T,float> + + cb : SimpleCallback<ACharString> - - - + + + - - bs : BVector + + floatstring : AStringPtr<float> - - - + + + - - bs2 : BVector2 + + gcb : GenericCallback<R::AWCharString> - - - + + + - - cb : SimpleCallback<ACharString> + + intstring : AIntString - - - + + + - - gcb : GenericCallback<R::AWCharString> + + stringstring : AStringString - - - + + + - - vcb : VoidCallback + + vcb : VoidCallback - - - + + + - - vps : VectorPtr<B> + + vps : VectorPtr<B> - diff --git a/docs/test_cases/t00015.md b/docs/test_cases/t00015.md index fbd4cdab..cdcde85c 100644 --- a/docs/test_cases/t00015.md +++ b/docs/test_cases/t00015.md @@ -177,7 +177,7 @@ class B : public ns1::ns2::Anon { }; } ], "metadata": { - "clang_uml_version": "0.3.5-27-g81c7ce7", + "clang_uml_version": "0.3.6-11-g75d1daa", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00015_class.svg b/docs/test_cases/t00015_class.svg index 271d9141..64332034 100644 --- a/docs/test_cases/t00015_class.svg +++ b/docs/test_cases/t00015_class.svg @@ -1,6 +1,6 @@ - + @@ -9,40 +9,40 @@ - - + + ns1::A - - + + ns1::ns2_v0_9_0::A - - + + ns1::Anon - - + + ns3::ns1::ns2::Anon - - + + ns3::B diff --git a/docs/test_cases/t00016.md b/docs/test_cases/t00016.md index ed7a7568..88da1ea7 100644 --- a/docs/test_cases/t00016.md +++ b/docs/test_cases/t00016.md @@ -261,7 +261,7 @@ template <> struct is_numeric { } ], "metadata": { - "clang_uml_version": "0.3.5-27-g81c7ce7", + "clang_uml_version": "0.3.6-11-g75d1daa", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00016_class.svg b/docs/test_cases/t00016_class.svg index 22672f19..3a0b1971 100644 --- a/docs/test_cases/t00016_class.svg +++ b/docs/test_cases/t00016_class.svg @@ -1,6 +1,6 @@ - + @@ -9,77 +9,77 @@ - - + + is_numeric typename - - value : enum - + + + value : enum - - + + is_numeric float - - value : enum - + + + value : enum - - + + is_numeric char - - value : enum - + + + value : enum - - + + is_numeric unsigned int - - value : enum - + + + value : enum - - + + is_numeric int - - value : enum - + + + value : enum - - + + is_numeric bool - - value : enum - + + + value : enum diff --git a/docs/test_cases/t00017.md b/docs/test_cases/t00017.md index ce165d61..53bdbee4 100644 --- a/docs/test_cases/t00017.md +++ b/docs/test_cases/t00017.md @@ -468,8 +468,15 @@ private: { "access": "private", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": true, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -510,7 +517,7 @@ private: } ], "metadata": { - "clang_uml_version": "0.3.5-27-g81c7ce7", + "clang_uml_version": "0.3.6-11-g75d1daa", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00017_class.svg b/docs/test_cases/t00017_class.svg index bfffcc28..cd3d8ac0 100644 --- a/docs/test_cases/t00017_class.svg +++ b/docs/test_cases/t00017_class.svg @@ -1,6 +1,6 @@ - + @@ -9,132 +9,132 @@ - - + + A - - + + B - - + + C - - + + D - - + + E - - + + F - - + + G - - + + H - - + + I - - + + J - - + + K - - + + R + + R(int & some_int, C & cc, const E & ee, F && ff, I *& ii) : void + - - - + + + - - some_int : int + + some_int : int - - - + + + - - some_int_pointer : int * + + some_int_pointer : int * - - - + + + - - some_int_pointer_pointer : int ** + + some_int_pointer_pointer : int ** - - - + + + - - some_int_reference : int & + + some_int_reference : int & - - - R(int & some_int, C & cc, const E & ee, F && ff, I *& ii) : void diff --git a/docs/test_cases/t00018.md b/docs/test_cases/t00018.md index e48ea21c..21a27ccc 100644 --- a/docs/test_cases/t00018.md +++ b/docs/test_cases/t00018.md @@ -165,8 +165,15 @@ void widget::draw(const clanguml::t00018::widget &w) { "access": "public", "is_const": true, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -182,8 +189,15 @@ void widget::draw(const clanguml::t00018::widget &w) { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -199,8 +213,15 @@ void widget::draw(const clanguml::t00018::widget &w) { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": true, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -248,8 +269,15 @@ void widget::draw(const clanguml::t00018::widget &w) { "access": "public", "is_const": true, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -260,8 +288,15 @@ void widget::draw(const clanguml::t00018::widget &w) { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -272,8 +307,15 @@ void widget::draw(const clanguml::t00018::widget &w) { "access": "public", "is_const": true, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -284,8 +326,15 @@ void widget::draw(const clanguml::t00018::widget &w) { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": true, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -301,8 +350,15 @@ void widget::draw(const clanguml::t00018::widget &w) { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -313,8 +369,15 @@ void widget::draw(const clanguml::t00018::widget &w) { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": true, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -330,8 +393,15 @@ void widget::draw(const clanguml::t00018::widget &w) { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": true, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": true, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -347,8 +417,15 @@ void widget::draw(const clanguml::t00018::widget &w) { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": true, + "is_noexcept": false, + "is_operator": true, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -364,8 +441,15 @@ void widget::draw(const clanguml::t00018::widget &w) { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": true, "is_defaulted": false, - "is_implicit": false, + "is_deleted": true, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": true, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -390,7 +474,7 @@ void widget::draw(const clanguml::t00018::widget &w) } ], "metadata": { - "clang_uml_version": "0.3.5-27-g81c7ce7", + "clang_uml_version": "0.3.6-11-g75d1daa", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00018_class.svg b/docs/test_cases/t00018_class.svg index 9b5fe3f1..4d2acba7 100644 --- a/docs/test_cases/t00018_class.svg +++ b/docs/test_cases/t00018_class.svg @@ -1,6 +1,6 @@ - + - + @@ -9,65 +9,68 @@ - - - - - impl::widget - + + + + + impl::widget + + + widget(int n) : void + + + draw(const widget & w) const : void + + draw(const widget & w) : void + - - - + + + - - n : int + + n : int - - - draw(const widget & w) const : void - - draw(const widget & w) : void - - widget(int n) : void - - - - - widget - + + + + + 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> + + pImpl : std::unique_ptr<impl::widget> - - - draw() const : void - - draw() : void - - shown() const : bool - - widget(int ) : void - - ~widget() : void - - widget(widget && ) : void - - widget(const widget & ) : void - - operator=(widget && ) : widget & - - operator=(const widget & ) : widget & - - - - - - pImpl + + + + + + pImpl diff --git a/docs/test_cases/t00019.md b/docs/test_cases/t00019.md index cf2e07a4..d01549f7 100644 --- a/docs/test_cases/t00019.md +++ b/docs/test_cases/t00019.md @@ -171,8 +171,15 @@ class Base { { "access": "private", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": true, + "is_copy_assignment": false, "is_defaulted": true, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -183,8 +190,15 @@ class Base { { "access": "private", "is_const": false, + "is_consteval": false, + "is_constexpr": true, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": true, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": true, @@ -195,8 +209,15 @@ class Base { { "access": "private", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": true, @@ -207,8 +228,15 @@ class Base { { "access": "private", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": true, @@ -240,8 +268,15 @@ class Base { { "access": "private", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -252,8 +287,15 @@ class Base { { "access": "private", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -292,8 +334,15 @@ class Base { { "access": "private", "is_const": true, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -353,8 +402,15 @@ class Base { { "access": "private", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": true, @@ -365,8 +421,15 @@ class Base { { "access": "private", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": true, @@ -377,8 +440,15 @@ class Base { { "access": "private", "is_const": true, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -389,8 +459,15 @@ class Base { { "access": "private", "is_const": true, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -571,7 +648,7 @@ class Base { } ], "metadata": { - "clang_uml_version": "0.3.5-27-g81c7ce7", + "clang_uml_version": "0.3.6-11-g75d1daa", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00019_class.svg b/docs/test_cases/t00019_class.svg index 3d0d6bff..545b709f 100644 --- a/docs/test_cases/t00019_class.svg +++ b/docs/test_cases/t00019_class.svg @@ -1,6 +1,6 @@ - + - + @@ -9,148 +9,149 @@ - - + + Base - - - - Base() = default : void - - ~Base() = default : void - - m1() : int - - m2() : std::string + + + Base() = default : void + + ~Base() constexpr = default : void + + + m1() : int + + m2() : std::string + - - - - - Layer1 - - LowerLayer - + + + + + Layer1 + + LowerLayer m1() : int m2() : std::string + - - - - - Layer2 - - LowerLayer - + + + + + Layer2 + + LowerLayer all_calls_count() const : int + - - - - - Layer3 - - LowerLayer - + + + + + Layer3 + + LowerLayer + + + m1() : int + + m1_calls() const : int + + m2() : std::string + + m2_calls() const : int + - - - + + + - - m_m1_calls : int + + m_m1_calls : int - - - + + + - - m_m2_calls : int + + m_m2_calls : int - - - m1() : int - - m2() : std::string - - m1_calls() const : int - - m2_calls() const : int - - - - - Layer3 - - Base - + + + + + Layer3 + + Base + - - - - - Layer2 - - Layer3<Base> - + + + + + Layer2 + + Layer3<Base> + - - - - - Layer1 - - Layer2<Layer3<Base>> - + + + + + Layer1 + + Layer2<Layer3<Base>> + - - - - - A - + + + + + A + + - - - + + + - - layers : std::unique_ptr<Layer1<Layer2<Layer3<Base>>>> + + layers : std::unique_ptr<Layer1<Layer2<Layer3<Base>>>> - - - - - - - - - - - - - - - - - - - - - - - - - layers + + + + + + + + + + + + + + + + + + + + + + + + layers diff --git a/docs/test_cases/t00020.md b/docs/test_cases/t00020.md index c8a0002e..2c9b6b1e 100644 --- a/docs/test_cases/t00020.md +++ b/docs/test_cases/t00020.md @@ -117,8 +117,15 @@ public: { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": true, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": true, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": true, @@ -129,8 +136,15 @@ public: { "access": "public", "is_const": true, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": true, "is_static": false, "is_virtual": true, @@ -174,8 +188,15 @@ public: { "access": "public", "is_const": true, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": true, @@ -219,8 +240,15 @@ public: { "access": "public", "is_const": true, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": true, @@ -257,8 +285,15 @@ public: { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": true, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": true, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": true, @@ -269,8 +304,15 @@ public: { "access": "public", "is_const": true, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": true, "is_static": false, "is_virtual": true, @@ -314,8 +356,15 @@ public: { "access": "public", "is_const": true, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": true, @@ -359,8 +408,15 @@ public: { "access": "public", "is_const": true, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": true, @@ -397,8 +453,15 @@ public: { "access": "public", "is_const": true, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": true, "is_static": false, "is_virtual": true, @@ -409,8 +472,15 @@ public: { "access": "public", "is_const": true, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": true, "is_static": false, "is_virtual": true, @@ -449,8 +519,15 @@ public: { "access": "public", "is_const": true, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": true, @@ -461,8 +538,15 @@ public: { "access": "public", "is_const": true, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": true, @@ -501,8 +585,15 @@ public: { "access": "public", "is_const": true, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": true, @@ -513,8 +604,15 @@ public: { "access": "public", "is_const": true, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": true, @@ -534,7 +632,7 @@ public: } ], "metadata": { - "clang_uml_version": "0.3.5-27-g81c7ce7", + "clang_uml_version": "0.3.6-11-g75d1daa", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00020_class.svg b/docs/test_cases/t00020_class.svg index 7012b669..23536e89 100644 --- a/docs/test_cases/t00020_class.svg +++ b/docs/test_cases/t00020_class.svg @@ -1,6 +1,6 @@ - + - + @@ -9,137 +9,139 @@ - - - - - ProductA - - - - ~ProductA() = default : void - - sell(int price) const = 0 : bool + + + + + ProductA + + + ~ProductA() constexpr = default : void + + + sell(int price) const = 0 : bool + - - - - - ProductA1 - - - - sell(int price) const : bool + + + + + ProductA1 + + + sell(int price) const : bool + - - - - - ProductA2 - - - - sell(int price) const : bool + + + + + ProductA2 + + + sell(int price) const : bool + - - - - - ProductB - - - - ~ProductB() = default : void - - buy(int price) const = 0 : bool + + + + + ProductB + + + ~ProductB() constexpr = default : void + + + buy(int price) const = 0 : bool + - - - - - ProductB1 - - - - buy(int price) const : bool + + + + + ProductB1 + + + buy(int price) const : bool + - - - - - ProductB2 - - - - 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> + + + + + 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> + + + + + 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> + + + + + Factory2 + + + make_a() const : std::unique_ptr<ProductA> + + make_b() const : std::unique_ptr<ProductB> + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/test_cases/t00021.md b/docs/test_cases/t00021.md index 1284b808..9c9bfed4 100644 --- a/docs/test_cases/t00021.md +++ b/docs/test_cases/t00021.md @@ -91,8 +91,15 @@ public: { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": true, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": true, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": true, @@ -103,8 +110,15 @@ public: { "access": "public", "is_const": true, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": true, "is_static": false, "is_virtual": true, @@ -120,8 +134,15 @@ public: { "access": "public", "is_const": true, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": true, "is_static": false, "is_virtual": true, @@ -165,8 +186,15 @@ public: { "access": "public", "is_const": true, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": true, @@ -182,8 +210,15 @@ public: { "access": "public", "is_const": true, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": true, @@ -227,8 +262,15 @@ public: { "access": "public", "is_const": true, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": true, @@ -244,8 +286,15 @@ public: { "access": "public", "is_const": true, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": true, @@ -289,8 +338,15 @@ public: { "access": "public", "is_const": true, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": true, @@ -306,8 +362,15 @@ public: { "access": "public", "is_const": true, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": true, @@ -344,8 +407,15 @@ public: { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": true, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": true, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": true, @@ -356,8 +426,15 @@ public: { "access": "public", "is_const": true, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": true, "is_static": false, "is_virtual": true, @@ -401,8 +478,15 @@ public: { "access": "public", "is_const": true, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": true, @@ -446,8 +530,15 @@ public: { "access": "public", "is_const": true, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": true, @@ -472,7 +563,7 @@ public: } ], "metadata": { - "clang_uml_version": "0.3.5-27-g81c7ce7", + "clang_uml_version": "0.3.6-11-g75d1daa", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00021_class.svg b/docs/test_cases/t00021_class.svg index 092fd7b4..c0d2a21b 100644 --- a/docs/test_cases/t00021_class.svg +++ b/docs/test_cases/t00021_class.svg @@ -1,6 +1,6 @@ - + - + @@ -9,119 +9,121 @@ - - - - - Visitor - + + + + + Visitor - ~Visitor() = default : void - - visit_A(const A & item) const = 0 : void - - visit_B(const B & item) const = 0 : void + ~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 + + + + + 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 + + + + + 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 + + + + + Visitor3 + + + visit_A(const A & item) const : void + + visit_B(const B & item) const : void + - - + + Item - - - ~Item() = default : void + + ~Item() constexpr = default : void + accept(const Visitor & visitor) const = 0 : void + - - - - - A - - - - accept(const Visitor & visitor) const : void + + + + + A + + + accept(const Visitor & visitor) const : void + - - - - - B - - - - accept(const Visitor & visitor) const : void + + + + + B + + + accept(const Visitor & visitor) const : void + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/test_cases/t00022.md b/docs/test_cases/t00022.md index e110be76..51b4c71f 100644 --- a/docs/test_cases/t00022.md +++ b/docs/test_cases/t00022.md @@ -72,8 +72,15 @@ protected: { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -84,8 +91,15 @@ protected: { "access": "protected", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": true, "is_static": false, "is_virtual": true, @@ -96,8 +110,15 @@ protected: { "access": "protected", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": true, "is_static": false, "is_virtual": true, @@ -136,8 +157,15 @@ protected: { "access": "protected", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": true, @@ -148,8 +176,15 @@ protected: { "access": "protected", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": true, @@ -188,8 +223,15 @@ protected: { "access": "protected", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": true, @@ -200,8 +242,15 @@ protected: { "access": "protected", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": true, @@ -221,7 +270,7 @@ protected: } ], "metadata": { - "clang_uml_version": "0.3.5-27-g81c7ce7", + "clang_uml_version": "0.3.6-11-g75d1daa", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00022_class.svg b/docs/test_cases/t00022_class.svg index 608091b7..c0795d31 100644 --- a/docs/test_cases/t00022_class.svg +++ b/docs/test_cases/t00022_class.svg @@ -1,6 +1,6 @@ - + @@ -9,43 +9,43 @@ - - + + A - - - template_method() : void - - method1() = 0 : void - - method2() = 0 : void + + method1() = 0 : void + + method2() = 0 : void + + template_method() : void + - - + + A1 - - - method1() : void - - method2() : void + + method1() : void + + method2() : void + - - + + A2 - - - method1() : void - - method2() : void + + method1() : void + + method2() : void + diff --git a/docs/test_cases/t00023.md b/docs/test_cases/t00023.md index 471f8ad0..534be813 100644 --- a/docs/test_cases/t00023.md +++ b/docs/test_cases/t00023.md @@ -81,8 +81,15 @@ private: { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": true, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": true, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": true, @@ -93,8 +100,15 @@ private: { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": true, "is_static": false, "is_virtual": true, @@ -133,8 +147,15 @@ private: { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": true, @@ -173,8 +194,15 @@ private: { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": true, @@ -213,8 +241,15 @@ private: { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": true, @@ -257,8 +292,15 @@ private: { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": true, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -274,8 +316,15 @@ private: { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -295,7 +344,7 @@ private: } ], "metadata": { - "clang_uml_version": "0.3.5-27-g81c7ce7", + "clang_uml_version": "0.3.6-11-g75d1daa", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00023_class.svg b/docs/test_cases/t00023_class.svg index 4545f39f..d86ea4af 100644 --- a/docs/test_cases/t00023_class.svg +++ b/docs/test_cases/t00023_class.svg @@ -1,6 +1,6 @@ - + - + @@ -9,78 +9,80 @@ - - - - - Strategy - - - - ~Strategy() = default : void - - algorithm() = 0 : void + + + + + Strategy + + + ~Strategy() constexpr = default : void + + + algorithm() = 0 : void + - - - - - StrategyA - - - - algorithm() : void + + + + + StrategyA + + + algorithm() : void + - - - - - StrategyB - - - - algorithm() : void + + + + + StrategyB + + + algorithm() : void + - - - - - StrategyC - - - - algorithm() : void + + + + + StrategyC + + + algorithm() : void + - - + + Context + + Context(std::unique_ptr<Strategy> strategy) : void + + + apply() : void + - - - + + + - - m_strategy : std::unique_ptr<Strategy> + + m_strategy : std::unique_ptr<Strategy> - - - Context(std::unique_ptr<Strategy> strategy) : void - - apply() : void - - - - - - - - - - - - m_strategy + + + + + + + + + + + + m_strategy diff --git a/docs/test_cases/t00024.md b/docs/test_cases/t00024.md index 69def9fe..295c1dc1 100644 --- a/docs/test_cases/t00024.md +++ b/docs/test_cases/t00024.md @@ -80,8 +80,15 @@ private: { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": true, "is_static": false, "is_virtual": true, @@ -92,8 +99,15 @@ private: { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": true, "is_static": false, "is_virtual": true, @@ -104,8 +118,15 @@ private: { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": true, "is_static": false, "is_virtual": true, @@ -144,8 +165,15 @@ private: { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": true, @@ -156,8 +184,15 @@ private: { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": true, @@ -196,8 +231,15 @@ private: { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": true, @@ -208,8 +250,15 @@ private: { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": true, @@ -259,8 +308,15 @@ private: { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": true, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -276,8 +332,15 @@ private: { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": true, @@ -288,8 +351,15 @@ private: { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": true, @@ -309,7 +379,7 @@ private: } ], "metadata": { - "clang_uml_version": "0.3.5-27-g81c7ce7", + "clang_uml_version": "0.3.6-11-g75d1daa", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00024_class.svg b/docs/test_cases/t00024_class.svg index c06d0444..2e6d032a 100644 --- a/docs/test_cases/t00024_class.svg +++ b/docs/test_cases/t00024_class.svg @@ -1,6 +1,6 @@ - + - + @@ -9,76 +9,78 @@ - - + + Target - - - ~Target() = 0 : void + + ~Target() = 0 : void + m1() = 0 : void m2() = 0 : void + - - - - - Target1 - - - - m1() : void - - m2() : void + + + + + Target1 + + + m1() : void + + m2() : void + - - - - - Target2 - - - - m1() : void - - m2() : void + + + + + Target2 + + + m1() : void + + m2() : void + - - - - - Proxy - + + + + + Proxy + + + Proxy(std::shared_ptr<Target> target) : void + + + m1() : void + + m2() : void + - - - + + + - - m_target : std::shared_ptr<Target> + + m_target : std::shared_ptr<Target> - - - Proxy(std::shared_ptr<Target> target) : void - - m1() : void - - m2() : void - - - - - - - - - - m_target - - + + + + + + + + + + m_target + + diff --git a/docs/test_cases/t00025.md b/docs/test_cases/t00025.md index e99a7569..31e323fe 100644 --- a/docs/test_cases/t00025.md +++ b/docs/test_cases/t00025.md @@ -78,8 +78,15 @@ public: { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -90,8 +97,15 @@ public: { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -123,8 +137,15 @@ public: { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -135,8 +156,15 @@ public: { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -179,8 +207,15 @@ public: { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": true, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -196,8 +231,15 @@ public: { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -208,8 +250,15 @@ public: { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -331,7 +380,7 @@ public: } ], "metadata": { - "clang_uml_version": "0.3.5-27-g81c7ce7", + "clang_uml_version": "0.3.6-11-g75d1daa", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00025_class.svg b/docs/test_cases/t00025_class.svg index 7b62c9ae..653e60db 100644 --- a/docs/test_cases/t00025_class.svg +++ b/docs/test_cases/t00025_class.svg @@ -1,6 +1,6 @@ - + - + @@ -9,55 +9,56 @@ - - - - - Target1 - - - - m1() : void - - m2() : void + + + + + Target1 + + + m1() : void + + m2() : void + - - - - - Target2 - - - - m1() : void - - m2() : void + + + + + Target2 + + + m1() : void + + m2() : void + - - + + Proxy T + + Proxy(std::shared_ptr<T> target) : void + + + m1() : void + + m2() : void + - - - + + + - - m_target : std::shared_ptr<T> + + m_target : std::shared_ptr<T> - - - Proxy(std::shared_ptr<T> target) : void - - m1() : void - - m2() : void - - + + Proxy @@ -66,8 +67,8 @@ - - + + Proxy @@ -76,36 +77,36 @@ - - + + ProxyHolder + - - - + + + - - proxy1 : Proxy<Target1> + + proxy1 : Proxy<Target1> - - - + + + - - proxy2 : Proxy<Target2> + + proxy2 : Proxy<Target2> - - - - - - - - - + + + + + + + + diff --git a/docs/test_cases/t00026.md b/docs/test_cases/t00026.md index 07002854..45254aaa 100644 --- a/docs/test_cases/t00026.md +++ b/docs/test_cases/t00026.md @@ -110,8 +110,15 @@ struct StringMemento { { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": true, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -127,8 +134,15 @@ struct StringMemento { { "access": "public", "is_const": true, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -178,8 +192,15 @@ struct StringMemento { { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": true, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -195,8 +216,15 @@ struct StringMemento { { "access": "public", "is_const": true, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -207,8 +235,15 @@ struct StringMemento { { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -224,8 +259,15 @@ struct StringMemento { { "access": "public", "is_const": true, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -236,8 +278,15 @@ struct StringMemento { { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -292,8 +341,15 @@ struct StringMemento { { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -309,8 +365,15 @@ struct StringMemento { { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -441,7 +504,7 @@ struct StringMemento { } ], "metadata": { - "clang_uml_version": "0.3.5-27-g81c7ce7", + "clang_uml_version": "0.3.6-11-g75d1daa", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00026_class.svg b/docs/test_cases/t00026_class.svg index b23447a1..f3a4595a 100644 --- a/docs/test_cases/t00026_class.svg +++ b/docs/test_cases/t00026_class.svg @@ -1,6 +1,6 @@ - + - + @@ -9,77 +9,79 @@ - - - - - Memento - - T - + + + + + Memento + + T + + + Memento(T && v) : void + + + value() const : T + - - - + + + - - m_value : T + + m_value : T - - - Memento(T && v) : void - - value() const : T - - + + Originator 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 + + m_value : T - - - Originator(T && v) : void - - memoize_value() const : Memento<T> - - load(const Memento<T> & m) : void - - print() const : void - - set(T && v) : void - - - - - Caretaker - - T - + + + + + Caretaker + + 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>> + + m_mementos : std::unordered_map<std::string,Memento<T>> - - - state(const std::string & n) : Memento<T> & - - set_state(const std::string & s, Memento<T> && m) : void - - + + Caretaker @@ -88,8 +90,8 @@ - - + + Originator @@ -98,40 +100,40 @@ - - + + StringMemento + - - - + + + - - caretaker : Caretaker<std::string> + + caretaker : Caretaker<std::string> - - - + + + - - originator : Originator<std::string> + + originator : Originator<std::string> - - - - - - - - - m_mementos - - - - + + + + + + + + m_mementos + + + + diff --git a/docs/test_cases/t00027.md b/docs/test_cases/t00027.md index b4b60c51..0a5a9064 100644 --- a/docs/test_cases/t00027.md +++ b/docs/test_cases/t00027.md @@ -96,8 +96,15 @@ struct Window { { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": true, "is_static": false, "is_virtual": true, @@ -108,8 +115,15 @@ struct Window { { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": true, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": true, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": true, @@ -174,8 +188,15 @@ struct Window { { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": true, @@ -247,8 +268,15 @@ struct Window { { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": true, @@ -287,8 +315,15 @@ struct Window { { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": true, "is_static": false, "is_virtual": true, @@ -327,8 +362,15 @@ struct Window { { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": true, @@ -374,8 +416,15 @@ struct Window { { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": true, @@ -583,7 +632,7 @@ struct Window { } ], "metadata": { - "clang_uml_version": "0.3.5-27-g81c7ce7", + "clang_uml_version": "0.3.6-11-g75d1daa", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00027_class.svg b/docs/test_cases/t00027_class.svg index 558a197c..4ce38dd7 100644 --- a/docs/test_cases/t00027_class.svg +++ b/docs/test_cases/t00027_class.svg @@ -1,6 +1,6 @@ - + - + @@ -9,199 +9,200 @@ - - - - - Shape - - - - display() = 0 : void + + + + + Shape + + + ~Shape() constexpr = default : void + - ~Shape() = default : void + display() = 0 : void + - - - - - Line - - + + + + + Line + + - - - - - Line - - T<>... - + + + + + Line + + T<>... display() : void + - - - - - Text - - + + + + + Text + + - - - - - Text - - T<>... - - - - display() : void + + + + + Text + + T<>... + + + display() : void + - - - - - ShapeDecorator - - - - display() = 0 : void + + + + + ShapeDecorator + + + display() = 0 : void + - - - - - Color - - T - - - - display() : void + + + + + Color + + T + + + display() : void + - - - - - Weight - - T - - - - display() : void + + + + + Weight + + T + + + display() : void + - - - - - Line - - Color,Weight - - + + + + + Line + + Color,Weight + + - - - - - Line - - Color - - + + + + + Line + + Color + + - - - - - Text - - Color,Weight - - + + + + + Text + + Color,Weight + + - - - - - Text - - Color - - + + + + + Text + + Color + + - - - - - Window - + + + + + Window + + - - - + + + - - border : Line<Color,Weight> + + border : Line<Color,Weight> - - - + + + - - divider : Line<Color> + + description : Text<Color> - - - + + + - - title : Text<Color,Weight> + + divider : Line<Color> - - - + + + - - description : Text<Color> + + title : Text<Color,Weight> - - - - - - - - - - - - - - - - - - - - - border - - - - divider - - - - title - - - - description + + + + + + + + + + + + + + + + + + + + border + + + + divider + + + + title + + + + description diff --git a/docs/test_cases/t00028.md b/docs/test_cases/t00028.md index aae1a182..6f5bd9b3 100644 --- a/docs/test_cases/t00028.md +++ b/docs/test_cases/t00028.md @@ -388,8 +388,15 @@ class R { { "access": "private", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": true, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -414,7 +421,7 @@ class R { } ], "metadata": { - "clang_uml_version": "0.3.5-27-g81c7ce7", + "clang_uml_version": "0.3.6-11-g75d1daa", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00028_class.svg b/docs/test_cases/t00028_class.svg index dff9e7c7..653195ff 100644 --- a/docs/test_cases/t00028_class.svg +++ b/docs/test_cases/t00028_class.svg @@ -1,6 +1,6 @@ - + @@ -9,82 +9,82 @@ - - + + A - + A class note. - - + + B - + B class note. - - + + C - + C class note. - - + + D - + D class note. - - + + E T + - - - + + + - - param : T + + param : T - - + E template class note. - - + + G - - + + F @@ -94,11 +94,11 @@ three - + F enum note. - - + + E @@ -107,65 +107,65 @@ - - + + R + + R(C & c) : void + - - - + + + - - aaa : A + + aaa : A - - - + + + - - bbb : B * + + bbb : B * - - - + + + - - ccc : C & + + ccc : C & - - - + + + - - ddd : std::vector<std::shared_ptr<D>> + + ddd : std::vector<std::shared_ptr<D>> - - - + + + - - eee : E<int> + + eee : E<int> - - - + + + - - ggg : G ** + + ggg : G ** - - - R(C & c) : void - + R class note. - + R contains an instance of A. - + Reference to C. diff --git a/docs/test_cases/t00029.md b/docs/test_cases/t00029.md index 3f8ed961..7c6b3c57 100644 --- a/docs/test_cases/t00029.md +++ b/docs/test_cases/t00029.md @@ -286,7 +286,7 @@ struct R { } ], "metadata": { - "clang_uml_version": "0.3.5-27-g81c7ce7", + "clang_uml_version": "0.3.6-11-g75d1daa", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00029_class.svg b/docs/test_cases/t00029_class.svg index 1461d94c..6f7f0f5d 100644 --- a/docs/test_cases/t00029_class.svg +++ b/docs/test_cases/t00029_class.svg @@ -1,6 +1,6 @@ - + @@ -9,33 +9,33 @@ - - + + A - - + + C T + - - - + + + - - param : T + + param : T - - - + + E @@ -45,67 +45,67 @@ three - - + + G1 - - + + G2 - - + + G3 - - + + G4 - - + + R + - - - + + + - - g1 : G1 + + g1 : G1 - - - + + + - - g3 : G3 & + + g3 : G3 & - - - + + + - - g4 : std::shared_ptr<G4> + + g4 : std::shared_ptr<G4> - diff --git a/docs/test_cases/t00030.md b/docs/test_cases/t00030.md index 17ad619d..0ed5b7bf 100644 --- a/docs/test_cases/t00030.md +++ b/docs/test_cases/t00030.md @@ -255,7 +255,7 @@ struct R { } ], "metadata": { - "clang_uml_version": "0.3.5-27-g81c7ce7", + "clang_uml_version": "0.3.6-11-g75d1daa", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00030_class.svg b/docs/test_cases/t00030_class.svg index a43abc1c..5b46bc50 100644 --- a/docs/test_cases/t00030_class.svg +++ b/docs/test_cases/t00030_class.svg @@ -1,6 +1,6 @@ - + @@ -9,89 +9,89 @@ - - + + A - - + + B - - + + C - - + + D - - + + E - - + + R + - - - + + + - - aaa : A + + aaa : A - - - + + + - - bbb : std::vector<B> + + bbb : std::vector<B> - - - + + + - - ccc : std::vector<C> + + ccc : std::vector<C> - - - + + + - - ddd : D + + ddd : D - - - + + + - - eee : E * + + eee : E * - diff --git a/docs/test_cases/t00031.md b/docs/test_cases/t00031.md index ff0699a6..8a22593d 100644 --- a/docs/test_cases/t00031.md +++ b/docs/test_cases/t00031.md @@ -276,7 +276,7 @@ struct R { } ], "metadata": { - "clang_uml_version": "0.3.5-27-g81c7ce7", + "clang_uml_version": "0.3.6-11-g75d1daa", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00031_class.svg b/docs/test_cases/t00031_class.svg index ae7c7c46..16a7abd8 100644 --- a/docs/test_cases/t00031_class.svg +++ b/docs/test_cases/t00031_class.svg @@ -1,33 +1,33 @@ - + - + - + - - - + + + A - - + + B @@ -37,34 +37,34 @@ three - - + + C T - + + - - - + + + - - ttt : T + + ttt : T - - - + + D - - + + C @@ -73,42 +73,42 @@ - - + + R + - - - + + + - - aaa : A * + + aaa : A * - - - + + + - - bbb : std::vector<B> + + bbb : std::vector<B> - - - + + + - - ccc : C<int> + + ccc : C<int> - - - + + + - - ddd : D * + + ddd : D * - diff --git a/docs/test_cases/t00032.md b/docs/test_cases/t00032.md index d6f83ad7..0185e32f 100644 --- a/docs/test_cases/t00032.md +++ b/docs/test_cases/t00032.md @@ -117,8 +117,15 @@ struct R { { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": true, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -150,8 +157,15 @@ struct R { { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": true, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -183,8 +197,15 @@ struct R { { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": true, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -368,7 +389,7 @@ struct R { } ], "metadata": { - "clang_uml_version": "0.3.5-27-g81c7ce7", + "clang_uml_version": "0.3.6-11-g75d1daa", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00032_class.svg b/docs/test_cases/t00032_class.svg index e71b3100..add56020 100644 --- a/docs/test_cases/t00032_class.svg +++ b/docs/test_cases/t00032_class.svg @@ -1,6 +1,6 @@ - + @@ -9,71 +9,71 @@ - - + + Base - - + + TBase - - + + A - - - operator()() : void + + operator()() : void + - - + + B - - - operator()() : void + + operator()() : void + - - + + C - - - operator()() : void + + operator()() : void + - - + + Overload T,L,Ts... + - - - + + + - - counter : L + + counter : L - - - + + Overload @@ -82,21 +82,21 @@ - - + + R + - - - + + + - - overload : Overload<TBase,int,A,B,C> + + overload : Overload<TBase,int,A,B,C> - diff --git a/docs/test_cases/t00033.md b/docs/test_cases/t00033.md index 8de890f2..a9763505 100644 --- a/docs/test_cases/t00033.md +++ b/docs/test_cases/t00033.md @@ -349,7 +349,7 @@ struct R { } ], "metadata": { - "clang_uml_version": "0.3.5-27-g81c7ce7", + "clang_uml_version": "0.3.6-11-g75d1daa", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00033_class.svg b/docs/test_cases/t00033_class.svg index dd03db05..51105982 100644 --- a/docs/test_cases/t00033_class.svg +++ b/docs/test_cases/t00033_class.svg @@ -1,6 +1,6 @@ - + @@ -9,74 +9,74 @@ - - + + A T + - - - + + + - - aaa : T + + aaa : T - - - + + B T + - - - + + + - - bbb : T + + bbb : T - - - + + C T + - - - + + + - - ccc : T + + ccc : T - - - + + D + - - - + + + - - ddd : int + + ddd : int - - - + + C @@ -85,8 +85,8 @@ - - + + B @@ -95,8 +95,8 @@ - - + + A @@ -105,21 +105,21 @@ - - + + R + - - - + + + - - abc : A<B<std::unique_ptr<C<D>>>> + + abc : A<B<std::unique_ptr<C<D>>>> - diff --git a/docs/test_cases/t00034.md b/docs/test_cases/t00034.md index a4d06718..a9e4e350 100644 --- a/docs/test_cases/t00034.md +++ b/docs/test_cases/t00034.md @@ -95,8 +95,15 @@ struct R { { "access": "public", "is_const": true, + "is_consteval": false, + "is_constexpr": true, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": true, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -112,8 +119,15 @@ struct R { { "access": "public", "is_const": true, + "is_consteval": false, + "is_constexpr": true, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": true, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -307,7 +321,7 @@ struct R { } ], "metadata": { - "clang_uml_version": "0.3.5-27-g81c7ce7", + "clang_uml_version": "0.3.6-11-g75d1daa", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00034_class.svg b/docs/test_cases/t00034_class.svg index b0daa7e6..0df0e7a7 100644 --- a/docs/test_cases/t00034_class.svg +++ b/docs/test_cases/t00034_class.svg @@ -1,6 +1,6 @@ - + - + @@ -9,101 +9,101 @@ - - - - - Void - - - - operator==(const Void & ) const : bool - - operator!=(const Void & ) const : bool + + + + + Void + + + operator!=(const Void &) constexpr const : bool + + operator==(const Void &) constexpr const : bool + - - - - - lift_void - - T - - + + + + + lift_void + + T + + - - - - - lift_void - - void - - + + + + + lift_void + + void + + - - - - - drop_void - - T - - + + + + + drop_void + + T + + - - - - - drop_void - - Void - - + + + + + drop_void + + Void + + - - - - - A - - + + + + + A + + - - - - - R - + + + + + R + + - - - + + + - - la : lift_void_t<A> * + + la : lift_void_t<A> * - - - + + + - - lv : lift_void_t<void> * + + lv : lift_void_t<void> * - - - - - - - - - - - la - - - - la + + + + + + + + + + la + + + + la diff --git a/docs/test_cases/t00035.md b/docs/test_cases/t00035.md index 7372e9d9..aae8371d 100644 --- a/docs/test_cases/t00035.md +++ b/docs/test_cases/t00035.md @@ -150,7 +150,7 @@ struct Right { }; } ], "metadata": { - "clang_uml_version": "0.3.5-27-g81c7ce7", + "clang_uml_version": "0.3.6-11-g75d1daa", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00035_class.svg b/docs/test_cases/t00035_class.svg index 2944c98a..740e2255 100644 --- a/docs/test_cases/t00035_class.svg +++ b/docs/test_cases/t00035_class.svg @@ -1,6 +1,6 @@ - + @@ -9,40 +9,40 @@ - - + + Top - - + + Left - - + + Center - - + + Bottom - - + + Right diff --git a/docs/test_cases/t00036.md b/docs/test_cases/t00036.md index fee3aa8b..7bf533f2 100644 --- a/docs/test_cases/t00036.md +++ b/docs/test_cases/t00036.md @@ -262,7 +262,7 @@ struct DImpl : public ns2::ns22::D { }; } ], "metadata": { - "clang_uml_version": "0.3.5-27-g81c7ce7", + "clang_uml_version": "0.3.6-11-g75d1daa", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00036_class.svg b/docs/test_cases/t00036_class.svg index d1be20a5..39e9cca2 100644 --- a/docs/test_cases/t00036_class.svg +++ b/docs/test_cases/t00036_class.svg @@ -1,6 +1,6 @@ - + @@ -9,23 +9,23 @@ - + ns1 - + ns11 - + ns111 - + ns2 - + ns22 - - + + E @@ -34,25 +34,25 @@ yellow - - + + A T + - - - + + + - - a : T + + a : T - - - + + A @@ -61,23 +61,23 @@ - - + + B + - - - + + + - - a_int : A<int> + + a_int : A<int> - - - + + C diff --git a/docs/test_cases/t00037.md b/docs/test_cases/t00037.md index b8fed24c..c6aa9613 100644 --- a/docs/test_cases/t00037.md +++ b/docs/test_cases/t00037.md @@ -228,8 +228,15 @@ struct A { { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": true, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -249,7 +256,7 @@ struct A { } ], "metadata": { - "clang_uml_version": "0.3.5-27-g81c7ce7", + "clang_uml_version": "0.3.6-11-g75d1daa", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00037_class.svg b/docs/test_cases/t00037_class.svg index 63c8f380..0833994b 100644 --- a/docs/test_cases/t00037_class.svg +++ b/docs/test_cases/t00037_class.svg @@ -1,6 +1,6 @@ - + @@ -9,103 +9,103 @@ - - + + ST - + - + dimensions : ST::(anonymous_662) - + - + units : ST::(anonymous_792) - - + + ST::(dimensions) + - - - + + + - - t : double + + t : double - - - + + + - - x : double + + x : double - - - + + + - - y : double + + y : double - - - + + + - - z : double + + z : double - - - + + ST::(units) + - - - + + + - - c : double + + c : double - - - + + + - - h : double + + h : double - - - + + A + + A() : void + - - - + + + - - st : ST + + st : ST - - - A() : void diff --git a/docs/test_cases/t00038.md b/docs/test_cases/t00038.md index 9577e63a..daf1fe25 100644 --- a/docs/test_cases/t00038.md +++ b/docs/test_cases/t00038.md @@ -468,7 +468,7 @@ struct map - + @@ -9,8 +9,8 @@ - - + + thirdparty::ns1::color_t @@ -20,16 +20,16 @@ blue - - + + thirdparty::ns1::E - - + + property_t @@ -39,47 +39,47 @@ property_c - - + + A - - + + B - - + + C - - + + key_t + - - - + + + - - key : std::string + + key : std::string - - - + + map @@ -88,8 +88,8 @@ - - + + map @@ -98,8 +98,8 @@ - - + + map @@ -108,8 +108,8 @@ - - + + map @@ -118,8 +118,8 @@ - - + + map diff --git a/docs/test_cases/t00039.md b/docs/test_cases/t00039.md index 4129e265..7633c52c 100644 --- a/docs/test_cases/t00039.md +++ b/docs/test_cases/t00039.md @@ -570,7 +570,7 @@ template struct FFF : public FF { } ], "metadata": { - "clang_uml_version": "0.3.5-27-g81c7ce7", + "clang_uml_version": "0.3.6-11-g75d1daa", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00039_class.svg b/docs/test_cases/t00039_class.svg index b926854b..c3e11b3a 100644 --- a/docs/test_cases/t00039_class.svg +++ b/docs/test_cases/t00039_class.svg @@ -1,6 +1,6 @@ - + @@ -9,161 +9,161 @@ - - + + C - - + + D - - + + E - - + + CD - - + + DE - - + + CDE - - + + A - - + + AA - - + + AAA + - - - + + + - - b : B * + + b : B * - - - + + ns2::AAAA - - + + ns3::F T + - - - + + + - - t : T * + + t : T * - - - + + ns3::FF T,M + - - - + + + - - m : M * + + m : M * - - - + + ns3::FE T,M + - - - + + + - - m : M * + + m : M * - - - + + ns3::FFF T,M,N + - - - + + + - - n : N * + + n : N * - diff --git a/docs/test_cases/t00040.md b/docs/test_cases/t00040.md index 4450a8a2..0bd4d71c 100644 --- a/docs/test_cases/t00040.md +++ b/docs/test_cases/t00040.md @@ -105,26 +105,21 @@ struct R { { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, "name": "get_a", "parameters": [], "type": "int" - }, - { - "access": "private", - "is_const": false, - "is_defaulted": false, - "is_implicit": false, - "is_pure_virtual": false, - "is_static": false, - "is_virtual": false, - "name": "foo", - "parameters": [], - "type": "void" } ], "name": "A", @@ -205,8 +200,15 @@ struct R { { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -238,8 +240,15 @@ struct R { { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -264,7 +273,7 @@ struct R { } ], "metadata": { - "clang_uml_version": "0.3.5-27-g81c7ce7", + "clang_uml_version": "0.3.6-11-g75d1daa", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00040_class.svg b/docs/test_cases/t00040_class.svg index db97da45..fe3fd4a4 100644 --- a/docs/test_cases/t00040_class.svg +++ b/docs/test_cases/t00040_class.svg @@ -1,6 +1,6 @@ - + @@ -9,57 +9,57 @@ - - + + A + + get_a() : int + - - - + + + - - ii_ : int + + ii_ : int - - - get_a() : int - - + + AA - - + + AAA + + get_aaa() : int + - - - + + + - - b : B * + + b : B * - - - get_aaa() : int - - + + R - - - foo(A * a) : void + + foo(A * a) : void + diff --git a/docs/test_cases/t00041.md b/docs/test_cases/t00041.md index 3fd62237..4d596680 100644 --- a/docs/test_cases/t00041.md +++ b/docs/test_cases/t00041.md @@ -224,8 +224,15 @@ struct NM : public N { }; { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -351,7 +358,7 @@ struct NM : public N { }; } ], "metadata": { - "clang_uml_version": "0.3.5-27-g81c7ce7", + "clang_uml_version": "0.3.6-11-g75d1daa", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00041_class.svg b/docs/test_cases/t00041_class.svg index 1a523143..f04a5b39 100644 --- a/docs/test_cases/t00041_class.svg +++ b/docs/test_cases/t00041_class.svg @@ -1,6 +1,6 @@ - + @@ -9,102 +9,102 @@ - - + + R - - + + D + - - - + + + - - rr : RR * + + rr : RR * - - - + + E - - + + F - - + + RR + + foo(H * h) : void + - - - + + + - - e : E * + + e : E * - - - + + + - - f : F * + + f : F * - - - + + + - - g : detail::G * + + g : detail::G * - - - foo(H * h) : void - - + + RRR - - + + ns1::N - - + + ns1::NN - - + + ns1::NM diff --git a/docs/test_cases/t00042.md b/docs/test_cases/t00042.md index bae57d5d..2a719134 100644 --- a/docs/test_cases/t00042.md +++ b/docs/test_cases/t00042.md @@ -285,7 +285,7 @@ struct R { } ], "metadata": { - "clang_uml_version": "0.3.5-27-g81c7ce7", + "clang_uml_version": "0.3.6-11-g75d1daa", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00042_class.svg b/docs/test_cases/t00042_class.svg index 9c6d25bb..f62601f0 100644 --- a/docs/test_cases/t00042_class.svg +++ b/docs/test_cases/t00042_class.svg @@ -1,6 +1,6 @@ - + @@ -9,66 +9,66 @@ - - + + A T + - - - + + + - - a : T + + a : T - - - + + A void + - - - + + + - - a : void * + + a : void * - - - + + B T,K + - - - + + + - - b : T + + b : T - - - + + + - - bb : K + + bb : K - - - + + A @@ -77,8 +77,8 @@ - - + + A @@ -87,8 +87,8 @@ - - + + B diff --git a/docs/test_cases/t00043.md b/docs/test_cases/t00043.md index 24bfe153..fdd65246 100644 --- a/docs/test_cases/t00043.md +++ b/docs/test_cases/t00043.md @@ -122,8 +122,15 @@ struct J { { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -160,8 +167,15 @@ struct J { { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -198,8 +212,15 @@ struct J { { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -236,8 +257,15 @@ struct J { { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -253,8 +281,15 @@ struct J { { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -291,8 +326,15 @@ struct J { { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -376,8 +418,15 @@ struct J { { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -393,8 +442,15 @@ struct J { { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -431,8 +487,15 @@ struct J { { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -469,8 +532,15 @@ struct J { { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -499,7 +569,7 @@ struct J { } ], "metadata": { - "clang_uml_version": "0.3.5-27-g81c7ce7", + "clang_uml_version": "0.3.6-11-g75d1daa", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00043_class.svg b/docs/test_cases/t00043_class.svg index d9352208..da86b721 100644 --- a/docs/test_cases/t00043_class.svg +++ b/docs/test_cases/t00043_class.svg @@ -1,6 +1,6 @@ - + @@ -9,119 +9,119 @@ - + dependants - + dependencies - - + + A - - + + B - - - b(dependants::A * a) : void + + b(dependants::A * a) : void + - - + + BB - - - bb(dependants::A * a) : void + + bb(dependants::A * a) : void + - - + + C - - - c(dependants::B * b) : void + + c(dependants::B * b) : void + - - + + D - - - d(dependants::C * c) : void - - dd(dependants::BB * bb) : void + + d(dependants::C * c) : void + + dd(dependants::BB * bb) : void + - - + + E - - - e(dependants::D * d) : void + + e(dependants::D * d) : void + - - + + G - - + + GG - - + + H - - - h(dependencies::G * g) : void - - hh(dependencies::GG * gg) : void + + h(dependencies::G * g) : void + + hh(dependencies::GG * gg) : void + - - + + I - - - i(dependencies::H * h) : void + + i(dependencies::H * h) : void + - - + + J - - - i(dependencies::I * i) : void + + i(dependencies::I * i) : void + diff --git a/docs/test_cases/t00044.md b/docs/test_cases/t00044.md index f1968f76..b7773bbb 100644 --- a/docs/test_cases/t00044.md +++ b/docs/test_cases/t00044.md @@ -134,8 +134,15 @@ struct R { { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": true, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -151,8 +158,15 @@ struct R { { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -392,7 +406,7 @@ struct R { } ], "metadata": { - "clang_uml_version": "0.3.5-27-g81c7ce7", + "clang_uml_version": "0.3.6-11-g75d1daa", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00044_class.svg b/docs/test_cases/t00044_class.svg index 3fa40f85..638fae04 100644 --- a/docs/test_cases/t00044_class.svg +++ b/docs/test_cases/t00044_class.svg @@ -1,6 +1,6 @@ - + - + @@ -9,49 +9,50 @@ - - - - - signal_handler - - Ret(Args...),A - + + + + + signal_handler + + Ret(Args...),A + - - + + sink signal_handler<Ret(Args...),A> + + sink(signal_t & sh) : void + + + get_signal<CastTo>() : CastTo * + - - - + + + - - signal : signal_t * + + signal : signal_t * - - - sink(signal_t & sh) : void - - get_signal<CastTo>() : CastTo * - - - - - signal_handler - - void(int),bool - - + + + + + signal_handler + + void(int),bool + + - - + + sink @@ -60,57 +61,57 @@ - - + + R - + - + sink1 : sink<signal_handler<void (int),bool>> - - - - - signal_handler - - T,A - + + + + + signal_handler + + T,A + - - - - - sink - - T - + + + + + sink + + T + - - - - - - - - signal - - - - - - - - + + + + + + + + signal + + + + + + + + diff --git a/docs/test_cases/t00045.md b/docs/test_cases/t00045.md index 15ee56aa..2a9521a9 100644 --- a/docs/test_cases/t00045.md +++ b/docs/test_cases/t00045.md @@ -388,8 +388,15 @@ public: { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -414,7 +421,7 @@ public: } ], "metadata": { - "clang_uml_version": "0.3.5-27-g81c7ce7", + "clang_uml_version": "0.3.6-11-g75d1daa", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00045_class.svg b/docs/test_cases/t00045_class.svg index b323eac7..35bbef3e 100644 --- a/docs/test_cases/t00045_class.svg +++ b/docs/test_cases/t00045_class.svg @@ -1,6 +1,6 @@ - + @@ -9,141 +9,141 @@ - - + + A - - + + AA - - + + AAA - - + + AAAA T + - - - + + + - - t : T + + t : T - - - + + ns1::A - - + + ns1::ns2::A - - + + ns1::ns2::B - - + + ns1::ns2::C - - + + ns1::ns2::D - - + + ns1::ns2::E - - + + ns1::ns2::AAA - - + + ns1::ns2::R + + foo(AA & aa) : void + - - - + + + - - a : ns1::ns2::A * + + a : ns1::ns2::A * - - - + + + - - ns1_a : ns1::A * + + ns1_a : ns1::A * - - - + + + - - ns1_ns2_a : ns1::ns2::A * + + ns1_ns2_a : ns1::ns2::A * - - - + + + - - root_a : ::A * + + root_a : ::A * - - - foo(AA & aa) : void diff --git a/docs/test_cases/t00046.md b/docs/test_cases/t00046.md index f58357d6..16e1c142 100644 --- a/docs/test_cases/t00046.md +++ b/docs/test_cases/t00046.md @@ -319,8 +319,15 @@ public: { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -353,7 +360,7 @@ public: } ], "metadata": { - "clang_uml_version": "0.3.5-27-g81c7ce7", + "clang_uml_version": "0.3.6-11-g75d1daa", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00046_class.svg b/docs/test_cases/t00046_class.svg index 39ab2542..ba1bbef4 100644 --- a/docs/test_cases/t00046_class.svg +++ b/docs/test_cases/t00046_class.svg @@ -1,6 +1,6 @@ - + @@ -9,115 +9,115 @@ - + ns1 - + ns2 - - + + A - - + + A - - + + B - - + + C - - + + D - - + + E - - + + R + + foo(AA & aa) : void + - - - + + + - - a : ns1::ns2::A * + + a : ns1::ns2::A * - - - + + + - - ns1_a : ns1::A * + + i : std::vector<std::uint8_t> - - - + + + - - ns1_ns2_a : ns1::ns2::A * + + ns1_a : ns1::A * - - - + + + - - root_a : ::A * + + ns1_ns2_a : ns1::ns2::A * - - - + + + - - i : std::vector<std::uint8_t> + + root_a : ::A * - - - foo(AA & aa) : void - - + + A - - + + AA diff --git a/docs/test_cases/t00047.md b/docs/test_cases/t00047.md index 559d1d14..0cf4a5c3 100644 --- a/docs/test_cases/t00047.md +++ b/docs/test_cases/t00047.md @@ -184,7 +184,7 @@ using conditional = typename conditional_t::type; } ], "metadata": { - "clang_uml_version": "0.3.5-27-g81c7ce7", + "clang_uml_version": "0.3.6-11-g75d1daa", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00047_class.svg b/docs/test_cases/t00047_class.svg index cd92735c..250986d9 100644 --- a/docs/test_cases/t00047_class.svg +++ b/docs/test_cases/t00047_class.svg @@ -1,6 +1,6 @@ - + @@ -9,8 +9,8 @@ - - + + conditional_t @@ -19,8 +19,8 @@ - - + + conditional_t @@ -29,8 +29,8 @@ - - + + conditional_t @@ -39,8 +39,8 @@ - - + + conditional_t diff --git a/docs/test_cases/t00048.md b/docs/test_cases/t00048.md index a4292f77..0347fcf9 100644 --- a/docs/test_cases/t00048.md +++ b/docs/test_cases/t00048.md @@ -152,8 +152,15 @@ template struct BaseTemplate { { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": true, "is_static": false, "is_virtual": true, @@ -196,8 +203,15 @@ template struct BaseTemplate { { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": true, "is_static": false, "is_virtual": true, @@ -254,8 +268,15 @@ template struct BaseTemplate { { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": true, @@ -305,8 +326,15 @@ template struct BaseTemplate { { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -363,8 +391,15 @@ template struct BaseTemplate { { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": true, @@ -414,8 +449,15 @@ template struct BaseTemplate { { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -442,7 +484,7 @@ template struct BaseTemplate { } ], "metadata": { - "clang_uml_version": "0.3.5-27-g81c7ce7", + "clang_uml_version": "0.3.6-11-g75d1daa", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00048_class.svg b/docs/test_cases/t00048_class.svg index c22196b7..e273ed57 100644 --- a/docs/test_cases/t00048_class.svg +++ b/docs/test_cases/t00048_class.svg @@ -1,6 +1,6 @@ - + @@ -9,114 +9,114 @@ - - + + Base + + foo() = 0 : void + - - - + + + - - base : int + + base : int - - - foo() = 0 : void - - + + BaseTemplate T + + foo() = 0 : void + - - - + + + - - base : T + + base : T - - - foo() = 0 : void - - + + B + + foo() : void + - - - + + + - - b : int + + b : int - - - foo() : void - - + + BTemplate T + + foo() : void + - - - + + + - - b : T + + b : T - - - foo() : void - - + + A + + foo() : void + - - - + + + - - a : int + + a : int - - - foo() : void - - + + ATemplate T + + foo() : void + - - - + + + - - a : T + + a : T - - - foo() : void diff --git a/docs/test_cases/t00049.md b/docs/test_cases/t00049.md index 384acfbe..aefd4148 100644 --- a/docs/test_cases/t00049.md +++ b/docs/test_cases/t00049.md @@ -78,8 +78,15 @@ struct R { { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -230,8 +237,15 @@ struct R { { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -242,8 +256,15 @@ struct R { { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -268,7 +289,7 @@ struct R { } ], "metadata": { - "clang_uml_version": "0.3.5-27-g81c7ce7", + "clang_uml_version": "0.3.6-11-g75d1daa", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00049_class.svg b/docs/test_cases/t00049_class.svg index ea83bd03..37f291e6 100644 --- a/docs/test_cases/t00049_class.svg +++ b/docs/test_cases/t00049_class.svg @@ -1,6 +1,6 @@ - + @@ -9,27 +9,27 @@ - - + + A T + + get_a() : T & + - - - + + + - - a : T + + a : T - - - get_a() : T & - - + + A @@ -38,8 +38,8 @@ - - + + A @@ -48,8 +48,8 @@ - - + + A @@ -58,39 +58,39 @@ - - + + R + + get_int_map() : A<intmap> + + set_int_map(A<intmap> && int_map) : void + - - - + + + - - a_string : A<thestring> + + a_int_map : A<intmap> - - - + + + - - a_vector_string : A<string_vector> + + a_string : A<thestring> - - - + + + - - a_int_map : A<intmap> + + a_vector_string : A<string_vector> - - - get_int_map() : A<intmap> - - set_int_map(A<intmap> && int_map) : void diff --git a/docs/test_cases/t00050.md b/docs/test_cases/t00050.md index 16bafbfc..c80ba98f 100644 --- a/docs/test_cases/t00050.md +++ b/docs/test_cases/t00050.md @@ -484,7 +484,7 @@ class NoComment { }; } ], "metadata": { - "clang_uml_version": "0.3.5-27-g81c7ce7", + "clang_uml_version": "0.3.6-11-g75d1daa", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00050_class.svg b/docs/test_cases/t00050_class.svg index 4a281769..fb19dd43 100644 --- a/docs/test_cases/t00050_class.svg +++ b/docs/test_cases/t00050_class.svg @@ -1,6 +1,6 @@ - + @@ -9,40 +9,40 @@ - - + + A - - + + B - - + + C - - + + utils::D - - + + E @@ -52,53 +52,53 @@ E3 - - + + F T,V,int N + - - - + + + - - t : T[N] + + t : T[N] - - - + + + - - v : V + + v : V - - - + + G - - + + NoComment - + Lorem ipsum dolor sit - + Lorem ipsum dolor sit - + Lorem ipsum dolor sit amet consectetur adipiscing elit, urna consequat felis vehicula class ultricies mollis dictumst, aenean non a in donec nulla. @@ -125,50 +125,50 @@ imperdiet praesent magnis ridiculus congue gravida curabitur dictum sagittis, enim et magna sit inceptos sodales parturient pharetra mollis, aenean vel nostra tellus commodo pretium sapien sociosqu. - + This is a short description of class G. - + This is an intermediate description of class G. - + This is a long description of class G. - + Lorem ipsum - + TODO 1. Write meaningful comment - + TODO 2. Write tests - + TODO 3. Implement - + Long comment example - + TODO Implement... - + Simple array wrapper. - + Template parameters diff --git a/docs/test_cases/t00051.md b/docs/test_cases/t00051.md index 30f4cedf..ef899907 100644 --- a/docs/test_cases/t00051.md +++ b/docs/test_cases/t00051.md @@ -131,8 +131,15 @@ A::custom_thread2 A::start_thread2() { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": true, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -152,8 +159,15 @@ A::custom_thread2 A::start_thread2() { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -164,8 +178,15 @@ A::custom_thread2 A::start_thread2() { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -239,8 +260,15 @@ A::custom_thread2 A::start_thread2() { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": true, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -260,8 +288,15 @@ A::custom_thread2 A::start_thread2() { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -272,8 +307,15 @@ A::custom_thread2 A::start_thread2() { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -318,8 +360,15 @@ A::custom_thread2 A::start_thread2() { "access": "private", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": true, "is_virtual": false, @@ -330,8 +379,15 @@ A::custom_thread2 A::start_thread2() { "access": "private", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": true, "is_virtual": false, @@ -342,8 +398,15 @@ A::custom_thread2 A::start_thread2() { "access": "private", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -354,8 +417,15 @@ A::custom_thread2 A::start_thread2() { "access": "private", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -394,8 +464,15 @@ A::custom_thread2 A::start_thread2() { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -443,8 +520,15 @@ A::custom_thread2 A::start_thread2() { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -469,7 +553,7 @@ A::custom_thread2 A::start_thread2() } ], "metadata": { - "clang_uml_version": "0.3.5-27-g81c7ce7", + "clang_uml_version": "0.3.6-11-g75d1daa", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00051_class.svg b/docs/test_cases/t00051_class.svg index ad8c843a..b27fc7a4 100644 --- a/docs/test_cases/t00051_class.svg +++ b/docs/test_cases/t00051_class.svg @@ -1,6 +1,6 @@ - + - + @@ -9,111 +9,113 @@ - - - - - B - - F,FF=F - + + + + + B + + F,FF=F + + + B(F && f, FF && ff) : void + + + f() : void + + ff() : void + - - - + + + - - f_ : F + + f_ : F - - - + + + - - ff_ : FF + + ff_ : FF - - - B(F && f, FF && ff) : void - - f() : void - - ff() : void - - - - - B<(lambda at ../../tests/t00051/t00051.cc:43:18),(lambda at ../../tests/t00051/t00051.cc:43:27)> - - - - B((lambda at ../../tests/t00051/t00051.cc:43:18) && f, (lambda at ../../tests/t00051/t00051.cc:43:27) && ff) : void - - f() : void - - ff() : void + + + + + B<(lambda at ../../tests/t00051/t00051.cc:43:18),(lambda at ../../tests/t00051/t00051.cc:43:27)> + + + B((lambda at ../../tests/t00051/t00051.cc:43:18) && f, (lambda at ../../tests/t00051/t00051.cc:43:27) && ff) : void + + + f() : void + + ff() : void + - - - + + + - - f_ : (lambda at ../../tests/t00051/t00051.cc:43:18) + + f_ : (lambda at ../../tests/t00051/t00051.cc:43:18) - - - + + + - - ff_ : (lambda at ../../tests/t00051/t00051.cc:43:27) + + ff_ : (lambda at ../../tests/t00051/t00051.cc:43:27) - - - - - A - - - - start_thread1() : A::custom_thread1 - - start_thread2() : A::custom_thread2 - - start_thread3() : B<(lambda at ../../tests/t00051/t00051.cc:43:18),(lambda at ../../tests/t00051/t00051.cc:43:27)> - - get_function() : (lambda at ../../tests/t00051/t00051.cc:48:16) + + + + + A + + + get_function() : (lambda at ../../tests/t00051/t00051.cc:48:16) + + start_thread1() : A::custom_thread1 + + start_thread2() : A::custom_thread2 + + start_thread3() : B<(lambda at ../../tests/t00051/t00051.cc:43:18),(lambda at ../../tests/t00051/t00051.cc:43:27)> + - - + + A::custom_thread1 - - - custom_thread1<Function,Args...>(Function && f, Args &&... args) : void + + custom_thread1<Function,Args...>(Function && f, Args &&... args) : void + - - - - - A::custom_thread2 - - - - thread((lambda at ../../tests/t00051/t00051.cc:59:27) && ) : void + + + + + A::custom_thread2 + + + thread((lambda at ../../tests/t00051/t00051.cc:59:27) &&) : void + - - - - - - - - - - - - + + + + + + + + + + + + diff --git a/docs/test_cases/t00052.md b/docs/test_cases/t00052.md index ef63f962..e6617624 100644 --- a/docs/test_cases/t00052.md +++ b/docs/test_cases/t00052.md @@ -74,8 +74,15 @@ struct R { { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -91,8 +98,15 @@ struct R { { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -133,8 +147,15 @@ struct R { { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -150,8 +171,15 @@ struct R { { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -199,8 +227,15 @@ struct R { { "access": "private", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -337,7 +372,7 @@ struct R { } ], "metadata": { - "clang_uml_version": "0.3.5-27-g81c7ce7", + "clang_uml_version": "0.3.6-11-g75d1daa", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00052_class.svg b/docs/test_cases/t00052_class.svg index fd9fdaf4..8b95738f 100644 --- a/docs/test_cases/t00052_class.svg +++ b/docs/test_cases/t00052_class.svg @@ -1,6 +1,6 @@ - + @@ -9,46 +9,46 @@ - - + + A - - - a<T>(T p) : T - - aa<F,Q>(F && f, Q q) : void + + a<T>(T p) : T + + aa<F,Q>(F && f, Q q) : void + - - + + B T - - - b(T t) : T - - bb<F>(F && f, T t) : T + + b(T t) : T + + bb<F>(F && f, T t) : T + - - + + C T - - - c<P>(P p) : T + + c<P>(P p) : T + - - + + B @@ -57,8 +57,8 @@ - - + + C @@ -67,35 +67,35 @@ - - + + R + - - - + + + - - a : A + + a : A - - - + + + - - b : B<int> + + b : B<int> - - - + + + - - c : C<int> + + c : C<int> - diff --git a/docs/test_cases/t00053.md b/docs/test_cases/t00053.md index 82d1c794..22c6bc0b 100644 --- a/docs/test_cases/t00053.md +++ b/docs/test_cases/t00053.md @@ -384,7 +384,7 @@ enum class j { jjj }; } ], "metadata": { - "clang_uml_version": "0.3.5-27-g81c7ce7", + "clang_uml_version": "0.3.6-11-g75d1daa", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00053_class.svg b/docs/test_cases/t00053_class.svg index 10991a29..54618f23 100644 --- a/docs/test_cases/t00053_class.svg +++ b/docs/test_cases/t00053_class.svg @@ -1,6 +1,6 @@ - + @@ -9,72 +9,72 @@ - - + + A - - + + C - - + + E - - + + F - - + + a - - + + c - - + + e - - + + f - - + + h @@ -82,8 +82,8 @@ hhh - - + + j @@ -91,56 +91,56 @@ jjj - - + + b - - + + d - - + + g - - + + B - - + + D - - + + G - - + + i diff --git a/docs/test_cases/t00054.md b/docs/test_cases/t00054.md index 33e5812a..e5374b58 100644 --- a/docs/test_cases/t00054.md +++ b/docs/test_cases/t00054.md @@ -426,7 +426,7 @@ enum class j { jjj }; } ], "metadata": { - "clang_uml_version": "0.3.5-27-g81c7ce7", + "clang_uml_version": "0.3.6-11-g75d1daa", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00054_class.svg b/docs/test_cases/t00054_class.svg index 33bf9296..1c916d21 100644 --- a/docs/test_cases/t00054_class.svg +++ b/docs/test_cases/t00054_class.svg @@ -1,6 +1,6 @@ - + @@ -9,116 +9,132 @@ - - - detail - + + + detail + detail2 - + detail3 - + detail4 - - + + d - - - - - a - - + + + + + a + + + + + - - - - - c - - + + + + + c + + + + + - - - - - e - - + + + + + e + + + + + - - + + C - - + + F - - + + D - - + + E - - - - - A + + + + + A + + - - - - - B + + + + + B + + - - - - - f + + + + + f + + - - - - - G - - + + + + + G + + + - - + + h @@ -127,8 +143,8 @@ hhh - - + + i @@ -137,8 +153,8 @@ iii - - + + j @@ -147,16 +163,16 @@ jjj - - + + b - - + + g diff --git a/docs/test_cases/t00055.md b/docs/test_cases/t00055.md index 6e3b4c16..2bda1960 100644 --- a/docs/test_cases/t00055.md +++ b/docs/test_cases/t00055.md @@ -246,7 +246,7 @@ struct J { }; } ], "metadata": { - "clang_uml_version": "0.3.5-27-g81c7ce7", + "clang_uml_version": "0.3.6-11-g75d1daa", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00055_class.svg b/docs/test_cases/t00055_class.svg index d9198c0c..a04ee22d 100644 --- a/docs/test_cases/t00055_class.svg +++ b/docs/test_cases/t00055_class.svg @@ -1,6 +1,6 @@ - + @@ -9,80 +9,80 @@ - - + + A - - + + B - - + + C - - + + D - - + + E - - + + F - - + + G - - + + H - - + + I - - + + J diff --git a/docs/test_cases/t00056.md b/docs/test_cases/t00056.md index 9bb2a2fe..09e39397 100644 --- a/docs/test_cases/t00056.md +++ b/docs/test_cases/t00056.md @@ -559,7 +559,7 @@ struct F { } ], "metadata": { - "clang_uml_version": "0.3.5-27-g81c7ce7", + "clang_uml_version": "0.3.6-11-g75d1daa", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00056_class.svg b/docs/test_cases/t00056_class.svg index 1673c9ed..192e5d60 100644 --- a/docs/test_cases/t00056_class.svg +++ b/docs/test_cases/t00056_class.svg @@ -1,6 +1,6 @@ - + @@ -9,8 +9,8 @@ - - + + «concept» @@ -20,8 +20,8 @@ - - + + «concept» @@ -33,8 +33,8 @@ sizeof (l) > sizeof (r) - - + + «concept» @@ -44,8 +44,8 @@ - - + + «concept» @@ -58,8 +58,8 @@ container.begin() container.end() - - + + «concept» @@ -71,8 +71,8 @@ typename T::value_type - - + + «concept» @@ -86,8 +86,8 @@ {std::to_string(s)} noexcept {std::to_string(s)} -> std::same_as<std::string> - - + + «concept» @@ -97,8 +97,8 @@ - - + + «concept» @@ -108,59 +108,59 @@ - - + + A max_four_bytes T + - - - + + + - - a : T + + a : T - - - + + B T + - - - + + + - - b : T + + b : T - - - + + C convertible_to_string T + - - - + + + - - c : T + + c : T - - - + + D @@ -169,68 +169,68 @@ - - + + E T1,T2,T3 + - - - + + + - - e1 : T1 + + e1 : T1 - - - + + + - - e2 : T2 + + e2 : T2 - - - + + + - - e3 : T3 + + e3 : T3 - - - + + F T1,T2,T3 + - - - + + + - - f1 : T1 + + f1 : T1 - - - + + + - - f2 : T2 + + f2 : T2 - - - + + + - - f3 : T3 + + f3 : T3 - T diff --git a/docs/test_cases/t00057.md b/docs/test_cases/t00057.md index 7bc2739b..63b965f7 100644 --- a/docs/test_cases/t00057.md +++ b/docs/test_cases/t00057.md @@ -488,7 +488,7 @@ struct t00057_R { } ], "metadata": { - "clang_uml_version": "0.3.5-27-g81c7ce7", + "clang_uml_version": "0.3.6-11-g75d1daa", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00057_class.svg b/docs/test_cases/t00057_class.svg index 243dd5f7..7fbc58f9 100644 --- a/docs/test_cases/t00057_class.svg +++ b/docs/test_cases/t00057_class.svg @@ -1,6 +1,6 @@ - + @@ -9,235 +9,235 @@ - - + + t00057_A + - - - + + + - - a1 : int + + a1 : int - - - + + t00057_B + - - - + + + - - b1 : int + + b1 : int - - - + + t00057_C + - - - + + + - - c1 : int + + c1 : int - - - + + «union» t00057_D + - - - + + + - - d1 : int + + d1 : int - - - + + + - - d2 : float + + d2 : float - - - + + t00057_E + - - - + + + - - e : int + + coordinates : t00057_E::(anonymous_739) - - + - + - - coordinates : t00057_E::(anonymous_739) + + e : int - + - + height : t00057_E::(anonymous_807) - - + + t00057_E::(coordinates) + - - - + + + - - x : int + + x : int - - - + + + - - y : int + + y : int - - - + + «union» t00057_E::(height) + - - - + + + - - z : int + + t : double - - - + + + - - t : double + + z : int - - - + + t00057_G + - - - + + + - - g1 : int + + g1 : int - - - + + t00057_R + - - - + + + - - a : struct t00057_A + + a : struct t00057_A - - - + + + - - b : t00057_B + + b : t00057_B - - - + + + - - c : struct t00057_C * + + c : struct t00057_C * - - - + + + - - d : union t00057_D + + d : union t00057_D - - - + + + - - e : struct t00057_E * + + e : struct t00057_E * - - - + + + - - f : struct t00057_F * + + f : struct t00057_F * - - - + + + - - g : struct t00057_G * + + g : struct t00057_G * - - - + + t00057_F + - - - + + + - - f1 : int + + f1 : int - diff --git a/docs/test_cases/t00058.md b/docs/test_cases/t00058.md index 00238b19..7457dbb4 100644 --- a/docs/test_cases/t00058.md +++ b/docs/test_cases/t00058.md @@ -407,7 +407,7 @@ struct R { } ], "metadata": { - "clang_uml_version": "0.3.5-27-g81c7ce7", + "clang_uml_version": "0.3.6-11-g75d1daa", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00058_class.svg b/docs/test_cases/t00058_class.svg index 3d066322..ec7351ad 100644 --- a/docs/test_cases/t00058_class.svg +++ b/docs/test_cases/t00058_class.svg @@ -1,6 +1,6 @@ - + @@ -9,8 +9,8 @@ - - + + first_type @@ -19,8 +19,8 @@ - - + + «concept» @@ -30,49 +30,49 @@ - - + + A T,Args... + - - - + + + - - a : std::vector<T> + + a : std::vector<T> - - - + + B T,P,Args... + - - - + + + - - b : std::vector<T> + + b : std::vector<T> - - - + + + - - bb : P + + bb : P - - - + + A @@ -81,8 +81,8 @@ - - + + A @@ -91,8 +91,8 @@ - - + + B @@ -101,28 +101,28 @@ - - + + R + - - - + + + - - aa : A<int,int,double,std::string> + + aa : A<int,int,double,std::string> - - - + + + - - bb : B<int,std::string,int,double,A<int,int>> + + bb : B<int,std::string,int,double,A<int,int>> - T,Args... diff --git a/docs/test_cases/t00059.md b/docs/test_cases/t00059.md index 976a2ff5..167229ac 100644 --- a/docs/test_cases/t00059.md +++ b/docs/test_cases/t00059.md @@ -156,8 +156,15 @@ struct R { { "access": "public", "is_const": true, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -168,8 +175,15 @@ struct R { { "access": "public", "is_const": true, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -201,8 +215,15 @@ struct R { { "access": "public", "is_const": true, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -213,8 +234,15 @@ struct R { { "access": "public", "is_const": true, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -246,8 +274,15 @@ struct R { { "access": "public", "is_const": true, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -258,8 +293,15 @@ struct R { { "access": "public", "is_const": true, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -291,8 +333,15 @@ struct R { { "access": "public", "is_const": true, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -303,8 +352,15 @@ struct R { { "access": "public", "is_const": true, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -336,8 +392,15 @@ struct R { { "access": "public", "is_const": true, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -348,8 +411,15 @@ struct R { { "access": "public", "is_const": true, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -489,7 +559,7 @@ struct R { } ], "metadata": { - "clang_uml_version": "0.3.5-27-g81c7ce7", + "clang_uml_version": "0.3.6-11-g75d1daa", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00059_class.svg b/docs/test_cases/t00059_class.svg index 555fe191..9411e7b8 100644 --- a/docs/test_cases/t00059_class.svg +++ b/docs/test_cases/t00059_class.svg @@ -1,6 +1,6 @@ - + @@ -9,8 +9,8 @@ - - + + «concept» @@ -23,8 +23,8 @@ T{} t.get_name() - - + + «concept» @@ -36,8 +36,8 @@ t.get_sweetness() - - + + «concept» @@ -49,70 +49,70 @@ t.get_bitterness() - - + + gala_apple - - - get_name() const : std::string - - get_sweetness() const : float + + get_name() const : std::string + + get_sweetness() const : float + - - + + empire_apple - - - get_name() const : std::string - - get_sweetness() const : float + + get_name() const : std::string + + get_sweetness() const : float + - - + + lima_orange - - - get_name() const : std::string - - get_bitterness() const : float + + get_bitterness() const : float + + get_name() const : std::string + - - + + valencia_orange - - - get_name() const : std::string - - get_bitterness() const : float + + get_bitterness() const : float + + get_name() const : std::string + - - + + fruit_factory apple_c TA,orange_c TO - - - create_apple() const : TA - - create_orange() const : TO + + create_apple() const : TA + + create_orange() const : TO + - - + + fruit_factory @@ -121,8 +121,8 @@ - - + + fruit_factory @@ -131,28 +131,28 @@ - - + + R + - - - + + + - - factory_1 : fruit_factory_1 + + factory_1 : fruit_factory_1 - - - + + + - - factory_2 : fruit_factory_2 + + factory_2 : fruit_factory_2 - T diff --git a/docs/test_cases/t00060.md b/docs/test_cases/t00060.md index b00de732..fd2a9397 100644 --- a/docs/test_cases/t00060.md +++ b/docs/test_cases/t00060.md @@ -256,7 +256,7 @@ template struct H : public G { } ], "metadata": { - "clang_uml_version": "0.3.5-27-g81c7ce7", + "clang_uml_version": "0.3.6-11-g75d1daa", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00060_class.svg b/docs/test_cases/t00060_class.svg index 4be7f3d2..02a153c6 100644 --- a/docs/test_cases/t00060_class.svg +++ b/docs/test_cases/t00060_class.svg @@ -1,6 +1,6 @@ - + @@ -9,79 +9,79 @@ - - + + A - - + + B - - + + C - - + + D - - + + G T + - - - + + + - - g : T + + g : T - - - + + H T,P + - - - + + + - - h : G<T> + + h : G<T> - - - + + + - - hh : P + + hh : P - diff --git a/docs/test_cases/t00061.md b/docs/test_cases/t00061.md index 5728555b..ae4946d4 100644 --- a/docs/test_cases/t00061.md +++ b/docs/test_cases/t00061.md @@ -61,7 +61,7 @@ struct C { } ], "metadata": { - "clang_uml_version": "0.3.5-27-g81c7ce7", + "clang_uml_version": "0.3.6-11-g75d1daa", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00061_class.svg b/docs/test_cases/t00061_class.svg index d07a4fa2..d91a05d1 100644 --- a/docs/test_cases/t00061_class.svg +++ b/docs/test_cases/t00061_class.svg @@ -1,6 +1,6 @@ - + @@ -9,8 +9,8 @@ - - + + A diff --git a/docs/test_cases/t00062.md b/docs/test_cases/t00062.md index 897c64f2..d0f400d8 100644 --- a/docs/test_cases/t00062.md +++ b/docs/test_cases/t00062.md @@ -1272,7 +1272,7 @@ struct A> { } ], "metadata": { - "clang_uml_version": "0.3.5-27-g81c7ce7", + "clang_uml_version": "0.3.6-11-g75d1daa", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00062_class.svg b/docs/test_cases/t00062_class.svg index ea2fdd20..517c08ae 100644 --- a/docs/test_cases/t00062_class.svg +++ b/docs/test_cases/t00062_class.svg @@ -1,6 +1,6 @@ - + @@ -9,42 +9,42 @@ - - + + A U & + - - - + + + - - u : U & + + u : U & - - - + + A std::map<std::string,U> & + - - - + + + - - u : U & + + u : U & - - - + + A @@ -53,363 +53,363 @@ - - + + A U * * + - - - + + + - - u : U ** + + u : U ** - - - + + A U * * const* + - - - + + + - - u : U *** + + u : U *** - - - + + A U const volatile* const volatile + - - - + + + - - u : U *** + + u : U *** - - - + + A U && + - - - + + + - - u : U && + + u : U && - - - + + A U const& + - - - + + + - - u : const U & + + u : const U & - - - + + A M C::* + - - - + + + - - c : C & + + c : C & - - - + + + - - m : M C::* + + m : M C::* - - - + + A M C::* && + - - - + + + - - c : C && + + c : C && - - - + + + - - m : M C::* + + m : M C::* - - - + + A M (C::*)(Arg) + - - - + + + - - c : C & + + c : C & - - - + + + - - m : M C::* + + m : M C::* - - - + + A int (C::*)(bool) + - - - + + + - - c : C & + + c : C & - - - + + A M (C::*)(Arg) && + - - - + + + - - c : C && + + c : C && - - - + + + - - m : M C::* + + m : M C::* - - - + + A float (C::*)(int) && + - - - + + + - - c : C && + + c : C && - - - + + + - - mf : float C::* + + mf : float C::* - - - + + A M (C::*)(Arg1,Arg2,Arg3) + - - - + + + - - c : C & + + c : C & - - - + + + - - m : M C::* + + m : M C::* - - - + + A char[N] + - - - + + + - - n : char[N] + + n : char[N] - - - + + A char[1000] + - - - + + + - - n : std::vector<char> + + n : std::vector<char> - - - + + A char[M][L][K] + - - - + + + - - klm : char[K][L][M] + + klm : char[K][L][M] - - - + + A U(...) + - - - + + + - - u : bool + + u : bool - - - + + A C<T> + - - - + + + - - c : C<T> + + c : C<T> - - - + + A C<T,Args...> + - - - + + + - - c : C<T> + + args : std::tuple<Args...> - - - + + + - - args : std::tuple<Args...> + + c : C<T> - - - + + A diff --git a/docs/test_cases/t00063.md b/docs/test_cases/t00063.md index 502bc889..f8af08c1 100644 --- a/docs/test_cases/t00063.md +++ b/docs/test_cases/t00063.md @@ -59,7 +59,7 @@ enum class C { c1, c2, c3 }; } ], "metadata": { - "clang_uml_version": "0.3.5-27-g81c7ce7", + "clang_uml_version": "0.3.6-11-g75d1daa", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00063_class.svg b/docs/test_cases/t00063_class.svg index 35ac7781..c88e7cef 100644 --- a/docs/test_cases/t00063_class.svg +++ b/docs/test_cases/t00063_class.svg @@ -1,6 +1,6 @@ - + @@ -9,8 +9,8 @@ - - + + A diff --git a/docs/test_cases/t00064.md b/docs/test_cases/t00064.md index 8b1bac21..5aa642e3 100644 --- a/docs/test_cases/t00064.md +++ b/docs/test_cases/t00064.md @@ -474,8 +474,15 @@ public: { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -491,8 +498,15 @@ public: { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -508,8 +522,15 @@ public: { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": true, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -943,7 +964,7 @@ public: } ], "metadata": { - "clang_uml_version": "0.3.5-27-g81c7ce7", + "clang_uml_version": "0.3.6-11-g75d1daa", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00064_class.svg b/docs/test_cases/t00064_class.svg index 56c16745..689c2c2c 100644 --- a/docs/test_cases/t00064_class.svg +++ b/docs/test_cases/t00064_class.svg @@ -1,6 +1,6 @@ - + @@ -9,8 +9,8 @@ - - + + type_list @@ -19,8 +19,8 @@ - - + + type_list @@ -29,8 +29,8 @@ - - + + type_list @@ -39,8 +39,8 @@ - - + + type_list @@ -49,8 +49,8 @@ - - + + head @@ -59,8 +59,8 @@ - - + + type_list @@ -69,8 +69,8 @@ - - + + type_list @@ -79,8 +79,8 @@ - - + + type_list @@ -89,25 +89,25 @@ - - + + type_group_pair type_list<First...>,type_list<Second...> + - - - + + + - - size : const size_t + + size : const size_t - - - + + optional_ref @@ -116,8 +116,8 @@ - - + + optional_ref @@ -126,48 +126,48 @@ - - + + type_group_pair_it It,type_list<First...>,type_list<Second...> - - - get(unsigned int i) : ref_t - - getp(unsigned int i) : value_type const* - - find(value_type const& v) : unsigned int + + find(value_type const& v) constexpr : unsigned int + + get(unsigned int i) : ref_t + + getp(unsigned int i) : value_type const* + - - + + A - - + + B - - + + C - - + + type_list @@ -176,8 +176,8 @@ - - + + type_list @@ -186,8 +186,8 @@ - - + + type_list @@ -196,8 +196,8 @@ - - + + type_group_pair @@ -206,30 +206,30 @@ - - + + R + - - - + + + - - aboolint : type_list<A,bool,int> + + abc : type_group_pair<type_list<float,double>,type_list<A,B,C>> - - - + + + - - abc : type_group_pair<type_list<float,double>,type_list<A,B,C>> + + aboolint : type_list<A,bool,int> - - - + + type_group_pair @@ -238,8 +238,8 @@ - - + + type_group_pair_it @@ -248,8 +248,8 @@ - - + + head diff --git a/docs/test_cases/t00065.md b/docs/test_cases/t00065.md index 5c17eb57..10adab44 100644 --- a/docs/test_cases/t00065.md +++ b/docs/test_cases/t00065.md @@ -204,8 +204,15 @@ struct R { { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": true, + "is_copy_assignment": false, "is_defaulted": true, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -216,8 +223,15 @@ struct R { { "access": "public", "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, "is_defaulted": false, - "is_implicit": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, "is_pure_virtual": false, "is_static": false, "is_virtual": false, @@ -459,7 +473,7 @@ struct R { } ], "metadata": { - "clang_uml_version": "0.3.5-27-g81c7ce7", + "clang_uml_version": "0.3.6-11-g75d1daa", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t00065_class.svg b/docs/test_cases/t00065_class.svg index 73d8576b..7fdb8606 100644 --- a/docs/test_cases/t00065_class.svg +++ b/docs/test_cases/t00065_class.svg @@ -1,6 +1,6 @@ - + @@ -9,20 +9,20 @@ - + module1 - + submodule1a - + module2 - + concepts - - + + ABC @@ -32,8 +32,8 @@ c - - + + XYZ @@ -43,74 +43,75 @@ z - - + + A + - - - + + + - - abc : ABC + + abc : ABC - - - + + + - - xyz : XYZ + + pimpl : detail::AImpl * - - - + + + - - pimpl : detail::AImpl * + + xyz : XYZ - - - + + AImpl - - - - - B - - - - B() = default : void - - b() : void + + + + + B + + + B() = default : void + + + b() : void + - - + + C T + - - - + + + - - t : T * + + t : T * - - - + + C @@ -119,32 +120,32 @@ - - + + D bconcept T + - - - + + + - - t : T + + c : C<int> - - - + + + - - c : C<int> + + t : T - - - + + C @@ -153,8 +154,8 @@ - - + + D @@ -163,8 +164,8 @@ - - + + «concept» @@ -175,35 +176,35 @@ T{} t.b() - - + + R + - - - + + + - - a : A * + + a : A * - - - + + + - - c : C<B> + + c : C<B> - - - + + + - - d : D<B> + + d : D<B> - @@ -224,12 +225,12 @@ +c - - + + - - + + diff --git a/docs/test_cases/t00066.md b/docs/test_cases/t00066.md new file mode 100644 index 00000000..9e606ba0 --- /dev/null +++ b/docs/test_cases/t00066.md @@ -0,0 +1,671 @@ +# t00066 - Class fields and methods without grouping and sorting +## Config +```yaml +compilation_database_dir: .. +output_directory: puml +diagrams: + t00066_class: + type: class + glob: + - ../../tests/t00066/t00066.cc + include: + namespaces: + - clanguml::t00066 + member_order: as_is + group_methods: false + using_namespace: + - clanguml::t00066 +``` +## Source code +File t00066.cc +```cpp +#include +#include + +namespace clanguml { +namespace t00066 { + +class A { +public: + A() = default; + A(int i) + : private_member{i} + { + } + A(A &&) = default; + A(const A &) = delete; + virtual ~A() = default; + + void basic_method() { } + static int static_method() { return 0; } + void const_method() const { } + auto auto_method() { return 1; } + + A &operator++() + { + private_member++; + return *this; + } + + A &operator=(A &&other) noexcept { return *this; } + A &operator=(A &other) noexcept { return *this; } + + std::size_t size() const { return private_member; } + + auto double_int(const int i) { return 2 * i; } + auto sum(const double a, const double b) { return a_ + b_ + c_; } + + auto default_int(int i = 12) { return i + 10; } + std::string default_string(int i, std::string s = "abc") + { + return s + std::to_string(i); + } + + static A create_from_int(int i) { return A(i); } + + int public_member; + static int static_int; + static const int static_const_int = 1; + static const auto auto_member{10UL}; + +protected: + void protected_method() { } + + int protected_member; + + std::function compare = [this](const int v) { + return private_member > v; + }; + +private: + void private_method() { } + + int private_member; + int a_, b_, c_; +}; + +int A::static_int = 1; +} // namespace t00066 +} // namespace clanguml + +``` +## Generated UML diagrams +![t00066_class](./t00066_class.svg "Class fields and methods without grouping and sorting") +## Generated JSON models +```json +{ + "diagram_type": "class", + "elements": [ + { + "bases": [], + "display_name": "clanguml::t00066::A", + "id": "1899957281758233935", + "is_abstract": false, + "is_nested": false, + "is_struct": false, + "is_template": false, + "is_union": false, + "members": [ + { + "access": "public", + "is_static": false, + "name": "public_member", + "source_location": { + "file": "../../tests/t00066/t00066.cc", + "line": 45 + }, + "type": "int" + }, + { + "access": "protected", + "is_static": false, + "name": "protected_member", + "source_location": { + "file": "../../tests/t00066/t00066.cc", + "line": 53 + }, + "type": "int" + }, + { + "access": "protected", + "is_static": false, + "name": "compare", + "source_location": { + "file": "../../tests/t00066/t00066.cc", + "line": 55 + }, + "type": "std::function" + }, + { + "access": "private", + "is_static": false, + "name": "private_member", + "source_location": { + "file": "../../tests/t00066/t00066.cc", + "line": 62 + }, + "type": "int" + }, + { + "access": "private", + "is_static": false, + "name": "a_", + "source_location": { + "file": "../../tests/t00066/t00066.cc", + "line": 63 + }, + "type": "int" + }, + { + "access": "private", + "is_static": false, + "name": "b_", + "source_location": { + "file": "../../tests/t00066/t00066.cc", + "line": 63 + }, + "type": "int" + }, + { + "access": "private", + "is_static": false, + "name": "c_", + "source_location": { + "file": "../../tests/t00066/t00066.cc", + "line": 63 + }, + "type": "int" + }, + { + "access": "public", + "is_static": true, + "name": "static_int", + "source_location": { + "file": "../../tests/t00066/t00066.cc", + "line": 46 + }, + "type": "int" + }, + { + "access": "public", + "is_static": true, + "name": "static_const_int", + "source_location": { + "file": "../../tests/t00066/t00066.cc", + "line": 47 + }, + "type": "const int" + }, + { + "access": "public", + "is_static": true, + "name": "auto_member", + "source_location": { + "file": "../../tests/t00066/t00066.cc", + "line": 48 + }, + "type": "const unsigned long" + } + ], + "methods": [ + { + "access": "public", + "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": true, + "is_copy_assignment": false, + "is_defaulted": true, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, + "is_pure_virtual": false, + "is_static": false, + "is_virtual": false, + "name": "A", + "parameters": [], + "type": "void" + }, + { + "access": "public", + "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": true, + "is_copy_assignment": false, + "is_defaulted": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, + "is_pure_virtual": false, + "is_static": false, + "is_virtual": false, + "name": "A", + "parameters": [ + { + "name": "i", + "type": "int" + } + ], + "type": "void" + }, + { + "access": "public", + "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": true, + "is_copy_assignment": false, + "is_defaulted": true, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, + "is_pure_virtual": false, + "is_static": false, + "is_virtual": false, + "name": "A", + "parameters": [ + { + "name": "", + "type": "clanguml::t00066::A &&" + } + ], + "type": "void" + }, + { + "access": "public", + "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": true, + "is_copy_assignment": false, + "is_defaulted": false, + "is_deleted": true, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, + "is_pure_virtual": false, + "is_static": false, + "is_virtual": false, + "name": "A", + "parameters": [ + { + "name": "", + "type": "const clanguml::t00066::A &" + } + ], + "type": "void" + }, + { + "access": "public", + "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, + "is_defaulted": true, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, + "is_pure_virtual": false, + "is_static": false, + "is_virtual": true, + "name": "~A", + "parameters": [], + "type": "void" + }, + { + "access": "public", + "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, + "is_defaulted": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, + "is_pure_virtual": false, + "is_static": false, + "is_virtual": false, + "name": "basic_method", + "parameters": [], + "type": "void" + }, + { + "access": "public", + "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, + "is_defaulted": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, + "is_pure_virtual": false, + "is_static": true, + "is_virtual": false, + "name": "static_method", + "parameters": [], + "type": "int" + }, + { + "access": "public", + "is_const": true, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, + "is_defaulted": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, + "is_pure_virtual": false, + "is_static": false, + "is_virtual": false, + "name": "const_method", + "parameters": [], + "type": "void" + }, + { + "access": "public", + "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, + "is_defaulted": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, + "is_pure_virtual": false, + "is_static": false, + "is_virtual": false, + "name": "auto_method", + "parameters": [], + "type": "int" + }, + { + "access": "public", + "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, + "is_defaulted": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": true, + "is_pure_virtual": false, + "is_static": false, + "is_virtual": false, + "name": "operator++", + "parameters": [], + "type": "clanguml::t00066::A &" + }, + { + "access": "public", + "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, + "is_defaulted": false, + "is_deleted": false, + "is_move_assignment": true, + "is_noexcept": true, + "is_operator": true, + "is_pure_virtual": false, + "is_static": false, + "is_virtual": false, + "name": "operator=", + "parameters": [ + { + "name": "other", + "type": "clanguml::t00066::A &&" + } + ], + "type": "clanguml::t00066::A &" + }, + { + "access": "public", + "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": true, + "is_defaulted": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": true, + "is_operator": true, + "is_pure_virtual": false, + "is_static": false, + "is_virtual": false, + "name": "operator=", + "parameters": [ + { + "name": "other", + "type": "clanguml::t00066::A &" + } + ], + "type": "clanguml::t00066::A &" + }, + { + "access": "public", + "is_const": true, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, + "is_defaulted": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, + "is_pure_virtual": false, + "is_static": false, + "is_virtual": false, + "name": "size", + "parameters": [], + "type": "std::size_t" + }, + { + "access": "public", + "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, + "is_defaulted": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, + "is_pure_virtual": false, + "is_static": false, + "is_virtual": false, + "name": "double_int", + "parameters": [ + { + "name": "i", + "type": "const int" + } + ], + "type": "int" + }, + { + "access": "public", + "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, + "is_defaulted": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, + "is_pure_virtual": false, + "is_static": false, + "is_virtual": false, + "name": "sum", + "parameters": [ + { + "name": "a", + "type": "const double" + }, + { + "name": "b", + "type": "const double" + } + ], + "type": "int" + }, + { + "access": "public", + "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, + "is_defaulted": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, + "is_pure_virtual": false, + "is_static": false, + "is_virtual": false, + "name": "default_int", + "parameters": [ + { + "default_value": "12", + "name": "i", + "type": "int" + } + ], + "type": "int" + }, + { + "access": "public", + "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, + "is_defaulted": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, + "is_pure_virtual": false, + "is_static": false, + "is_virtual": false, + "name": "default_string", + "parameters": [ + { + "name": "i", + "type": "int" + }, + { + "default_value": "\"abc\"", + "name": "s", + "type": "std::string" + } + ], + "type": "std::string" + }, + { + "access": "public", + "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, + "is_defaulted": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, + "is_pure_virtual": false, + "is_static": true, + "is_virtual": false, + "name": "create_from_int", + "parameters": [ + { + "name": "i", + "type": "int" + } + ], + "type": "clanguml::t00066::A" + }, + { + "access": "protected", + "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, + "is_defaulted": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, + "is_pure_virtual": false, + "is_static": false, + "is_virtual": false, + "name": "protected_method", + "parameters": [], + "type": "void" + }, + { + "access": "private", + "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, + "is_defaulted": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, + "is_pure_virtual": false, + "is_static": false, + "is_virtual": false, + "name": "private_method", + "parameters": [], + "type": "void" + } + ], + "name": "A", + "namespace": "clanguml::t00066", + "source_location": { + "file": "../../tests/t00066/t00066.cc", + "line": 7 + }, + "template_parameters": [], + "type": "class" + } + ], + "metadata": { + "clang_uml_version": "0.3.6-11-g75d1daa", + "llvm_version": "Ubuntu clang version 15.0.6", + "schema_version": 1 + }, + "name": "t00066_class", + "relationships": [], + "using_namespace": "clanguml::t00066" +} +``` diff --git a/docs/test_cases/t00066_class.svg b/docs/test_cases/t00066_class.svg new file mode 100644 index 00000000..cad28801 --- /dev/null +++ b/docs/test_cases/t00066_class.svg @@ -0,0 +1,131 @@ + + + + + + + + + + + + + + + + A + + + + + + + + a_ : int + + + + + + + auto_member : const unsigned long + + + + + + + b_ : int + + + + + + + c_ : int + + + + + + + private_member : int + + + + + + + protected_member : int + + + + + + + public_member : int + + + + + + + static_const_int : const int + + + + + + + static_int : int + + + + A(int i) : void + + A(A &&) = default : void + + A(const A &) = deleted : void + + A() = default : void + + 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 + + operator++() : A & + + operator=(A && other) noexcept : A & + + operator=(A & other) noexcept : A & + + private_method() : void + + protected_method() : void + + size() const : std::size_t + + static_method() : int + + sum(const double a, const double b) : int + + ~A() = default : void + + + + + + compare : std::function<bool (const int)> + + + diff --git a/docs/test_cases/t00067.md b/docs/test_cases/t00067.md new file mode 100644 index 00000000..c3bb7b42 --- /dev/null +++ b/docs/test_cases/t00067.md @@ -0,0 +1,454 @@ +# t00067 - Class method type filter test case +## Config +```yaml +compilation_database_dir: .. +output_directory: puml +diagrams: + t00067_class: + type: class + glob: + - ../../tests/t00067/t00067.cc + include: + namespaces: + - clanguml::t00067 + exclude: + method_types: + - constructor + - destructor + - operator + - assignment + - static + using_namespace: + - clanguml::t00067 +``` +## Source code +File t00067.cc +```cpp +#include +#include + +namespace clanguml { +namespace t00067 { +class A { +public: + A() = default; + A(int i) + : private_member{i} + { + } + A(A &&) = default; + A(const A &) = delete; + virtual ~A() = default; + + void basic_method() { } + static int static_method() { return 0; } + void const_method() const { } + auto auto_method() { return 1; } + + A &operator++() + { + private_member++; + return *this; + } + + A &operator=(A &&other) noexcept { return *this; } + A &operator=(A &other) noexcept { return *this; } + + std::size_t size() const { return private_member; } + + auto double_int(const int i) { return 2 * i; } + auto sum(const double a, const double b) { return a_ + b_ + c_; } + + auto default_int(int i = 12) { return i + 10; } + std::string default_string(int i, std::string s = "abc") + { + return s + std::to_string(i); + } + + static A create_from_int(int i) { return A(i); } + + int public_member; + static int static_int; + static const int static_const_int = 1; + static const auto auto_member{10UL}; + +protected: + void protected_method() { } + + int protected_member; + + std::function compare = [this](const int v) { + return private_member > v; + }; + +private: + void private_method() { } + + int private_member; + int a_, b_, c_; +}; + +int A::static_int = 1; +} +} +``` +## Generated UML diagrams +![t00067_class](./t00067_class.svg "Class method type filter test case") +## Generated JSON models +```json +{ + "diagram_type": "class", + "elements": [ + { + "bases": [], + "display_name": "clanguml::t00067::A", + "id": "541140581420098839", + "is_abstract": false, + "is_nested": false, + "is_struct": false, + "is_template": false, + "is_union": false, + "members": [ + { + "access": "public", + "is_static": false, + "name": "public_member", + "source_location": { + "file": "../../tests/t00067/t00067.cc", + "line": 44 + }, + "type": "int" + }, + { + "access": "protected", + "is_static": false, + "name": "protected_member", + "source_location": { + "file": "../../tests/t00067/t00067.cc", + "line": 52 + }, + "type": "int" + }, + { + "access": "protected", + "is_static": false, + "name": "compare", + "source_location": { + "file": "../../tests/t00067/t00067.cc", + "line": 54 + }, + "type": "std::function" + }, + { + "access": "private", + "is_static": false, + "name": "private_member", + "source_location": { + "file": "../../tests/t00067/t00067.cc", + "line": 61 + }, + "type": "int" + }, + { + "access": "private", + "is_static": false, + "name": "a_", + "source_location": { + "file": "../../tests/t00067/t00067.cc", + "line": 62 + }, + "type": "int" + }, + { + "access": "private", + "is_static": false, + "name": "b_", + "source_location": { + "file": "../../tests/t00067/t00067.cc", + "line": 62 + }, + "type": "int" + }, + { + "access": "private", + "is_static": false, + "name": "c_", + "source_location": { + "file": "../../tests/t00067/t00067.cc", + "line": 62 + }, + "type": "int" + }, + { + "access": "public", + "is_static": true, + "name": "static_int", + "source_location": { + "file": "../../tests/t00067/t00067.cc", + "line": 45 + }, + "type": "int" + }, + { + "access": "public", + "is_static": true, + "name": "static_const_int", + "source_location": { + "file": "../../tests/t00067/t00067.cc", + "line": 46 + }, + "type": "const int" + }, + { + "access": "public", + "is_static": true, + "name": "auto_member", + "source_location": { + "file": "../../tests/t00067/t00067.cc", + "line": 47 + }, + "type": "const unsigned long" + } + ], + "methods": [ + { + "access": "public", + "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, + "is_defaulted": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, + "is_pure_virtual": false, + "is_static": false, + "is_virtual": false, + "name": "basic_method", + "parameters": [], + "type": "void" + }, + { + "access": "public", + "is_const": true, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, + "is_defaulted": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, + "is_pure_virtual": false, + "is_static": false, + "is_virtual": false, + "name": "const_method", + "parameters": [], + "type": "void" + }, + { + "access": "public", + "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, + "is_defaulted": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, + "is_pure_virtual": false, + "is_static": false, + "is_virtual": false, + "name": "auto_method", + "parameters": [], + "type": "int" + }, + { + "access": "public", + "is_const": true, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, + "is_defaulted": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, + "is_pure_virtual": false, + "is_static": false, + "is_virtual": false, + "name": "size", + "parameters": [], + "type": "std::size_t" + }, + { + "access": "public", + "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, + "is_defaulted": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, + "is_pure_virtual": false, + "is_static": false, + "is_virtual": false, + "name": "double_int", + "parameters": [ + { + "name": "i", + "type": "const int" + } + ], + "type": "int" + }, + { + "access": "public", + "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, + "is_defaulted": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, + "is_pure_virtual": false, + "is_static": false, + "is_virtual": false, + "name": "sum", + "parameters": [ + { + "name": "a", + "type": "const double" + }, + { + "name": "b", + "type": "const double" + } + ], + "type": "int" + }, + { + "access": "public", + "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, + "is_defaulted": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, + "is_pure_virtual": false, + "is_static": false, + "is_virtual": false, + "name": "default_int", + "parameters": [ + { + "default_value": "12", + "name": "i", + "type": "int" + } + ], + "type": "int" + }, + { + "access": "public", + "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, + "is_defaulted": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, + "is_pure_virtual": false, + "is_static": false, + "is_virtual": false, + "name": "default_string", + "parameters": [ + { + "name": "i", + "type": "int" + }, + { + "default_value": "\"abc\"", + "name": "s", + "type": "std::string" + } + ], + "type": "std::string" + }, + { + "access": "protected", + "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, + "is_defaulted": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, + "is_pure_virtual": false, + "is_static": false, + "is_virtual": false, + "name": "protected_method", + "parameters": [], + "type": "void" + }, + { + "access": "private", + "is_const": false, + "is_consteval": false, + "is_constexpr": false, + "is_constructor": false, + "is_copy_assignment": false, + "is_defaulted": false, + "is_deleted": false, + "is_move_assignment": false, + "is_noexcept": false, + "is_operator": false, + "is_pure_virtual": false, + "is_static": false, + "is_virtual": false, + "name": "private_method", + "parameters": [], + "type": "void" + } + ], + "name": "A", + "namespace": "clanguml::t00067", + "source_location": { + "file": "../../tests/t00067/t00067.cc", + "line": 6 + }, + "template_parameters": [], + "type": "class" + } + ], + "metadata": { + "clang_uml_version": "0.3.6-11-g75d1daa", + "llvm_version": "Ubuntu clang version 15.0.6", + "schema_version": 1 + }, + "name": "t00067_class", + "relationships": [], + "using_namespace": "clanguml::t00067" +} +``` diff --git a/docs/test_cases/t00067_class.svg b/docs/test_cases/t00067_class.svg new file mode 100644 index 00000000..3ceb58be --- /dev/null +++ b/docs/test_cases/t00067_class.svg @@ -0,0 +1,111 @@ + + + + + + + + + + + + + + + + A + + + auto_method() : int + + basic_method() : void + + const_method() const : void + + default_int(int i = 12) : int + + default_string(int i, std::string s = "abc") : std::string + + double_int(const int i) : int + + private_method() : void + + protected_method() : void + + size() const : std::size_t + + sum(const double a, const double b) : int + + + + + + + + a_ : int + + + + + + + auto_member : const unsigned long + + + + + + + b_ : int + + + + + + + c_ : int + + + + + + + compare : std::function<bool (const int)> + + + + + + + private_member : int + + + + + + + protected_member : int + + + + + + + public_member : int + + + + + + + static_const_int : const int + + + + + + + static_int : int + + + diff --git a/docs/test_cases/t20001.md b/docs/test_cases/t20001.md index 2886269b..42c0c2dc 100644 --- a/docs/test_cases/t20001.md +++ b/docs/test_cases/t20001.md @@ -108,7 +108,7 @@ int tmain() { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.3.5-27-g81c7ce7", + "clang_uml_version": "0.3.6-11-g75d1daa", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t20001_sequence.svg b/docs/test_cases/t20001_sequence.svg index d7ddd955..04e7ae85 100644 --- a/docs/test_cases/t20001_sequence.svg +++ b/docs/test_cases/t20001_sequence.svg @@ -1,6 +1,6 @@ - + @@ -9,59 +9,59 @@ - - - - - - - + + + + + + + - - + + tmain() - + tmain() - - + + A - + A - - + + B - + B - - - - - - - - + + + + + + + + add(int,int) - + wrap_add3(int,int,int) - + add3(int,int,int) - + @@ -72,7 +72,7 @@ - + @@ -81,14 +81,14 @@ - + log_result(int) - + Main test function diff --git a/docs/test_cases/t20002.md b/docs/test_cases/t20002.md index 88c533a4..ee0500f1 100644 --- a/docs/test_cases/t20002.md +++ b/docs/test_cases/t20002.md @@ -45,7 +45,7 @@ void m1() { m2(); } { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.3.5-27-g81c7ce7", + "clang_uml_version": "0.3.6-11-g75d1daa", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t20002_sequence.svg b/docs/test_cases/t20002_sequence.svg index e0cd014e..670ba348 100644 --- a/docs/test_cases/t20002_sequence.svg +++ b/docs/test_cases/t20002_sequence.svg @@ -1,6 +1,6 @@ - + @@ -9,51 +9,51 @@ - - - - + + + + - - + + m1() - + m1() - - + + m2() - + m2() - - + + m3() - + m3() - - + + m4() - + m4() - - - - - + + + + + - + - + diff --git a/docs/test_cases/t20003.md b/docs/test_cases/t20003.md index f376f61e..d7af8423 100644 --- a/docs/test_cases/t20003.md +++ b/docs/test_cases/t20003.md @@ -41,7 +41,7 @@ template void m1(T p) { m2(p); } { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.3.5-27-g81c7ce7", + "clang_uml_version": "0.3.6-11-g75d1daa", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t20003_sequence.svg b/docs/test_cases/t20003_sequence.svg index 9bcef4b3..e5a6350e 100644 --- a/docs/test_cases/t20003_sequence.svg +++ b/docs/test_cases/t20003_sequence.svg @@ -1,6 +1,6 @@ - + @@ -9,51 +9,51 @@ - - - - + + + + - - + + m1<T>(T) - + m1<T>(T) - - + + m2<T>(T) - + m2<T>(T) - - + + m3<T>(T) - + m3<T>(T) - - + + m4<T>(T) - + m4<T>(T) - - - - - + + + + + - + - + diff --git a/docs/test_cases/t20004.md b/docs/test_cases/t20004.md index 2f953746..76003e35 100644 --- a/docs/test_cases/t20004.md +++ b/docs/test_cases/t20004.md @@ -77,7 +77,7 @@ int main() { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.3.5-27-g81c7ce7", + "clang_uml_version": "0.3.6-11-g75d1daa", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t20004_sequence.svg b/docs/test_cases/t20004_sequence.svg index 864d8312..fe661790 100644 --- a/docs/test_cases/t20004_sequence.svg +++ b/docs/test_cases/t20004_sequence.svg @@ -1,6 +1,6 @@ - + @@ -9,16 +9,16 @@ - - - - - - - - - - + + + + + + + + + + @@ -29,87 +29,87 @@ - - + + main() - + main() - - + + m1<float>(float) - + m1<float>(float) - - + + m1<unsigned long>(unsigned long) - + m1<unsigned long>(unsigned long) - - + + m4<unsigned long>(unsigned long) - + m4<unsigned long>(unsigned long) - - + + m1<std::string>(std::string) - + m1<std::string>(std::string) - - + + m2<std::string>(std::string) - + m2<std::string>(std::string) - - + + m1<int>(int) - + m1<int>(int) - - + + m2<int>(int) - + m2<int>(int) - - + + m3<int>(int) - + m3<int>(int) - - + + m4<int>(int) - + m4<int>(int) - - - - - - - - - - - + + + + + + + + + + + - + - + @@ -117,11 +117,11 @@ - + - + @@ -129,19 +129,19 @@ - + - + - + - + diff --git a/docs/test_cases/t20005.md b/docs/test_cases/t20005.md index 634f6451..0cab462f 100644 --- a/docs/test_cases/t20005.md +++ b/docs/test_cases/t20005.md @@ -48,7 +48,7 @@ template struct C { { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.3.5-27-g81c7ce7", + "clang_uml_version": "0.3.6-11-g75d1daa", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t20005_sequence.svg b/docs/test_cases/t20005_sequence.svg index 2e7a98fa..abbf680a 100644 --- a/docs/test_cases/t20005_sequence.svg +++ b/docs/test_cases/t20005_sequence.svg @@ -1,6 +1,6 @@ - + @@ -9,42 +9,42 @@ - - - + + + - - + + C<T> - + C<T> - - + + B<T> - + B<T> - - + + A<T> - + A<T> - - - + + + c(T) - + b(T) - + a(T) diff --git a/docs/test_cases/t20006.md b/docs/test_cases/t20006.md index ebd7bebd..fac58d5f 100644 --- a/docs/test_cases/t20006.md +++ b/docs/test_cases/t20006.md @@ -106,7 +106,7 @@ void tmain() { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.3.5-27-g81c7ce7", + "clang_uml_version": "0.3.6-11-g75d1daa", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t20006_sequence.svg b/docs/test_cases/t20006_sequence.svg index b4e81bb1..e58917c5 100644 --- a/docs/test_cases/t20006_sequence.svg +++ b/docs/test_cases/t20006_sequence.svg @@ -1,6 +1,6 @@ - + @@ -9,22 +9,22 @@ - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + @@ -34,82 +34,82 @@ - - + + tmain() - + tmain() - - + + B<int> - + B<int> - - + + A<int> - + A<int> - - + + B<std::string> - + B<std::string> - - + + A<std::string> - + A<std::string> - - + + BB<int,int> - + BB<int,int> - - + + AA<int> - + AA<int> - - + + BB<int,std::string> - + BB<int,std::string> - - + + BB<int,float> - + BB<int,float> - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + b(int) - + a1(int) @@ -118,12 +118,12 @@ - + b(std::string) - + a2(std::string) @@ -132,59 +132,59 @@ - + bb1(int,int) - + aa1(int) - + bb2(int,int) - + aa2(int) - + bb1(int,std::string) - + aa2(int) - + bb2(int,std::string) - + aa1(int) - + bb1(int,float) - + bb2(int,float) - + aa2(int) diff --git a/docs/test_cases/t20007.md b/docs/test_cases/t20007.md index d0252d3f..c07170e2 100644 --- a/docs/test_cases/t20007.md +++ b/docs/test_cases/t20007.md @@ -52,7 +52,7 @@ void tmain() { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.3.5-27-g81c7ce7", + "clang_uml_version": "0.3.6-11-g75d1daa", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t20007_sequence.svg b/docs/test_cases/t20007_sequence.svg index 46f8a00a..ff5168ad 100644 --- a/docs/test_cases/t20007_sequence.svg +++ b/docs/test_cases/t20007_sequence.svg @@ -1,6 +1,6 @@ - + @@ -9,57 +9,57 @@ - - - - + + + + - - + + tmain() - + tmain() - - + + Adder<int,int> - + Adder<int,int> - - + + Adder<int,float,double> - + Adder<int,float,double> - - + + Adder<std::string,std::string,std::string> - + Adder<std::string,std::string,std::string> - - - - - + + + + + add(int &&,int &&) - + add(int &&,float &&,double &&) - + add(std::string &&,std::string &&,std::string &&) diff --git a/docs/test_cases/t20008.md b/docs/test_cases/t20008.md index 35da77ed..c04d8784 100644 --- a/docs/test_cases/t20008.md +++ b/docs/test_cases/t20008.md @@ -70,7 +70,7 @@ void tmain() { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.3.5-27-g81c7ce7", + "clang_uml_version": "0.3.6-11-g75d1daa", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t20008_sequence.svg b/docs/test_cases/t20008_sequence.svg index 47f8e691..bafc051a 100644 --- a/docs/test_cases/t20008_sequence.svg +++ b/docs/test_cases/t20008_sequence.svg @@ -1,6 +1,6 @@ - + @@ -9,13 +9,13 @@ - - - - - - - + + + + + + + @@ -23,81 +23,81 @@ - - + + tmain() - + tmain() - - + + B<int> - + B<int> - - + + A<int> - + A<int> - - + + B<const char *> - + B<const char *> - - + + A<const char *> - + A<const char *> - - + + B<std::string> - + B<std::string> - - + + A<std::string> - + A<std::string> - - - - - - - - + + + + + + + + b(int) - + a1(int) - + b(const char *) - + a2(const char *) - + b(std::string) - + a3(std::string) diff --git a/docs/test_cases/t20009.md b/docs/test_cases/t20009.md index a763ba1d..e196834e 100644 --- a/docs/test_cases/t20009.md +++ b/docs/test_cases/t20009.md @@ -56,7 +56,7 @@ void tmain() { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.3.5-27-g81c7ce7", + "clang_uml_version": "0.3.6-11-g75d1daa", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t20009_sequence.svg b/docs/test_cases/t20009_sequence.svg index f90334bc..29bb17f9 100644 --- a/docs/test_cases/t20009_sequence.svg +++ b/docs/test_cases/t20009_sequence.svg @@ -1,6 +1,6 @@ - + @@ -9,13 +9,13 @@ - - - - - - - + + + + + + + @@ -23,81 +23,81 @@ - - + + tmain() - + tmain() - - + + B<std::string> - + B<std::string> - - + + A<std::string> - + A<std::string> - - + + B<int> - + B<int> - - + + A<int> - + A<int> - - + + B<float> - + B<float> - - + + A<float> - + A<float> - - - - - - - - + + + + + + + + b(std::string) - + a(std::string) - + b(int) - + a(int) - + b(float) - + a(float) diff --git a/docs/test_cases/t20010.md b/docs/test_cases/t20010.md index 8a33def9..ffc53bfa 100644 --- a/docs/test_cases/t20010.md +++ b/docs/test_cases/t20010.md @@ -66,7 +66,7 @@ void tmain() { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.3.5-27-g81c7ce7", + "clang_uml_version": "0.3.6-11-g75d1daa", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t20010_sequence.svg b/docs/test_cases/t20010_sequence.svg index 109f8f7a..7996747f 100644 --- a/docs/test_cases/t20010_sequence.svg +++ b/docs/test_cases/t20010_sequence.svg @@ -1,6 +1,6 @@ - + @@ -9,81 +9,81 @@ - - - - - - - - - + + + + + + + + + - - + + tmain() - + tmain() - - + + B<int> - + B<int> - - + + A - + A - - - - - - - - - - + + + + + + + + + + b1() - + a1() - + b2() - + a2() - + b3() - + a3() - + b4() - + a4() diff --git a/docs/test_cases/t20011.md b/docs/test_cases/t20011.md index 7f8a76c2..08b02de5 100644 --- a/docs/test_cases/t20011.md +++ b/docs/test_cases/t20011.md @@ -58,7 +58,7 @@ void tmain() { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.3.5-27-g81c7ce7", + "clang_uml_version": "0.3.6-11-g75d1daa", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t20011_sequence.svg b/docs/test_cases/t20011_sequence.svg index f1470f47..d16df17a 100644 --- a/docs/test_cases/t20011_sequence.svg +++ b/docs/test_cases/t20011_sequence.svg @@ -1,6 +1,6 @@ - + @@ -9,42 +9,42 @@ - - - - - - - - - - - - + + + + + + + + + + + + - - + + tmain() - + tmain() - - + + A - + A - - - - - - - - - - + + + + + + + + + + a(int) @@ -52,26 +52,26 @@ alt - + a(int) - + b(int) - + c(int) - + @@ -81,14 +81,14 @@ alt - + b(int) - + @@ -98,7 +98,7 @@ alt - + diff --git a/docs/test_cases/t20012.md b/docs/test_cases/t20012.md index 41f4e050..4bf3e5d2 100644 --- a/docs/test_cases/t20012.md +++ b/docs/test_cases/t20012.md @@ -24,6 +24,7 @@ File t20012.cc #include #include #include +#include namespace clanguml { namespace t20012 { @@ -123,6 +124,7 @@ void tmain() } } } + ``` ## Generated UML diagrams ![t20012_sequence](./t20012_sequence.svg "Lambda expression call sequence diagram test case") @@ -131,7 +133,7 @@ void tmain() { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.3.5-27-g81c7ce7", + "clang_uml_version": "0.3.6-11-g75d1daa", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, @@ -142,16 +144,16 @@ void tmain() "name": "clanguml::t20012::tmain()", "source_location": { "file": "../../tests/t20012/t20012.cc", - "line": 58 + "line": 59 }, "type": "function" }, { - "id": "871571755123349249", - "name": "clanguml::t20012::tmain()::(lambda ../../tests/t20012/t20012.cc:66:20)", + "id": "1160054139240670033", + "name": "clanguml::t20012::tmain()::(lambda ../../tests/t20012/t20012.cc:67:20)", "source_location": { "file": "../../tests/t20012/t20012.cc", - "line": 66 + "line": 67 }, "type": "class" }, @@ -160,7 +162,7 @@ void tmain() "name": "clanguml::t20012::A", "source_location": { "file": "../../tests/t20012/t20012.cc", - "line": 9 + "line": 10 }, "type": "class" }, @@ -169,16 +171,16 @@ void tmain() "name": "clanguml::t20012::B", "source_location": { "file": "../../tests/t20012/t20012.cc", - "line": 17 + "line": 18 }, "type": "class" }, { - "id": "516948909715002916", - "name": "clanguml::t20012::tmain()::(lambda ../../tests/t20012/t20012.cc:79:20)", + "id": "409124263156368546", + "name": "clanguml::t20012::tmain()::(lambda ../../tests/t20012/t20012.cc:80:20)", "source_location": { "file": "../../tests/t20012/t20012.cc", - "line": 79 + "line": 80 }, "type": "class" }, @@ -187,25 +189,25 @@ void tmain() "name": "clanguml::t20012::C", "source_location": { "file": "../../tests/t20012/t20012.cc", - "line": 27 + "line": 28 }, "type": "class" }, { - "id": "1639905845562724067", - "name": "clanguml::t20012::R", + "id": "1848989986288721876", + "name": "clanguml::t20012::R", "source_location": { "file": "../../tests/t20012/t20012.cc", - "line": 47 + "line": 48 }, "type": "class" }, { - "id": "105322683015690128", - "name": "clanguml::t20012::tmain()::(lambda ../../tests/t20012/t20012.cc:85:9)", + "id": "235908030444274749", + "name": "clanguml::t20012::tmain()::(lambda ../../tests/t20012/t20012.cc:86:9)", "source_location": { "file": "../../tests/t20012/t20012.cc", - "line": 85 + "line": 86 }, "type": "class" }, @@ -214,7 +216,7 @@ void tmain() "name": "clanguml::t20012::D", "source_location": { "file": "../../tests/t20012/t20012.cc", - "line": 35 + "line": 36 }, "type": "class" } @@ -234,27 +236,27 @@ void tmain() "scope": "normal", "source_location": { "file": "../../tests/t20012/t20012.cc", - "line": 72 + "line": 73 }, "to": { - "activity_id": "601151241333493101", - "activity_name": "clanguml::t20012::tmain()##(lambda ../../tests/t20012/t20012.cc:66:20)::operator()()", - "participant_id": "871571755123349249" + "activity_id": "2097044932440760306", + "activity_name": "clanguml::t20012::tmain()##(lambda ../../tests/t20012/t20012.cc:67:20)::operator()()", + "participant_id": "1160054139240670033" }, "type": "message" }, { "from": { - "activity_id": "601151241333493101", - "activity_name": "clanguml::t20012::tmain()::(lambda ../../tests/t20012/t20012.cc:66:20)::operator()()", - "participant_id": "871571755123349249" + "activity_id": "2097044932440760306", + "activity_name": "clanguml::t20012::tmain()::(lambda ../../tests/t20012/t20012.cc:67:20)::operator()()", + "participant_id": "1160054139240670033" }, "name": "a()", "return_type": "void", "scope": "normal", "source_location": { "file": "../../tests/t20012/t20012.cc", - "line": 67 + "line": 68 }, "to": { "activity_id": "1871432932744498976", @@ -274,7 +276,7 @@ void tmain() "scope": "normal", "source_location": { "file": "../../tests/t20012/t20012.cc", - "line": 10 + "line": 11 }, "to": { "activity_id": "1100933039353876539", @@ -294,7 +296,7 @@ void tmain() "scope": "normal", "source_location": { "file": "../../tests/t20012/t20012.cc", - "line": 12 + "line": 13 }, "to": { "activity_id": "941636185823691898", @@ -305,16 +307,16 @@ void tmain() }, { "from": { - "activity_id": "601151241333493101", - "activity_name": "clanguml::t20012::tmain()::(lambda ../../tests/t20012/t20012.cc:66:20)::operator()()", - "participant_id": "871571755123349249" + "activity_id": "2097044932440760306", + "activity_name": "clanguml::t20012::tmain()::(lambda ../../tests/t20012/t20012.cc:67:20)::operator()()", + "participant_id": "1160054139240670033" }, "name": "b()", "return_type": "void", "scope": "normal", "source_location": { "file": "../../tests/t20012/t20012.cc", - "line": 68 + "line": 69 }, "to": { "activity_id": "2142697410385270633", @@ -334,7 +336,7 @@ void tmain() "scope": "normal", "source_location": { "file": "../../tests/t20012/t20012.cc", - "line": 18 + "line": 19 }, "to": { "activity_id": "973718340784931313", @@ -354,7 +356,7 @@ void tmain() "scope": "normal", "source_location": { "file": "../../tests/t20012/t20012.cc", - "line": 20 + "line": 21 }, "to": { "activity_id": "195788529004378403", @@ -375,27 +377,27 @@ void tmain() "scope": "normal", "source_location": { "file": "../../tests/t20012/t20012.cc", - "line": 83 + "line": 84 }, "to": { - "activity_id": "435249756897748529", - "activity_name": "clanguml::t20012::tmain()##(lambda ../../tests/t20012/t20012.cc:79:20)::operator()()", - "participant_id": "516948909715002916" + "activity_id": "3346531080036149", + "activity_name": "clanguml::t20012::tmain()##(lambda ../../tests/t20012/t20012.cc:80:20)::operator()()", + "participant_id": "409124263156368546" }, "type": "message" }, { "from": { - "activity_id": "435249756897748529", - "activity_name": "clanguml::t20012::tmain()::(lambda ../../tests/t20012/t20012.cc:79:20)::operator()()", - "participant_id": "516948909715002916" + "activity_id": "3346531080036149", + "activity_name": "clanguml::t20012::tmain()::(lambda ../../tests/t20012/t20012.cc:80:20)::operator()()", + "participant_id": "409124263156368546" }, "name": "c()", "return_type": "void", "scope": "normal", "source_location": { "file": "../../tests/t20012/t20012.cc", - "line": 80 + "line": 81 }, "to": { "activity_id": "675369415318225607", @@ -415,7 +417,7 @@ void tmain() "scope": "normal", "source_location": { "file": "../../tests/t20012/t20012.cc", - "line": 28 + "line": 29 }, "to": { "activity_id": "1451821704315336057", @@ -435,7 +437,7 @@ void tmain() "scope": "normal", "source_location": { "file": "../../tests/t20012/t20012.cc", - "line": 30 + "line": 31 }, "to": { "activity_id": "1956141408799600460", @@ -446,21 +448,21 @@ void tmain() }, { "from": { - "activity_id": "435249756897748529", - "activity_name": "clanguml::t20012::tmain()::(lambda ../../tests/t20012/t20012.cc:79:20)::operator()()", - "participant_id": "516948909715002916" + "activity_id": "3346531080036149", + "activity_name": "clanguml::t20012::tmain()::(lambda ../../tests/t20012/t20012.cc:80:20)::operator()()", + "participant_id": "409124263156368546" }, "name": "operator()()", "return_type": "", "scope": "normal", "source_location": { "file": "../../tests/t20012/t20012.cc", - "line": 81 + "line": 82 }, "to": { - "activity_id": "601151241333493101", - "activity_name": "clanguml::t20012::tmain()##(lambda ../../tests/t20012/t20012.cc:66:20)::operator()()", - "participant_id": "871571755123349249" + "activity_id": "2097044932440760306", + "activity_name": "clanguml::t20012::tmain()##(lambda ../../tests/t20012/t20012.cc:67:20)::operator()()", + "participant_id": "1160054139240670033" }, "type": "message" }, @@ -476,47 +478,47 @@ void tmain() "scope": "normal", "source_location": { "file": "../../tests/t20012/t20012.cc", - "line": 87 + "line": 88 }, "to": { - "activity_id": "1003931867044486762", - "activity_name": "clanguml::t20012::R::r()", - "participant_id": "1639905845562724067" + "activity_id": "983377906480895496", + "activity_name": "clanguml::t20012::R::r()", + "participant_id": "1848989986288721876" }, "type": "message" }, { "from": { - "activity_id": "1003931867044486762", - "activity_name": "clanguml::t20012::R::r()", - "participant_id": "1639905845562724067" + "activity_id": "983377906480895496", + "activity_name": "clanguml::t20012::R::r()", + "participant_id": "1848989986288721876" }, "name": "operator()()", "return_type": "", "scope": "normal", "source_location": { "file": "../../tests/t20012/t20012.cc", - "line": 53 + "line": 54 }, "to": { - "activity_id": "31472345599504206", - "activity_name": "clanguml::t20012::tmain()##(lambda ../../tests/t20012/t20012.cc:85:9)::operator()()", - "participant_id": "105322683015690128" + "activity_id": "2085809056446194400", + "activity_name": "clanguml::t20012::tmain()##(lambda ../../tests/t20012/t20012.cc:86:9)::operator()()", + "participant_id": "235908030444274749" }, "type": "message" }, { "from": { - "activity_id": "31472345599504206", - "activity_name": "clanguml::t20012::tmain()::(lambda ../../tests/t20012/t20012.cc:85:9)::operator()()", - "participant_id": "105322683015690128" + "activity_id": "2085809056446194400", + "activity_name": "clanguml::t20012::tmain()::(lambda ../../tests/t20012/t20012.cc:86:9)::operator()()", + "participant_id": "235908030444274749" }, "name": "c()", "return_type": "void", "scope": "normal", "source_location": { "file": "../../tests/t20012/t20012.cc", - "line": 85 + "line": 86 }, "to": { "activity_id": "675369415318225607", @@ -537,7 +539,7 @@ void tmain() "scope": "normal", "source_location": { "file": "../../tests/t20012/t20012.cc", - "line": 93 + "line": 94 }, "to": { "activity_id": "1355013132527568474", diff --git a/docs/test_cases/t20012_sequence.svg b/docs/test_cases/t20012_sequence.svg index 5465098a..af4e067f 100644 --- a/docs/test_cases/t20012_sequence.svg +++ b/docs/test_cases/t20012_sequence.svg @@ -1,6 +1,6 @@ - + @@ -9,31 +9,31 @@ - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + @@ -43,122 +43,122 @@ - - + + tmain() - + tmain() - - - tmain()::(lambda ../../tests/t20012/t20012.cc:66:20) - - tmain()::(lambda ../../tests/t20012/t20012.cc:66:20) + + + tmain()::(lambda ../../tests/t20012/t20012.cc:67:20) + + tmain()::(lambda ../../tests/t20012/t20012.cc:67:20) - - + + A - + A - - + + B - + B - - - tmain()::(lambda ../../tests/t20012/t20012.cc:79:20) - - tmain()::(lambda ../../tests/t20012/t20012.cc:79:20) + + + tmain()::(lambda ../../tests/t20012/t20012.cc:80:20) + + tmain()::(lambda ../../tests/t20012/t20012.cc:80:20) - - + + C - + C - - - R<R::(lambda ../../tests/t20012/t20012.cc:85:9)> - - R<R::(lambda ../../tests/t20012/t20012.cc:85:9)> + + + R<R::(lambda ../../tests/t20012/t20012.cc:86:9)> + + R<R::(lambda ../../tests/t20012/t20012.cc:86:9)> - - - tmain()::(lambda ../../tests/t20012/t20012.cc:85:9) - - tmain()::(lambda ../../tests/t20012/t20012.cc:85:9) + + + tmain()::(lambda ../../tests/t20012/t20012.cc:86:9) + + tmain()::(lambda ../../tests/t20012/t20012.cc:86:9) - - + + D - + D - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + operator()() - + a() - + aa() - + aaa() - + b() - + bb() - + @@ -167,67 +167,67 @@ - + operator()() - + c() - + cc() - + ccc() - + operator()() - + a() - + aa() - + aaa() - + b() - + bb() - + @@ -238,29 +238,29 @@ - + r() - + operator()() - + c() - + cc() - + @@ -269,7 +269,7 @@ - + add5(int) diff --git a/docs/test_cases/t20013.md b/docs/test_cases/t20013.md index 90ed4ea9..922d5d15 100644 --- a/docs/test_cases/t20013.md +++ b/docs/test_cases/t20013.md @@ -54,7 +54,7 @@ void tmain(int argc, char **argv) { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.3.5-27-g81c7ce7", + "clang_uml_version": "0.3.6-11-g75d1daa", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t20013_sequence.svg b/docs/test_cases/t20013_sequence.svg index 23530d47..7beb1d34 100644 --- a/docs/test_cases/t20013_sequence.svg +++ b/docs/test_cases/t20013_sequence.svg @@ -1,6 +1,6 @@ - + @@ -9,47 +9,47 @@ - - - - - - - + + + + + + + - - + + tmain(int,char **) - + tmain(int,char **) - - + + B - + B - - + + A - + A - - - - - - - - + + + + + + + + b(int) - + a1(int) @@ -58,12 +58,12 @@ - + b(double) - + a2(double) @@ -72,12 +72,12 @@ - + b(const char *) - + a3(const char *) diff --git a/docs/test_cases/t20014.md b/docs/test_cases/t20014.md index 2676be4d..4843ccf6 100644 --- a/docs/test_cases/t20014.md +++ b/docs/test_cases/t20014.md @@ -89,7 +89,7 @@ namespace t20014 { { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.3.5-27-g81c7ce7", + "clang_uml_version": "0.3.6-11-g75d1daa", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t20014_sequence.svg b/docs/test_cases/t20014_sequence.svg index c44aff6a..0e71535a 100644 --- a/docs/test_cases/t20014_sequence.svg +++ b/docs/test_cases/t20014_sequence.svg @@ -1,6 +1,6 @@ - + @@ -9,56 +9,56 @@ - - - - - - - - + + + + + + + + - - + + tmain() - + tmain() - - + + B - + B - - + + A - + A - - + + C<B,int> - + C<B,int> - - - - - - - - - + + + + + + + + + b1(int,int) - + a1(int,int) @@ -67,12 +67,12 @@ - + b2(int,int) - + a2(int,int) @@ -81,17 +81,17 @@ - + c1(int,int) - + b1(int,int) - + a1(int,int) diff --git a/docs/test_cases/t20015.md b/docs/test_cases/t20015.md index 27b49dca..5fb8a842 100644 --- a/docs/test_cases/t20015.md +++ b/docs/test_cases/t20015.md @@ -70,7 +70,7 @@ void tmain() { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.3.5-27-g81c7ce7", + "clang_uml_version": "0.3.6-11-g75d1daa", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t20015_sequence.svg b/docs/test_cases/t20015_sequence.svg index 3911d2af..5f3f708d 100644 --- a/docs/test_cases/t20015_sequence.svg +++ b/docs/test_cases/t20015_sequence.svg @@ -1,6 +1,6 @@ - + @@ -9,25 +9,25 @@ - - + + - - + + tmain() - + tmain() - - + + B - + B - - - + + + setup_a(std::shared_ptr<detail::A> &) diff --git a/docs/test_cases/t20016.md b/docs/test_cases/t20016.md index 0cec7634..ffcc5de4 100644 --- a/docs/test_cases/t20016.md +++ b/docs/test_cases/t20016.md @@ -52,7 +52,7 @@ void tmain() { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.3.5-27-g81c7ce7", + "clang_uml_version": "0.3.6-11-g75d1daa", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t20016_sequence.svg b/docs/test_cases/t20016_sequence.svg index bf5d47da..368dd5e6 100644 --- a/docs/test_cases/t20016_sequence.svg +++ b/docs/test_cases/t20016_sequence.svg @@ -1,6 +1,6 @@ - + @@ -9,53 +9,53 @@ - - - - - + + + + + - - + + tmain() - + tmain() - - + + B<long> - + B<long> - - + + A - + A - - - - - - + + + + + + b1(long) - + a1(int) - + b2(long) - + a2(const long &) diff --git a/docs/test_cases/t20017.md b/docs/test_cases/t20017.md index 89f4609e..8f58260b 100644 --- a/docs/test_cases/t20017.md +++ b/docs/test_cases/t20017.md @@ -49,7 +49,7 @@ int tmain() { return b2(a1(a2(a3(1, 2), b1(3, 4)), 5), 6); } { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.3.5-27-g81c7ce7", + "clang_uml_version": "0.3.6-11-g75d1daa", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t20017_sequence.svg b/docs/test_cases/t20017_sequence.svg index 05c39eab..32d144b5 100644 --- a/docs/test_cases/t20017_sequence.svg +++ b/docs/test_cases/t20017_sequence.svg @@ -1,6 +1,6 @@ - + @@ -9,65 +9,65 @@ - - - - - - + + + + + + - + t20017.cc - + t20017.cc - + include/t20017_a.h - + include/t20017_a.h - + include/t20017_b.h - + include/t20017_b.h - - - - - - + + + + + + tmain() - + a3(int,int) - + b1(int,int) - + a2(int,int) - + a1(int,int) - + b2<int>(int,int) diff --git a/docs/test_cases/t20018.md b/docs/test_cases/t20018.md index 7d51c651..072b0912 100644 --- a/docs/test_cases/t20018.md +++ b/docs/test_cases/t20018.md @@ -54,7 +54,7 @@ void tmain() { Answer>::print(); } { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.3.5-27-g81c7ce7", + "clang_uml_version": "0.3.6-11-g75d1daa", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t20018_sequence.svg b/docs/test_cases/t20018_sequence.svg index f41fedb9..128e973f 100644 --- a/docs/test_cases/t20018_sequence.svg +++ b/docs/test_cases/t20018_sequence.svg @@ -1,6 +1,6 @@ - + @@ -9,14 +9,14 @@ - - - - - - - - + + + + + + + + @@ -25,93 +25,93 @@ - - + + tmain() - + tmain() - - + + Answer<Factorial<5>,120> - + Answer<Factorial<5>,120> - - + + Factorial<5> - + Factorial<5> - - + + Factorial<4> - + Factorial<4> - - + + Factorial<3> - + Factorial<3> - - + + Factorial<2> - + Factorial<2> - - + + Factorial<1> - + Factorial<1> - - + + Factorial<0> - + Factorial<0> - - - - - - - - - + + + + + + + + + print() - + print(int) - + print(int) - + print(int) - + print(int) - + print(int) - + print(int) diff --git a/docs/test_cases/t20019.md b/docs/test_cases/t20019.md index 322fc674..9246707e 100644 --- a/docs/test_cases/t20019.md +++ b/docs/test_cases/t20019.md @@ -61,7 +61,7 @@ void tmain() { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.3.5-27-g81c7ce7", + "clang_uml_version": "0.3.6-11-g75d1daa", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t20019_sequence.svg b/docs/test_cases/t20019_sequence.svg index 54dd6cab..4079b70c 100644 --- a/docs/test_cases/t20019_sequence.svg +++ b/docs/test_cases/t20019_sequence.svg @@ -1,6 +1,6 @@ - + @@ -9,95 +9,95 @@ - - - - - - - - - + + + + + + + + + - - + + tmain() - + tmain() - - + + Base<D1> - + Base<D1> - - + + D1 - + D1 - - + + Base<D2> - + Base<D2> - - + + D2 - + D2 - - - - - - - - - - + + + + + + + + + + name() - + impl() - + name() - + impl() - + name() - + impl() - + name() - + impl() diff --git a/docs/test_cases/t20020.md b/docs/test_cases/t20020.md index 134aff71..7ab3223f 100644 --- a/docs/test_cases/t20020.md +++ b/docs/test_cases/t20020.md @@ -113,7 +113,7 @@ int tmain() { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.3.5-27-g81c7ce7", + "clang_uml_version": "0.3.6-11-g75d1daa", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t20020_sequence.svg b/docs/test_cases/t20020_sequence.svg index 1503d4e7..6c958712 100644 --- a/docs/test_cases/t20020_sequence.svg +++ b/docs/test_cases/t20020_sequence.svg @@ -1,6 +1,6 @@ - + @@ -9,78 +9,78 @@ - - - - - - - - - - - - - - + + + + + + + + + + + + + + - + - - - + + + - - + + tmain() - + tmain() - - + + A - + A - - + + C - + C - - + + B - + B - - + + D<int> - + D<int> - - - - - - - - - - - - - + + + + + + + + + + + + + alt - + a1() @@ -91,7 +91,7 @@ alt - + [ @@ -100,7 +100,7 @@ - + [ @@ -109,7 +109,7 @@ - + b1() @@ -117,7 +117,7 @@ - + [ @@ -126,21 +126,21 @@ - + b2() - + a4() - + log() @@ -148,7 +148,7 @@ alt - + c1() @@ -156,7 +156,7 @@ alt - + @@ -169,7 +169,7 @@ - + @@ -179,7 +179,7 @@ alt - + d1(int,int) diff --git a/docs/test_cases/t20021.md b/docs/test_cases/t20021.md index 8d1bc037..5ebf091d 100644 --- a/docs/test_cases/t20021.md +++ b/docs/test_cases/t20021.md @@ -84,7 +84,7 @@ int tmain() { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.3.5-27-g81c7ce7", + "clang_uml_version": "0.3.6-11-g75d1daa", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t20021_sequence.svg b/docs/test_cases/t20021_sequence.svg index d5283d4b..95733f13 100644 --- a/docs/test_cases/t20021_sequence.svg +++ b/docs/test_cases/t20021_sequence.svg @@ -1,6 +1,6 @@ - + @@ -9,74 +9,74 @@ - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + - - + + tmain() - + tmain() - - + + C - + C - - + + A - + A - - + + B - + B - - - - - - - - - - - - + + + + + + + + + + + + loop - + [ c4() ] - + @@ -89,7 +89,7 @@ - + a3() @@ -102,7 +102,7 @@ loop - + [ @@ -111,7 +111,7 @@ - + [ @@ -120,7 +120,7 @@ - + [ @@ -129,14 +129,14 @@ - + a1() - + [ @@ -148,7 +148,7 @@ loop - + b2() @@ -158,7 +158,7 @@ loop - + [ @@ -167,7 +167,7 @@ - + b2() diff --git a/docs/test_cases/t20022.md b/docs/test_cases/t20022.md index 0e88af64..64c1d500 100644 --- a/docs/test_cases/t20022.md +++ b/docs/test_cases/t20022.md @@ -64,7 +64,7 @@ int tmain() { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.3.5-27-g81c7ce7", + "clang_uml_version": "0.3.6-11-g75d1daa", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t20022_sequence.svg b/docs/test_cases/t20022_sequence.svg index 0b0877d4..737ee50b 100644 --- a/docs/test_cases/t20022_sequence.svg +++ b/docs/test_cases/t20022_sequence.svg @@ -1,6 +1,6 @@ - + @@ -9,39 +9,39 @@ - - - + + + - - + + tmain() - + tmain() - - + + A - + A - - + + B - + B - - - - + + + + a() - + b() diff --git a/docs/test_cases/t20023.md b/docs/test_cases/t20023.md index b08cecf3..ae6063af 100644 --- a/docs/test_cases/t20023.md +++ b/docs/test_cases/t20023.md @@ -67,7 +67,7 @@ int tmain() { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.3.5-27-g81c7ce7", + "clang_uml_version": "0.3.6-11-g75d1daa", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t20023_sequence.svg b/docs/test_cases/t20023_sequence.svg index d6872f78..49c29075 100644 --- a/docs/test_cases/t20023_sequence.svg +++ b/docs/test_cases/t20023_sequence.svg @@ -1,6 +1,6 @@ - + @@ -9,37 +9,37 @@ - - - - - - - + + + + + + + - - + + tmain() - + tmain() - - + + A - + A - - - - - - - + + + + + + + a() @@ -47,7 +47,7 @@ try - + @@ -60,7 +60,7 @@ [std::runtime_error &] - + @@ -73,7 +73,7 @@ [std::logic_error &] - + @@ -86,7 +86,7 @@ [...] - + diff --git a/docs/test_cases/t20024.md b/docs/test_cases/t20024.md index 1865e654..6f50ca24 100644 --- a/docs/test_cases/t20024.md +++ b/docs/test_cases/t20024.md @@ -92,7 +92,7 @@ int tmain() { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.3.5-27-g81c7ce7", + "clang_uml_version": "0.3.6-11-g75d1daa", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t20024_sequence.svg b/docs/test_cases/t20024_sequence.svg index f9410605..fed502e9 100644 --- a/docs/test_cases/t20024_sequence.svg +++ b/docs/test_cases/t20024_sequence.svg @@ -1,6 +1,6 @@ - + @@ -9,23 +9,23 @@ - - - - - - - - - - - - + + + + + + + + + + + + - + @@ -33,36 +33,36 @@ - - + + tmain() - + tmain() - - + + A - + A - - + + B - + B - - - - - - - - - - - - + + + + + + + + + + + + select(enum_a) @@ -72,7 +72,7 @@ switch [zero] - + @@ -85,7 +85,7 @@ [one] - + @@ -98,7 +98,7 @@ [two] - + @@ -111,7 +111,7 @@ [default] - + @@ -124,7 +124,7 @@ - + select(colors) @@ -134,7 +134,7 @@ switch [enum colors::red] - + @@ -143,7 +143,7 @@ [enum colors::orange] - + @@ -152,7 +152,7 @@ [enum colors::green] - + @@ -161,7 +161,7 @@ [default] - + diff --git a/docs/test_cases/t20025.md b/docs/test_cases/t20025.md index 2680d9e3..6e79758a 100644 --- a/docs/test_cases/t20025.md +++ b/docs/test_cases/t20025.md @@ -72,7 +72,7 @@ int tmain() { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.3.5-27-g81c7ce7", + "clang_uml_version": "0.3.6-11-g75d1daa", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t20025_sequence.svg b/docs/test_cases/t20025_sequence.svg index 64005edb..d85025e3 100644 --- a/docs/test_cases/t20025_sequence.svg +++ b/docs/test_cases/t20025_sequence.svg @@ -1,6 +1,6 @@ - + @@ -9,41 +9,41 @@ - - - - + + + + - - + + tmain() - + tmain() - - + + A - + A - - + + add(int,int) - + add(int,int) - - - - - + + + + + a() - + @@ -52,7 +52,7 @@ - + diff --git a/docs/test_cases/t20026.md b/docs/test_cases/t20026.md index 69c7f6fd..7fe3e904 100644 --- a/docs/test_cases/t20026.md +++ b/docs/test_cases/t20026.md @@ -52,7 +52,7 @@ int tmain() { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.3.5-27-g81c7ce7", + "clang_uml_version": "0.3.6-11-g75d1daa", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t20026_sequence.svg b/docs/test_cases/t20026_sequence.svg index 81cf9138..b7e63316 100644 --- a/docs/test_cases/t20026_sequence.svg +++ b/docs/test_cases/t20026_sequence.svg @@ -1,6 +1,6 @@ - + @@ -9,25 +9,25 @@ - - + + - - + + tmain() - + tmain() - - + + A - + A - - - + + + a() diff --git a/docs/test_cases/t20027.md b/docs/test_cases/t20027.md index 0245d660..e9633509 100644 --- a/docs/test_cases/t20027.md +++ b/docs/test_cases/t20027.md @@ -51,7 +51,7 @@ void tmain() { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.3.5-27-g81c7ce7", + "clang_uml_version": "0.3.6-11-g75d1daa", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t20027_sequence.svg b/docs/test_cases/t20027_sequence.svg index 531f91d8..8b62b682 100644 --- a/docs/test_cases/t20027_sequence.svg +++ b/docs/test_cases/t20027_sequence.svg @@ -1,6 +1,6 @@ - + @@ -9,25 +9,25 @@ - - + + - - + + tmain() - + tmain() - - + + A - + A - - - + + + a() diff --git a/docs/test_cases/t20028.md b/docs/test_cases/t20028.md index 7941e0a6..610685a1 100644 --- a/docs/test_cases/t20028.md +++ b/docs/test_cases/t20028.md @@ -61,7 +61,7 @@ int tmain() { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.3.5-27-g81c7ce7", + "clang_uml_version": "0.3.6-11-g75d1daa", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t20028_sequence.svg b/docs/test_cases/t20028_sequence.svg index 06a9bf66..87a14f0e 100644 --- a/docs/test_cases/t20028_sequence.svg +++ b/docs/test_cases/t20028_sequence.svg @@ -1,6 +1,6 @@ - + @@ -9,50 +9,50 @@ - - - - - - + + + + + + - - + + tmain() - + tmain() - - + + A - + A - - - - - + + + + + alt - + a() - + b() - + c() @@ -60,7 +60,7 @@ - + d() diff --git a/docs/test_cases/t20029.md b/docs/test_cases/t20029.md index b3a8b4ca..e9595240 100644 --- a/docs/test_cases/t20029.md +++ b/docs/test_cases/t20029.md @@ -105,7 +105,7 @@ int tmain() { "diagram_type": "sequence", "metadata": { - "clang_uml_version": "0.3.5-27-g81c7ce7", + "clang_uml_version": "0.3.6-11-g75d1daa", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t20029_sequence.svg b/docs/test_cases/t20029_sequence.svg index 7f838df8..6ad19b75 100644 --- a/docs/test_cases/t20029_sequence.svg +++ b/docs/test_cases/t20029_sequence.svg @@ -1,6 +1,6 @@ - + @@ -9,60 +9,60 @@ - - - - - - - - - - - + + + + + + + + + + + - - + + tmain() - + tmain() - - + + Encoder<Retrier<ConnectionPool>> - + Encoder<Retrier<ConnectionPool>> - - + + Retrier<ConnectionPool> - + Retrier<ConnectionPool> - - + + ConnectionPool - + ConnectionPool - - + + encode_b64(std::string &&) - + encode_b64(std::string &&) - - - - - - - - + + + + + + + + connect() @@ -73,21 +73,21 @@ alt - + [ send(std::string &&) ] - + encode(std::string &&) - + @@ -97,7 +97,7 @@ - + send(std::string &&) @@ -108,7 +108,7 @@ alt - + [ diff --git a/docs/test_cases/t30001.md b/docs/test_cases/t30001.md index d9050ea4..ad04cb83 100644 --- a/docs/test_cases/t30001.md +++ b/docs/test_cases/t30001.md @@ -191,7 +191,7 @@ namespace BB { } ], "metadata": { - "clang_uml_version": "0.3.5-27-g81c7ce7", + "clang_uml_version": "0.3.6-11-g75d1daa", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t30001_package.svg b/docs/test_cases/t30001_package.svg index 5511761b..571dced3 100644 --- a/docs/test_cases/t30001_package.svg +++ b/docs/test_cases/t30001_package.svg @@ -1,6 +1,6 @@ - + @@ -9,67 +9,67 @@ - - + + A - - + + AA - - + + B - - + + AA - - + + AAA - - + + BBB - - + + BB - - + + AAA - - + + BBB - - + + BB - + A AAA note... - + This is namespace AA in namespace A - + This is namespace AA in namespace B - - - + + + diff --git a/docs/test_cases/t30002.md b/docs/test_cases/t30002.md index 6e6e6692..ae235a47 100644 --- a/docs/test_cases/t30002.md +++ b/docs/test_cases/t30002.md @@ -413,7 +413,7 @@ template std::map> cm() } ], "metadata": { - "clang_uml_version": "0.3.5-27-g81c7ce7", + "clang_uml_version": "0.3.6-11-g75d1daa", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t30002_package.svg b/docs/test_cases/t30002_package.svg index 396260dc..f1f4aafd 100644 --- a/docs/test_cases/t30002_package.svg +++ b/docs/test_cases/t30002_package.svg @@ -1,6 +1,6 @@ - + @@ -9,118 +9,118 @@ - - + + A - - + + AA - - + + B - - + + BB - - + + A1 - - + + A2 - - + + A3 - - + + A4 - - + + A5 - - + + A6 - - + + A7 - - + + A8 - - + + A9 - - + + A10 - - + + A11 - - + + A12 - - + + A13 - - + + A14 - - + + A15 - - + + A16 - - + + A17 - - + + A18 - - + + BBB diff --git a/docs/test_cases/t30003.md b/docs/test_cases/t30003.md index 407d58b1..afabb8ff 100644 --- a/docs/test_cases/t30003.md +++ b/docs/test_cases/t30003.md @@ -129,7 +129,7 @@ class B : public ns1::ns2::Anon { }; } ], "metadata": { - "clang_uml_version": "0.3.5-27-g81c7ce7", + "clang_uml_version": "0.3.6-11-g75d1daa", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t30003_package.svg b/docs/test_cases/t30003_package.svg index 4ec42dda..a94afdcf 100644 --- a/docs/test_cases/t30003_package.svg +++ b/docs/test_cases/t30003_package.svg @@ -1,6 +1,6 @@ - + @@ -9,35 +9,35 @@ - - + + ns1 - - + + ns3 «deprecated» - - + + ns1 - - + + ns2_v1_0_0 - - + + ns2_v0_9_0 «deprecated» - - + + ns2 diff --git a/docs/test_cases/t30004.md b/docs/test_cases/t30004.md index 9a212228..66db1a16 100644 --- a/docs/test_cases/t30004.md +++ b/docs/test_cases/t30004.md @@ -142,7 +142,7 @@ namespace CCC { } ], "metadata": { - "clang_uml_version": "0.3.5-27-g81c7ce7", + "clang_uml_version": "0.3.6-11-g75d1daa", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t30004_package.svg b/docs/test_cases/t30004_package.svg index 3f1d5fde..695ad964 100644 --- a/docs/test_cases/t30004_package.svg +++ b/docs/test_cases/t30004_package.svg @@ -1,6 +1,6 @@ - + @@ -9,46 +9,46 @@ - - + + A - + Package AAA. - + Package BBB. - + CCCC package note. - + We skipped DDD. - - + + AAA - - + + BBB - - + + CCC - - + + EEE - - - - + + + + diff --git a/docs/test_cases/t30005.md b/docs/test_cases/t30005.md index decc601e..9853ef8d 100644 --- a/docs/test_cases/t30005.md +++ b/docs/test_cases/t30005.md @@ -168,7 +168,7 @@ struct C2 { } ], "metadata": { - "clang_uml_version": "0.3.5-27-g81c7ce7", + "clang_uml_version": "0.3.6-11-g75d1daa", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t30005_package.svg b/docs/test_cases/t30005_package.svg index 2a3abc8b..08d81236 100644 --- a/docs/test_cases/t30005_package.svg +++ b/docs/test_cases/t30005_package.svg @@ -1,6 +1,6 @@ - + @@ -9,48 +9,48 @@ - - + + A - - + + AA - - + + B - - + + BB - - + + C - - + + CC - - + + AAA - - + + BBB - - + + CCC diff --git a/docs/test_cases/t30006.md b/docs/test_cases/t30006.md index e676b6db..6f651137 100644 --- a/docs/test_cases/t30006.md +++ b/docs/test_cases/t30006.md @@ -94,7 +94,7 @@ struct A2 { } ], "metadata": { - "clang_uml_version": "0.3.5-27-g81c7ce7", + "clang_uml_version": "0.3.6-11-g75d1daa", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t30006_package.svg b/docs/test_cases/t30006_package.svg index db8b6e76..b4127846 100644 --- a/docs/test_cases/t30006_package.svg +++ b/docs/test_cases/t30006_package.svg @@ -1,6 +1,6 @@ - + @@ -9,25 +9,25 @@ - - + + B - - + + A - - + + C - + Top A note. - + diff --git a/docs/test_cases/t30007.md b/docs/test_cases/t30007.md index 8be0029c..2df303e6 100644 --- a/docs/test_cases/t30007.md +++ b/docs/test_cases/t30007.md @@ -115,7 +115,7 @@ struct A2 { } ], "metadata": { - "clang_uml_version": "0.3.5-27-g81c7ce7", + "clang_uml_version": "0.3.6-11-g75d1daa", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t30007_package.svg b/docs/test_cases/t30007_package.svg index a8b3b47a..9c7f008c 100644 --- a/docs/test_cases/t30007_package.svg +++ b/docs/test_cases/t30007_package.svg @@ -1,6 +1,6 @@ - + @@ -9,30 +9,30 @@ - - + + A - - + + B - - + + AA - - + + C - + Compare layout with t30006. - + diff --git a/docs/test_cases/t30008.md b/docs/test_cases/t30008.md index f9032389..50948921 100644 --- a/docs/test_cases/t30008.md +++ b/docs/test_cases/t30008.md @@ -191,7 +191,7 @@ struct FF { } ], "metadata": { - "clang_uml_version": "0.3.5-27-g81c7ce7", + "clang_uml_version": "0.3.6-11-g75d1daa", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t30008_package.svg b/docs/test_cases/t30008_package.svg index 1d600cf5..ab6a178e 100644 --- a/docs/test_cases/t30008_package.svg +++ b/docs/test_cases/t30008_package.svg @@ -1,6 +1,6 @@ - + @@ -9,43 +9,43 @@ - - + + dependants - - + + dependencies - - + + A - - + + B - - + + C - - + + D - - + + E - - + + F diff --git a/docs/test_cases/t30009.md b/docs/test_cases/t30009.md index 00fcadc3..a893e666 100644 --- a/docs/test_cases/t30009.md +++ b/docs/test_cases/t30009.md @@ -169,7 +169,7 @@ namespace D { } ], "metadata": { - "clang_uml_version": "0.3.5-27-g81c7ce7", + "clang_uml_version": "0.3.6-11-g75d1daa", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t30009_package.svg b/docs/test_cases/t30009_package.svg index 55f64270..de51fcd3 100644 --- a/docs/test_cases/t30009_package.svg +++ b/docs/test_cases/t30009_package.svg @@ -1,6 +1,6 @@ - + @@ -9,53 +9,53 @@ - - + + One - - + + Two - - + + B - - + + D - - + + A - - + + C - - + + A - - + + B - - + + C - - + + D diff --git a/docs/test_cases/t30010.md b/docs/test_cases/t30010.md index 44fa5219..1865545c 100644 --- a/docs/test_cases/t30010.md +++ b/docs/test_cases/t30010.md @@ -86,7 +86,7 @@ App app; } ], "metadata": { - "clang_uml_version": "0.3.5-27-g81c7ce7", + "clang_uml_version": "0.3.6-11-g75d1daa", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t30011.md b/docs/test_cases/t30011.md index fc0b2bb7..44c63344 100644 --- a/docs/test_cases/t30011.md +++ b/docs/test_cases/t30011.md @@ -75,7 +75,7 @@ struct t30011_App app; } ], "metadata": { - "clang_uml_version": "0.3.5-27-g81c7ce7", + "clang_uml_version": "0.3.6-11-g75d1daa", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t40001.md b/docs/test_cases/t40001.md index 69536a74..7921d30a 100644 --- a/docs/test_cases/t40001.md +++ b/docs/test_cases/t40001.md @@ -101,7 +101,7 @@ diagrams: } ], "metadata": { - "clang_uml_version": "0.3.5-27-g81c7ce7", + "clang_uml_version": "0.3.6-11-g75d1daa", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t40001_include.svg b/docs/test_cases/t40001_include.svg index 6d3035aa..1ee73159 100644 --- a/docs/test_cases/t40001_include.svg +++ b/docs/test_cases/t40001_include.svg @@ -1,6 +1,6 @@ - + @@ -9,43 +9,43 @@ - + src - + include - + lib1 - - + + t40001.cc - - + + t40001_include1.h - - + + lib1.h - + string - + vector - + yaml-cpp/yaml.h - + This is a lib1 include dir - + This is a t40001_include1.h include file @@ -60,7 +60,7 @@ - - + + diff --git a/docs/test_cases/t40002.md b/docs/test_cases/t40002.md index 963380b6..338b104a 100644 --- a/docs/test_cases/t40002.md +++ b/docs/test_cases/t40002.md @@ -119,7 +119,7 @@ diagrams: } ], "metadata": { - "clang_uml_version": "0.3.5-27-g81c7ce7", + "clang_uml_version": "0.3.6-11-g75d1daa", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t40002_include.svg b/docs/test_cases/t40002_include.svg index 2f721d25..e4eab262 100644 --- a/docs/test_cases/t40002_include.svg +++ b/docs/test_cases/t40002_include.svg @@ -1,6 +1,6 @@ - + @@ -9,46 +9,46 @@ - + src - + lib1 - + lib2 - + include - + lib1 - + lib2 - - + + t40002.cc - - + + lib1.cc - - + + lib2.cc - - + + lib1.h - - + + lib2.h diff --git a/docs/test_cases/t40003.md b/docs/test_cases/t40003.md index 0549c80a..0c74e46f 100644 --- a/docs/test_cases/t40003.md +++ b/docs/test_cases/t40003.md @@ -145,7 +145,7 @@ diagrams: } ], "metadata": { - "clang_uml_version": "0.3.5-27-g81c7ce7", + "clang_uml_version": "0.3.6-11-g75d1daa", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, diff --git a/docs/test_cases/t40003_include.svg b/docs/test_cases/t40003_include.svg index ece2b068..a1d85429 100644 --- a/docs/test_cases/t40003_include.svg +++ b/docs/test_cases/t40003_include.svg @@ -1,6 +1,6 @@ - + @@ -9,66 +9,66 @@ - + src - + dependants - + dependencies - + include - + dependants - + dependencies - - + + t1.cc - - + + t2.cc - - + + t3.h - - + + t2.h - - + + t1.h - - + + t3.h - - + + t2.h - - + + t1.h - - + + t5.h diff --git a/docs/troubleshooting.md b/docs/troubleshooting.md index 2ffae1e8..26a02931 100644 --- a/docs/troubleshooting.md +++ b/docs/troubleshooting.md @@ -128,7 +128,7 @@ $ clang-uml --add-compile-flag -Wno-implicit-const-int-float-conversion \ Please note that if your `compile_commands.json` already contains - for instance `-Wshadow` - then you also have to remove it, i.e.: -``` +```yaml add_compile_flags: - -Wno-implicit-const-int-float-conversion - -Wno-shadow diff --git a/src/class_diagram/generators/json/class_diagram_generator.cc b/src/class_diagram/generators/json/class_diagram_generator.cc index c900e67e..73c19aa1 100644 --- a/src/class_diagram/generators/json/class_diagram_generator.cc +++ b/src/class_diagram/generators/json/class_diagram_generator.cc @@ -54,12 +54,19 @@ void to_json(nlohmann::json &j, const class_method &c) { j = dynamic_cast(c); - j["is_static"] = c.is_static(); - j["is_const"] = c.is_const(); - j["is_defaulted"] = c.is_defaulted(); j["is_pure_virtual"] = c.is_pure_virtual(); j["is_virtual"] = c.is_virtual(); - j["is_implicit"] = c.is_implicit(); + j["is_const"] = c.is_const(); + j["is_defaulted"] = c.is_defaulted(); + j["is_deleted"] = c.is_deleted(); + j["is_static"] = c.is_static(); + j["is_noexcept"] = c.is_noexcept(); + j["is_constexpr"] = c.is_constexpr(); + j["is_consteval"] = c.is_consteval(); + j["is_constructor"] = c.is_constructor(); + j["is_move_assignment"] = c.is_move_assignment(); + j["is_copy_assignment"] = c.is_copy_assignment(); + j["is_operator"] = c.is_operator(); j["parameters"] = c.parameters(); } diff --git a/src/class_diagram/generators/plantuml/class_diagram_generator.cc b/src/class_diagram/generators/plantuml/class_diagram_generator.cc index 59f831b5..d8db9b7b 100644 --- a/src/class_diagram/generators/plantuml/class_diagram_generator.cc +++ b/src/class_diagram/generators/plantuml/class_diagram_generator.cc @@ -123,10 +123,6 @@ void generator::generate(const class_ &c, std::ostream &ostr) const { namespace plantuml_common = clanguml::common::generators::plantuml; - constexpr auto kAbbreviatedMethodArgumentsLength{15}; - - const auto &uns = m_config.using_namespace(); - std::string class_type{"class"}; if (c.is_abstract()) class_type = "abstract"; @@ -149,64 +145,11 @@ void generator::generate(const class_ &c, std::ostream &ostr) const // // Process methods // - for (const auto &m : c.methods()) { - if (!m_model.should_include(m.access())) - continue; - - print_debug(m, ostr); - - if (m.is_pure_virtual()) - ostr << "{abstract} "; - - if (m.is_static()) - ostr << "{static} "; - - std::string type{ - uns.relative(m_config.simplify_template_type(m.type()))}; - - ostr << plantuml_common::to_plantuml(m.access()) << m.name(); - - if (!m.template_params().empty()) { - m.render_template_params(ostr, m_config.using_namespace(), false); - } - - ostr << "("; - if (m_config.generate_method_arguments() != - config::method_arguments::none) { - std::vector params; - std::transform(m.parameters().cbegin(), m.parameters().cend(), - std::back_inserter(params), [this](const auto &mp) { - return m_config.simplify_template_type( - mp.to_string(m_config.using_namespace())); - }); - auto args_string = fmt::format("{}", fmt::join(params, ", ")); - if (m_config.generate_method_arguments() == - config::method_arguments::abbreviated) { - args_string = clanguml::util::abbreviate( - args_string, kAbbreviatedMethodArgumentsLength); - } - ostr << args_string; - } - ostr << ")"; - - if (m.is_const()) - ostr << " const"; - - assert(!(m.is_pure_virtual() && m.is_defaulted())); - - if (m.is_pure_virtual()) - ostr << " = 0"; - - if (m.is_defaulted()) - ostr << " = default"; - - ostr << " : " << type; - - if (m_config.generate_links) { - generate_link(ostr, m); - } - - ostr << '\n'; + if (m_config.group_methods()) { + generate_methods(group_methods(c.methods()), ostr); + } + else { + generate_methods(c.methods(), ostr); } // @@ -216,71 +159,41 @@ void generator::generate(const class_ &c, std::ostream &ostr) const std::set rendered_relations; std::stringstream all_relations_str; - std::set unique_relations; for (const auto &r : c.relationships()) { if (!m_model.should_include(r.type())) continue; - LOG_DBG("Processing relationship {}", - plantuml_common::to_plantuml(r.type(), r.style())); - - std::string destination; try { - auto target_element = m_model.get(r.destination()); - if (!target_element.has_value()) - throw error::uml_alias_missing{ - fmt::format("Missing element in the model for ID: {}", - r.destination())}; - - destination = target_element.value().full_name(false); - - if (util::starts_with(destination, std::string{"::"})) - destination = destination.substr(2, destination.size()); - - std::string puml_relation; - if (!r.multiplicity_source().empty()) - puml_relation += "\"" + r.multiplicity_source() + "\" "; - - puml_relation += plantuml_common::to_plantuml(r.type(), r.style()); - - if (!r.multiplicity_destination().empty()) - puml_relation += " \"" + r.multiplicity_destination() + "\""; - - if (!r.label().empty()) { - rendered_relations.emplace(r.label()); - } + generate_relationship(r, rendered_relations); } catch (error::uml_alias_missing &e) { LOG_DBG("Skipping {} relation from {} to {} due " "to: {}", plantuml_common::to_plantuml(r.type(), r.style()), - c.full_name(), destination, e.what()); + c.full_name(), r.destination(), e.what()); } } // // Process members // - for (const auto &m : c.members()) { - if (!m_model.should_include(m.access())) + std::vector members{ + c.members()}; + + sort_class_elements(members); + + if (m_config.group_methods()) + ostr << "__\n"; + + for (const auto &m : members) { + if (!m_model.should_include(m)) continue; if (!m_config.include_relations_also_as_members() && rendered_relations.find(m.name()) != rendered_relations.end()) continue; - print_debug(m, ostr); - - if (m.is_static()) - ostr << "{static} "; - - ostr << plantuml_common::to_plantuml(m.access()) << m.name() << " : " - << render_name( - uns.relative(m_config.simplify_template_type(m.type()))); - - if (m_config.generate_links) { - generate_link(ostr, m); - } + generate_member(m, ostr); ostr << '\n'; } @@ -296,6 +209,162 @@ void generator::generate(const class_ &c, std::ostream &ostr) const generate_member_notes(ostr, method, c.alias()); } +void generator::generate_methods( + const method_groups_t &methods, std::ostream &ostr) const +{ + bool is_first_non_empty_group{true}; + + for (const auto &group : method_groups_) { + const auto &group_methods = methods.at(group); + if (!group_methods.empty()) { + if (!is_first_non_empty_group) + ostr << "..\n"; + is_first_non_empty_group = false; + generate_methods(group_methods, ostr); + } + } +} + +void generator::generate_methods( + const std::vector &methods, std::ostream &ostr) const +{ + auto sorted_methods = methods; + sort_class_elements(sorted_methods); + + for (const auto &m : sorted_methods) { + if (!m_model.should_include(m)) + continue; + + generate_method(m, ostr); + + ostr << '\n'; + } +} + +generator::method_groups_t generator::group_methods( + const std::vector &methods) const +{ + std::map> result; + + // First get rid of methods which don't pass the filters + std::vector filtered_methods; + std::copy_if(methods.cbegin(), methods.cend(), + std::back_inserter(filtered_methods), + [this](auto &m) { return m_model.should_include(m); }); + + for (const auto &g : method_groups_) { + result[g] = {}; + } + + for (const auto &m : filtered_methods) { + if (m.is_constructor() || m.is_destructor()) { + result["constructors"].push_back(m); + } + else if (m.is_copy_assignment() || m.is_move_assignment()) { + result["assignment"].push_back(m); + } + else if (m.is_operator()) { + result["operators"].push_back(m); + } + else { + result["other"].push_back(m); + } + } + + return result; +} + +void generator::generate_method( + const class_diagram::model::class_method &m, std::ostream &ostr) const +{ + namespace plantuml_common = clanguml::common::generators::plantuml; + const auto &uns = m_config.using_namespace(); + + constexpr auto kAbbreviatedMethodArgumentsLength{15}; + + print_debug(m, ostr); + + if (m.is_pure_virtual()) + ostr << "{abstract} "; + + if (m.is_static()) + ostr << "{static} "; + + std::string type{uns.relative(m_config.simplify_template_type(m.type()))}; + + ostr << plantuml_common::to_plantuml(m.access()) << m.name(); + + if (!m.template_params().empty()) { + m.render_template_params(ostr, m_config.using_namespace(), false); + } + + ostr << "("; + if (m_config.generate_method_arguments() != + config::method_arguments::none) { + std::vector params; + std::transform(m.parameters().cbegin(), m.parameters().cend(), + std::back_inserter(params), [this](const auto &mp) { + return m_config.simplify_template_type( + mp.to_string(m_config.using_namespace())); + }); + auto args_string = fmt::format("{}", fmt::join(params, ", ")); + if (m_config.generate_method_arguments() == + config::method_arguments::abbreviated) { + args_string = clanguml::util::abbreviate( + args_string, kAbbreviatedMethodArgumentsLength); + } + ostr << args_string; + } + ostr << ")"; + + if (m.is_constexpr()) + ostr << " constexpr"; + else if (m.is_consteval()) + ostr << " consteval"; + + if (m.is_const()) + ostr << " const"; + + if (m.is_noexcept()) + ostr << " noexcept"; + + assert(!(m.is_pure_virtual() && m.is_defaulted())); + + if (m.is_pure_virtual()) + ostr << " = 0"; + + if (m.is_defaulted()) + ostr << " = default"; + else if (m.is_deleted()) + ostr << " = deleted"; + + ostr << " : " << type; + + if (m_config.generate_links) { + generate_link(ostr, m); + } +} + +void generator::generate_member( + const class_diagram::model::class_member &m, std::ostream &ostr) const +{ + namespace plantuml_common = clanguml::common::generators::plantuml; + const auto &uns = m_config.using_namespace(); + + print_debug(m, ostr); + + if (m.is_static()) + ostr << "{static} "; + + ostr << plantuml_common::to_plantuml(m.access()) << m.name() << " : " + << render_name( + uns.relative(m_config.simplify_template_type(m.type()))); + + if (m_config.generate_links) { + generate_link(ostr, m); + } +} + void generator::generate(const concept_ &c, std::ostream &ostr) const { std::string class_type{"class"}; @@ -367,6 +436,40 @@ void generator::generate_relationships(std::ostream &ostr) const } } +void generator::generate_relationship( + const relationship &r, std::set &rendered_relations) const +{ + namespace plantuml_common = clanguml::common::generators::plantuml; + + LOG_DBG("Processing relationship {}", + plantuml_common::to_plantuml(r.type(), r.style())); + + std::string destination; + + auto target_element = m_model.get(r.destination()); + if (!target_element.has_value()) + throw error::uml_alias_missing{fmt::format( + "Missing element in the model for ID: {}", r.destination())}; + + destination = target_element.value().full_name(false); + + if (util::starts_with(destination, std::string{"::"})) + destination = destination.substr(2, destination.size()); + + std::string puml_relation; + if (!r.multiplicity_source().empty()) + puml_relation += "\"" + r.multiplicity_source() + "\" "; + + puml_relation += plantuml_common::to_plantuml(r.type(), r.style()); + + if (!r.multiplicity_destination().empty()) + puml_relation += " \"" + r.multiplicity_destination() + "\""; + + if (!r.label().empty()) { + rendered_relations.emplace(r.label()); + } +} + void generator::generate_relationships( const class_ &c, std::ostream &ostr) const { @@ -722,8 +825,8 @@ void generator::generate_relationships( for (const auto &subpackage : p) { if (dynamic_cast(subpackage.get()) != nullptr) { // TODO: add option - generate_empty_packages, currently - // packages which do not contain anything but other packages - // are skipped + // packages which do not contain anything but other + // packages are skipped const auto &sp = dynamic_cast(*subpackage); if (!sp.is_empty() && !sp.all_of([this](const common::model::element &e) { diff --git a/src/class_diagram/generators/plantuml/class_diagram_generator.h b/src/class_diagram/generators/plantuml/class_diagram_generator.h index 4929c7c1..424cabb3 100644 --- a/src/class_diagram/generators/plantuml/class_diagram_generator.h +++ b/src/class_diagram/generators/plantuml/class_diagram_generator.h @@ -48,20 +48,24 @@ using common_generator = using clanguml::class_diagram::model::class_; using clanguml::class_diagram::model::class_element; +using clanguml::class_diagram::model::class_member; +using clanguml::class_diagram::model::class_method; using clanguml::class_diagram::model::concept_; using clanguml::class_diagram::model::enum_; using clanguml::common::model::access_t; using clanguml::common::model::package; +using clanguml::common::model::relationship; using clanguml::common::model::relationship_t; using namespace clanguml::util; class generator : public common_generator { + using method_groups_t = std::map>; + public: generator(diagram_config &config, diagram_model &model); - void generate_link( - std::ostream &ostr, const class_diagram::model::class_element &e) const; + void generate_link(std::ostream &ostr, const class_element &e) const; void generate_alias(const class_ &c, std::ostream &ostr) const; @@ -71,12 +75,25 @@ public: void generate(const class_ &c, std::ostream &ostr) const; + void generate_methods( + const std::vector &methods, std::ostream &ostr) const; + + void generate_methods( + const method_groups_t &methods, std::ostream &ostr) const; + + void generate_method(const class_method &m, std::ostream &ostr) const; + + void generate_member(const class_member &m, std::ostream &ostr) const; + void generate_top_level_elements(std::ostream &ostr) const; void generate_relationships(std::ostream &ostr) const; void generate_relationships(const class_ &c, std::ostream &ostr) const; + void generate_relationship( + const relationship &r, std::set &rendered_relations) const; + void generate(const enum_ &e, std::ostream &ostr) const; void generate_relationships(const enum_ &c, std::ostream &ostr) const; @@ -96,9 +113,26 @@ public: void generate(std::ostream &ostr) const override; + method_groups_t group_methods( + const std::vector &methods) const; + private: + const std::vector method_groups_{ + "constructors", "assignment", "operators", "other"}; + std::string render_name(std::string name) const; + template + void sort_class_elements(std::vector &elements) const + { + if (m_config.member_order() == config::member_order_t::lexical) { + std::sort(elements.begin(), elements.end(), + [](const auto &m1, const auto &m2) { + return m1.name() < m2.name(); + }); + } + } + mutable common::generators::nested_element_stack together_group_stack_; }; diff --git a/src/class_diagram/model/class_method.cc b/src/class_diagram/model/class_method.cc index 3a3e5868..9a2a5097 100644 --- a/src/class_diagram/model/class_method.cc +++ b/src/class_diagram/model/class_method.cc @@ -48,10 +48,64 @@ void class_method::is_defaulted(bool is_defaulted) is_defaulted_ = is_defaulted; } +bool class_method::is_deleted() const { return is_deleted_; } + +void class_method::is_deleted(bool is_deleted) { is_deleted_ = is_deleted; } + bool class_method::is_static() const { return is_static_; } void class_method::is_static(bool is_static) { is_static_ = is_static; } +bool class_method::is_constexpr() const { return is_constexpr_; } + +void class_method::is_constexpr(bool is_constexpr) +{ + is_constexpr_ = is_constexpr; +} + +bool class_method::is_consteval() const { return is_consteval_; } + +void class_method::is_consteval(bool is_consteval) +{ + is_consteval_ = is_consteval; +} + +bool class_method::is_noexcept() const { return is_noexcept_; } + +void class_method::is_noexcept(bool is_noexcept) { is_noexcept_ = is_noexcept; } + +bool class_method::is_constructor() const { return is_constructor_; } + +void class_method::is_constructor(bool is_constructor) +{ + is_constructor_ = is_constructor; +} + +bool class_method::is_destructor() const { return is_destructor_; } + +void class_method::is_destructor(bool is_destructor) +{ + is_destructor_ = is_destructor; +} + +bool class_method::is_move_assignment() const { return is_move_assignment_; } + +void class_method::is_move_assignment(bool is_move_assignment) +{ + is_move_assignment_ = is_move_assignment; +} + +bool class_method::is_copy_assignment() const { return is_copy_assignment_; } + +void class_method::is_copy_assignment(bool is_copy_assignment) +{ + is_copy_assignment_ = is_copy_assignment; +} + +bool class_method::is_operator() const { return is_operator_; } + +void class_method::is_operator(bool is_operator) { is_operator_ = is_operator; } + const std::vector &class_method::parameters() const { return parameters_; diff --git a/src/class_diagram/model/class_method.h b/src/class_diagram/model/class_method.h index 51a6d4c2..7e07d9f8 100644 --- a/src/class_diagram/model/class_method.h +++ b/src/class_diagram/model/class_method.h @@ -48,9 +48,36 @@ public: bool is_defaulted() const; void is_defaulted(bool is_defaulted); + bool is_deleted() const; + void is_deleted(bool is_deleted); + bool is_static() const; void is_static(bool is_static); + bool is_constexpr() const; + void is_constexpr(bool is_constexpr); + + bool is_consteval() const; + void is_consteval(bool is_consteval); + + bool is_noexcept() const; + void is_noexcept(bool is_noexcept); + + bool is_constructor() const; + void is_constructor(bool is_constructor); + + bool is_destructor() const; + void is_destructor(bool is_destructor); + + bool is_move_assignment() const; + void is_move_assignment(bool is_move_assignment); + + bool is_copy_assignment() const; + void is_copy_assignment(bool is_copy_assignment); + + bool is_operator() const; + void is_operator(bool is_operator); + const std::vector ¶meters() const; void add_parameter(method_parameter &¶meter); @@ -61,6 +88,15 @@ private: bool is_virtual_{false}; bool is_const_{false}; bool is_defaulted_{false}; + bool is_deleted_{false}; bool is_static_{false}; + bool is_noexcept_{false}; + bool is_constexpr_{false}; + bool is_consteval_{false}; + bool is_constructor_{false}; + bool is_destructor_{false}; + bool is_move_assignment_{false}; + bool is_copy_assignment_{false}; + bool is_operator_{false}; }; } // namespace clanguml::class_diagram::model diff --git a/src/class_diagram/model/diagram.cc b/src/class_diagram/model/diagram.cc index e5fd697c..8f533d5a 100644 --- a/src/class_diagram/model/diagram.cc +++ b/src/class_diagram/model/diagram.cc @@ -18,11 +18,22 @@ #include "diagram.h" +#include "common/model/diagram_filter.h" #include "util/error.h" #include "util/util.h" namespace clanguml::class_diagram::model { +bool diagram::should_include(const class_member &m) const +{ + return filter().should_include(m); +} + +bool diagram::should_include(const class_method &m) const +{ + return filter().should_include(m); +} + const common::reference_vector &diagram::classes() const { return element_view::view(); diff --git a/src/class_diagram/model/diagram.h b/src/class_diagram/model/diagram.h index 74c9192e..734ab2f5 100644 --- a/src/class_diagram/model/diagram.h +++ b/src/class_diagram/model/diagram.h @@ -58,6 +58,12 @@ public: diagram_t type() const override; + using common::model::diagram::should_include; + + bool should_include(const class_member &m) const; + + bool should_include(const class_method &m) const; + opt_ref get(const std::string &full_name) const override; opt_ref get(diagram_element::id_t id) const override; diff --git a/src/class_diagram/model/method_parameter.cc b/src/class_diagram/model/method_parameter.cc index e6a66a60..95773cfc 100644 --- a/src/class_diagram/model/method_parameter.cc +++ b/src/class_diagram/model/method_parameter.cc @@ -55,8 +55,12 @@ std::string method_parameter::to_string( auto name_ns = using_namespace.relative(common::model::namespace_{name()}.to_string()); - if (default_value().empty()) + if (default_value().empty()) { + if (name_ns.empty()) + return type_ns; + return fmt::format("{} {}", type_ns, name_ns); + } return fmt::format("{} {} = {}", type_ns, name_ns, default_value()); } diff --git a/src/class_diagram/visitor/template_builder.cc b/src/class_diagram/visitor/template_builder.cc index 83c5f063..24d9ebcb 100644 --- a/src/class_diagram/visitor/template_builder.cc +++ b/src/class_diagram/visitor/template_builder.cc @@ -499,7 +499,7 @@ template_parameter template_builder::process_template_expansion( LOG_DBG("Processing template expansion argument: {}", arg_name); - util::apply_if_not_null( + util::if_not_null( arg.getAsTemplate().getAsTemplateDecl(), [&arg_name](const auto *decl) { arg_name = decl->getQualifiedNameAsString(); }); diff --git a/src/class_diagram/visitor/translation_unit_visitor.cc b/src/class_diagram/visitor/translation_unit_visitor.cc index 348858c0..cf41b4d4 100644 --- a/src/class_diagram/visitor/translation_unit_visitor.cc +++ b/src/class_diagram/visitor/translation_unit_visitor.cc @@ -495,7 +495,7 @@ void translation_unit_visitor::process_constraint_requirements( llvm::dyn_cast(req); if (simple_req != nullptr) { - util::apply_if_not_null( + util::if_not_null( simple_req->getExpr(), [&concept_model](const auto *e) { auto simple_expr = common::to_string(e); @@ -507,7 +507,7 @@ void translation_unit_visitor::process_constraint_requirements( } } else if (req->getKind() == clang::concepts::Requirement::RK_Type) { - util::apply_if_not_null( + util::if_not_null( llvm::dyn_cast(req), [&concept_model, cpt](const auto *t) { auto type_name = common::to_string( @@ -525,7 +525,7 @@ void translation_unit_visitor::process_constraint_requirements( llvm::dyn_cast(req); if (nested_req != nullptr) { - util::apply_if_not_null( + util::if_not_null( nested_req->getConstraintExpr(), [](const auto *e) { LOG_DBG("=== Processing nested requirement: {}", common::to_string(e)); @@ -805,7 +805,7 @@ std::unique_ptr translation_unit_visitor::create_record_declaration( #if LLVM_VERSION_MAJOR < 16 if (record_name == "(anonymous)") { - util::apply_if_not_null(rec->getTypedefNameForAnonDecl(), + util::if_not_null(rec->getTypedefNameForAnonDecl(), [&record_name](const clang::TypedefNameDecl *name) { record_name = name->getNameAsString(); }); @@ -985,9 +985,8 @@ bool translation_unit_visitor::process_template_parameters( default_arg, template_type_parameter->isParameterPack()); if (template_type_parameter->getTypeConstraint() != nullptr) { - util::apply_if_not_null( - template_type_parameter->getTypeConstraint() - ->getNamedConcept(), + util::if_not_null(template_type_parameter->getTypeConstraint() + ->getNamedConcept(), [this, &ct, &templated_element]( const clang::ConceptDecl *named_concept) mutable { ct.set_concept_constraint( @@ -1283,11 +1282,7 @@ void translation_unit_visitor::process_method( class_method method{common::access_specifier_to_access_t(mf.getAccess()), util::trim(method_name), method_return_type}; - method.is_pure_virtual(mf.isPure()); - method.is_virtual(mf.isVirtual()); - method.is_const(mf.isConst()); - method.is_defaulted(mf.isDefaulted()); - method.is_static(mf.isStatic()); + process_method_properties(mf, c, method_name, method); process_comment(mf, method); @@ -1359,9 +1354,34 @@ void translation_unit_visitor::process_method( process_function_parameter_find_relationships_in_autotype(c, atsp); } - LOG_DBG("Adding method: {}", method.name()); + if (diagram().should_include(method)) { + LOG_DBG("Adding method: {}", method.name()); - c.add_method(std::move(method)); + c.add_method(std::move(method)); + } +} + +void translation_unit_visitor::process_method_properties( + const clang::CXXMethodDecl &mf, const class_ &c, + const std::string &method_name, class_method &method) const +{ + const bool is_constructor = c.name() == method_name; + const bool is_destructor = fmt::format("~{}", c.name()) == method_name; + + method.is_pure_virtual(mf.isPure()); + method.is_virtual(mf.isVirtual()); + method.is_const(mf.isConst()); + method.is_defaulted(mf.isDefaulted()); + method.is_deleted(mf.isDeleted()); + method.is_static(mf.isStatic()); + method.is_operator(mf.isOverloadedOperator()); + method.is_constexpr(mf.isConstexprSpecified() && !is_constructor); + method.is_consteval(mf.isConsteval()); + method.is_constructor(is_constructor); + method.is_destructor(is_destructor); + method.is_move_assignment(mf.isMoveAssignmentOperator()); + method.is_copy_assignment(mf.isCopyAssignmentOperator()); + method.is_noexcept(isNoexceptExceptionSpec(mf.getExceptionSpecType())); } void translation_unit_visitor:: @@ -1428,11 +1448,19 @@ void translation_unit_visitor::process_template_method( util::trim(mf.getNameAsString()), mf.getTemplatedDecl()->getReturnType().getAsString()}; - method.is_pure_virtual(mf.getTemplatedDecl()->isPure()); - method.is_virtual(false); - method.is_const(false); - method.is_defaulted(mf.getTemplatedDecl()->isDefaulted()); - method.is_static(mf.getTemplatedDecl()->isStatic()); + auto method_name = mf.getNameAsString(); + if (mf.isTemplated()) { + // Sometimes in template specializations method names contain the + // template parameters for some reason - drop them + // Is there a better way to do this? + method_name = method_name.substr(0, method_name.find('<')); + } + + util::if_not_null( + clang::dyn_cast(mf.getTemplatedDecl()), + [&](const auto *decl) { + process_method_properties(*decl, c, method_name, method); + }); process_template_parameters(mf, method); @@ -1446,9 +1474,11 @@ void translation_unit_visitor::process_template_method( process_function_parameter(*param, method, c); } - LOG_DBG("Adding method: {}", method.name()); + if (diagram().should_include(method)) { + LOG_DBG("Adding method: {}", method.name()); - c.add_method(std::move(method)); + c.add_method(std::move(method)); + } } bool translation_unit_visitor::find_relationships(const clang::QualType &type, diff --git a/src/class_diagram/visitor/translation_unit_visitor.h b/src/class_diagram/visitor/translation_unit_visitor.h index 671766e2..449fc8c4 100644 --- a/src/class_diagram/visitor/translation_unit_visitor.h +++ b/src/class_diagram/visitor/translation_unit_visitor.h @@ -251,5 +251,8 @@ private: // If yes, then we need to skip it // TODO: There must be a better way to do this... std::set processed_template_qualified_names_; + void process_method_properties(const clang::CXXMethodDecl &mf, + const class_ &c, const std::string &method_name, + class_method &method) const; }; } // namespace clanguml::class_diagram::visitor diff --git a/src/common/clang_utils.cc b/src/common/clang_utils.cc index 6c855d06..d0e4688d 100644 --- a/src/common/clang_utils.cc +++ b/src/common/clang_utils.cc @@ -163,7 +163,7 @@ std::string to_string(const clang::QualType &type, const clang::ASTContext &ctx, // Try to get rid of 'type-parameter-X-Y' ugliness if (result.find("type-parameter-") != std::string::npos) { - util::apply_if_not_null( + util::if_not_null( common::dereference(type)->getAs(), [&result, &type](auto *p) { auto [unqualified_type, context] = diff --git a/src/common/model/diagram.h b/src/common/model/diagram.h index ab58529f..f759d0c8 100644 --- a/src/common/model/diagram.h +++ b/src/common/model/diagram.h @@ -59,6 +59,7 @@ public: std::string name() const; void set_filter(std::unique_ptr filter); + const diagram_filter &filter() const { return *filter_; } void set_complete(bool complete); bool complete() const; diff --git a/src/common/model/diagram_filter.cc b/src/common/model/diagram_filter.cc index 27e5b026..2ff3801c 100644 --- a/src/common/model/diagram_filter.cc +++ b/src/common/model/diagram_filter.cc @@ -127,6 +127,18 @@ tvl::value_t filter_visitor::match( return {}; } +tvl::value_t filter_visitor::match( + const diagram &d, const class_diagram::model::class_method &m) const +{ + return match(d, m.access()); +} + +tvl::value_t filter_visitor::match( + const diagram &d, const class_diagram::model::class_member &m) const +{ + return match(d, m.access()); +} + bool filter_visitor::is_inclusive() const { return type_ == filter_t::kInclusive; @@ -236,6 +248,39 @@ tvl::value_t element_type_filter::match( }); } +method_type_filter::method_type_filter( + filter_t type, std::vector method_types) + : filter_visitor{type} + , method_types_{std::move(method_types)} +{ +} + +tvl::value_t method_type_filter::match( + const diagram & /*d*/, const class_diagram::model::class_method &m) const +{ + return tvl::any_of( + method_types_.begin(), method_types_.end(), [&m](auto mt) { + switch (mt) { + case config::method_type::constructor: + return m.is_constructor(); + case config::method_type::destructor: + return m.is_destructor(); + case config::method_type::assignment: + return m.is_copy_assignment() || m.is_move_assignment(); + case config::method_type::operator_: + return m.is_operator(); + case config::method_type::defaulted: + return m.is_defaulted(); + case config::method_type::deleted: + return m.is_deleted(); + case config::method_type::static_: + return m.is_static(); + } + + return false; + }); +} + subclass_filter::subclass_filter(filter_t type, std::vector roots) : filter_visitor{type} , roots_{std::move(roots)} @@ -494,6 +539,36 @@ tvl::value_t paths_filter::match( return false; } +class_method_filter::class_method_filter(filter_t type, + std::unique_ptr af, std::unique_ptr mtf) + : filter_visitor{type} + , access_filter_{std::move(af)} + , method_type_filter_{std::move(mtf)} +{ +} + +tvl::value_t class_method_filter::match( + const diagram &d, const class_diagram::model::class_method &m) const +{ + tvl::value_t res = tvl::or_( + access_filter_->match(d, m.access()), method_type_filter_->match(d, m)); + + return res; +} + +class_member_filter::class_member_filter( + filter_t type, std::unique_ptr af) + : filter_visitor{type} + , access_filter_{std::move(af)} +{ +} + +tvl::value_t class_member_filter::match( + const diagram &d, const class_diagram::model::class_member &m) const +{ + return access_filter_->match(d, m.access()); +} + diagram_filter::diagram_filter( const common::model::diagram &d, const config::diagram &c) : diagram_{d} @@ -541,6 +616,18 @@ void diagram_filter::init_filters(const config::diagram &c) add_inclusive_filter(std::make_unique( filter_t::kInclusive, c.root_directory(), c.include().paths)); + add_inclusive_filter( + std::make_unique(filter_t::kInclusive, + std::make_unique( + filter_t::kInclusive, c.include().access), + std::make_unique( + filter_t::kInclusive, c.include().method_types))); + + add_inclusive_filter( + std::make_unique(filter_t::kInclusive, + std::make_unique( + filter_t::kInclusive, c.include().access))); + // Include any of these matches even if one them does not match std::vector> element_filters; @@ -637,6 +724,18 @@ void diagram_filter::init_filters(const config::diagram &c) add_exclusive_filter(std::make_unique( filter_t::kExclusive, c.exclude().access)); + add_exclusive_filter( + std::make_unique(filter_t::kExclusive, + std::make_unique( + filter_t::kExclusive, c.exclude().access), + std::make_unique( + filter_t::kExclusive, c.exclude().method_types))); + + add_exclusive_filter( + std::make_unique(filter_t::kExclusive, + std::make_unique( + filter_t::kExclusive, c.exclude().access))); + add_exclusive_filter(std::make_unique( filter_t::kExclusive, c.exclude().subclasses)); diff --git a/src/common/model/diagram_filter.h b/src/common/model/diagram_filter.h index fae444a6..d772602e 100644 --- a/src/common/model/diagram_filter.h +++ b/src/common/model/diagram_filter.h @@ -17,6 +17,8 @@ */ #pragma once +#include "class_diagram/model/class_member.h" +#include "class_diagram/model/class_method.h" #include "class_diagram/model/diagram.h" #include "common/clang_utils.h" #include "common/model/diagram.h" @@ -78,6 +80,12 @@ public: virtual tvl::value_t match( const diagram &d, const common::model::source_location &f) const; + virtual tvl::value_t match( + const diagram &d, const class_diagram::model::class_method &m) const; + + virtual tvl::value_t match( + const diagram &d, const class_diagram::model::class_member &m) const; + bool is_inclusive() const; bool is_exclusive() const; @@ -138,6 +146,19 @@ private: std::vector element_types_; }; +struct method_type_filter : public filter_visitor { + method_type_filter( + filter_t type, std::vector method_types); + + ~method_type_filter() override = default; + + tvl::value_t match(const diagram &d, + const class_diagram::model::class_method &e) const override; + +private: + std::vector method_types_; +}; + struct subclass_filter : public filter_visitor { subclass_filter(filter_t type, std::vector roots); @@ -354,6 +375,32 @@ private: std::filesystem::path root_; }; +struct class_method_filter : public filter_visitor { + class_method_filter(filter_t type, std::unique_ptr af, + std::unique_ptr mtf); + + ~class_method_filter() override = default; + + tvl::value_t match(const diagram &d, + const class_diagram::model::class_method &m) const override; + +private: + std::unique_ptr access_filter_; + std::unique_ptr method_type_filter_; +}; + +struct class_member_filter : public filter_visitor { + class_member_filter(filter_t type, std::unique_ptr af); + + ~class_member_filter() override = default; + + tvl::value_t match(const diagram &d, + const class_diagram::model::class_member &m) const override; + +private: + std::unique_ptr access_filter_; +}; + class diagram_filter { public: diagram_filter(const common::model::diagram &d, const config::diagram &c); diff --git a/src/common/model/tvl.h b/src/common/model/tvl.h index eb4d0ebf..5c69c61b 100644 --- a/src/common/model/tvl.h +++ b/src/common/model/tvl.h @@ -24,6 +24,31 @@ namespace clanguml::common::model::tvl { using value_t = std::optional; +inline value_t and_(const value_t &l, const value_t &r) +{ + if (!l.has_value()) + return r; + + if (!r.has_value()) + return l; + + return r.value() && l.value(); +} + +inline value_t or_(const value_t &l, const value_t &r) +{ + if (!l.has_value() && !r.has_value()) + return {}; + + if (l.has_value() && l.value()) + return true; + + if (r.has_value() && r.value()) + return true; + + return false; +} + inline bool is_true(const value_t &v) { return v.has_value() && v.value(); } inline bool is_false(const value_t &v) { return v.has_value() && !v.value(); } diff --git a/src/config/config.cc b/src/config/config.cc index 33c72478..95bd25bd 100644 --- a/src/config/config.cc +++ b/src/config/config.cc @@ -62,6 +62,29 @@ std::string to_string(const method_arguments ma) } } +std::string to_string(method_type mt) +{ + switch (mt) { + case method_type::constructor: + return "constructor"; + case method_type::destructor: + return "destructor"; + case method_type::assignment: + return "assignment"; + case method_type::operator_: + return "operator"; + case method_type::defaulted: + return "defaulted"; + case method_type::deleted: + return "deleted"; + case method_type::static_: + return "static"; + default: + assert(false); + return ""; + } +} + std::string to_string(const comment_parser_t cp) { switch (cp) { diff --git a/src/config/config.h b/src/config/config.h index e728a66c..03fa5689 100644 --- a/src/config/config.h +++ b/src/config/config.h @@ -37,8 +37,22 @@ namespace config { enum class method_arguments { full, abbreviated, none }; +enum class method_type { + constructor, + destructor, + assignment, + operator_, + defaulted, + deleted, + static_ +}; + +std::string to_string(method_type mt); + enum class package_type_t { kNamespace, kDirectory }; +enum class member_order_t { lexical, as_is }; + std::string to_string(method_arguments ma); enum class comment_parser_t { plain, clang }; @@ -94,6 +108,8 @@ struct filter { std::vector context; std::vector paths; + + std::vector method_types; }; enum class hint_t { up, down, left, right, together, row, column }; @@ -163,6 +179,9 @@ struct inheritable_diagram_options { option puml{"plantuml", option_inherit_mode::kAppend}; option generate_method_arguments{ "generate_method_arguments", method_arguments::full}; + option group_methods{"group_methods", true}; + option member_order{ + "method_order", member_order_t::lexical}; option generate_packages{"generate_packages", false}; option package_type{ "package_type", package_type_t::kNamespace}; diff --git a/src/config/yaml_decoders.cc b/src/config/yaml_decoders.cc index fc885031..2ecbd1b1 100644 --- a/src/config/yaml_decoders.cc +++ b/src/config/yaml_decoders.cc @@ -32,7 +32,9 @@ using clanguml::config::hint_t; using clanguml::config::include_diagram; using clanguml::config::layout_hint; using clanguml::config::location_t; +using clanguml::config::member_order_t; using clanguml::config::method_arguments; +using clanguml::config::method_type; using clanguml::config::package_diagram; using clanguml::config::package_type_t; using clanguml::config::plantuml; @@ -89,6 +91,21 @@ void get_option( } } +template <> +void get_option( + const Node &node, clanguml::config::option &option) +{ + if (node[option.name]) { + const auto &val = node[option.name].as(); + if (val == "as_is") + option.set(member_order_t::as_is); + else if (val == "lexical") + option.set(member_order_t::lexical); + else + throw std::runtime_error("Invalid member_order value: " + val); + } +} + template <> void get_option( const Node &node, clanguml::config::option &option) @@ -139,7 +156,6 @@ void get_option>( YAML::Node included_node = YAML::LoadFile(include_path.string()); - // diagram_config = parse_diagram_config(included_node); option.set( included_node.as< std::map>()); @@ -206,6 +222,34 @@ template <> struct convert { } }; +// +// config method_type decoder +// +template <> struct convert { + static bool decode(const Node &node, method_type &rhs) + { + const auto &val = node.as(); + if (val == to_string(method_type::constructor)) + rhs = method_type::constructor; + else if (val == to_string(method_type::destructor)) + rhs = method_type::destructor; + else if (val == to_string(method_type::assignment)) + rhs = method_type::assignment; + else if (val == to_string(method_type::operator_)) + rhs = method_type::operator_; + else if (val == to_string(method_type::defaulted)) + rhs = method_type::defaulted; + else if (val == to_string(method_type::deleted)) + rhs = method_type::deleted; + else if (val == to_string(method_type::static_)) + rhs = method_type::static_; + else + return false; + + return true; + } +}; + // // config relationship_t decoder // @@ -322,6 +366,10 @@ template <> struct convert { rhs.element_types = node["element_types"].as(); + if (node["method_types"]) + rhs.method_types = + node["method_types"].as(); + if (node["access"]) rhs.access = node["access"].as(); @@ -419,6 +467,8 @@ template <> struct convert { get_option(node, rhs.layout); get_option(node, rhs.include_relations_also_as_members); get_option(node, rhs.generate_method_arguments); + get_option(node, rhs.group_methods); + get_option(node, rhs.member_order); get_option(node, rhs.generate_packages); get_option(node, rhs.package_type); get_option(node, rhs.relationship_hints); @@ -498,7 +548,8 @@ template <> struct convert { rhs.relative_to.set(std::filesystem::current_path()); // Convert the path in relative_to to an absolute path, with respect - // to the directory where the `.clang-uml` configuration file is located + // to the directory where the `.clang-uml` configuration file is + // located if (rhs.relative_to) { auto absolute_relative_to = std::filesystem::path{node["__parent_path"].as()} / diff --git a/src/config/yaml_emitters.cc b/src/config/yaml_emitters.cc index 64ed826e..6685e6ca 100644 --- a/src/config/yaml_emitters.cc +++ b/src/config/yaml_emitters.cc @@ -45,6 +45,13 @@ YAML::Emitter &operator<<(YAML::Emitter &out, const diagram_t &d) } // namespace clanguml::common::model namespace clanguml::config { + +YAML::Emitter &operator<<(YAML::Emitter &out, const method_type &m) +{ + out << to_string(m); + return out; +} + YAML::Emitter &operator<<(YAML::Emitter &out, const filter &f) { out << YAML::BeginMap; @@ -62,6 +69,8 @@ YAML::Emitter &operator<<(YAML::Emitter &out, const filter &f) out << YAML::Key << "elements" << YAML::Value << f.elements; if (!f.element_types.empty()) out << YAML::Key << "element_types" << YAML::Value << f.element_types; + if (!f.method_types.empty()) + out << YAML::Key << "method_types" << YAML::Value << f.method_types; if (!f.paths.empty()) out << YAML::Key << "paths" << YAML::Value << f.paths; if (!f.relationships.empty()) diff --git a/src/main.cc b/src/main.cc index 7ddb7609..c96a9867 100644 --- a/src/main.cc +++ b/src/main.cc @@ -54,8 +54,9 @@ int main(int argc, const char *argv[]) #if !defined(NDEBUG) // Catch invalid logger message formats, e.g. missing arguments - spdlog::set_error_handler( - [](const std::string & /*msg*/) { assert(0 == 1); }); + spdlog::set_error_handler([](const std::string & /*msg*/) { + assert(0 == 1); // NOLINT + }); #endif try { @@ -70,8 +71,8 @@ int main(int argc, const char *argv[]) translation_units_map; // We have to generate the translation units list for each diagram - // before scheduling tasks, because std::filesystem::current_path cannot - // be trusted with multiple threads + // before scheduling tasks, because std::filesystem::current_path + // cannot be trusted with multiple threads clanguml::common::generators::find_translation_units_for_diagrams( cli.diagram_names, cli.config, compilation_database_files, translation_units_map); diff --git a/src/package_diagram/visitor/translation_unit_visitor.cc b/src/package_diagram/visitor/translation_unit_visitor.cc index 861fbc68..2c1ba6ce 100644 --- a/src/package_diagram/visitor/translation_unit_visitor.cc +++ b/src/package_diagram/visitor/translation_unit_visitor.cc @@ -194,8 +194,13 @@ bool translation_unit_visitor::VisitClassTemplateDecl( found_relationships_t relationships; - process_class_declaration(*decl->getTemplatedDecl(), relationships); - add_relationships(decl, relationships); + util::if_not_null(decl->getTemplatedDecl(), + [this, &relationships, decl](const auto *template_decl) { + if (template_decl->isCompleteDefinition()) { + process_class_declaration(*template_decl, relationships); + add_relationships(decl, relationships); + } + }); return true; } diff --git a/src/util/util.h b/src/util/util.h index 19892657..eeafe95d 100644 --- a/src/util/util.h +++ b/src/util/util.h @@ -254,7 +254,7 @@ void for_each_if(const T &collection, C &&cond, F &&func) } template -void apply_if_not_null(const T *pointer, F &&func, FElse &&func_else) +void if_not_null(const T *pointer, F &&func, FElse &&func_else) { if (pointer != nullptr) { std::forward(func)(pointer); @@ -264,14 +264,13 @@ void apply_if_not_null(const T *pointer, F &&func, FElse &&func_else) } } -template -void apply_if_not_null(const T *pointer, F &&func) +template void if_not_null(const T *pointer, F &&func) { - apply_if_not_null(pointer, std::forward(func), []() {}); + if_not_null(pointer, std::forward(func), []() {}); } template -void apply_if(const bool condition, F &&func, FElse &&func_else) +void _if(const bool condition, F &&func, FElse &&func_else) { if (condition) { std::forward(func)(); @@ -281,9 +280,9 @@ void apply_if(const bool condition, F &&func, FElse &&func_else) } } -template void apply_if(const bool condition, F &&func) +template void _if(const bool condition, F &&func) { - apply_if(condition, std::forward(func), []() {}); + _if(condition, std::forward(func), []() {}); } std::size_t hash_seed(std::size_t seed); diff --git a/tests/t00003/t00003.cc b/tests/t00003/t00003.cc index d5656ce3..f3377e41 100644 --- a/tests/t00003/t00003.cc +++ b/tests/t00003/t00003.cc @@ -11,8 +11,15 @@ public: : private_member{i} { } + + template + A(T t) + : private_member{t.get()} + { + } + A(A &&) = default; - A(const A &) = default; + A(const A &) = delete; virtual ~A() = default; void basic_method() { } @@ -20,6 +27,17 @@ public: void const_method() const { } auto auto_method() { return 1; } + A &operator++() + { + private_member++; + return *this; + } + + A &operator=(A &&other) noexcept { return *this; } + A &operator=(A &other) noexcept { return *this; } + + constexpr std::size_t size() const { return private_member; } + auto double_int(const int i) { return 2 * i; } auto sum(const double a, const double b) { return a_ + b_ + c_; } diff --git a/tests/t00003/test_case.h b/tests/t00003/test_case.h index 19b9615d..9d06bd2f 100644 --- a/tests/t00003/test_case.h +++ b/tests/t00003/test_case.h @@ -44,6 +44,10 @@ TEST_CASE("t00003", "[test-case][class]") REQUIRE_THAT(puml, !IsDependency(_A("A"), _A("A"))); REQUIRE_THAT(puml, (IsMethod("A"))); + REQUIRE_THAT(puml, (IsMethod("A", "void", "A &&"))); + REQUIRE_THAT( + puml, (IsMethod("A", "void", "const A &"))); + REQUIRE_THAT(puml, (IsMethod("~A"))); REQUIRE_THAT(puml, (IsMethod("basic_method"))); @@ -55,6 +59,9 @@ TEST_CASE("t00003", "[test-case][class]") (IsMethod("default_string", "std::string", "int i, std::string s = \"abc\""))); + REQUIRE_THAT( + puml, (IsMethod("size", "std::size_t"))); + REQUIRE_THAT(puml, (IsMethod("protected_method"))); REQUIRE_THAT(puml, (IsMethod("private_method"))); REQUIRE_THAT(puml, (IsField("public_member", "int"))); diff --git a/tests/t00051/test_case.h b/tests/t00051/test_case.h index 6471d7cd..a90f27b9 100644 --- a/tests/t00051/test_case.h +++ b/tests/t00051/test_case.h @@ -45,7 +45,7 @@ TEST_CASE("t00051", "[test-case][class]") "Function && f, Args &&... args"))); REQUIRE_THAT(puml, (IsMethod("thread", "void", - "(lambda at ../../tests/t00051/t00051.cc:59:27) && "))); + "(lambda at ../../tests/t00051/t00051.cc:59:27) &&"))); REQUIRE_THAT(puml, (IsMethod("start_thread3", "B<(lambda at ../../tests/t00051/t00051.cc:43:18),(lambda at " diff --git a/tests/t00064/test_case.h b/tests/t00064/test_case.h index 804a4f96..d10e290e 100644 --- a/tests/t00064/test_case.h +++ b/tests/t00064/test_case.h @@ -68,12 +68,14 @@ TEST_CASE("t00064", "[test-case][class]") REQUIRE_THAT(puml, (IsMethod("getp", "value_type const*", "unsigned int i"))); REQUIRE_THAT(puml, - (IsMethod("find", "unsigned int", "value_type const& v"))); + (IsMethod( + "find", "unsigned int", "value_type const& v"))); #else REQUIRE_THAT(puml, (IsMethod("getp", "const value_type *", "unsigned int i"))); REQUIRE_THAT(puml, - (IsMethod("find", "unsigned int", "const value_type & v"))); + (IsMethod( + "find", "unsigned int", "const value_type & v"))); #endif save_puml( diff --git a/tests/t00066/.clang-uml b/tests/t00066/.clang-uml new file mode 100644 index 00000000..f2066018 --- /dev/null +++ b/tests/t00066/.clang-uml @@ -0,0 +1,14 @@ +compilation_database_dir: .. +output_directory: puml +diagrams: + t00066_class: + type: class + glob: + - ../../tests/t00066/t00066.cc + include: + namespaces: + - clanguml::t00066 + member_order: as_is + group_methods: false + using_namespace: + - clanguml::t00066 \ No newline at end of file diff --git a/tests/t00066/t00066.cc b/tests/t00066/t00066.cc new file mode 100644 index 00000000..50145844 --- /dev/null +++ b/tests/t00066/t00066.cc @@ -0,0 +1,68 @@ +#include +#include + +namespace clanguml { +namespace t00066 { + +class A { +public: + A() = default; + A(int i) + : private_member{i} + { + } + A(A &&) = default; + A(const A &) = delete; + virtual ~A() = default; + + void basic_method() { } + static int static_method() { return 0; } + void const_method() const { } + auto auto_method() { return 1; } + + A &operator++() + { + private_member++; + return *this; + } + + A &operator=(A &&other) noexcept { return *this; } + A &operator=(A &other) noexcept { return *this; } + + std::size_t size() const { return private_member; } + + auto double_int(const int i) { return 2 * i; } + auto sum(const double a, const double b) { return a_ + b_ + c_; } + + auto default_int(int i = 12) { return i + 10; } + std::string default_string(int i, std::string s = "abc") + { + return s + std::to_string(i); + } + + static A create_from_int(int i) { return A(i); } + + int public_member; + static int static_int; + static const int static_const_int = 1; + static const auto auto_member{10UL}; + +protected: + void protected_method() { } + + int protected_member; + + std::function compare = [this](const int v) { + return private_member > v; + }; + +private: + void private_method() { } + + int private_member; + int a_, b_, c_; +}; + +int A::static_int = 1; +} // namespace t00066 +} // namespace clanguml diff --git a/tests/t00066/test_case.h b/tests/t00066/test_case.h new file mode 100644 index 00000000..3619b55c --- /dev/null +++ b/tests/t00066/test_case.h @@ -0,0 +1,83 @@ +/** + * tests/t00066/test_case.h + * + * Copyright (c) 2021-2023 Bartek Kryza + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +TEST_CASE("t00066", "[test-case][class]") +{ + auto [config, db] = load_config("t00066"); + + auto diagram = config.diagrams["t00066_class"]; + + REQUIRE(diagram->name == "t00066_class"); + + auto model = generate_class_diagram(*db, diagram); + + REQUIRE(model->name() == "t00066_class"); + + { + auto puml = generate_class_puml(diagram, *model); + AliasMatcher _A(puml); + + REQUIRE_THAT(puml, StartsWith("@startuml")); + REQUIRE_THAT(puml, EndsWith("@enduml\n")); + + REQUIRE_THAT(puml, IsClass(_A("A"))); + + REQUIRE_THAT(puml, !IsDependency(_A("A"), _A("A"))); + + REQUIRE_THAT(puml, (IsMethod("A"))); + REQUIRE_THAT(puml, (IsMethod("A", "void", "A &&"))); + REQUIRE_THAT( + puml, (IsMethod("A", "void", "const A &"))); + + REQUIRE_THAT(puml, (IsMethod("~A"))); + + REQUIRE_THAT(puml, (IsMethod("basic_method"))); + REQUIRE_THAT(puml, (IsMethod("static_method", "int"))); + REQUIRE_THAT(puml, (IsMethod("const_method"))); + REQUIRE_THAT( + puml, (IsMethod("default_int", "int", "int i = 12"))); + REQUIRE_THAT(puml, + (IsMethod("default_string", "std::string", + "int i, std::string s = \"abc\""))); + + REQUIRE_THAT(puml, (IsMethod("size", "std::size_t"))); + + REQUIRE_THAT(puml, (IsMethod("protected_method"))); + REQUIRE_THAT(puml, (IsMethod("private_method"))); + REQUIRE_THAT(puml, (IsField("public_member", "int"))); + REQUIRE_THAT(puml, (IsField("protected_member", "int"))); + REQUIRE_THAT(puml, (IsField("private_member", "int"))); + REQUIRE_THAT(puml, + (IsField("auto_member", "const unsigned long"))); + + REQUIRE_THAT(puml, (IsField("a_", "int"))); + REQUIRE_THAT(puml, (IsField("b_", "int"))); + REQUIRE_THAT(puml, (IsField("c_", "int"))); + + save_puml( + config.output_directory() + "/" + diagram->name + ".puml", puml); + } + + { + auto j = generate_class_json(diagram, *model); + + using namespace json; + + save_json(config.output_directory() + "/" + diagram->name + ".json", j); + } +} \ No newline at end of file diff --git a/tests/t00067/.clang-uml b/tests/t00067/.clang-uml new file mode 100644 index 00000000..d2b5cc5b --- /dev/null +++ b/tests/t00067/.clang-uml @@ -0,0 +1,19 @@ +compilation_database_dir: .. +output_directory: puml +diagrams: + t00067_class: + type: class + glob: + - ../../tests/t00067/t00067.cc + include: + namespaces: + - clanguml::t00067 + exclude: + method_types: + - constructor + - destructor + - operator + - assignment + - static + using_namespace: + - clanguml::t00067 \ No newline at end of file diff --git a/tests/t00067/t00067.cc b/tests/t00067/t00067.cc new file mode 100644 index 00000000..b0ab4a81 --- /dev/null +++ b/tests/t00067/t00067.cc @@ -0,0 +1,67 @@ +#include +#include + +namespace clanguml { +namespace t00067 { +class A { +public: + A() = default; + A(int i) + : private_member{i} + { + } + A(A &&) = default; + A(const A &) = delete; + virtual ~A() = default; + + void basic_method() { } + static int static_method() { return 0; } + void const_method() const { } + auto auto_method() { return 1; } + + A &operator++() + { + private_member++; + return *this; + } + + A &operator=(A &&other) noexcept { return *this; } + A &operator=(A &other) noexcept { return *this; } + + std::size_t size() const { return private_member; } + + auto double_int(const int i) { return 2 * i; } + auto sum(const double a, const double b) { return a_ + b_ + c_; } + + auto default_int(int i = 12) { return i + 10; } + std::string default_string(int i, std::string s = "abc") + { + return s + std::to_string(i); + } + + static A create_from_int(int i) { return A(i); } + + int public_member; + static int static_int; + static const int static_const_int = 1; + static const auto auto_member{10UL}; + +protected: + void protected_method() { } + + int protected_member; + + std::function compare = [this](const int v) { + return private_member > v; + }; + +private: + void private_method() { } + + int private_member; + int a_, b_, c_; +}; + +int A::static_int = 1; +} +} \ No newline at end of file diff --git a/tests/t00067/test_case.h b/tests/t00067/test_case.h new file mode 100644 index 00000000..e9fb3cc5 --- /dev/null +++ b/tests/t00067/test_case.h @@ -0,0 +1,58 @@ +/** + * tests/t00067/test_case.h + * + * Copyright (c) 2021-2023 Bartek Kryza + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +TEST_CASE("t00067", "[test-case][class]") +{ + auto [config, db] = load_config("t00067"); + + auto diagram = config.diagrams["t00067_class"]; + + REQUIRE(diagram->name == "t00067_class"); + + auto model = generate_class_diagram(*db, diagram); + + REQUIRE(model->name() == "t00067_class"); + + { + auto puml = generate_class_puml(diagram, *model); + AliasMatcher _A(puml); + + REQUIRE_THAT(puml, StartsWith("@startuml")); + REQUIRE_THAT(puml, EndsWith("@enduml\n")); + + REQUIRE_THAT(puml, !(IsMethod("A"))); + REQUIRE_THAT(puml, !(IsMethod("A", "void", "A &&"))); + REQUIRE_THAT( + puml, !(IsMethod("A", "void", "const A &"))); + + REQUIRE_THAT(puml, !(IsMethod("~A"))); + + REQUIRE_THAT(puml, !(IsMethod("~A"))); + + save_puml( + config.output_directory() + "/" + diagram->name + ".puml", puml); + } + + { + auto j = generate_class_json(diagram, *model); + + using namespace json; + + save_json(config.output_directory() + "/" + diagram->name + ".json", j); + } +} \ No newline at end of file diff --git a/tests/test_cases.cc b/tests/test_cases.cc index b4b92bd9..608f5795 100644 --- a/tests/test_cases.cc +++ b/tests/test_cases.cc @@ -304,6 +304,8 @@ using namespace clanguml::test::matchers; #if defined(ENABLE_CXX_STD_20_TEST_CASES) #include "t00065/test_case.h" #endif +#include "t00066/test_case.h" +#include "t00067/test_case.h" /// /// Sequence diagram tests diff --git a/tests/test_cases.h b/tests/test_cases.h index 4ebd5bdb..e3e0e5ae 100644 --- a/tests/test_cases.h +++ b/tests/test_cases.h @@ -103,8 +103,16 @@ struct Static { }; struct Const { }; +struct Constexpr { }; + +struct Consteval { }; + +struct Noexcept { }; + struct Default { }; +struct Deleted { }; + struct HasCallWithResultMatcher : ContainsMatcher { HasCallWithResultMatcher( CasedString const &comparator, CasedString const &resultComparator) @@ -530,6 +538,12 @@ ContainsMatcher IsMethod(std::string const &name, pattern += "(" + params + ")"; + if constexpr (has_type()) + pattern += " constexpr"; + + if constexpr (has_type()) + pattern += " consteval"; + if constexpr (has_type()) pattern += " const"; @@ -539,6 +553,9 @@ ContainsMatcher IsMethod(std::string const &name, if constexpr (has_type()) pattern += " = default"; + if constexpr (has_type()) + pattern += " = deleted"; + pattern += " : " + type; return ContainsMatcher(CasedString(pattern, caseSensitivity)); diff --git a/tests/test_cases.yaml b/tests/test_cases.yaml index 97734d89..97c2b7ad 100644 --- a/tests/test_cases.yaml +++ b/tests/test_cases.yaml @@ -4,7 +4,7 @@ test_cases: title: Basic class inheritance description: - name: t00003 - title: Class field and methods + title: Class fields and methods description: - name: t00004 title: Nested classes and enums @@ -192,6 +192,12 @@ test_cases: - name: t00065 title: Class diagram with packages from directory structure description: + - name: t00066 + title: Class fields and methods without grouping and sorting + description: + - name: t00067 + title: Class method type filter test case + description: Sequence diagrams: - name: t20001 title: Basic sequence diagram test case diff --git a/tests/test_config.cc b/tests/test_config.cc index f482d8b1..d9353d93 100644 --- a/tests/test_config.cc +++ b/tests/test_config.cc @@ -26,6 +26,7 @@ TEST_CASE("Test config simple", "[unit-test]") { using clanguml::common::model::access_t; using clanguml::common::model::relationship_t; + using clanguml::config::method_type; using clanguml::util::contains; auto cfg = clanguml::config::load("./test_config_data/simple.yml"); @@ -72,6 +73,10 @@ TEST_CASE("Test config simple", "[unit-test]") CHECK(contains(diagram.exclude().relationships, relationship_t::kNone)); + CHECK(contains(diagram.exclude().method_types, method_type::operator_)); + CHECK(contains(diagram.exclude().method_types, method_type::constructor)); + CHECK(contains(diagram.exclude().method_types, method_type::deleted)); + CHECK(diagram.relationship_hints().at("std::vector").get(0) == relationship_t::kComposition); CHECK(diagram.relationship_hints().at("std::tuple").get(10) == diff --git a/tests/test_config_data/filters.yml b/tests/test_config_data/filters.yml index 478892c3..1ebea071 100644 --- a/tests/test_config_data/filters.yml +++ b/tests/test_config_data/filters.yml @@ -17,4 +17,16 @@ diagrams: exclude: paths: - sequence_diagram - - util/error.h \ No newline at end of file + - util/error.h + method_type_include_test: + type: class + include: + method_types: + - constructor + - operator + method_type_exclude_test: + type: class + exclude: + method_types: + - deleted + - destructor \ No newline at end of file diff --git a/tests/test_config_data/simple.yml b/tests/test_config_data/simple.yml index ebc9be14..caddba45 100644 --- a/tests/test_config_data/simple.yml +++ b/tests/test_config_data/simple.yml @@ -34,6 +34,10 @@ diagrams: exclude: relationships: - none + method_types: + - operator + - constructor + - deleted relationship_hints: std::vector: composition std::map: diff --git a/tests/test_filters.cc b/tests/test_filters.cc index 7caea613..4f1764ba 100644 --- a/tests/test_filters.cc +++ b/tests/test_filters.cc @@ -34,7 +34,6 @@ TEST_CASE("Test diagram paths filter", "[unit-test]") auto cfg = clanguml::config::load("./test_config_data/filters.yml"); - CHECK(cfg.diagrams.size() == 1); auto &config = *cfg.diagrams["include_test"]; clanguml::include_diagram::model::diagram diagram; @@ -52,3 +51,56 @@ TEST_CASE("Test diagram paths filter", "[unit-test]") CHECK_FALSE(filter.should_include( make_path("sequence_diagram/visitor/translation_unit_visitor.h"))); } + +TEST_CASE("Test method_types include filter", "[unit-test]") +{ + using clanguml::class_diagram::model::class_method; + using clanguml::common::model::access_t; + using clanguml::common::model::diagram_filter; + using clanguml::common::model::source_file; + + auto cfg = clanguml::config::load("./test_config_data/filters.yml"); + + auto &config = *cfg.diagrams["method_type_include_test"]; + clanguml::class_diagram::model::diagram diagram; + + diagram_filter filter(diagram, config); + + class_method cm{access_t::kPublic, "A", ""}; + cm.is_constructor(true); + + CHECK(filter.should_include(cm)); + + cm.is_constructor(false); + cm.is_destructor(true); + + CHECK(!filter.should_include(cm)); +} + +TEST_CASE("Test method_types exclude filter", "[unit-test]") +{ + using clanguml::class_diagram::model::class_method; + using clanguml::common::model::access_t; + using clanguml::common::model::diagram_filter; + using clanguml::common::model::source_file; + + auto cfg = clanguml::config::load("./test_config_data/filters.yml"); + + auto &config = *cfg.diagrams["method_type_exclude_test"]; + clanguml::class_diagram::model::diagram diagram; + + diagram_filter filter(diagram, config); + + class_method cm{access_t::kPublic, "A", ""}; + + CHECK(filter.should_include(cm)); + + cm.is_constructor(true); + + CHECK(filter.should_include(cm)); + + cm.is_constructor(false); + cm.is_destructor(true); + + CHECK(!filter.should_include(cm)); +} \ No newline at end of file