# t00028 - PlantUML note decorator test case ## Config ```yaml diagrams: t00028_class: type: class glob: - t00028.cc using_namespace: clanguml::t00028 include: namespaces: - clanguml::t00028 plantuml: after: - > note left of {{ alias("R") }}::ccc Reference to C. end note ``` ## Source code File `tests/t00028/t00028.cc` ```cpp #include #include namespace clanguml { namespace t00028 { /// \uml{note[top] A class note.} class A { }; /// \uml{note[] B class note.} class B { }; /// /// @uml{note:t00028_class[bottom] C class note.} /// This is class C. class C { }; /// \uml{note /// D /// class /// note.} class D { }; /// \uml{note E template class note.} template class E { T param; }; /// \uml{note:other_diagram[left] G class note.} class G { }; /// @uml{note[ bottom ] F enum note.} enum class F { one, two, three }; /// \uml{note[right] R class note.} class R { explicit R(C &c) : ccc(c) { } /// \uml{note[left] R contains an instance of A.} A aaa; /// \uml{note:other_diagram[right] R contains an pointer to B.} B *bbb; C &ccc; std::vector> ddd; E eee; G **ggg; }; } // namespace t00028 } // namespace clanguml ``` ## Generated PlantUML diagrams ![t00028_class](./t00028_class.svg "PlantUML note decorator test case") ## Generated Mermaid diagrams ![t00028_class](./t00028_class_mermaid.svg "PlantUML note decorator test case") ## Generated JSON models ```json { "diagram_type": "class", "elements": [ { "bases": [], "comment": { "formatted": "\\uml{note[top] A class note.}", "raw": "/// \\uml{note[top] A class note.}" }, "display_name": "A", "id": "12158803847702268707", "is_abstract": false, "is_nested": false, "is_struct": false, "is_template": false, "is_union": false, "members": [], "methods": [], "name": "A", "namespace": "clanguml::t00028", "source_location": { "column": 7, "file": "t00028.cc", "line": 8, "translation_unit": "t00028.cc" }, "template_parameters": [], "type": "class" }, { "bases": [], "comment": { "formatted": "\\uml{note[] B class note.}", "raw": "/// \\uml{note[] B class note.}" }, "display_name": "B", "id": "15844776732537704560", "is_abstract": false, "is_nested": false, "is_struct": false, "is_template": false, "is_union": false, "members": [], "methods": [], "name": "B", "namespace": "clanguml::t00028", "source_location": { "column": 7, "file": "t00028.cc", "line": 11, "translation_unit": "t00028.cc" }, "template_parameters": [], "type": "class" }, { "bases": [], "comment": { "formatted": "\n @uml{note:t00028_class[bottom] C class note.}\n This is class C.", "raw": "///\n/// @uml{note:t00028_class[bottom] C class note.}\n/// This is class C." }, "display_name": "C", "id": "7876618068600902026", "is_abstract": false, "is_nested": false, "is_struct": false, "is_template": false, "is_union": false, "members": [], "methods": [], "name": "C", "namespace": "clanguml::t00028", "source_location": { "column": 7, "file": "t00028.cc", "line": 16, "translation_unit": "t00028.cc" }, "template_parameters": [], "type": "class" }, { "bases": [], "comment": { "formatted": "\\uml{note\nD\nclass\nnote.}", "raw": "/// \\uml{note\n/// D\n/// class\n/// note.}" }, "display_name": "D", "id": "10110229268150272562", "is_abstract": false, "is_nested": false, "is_struct": false, "is_template": false, "is_union": false, "members": [], "methods": [], "name": "D", "namespace": "clanguml::t00028", "source_location": { "column": 7, "file": "t00028.cc", "line": 22, "translation_unit": "t00028.cc" }, "template_parameters": [], "type": "class" }, { "bases": [], "comment": { "formatted": "\\uml{note E template class note.}", "raw": "/// \\uml{note E template class note.}" }, "display_name": "E", "id": "8113092523579115786", "is_abstract": false, "is_nested": false, "is_struct": false, "is_template": true, "is_union": false, "members": [ { "access": "private", "is_static": false, "name": "param", "source_location": { "column": 7, "file": "t00028.cc", "line": 26, "translation_unit": "t00028.cc" }, "type": "T" } ], "methods": [], "name": "E", "namespace": "clanguml::t00028", "source_location": { "column": 29, "file": "t00028.cc", "line": 25, "translation_unit": "t00028.cc" }, "template_parameters": [ { "is_variadic": false, "kind": "template_type", "name": "T", "template_parameters": [] } ], "type": "class" }, { "bases": [], "comment": { "formatted": "\\uml{note:other_diagram[left] G class note.}", "raw": "/// \\uml{note:other_diagram[left] G class note.}" }, "display_name": "G", "id": "6117709827168456983", "is_abstract": false, "is_nested": false, "is_struct": false, "is_template": false, "is_union": false, "members": [], "methods": [], "name": "G", "namespace": "clanguml::t00028", "source_location": { "column": 7, "file": "t00028.cc", "line": 30, "translation_unit": "t00028.cc" }, "template_parameters": [], "type": "class" }, { "comment": { "formatted": "@uml{note[ bottom ] F enum note.}", "raw": "/// @uml{note[ bottom ] F enum note.}" }, "constants": [ "one", "two", "three" ], "display_name": "F", "id": "4713823178131109419", "is_nested": false, "name": "F", "namespace": "clanguml::t00028", "source_location": { "column": 12, "file": "t00028.cc", "line": 33, "translation_unit": "t00028.cc" }, "type": "enum" }, { "bases": [], "display_name": "E", "id": "15597385435530389340", "is_abstract": false, "is_nested": false, "is_struct": false, "is_template": true, "is_union": false, "members": [], "methods": [], "name": "E", "namespace": "clanguml::t00028", "source_location": { "column": 29, "file": "t00028.cc", "line": 25, "translation_unit": "t00028.cc" }, "template_parameters": [ { "is_variadic": false, "kind": "argument", "template_parameters": [], "type": "int" } ], "type": "class" }, { "bases": [], "comment": { "formatted": "\\uml{note[right] R class note.}", "raw": "/// \\uml{note[right] R class note.}" }, "display_name": "R", "id": "9513143057914504932", "is_abstract": false, "is_nested": false, "is_struct": false, "is_template": false, "is_union": false, "members": [ { "access": "private", "comment": { "formatted": "\\uml{note[left] R contains an instance of A.}", "raw": "/// \\uml{note[left] R contains an instance of A.}" }, "is_static": false, "name": "aaa", "source_location": { "column": 7, "file": "t00028.cc", "line": 43, "translation_unit": "t00028.cc" }, "type": "A" }, { "access": "private", "comment": { "formatted": "\\uml{note:other_diagram[right] R contains an pointer to B.}", "raw": "/// \\uml{note:other_diagram[right] R contains an pointer to B.}" }, "is_static": false, "name": "bbb", "source_location": { "column": 8, "file": "t00028.cc", "line": 46, "translation_unit": "t00028.cc" }, "type": "B *" }, { "access": "private", "is_static": false, "name": "ccc", "source_location": { "column": 8, "file": "t00028.cc", "line": 48, "translation_unit": "t00028.cc" }, "type": "C &" }, { "access": "private", "is_static": false, "name": "ddd", "source_location": { "column": 37, "file": "t00028.cc", "line": 50, "translation_unit": "t00028.cc" }, "type": "std::vector>" }, { "access": "private", "is_static": false, "name": "eee", "source_location": { "column": 12, "file": "t00028.cc", "line": 52, "translation_unit": "t00028.cc" }, "type": "E" }, { "access": "private", "is_static": false, "name": "ggg", "source_location": { "column": 9, "file": "t00028.cc", "line": 54, "translation_unit": "t00028.cc" }, "type": "G **" } ], "methods": [ { "access": "private", "display_name": "R", "is_const": false, "is_consteval": false, "is_constexpr": false, "is_constructor": true, "is_copy_assignment": false, "is_coroutine": 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": "R", "parameters": [ { "name": "c", "type": "C &" } ], "source_location": { "column": 14, "file": "t00028.cc", "line": 37, "translation_unit": "t00028.cc" }, "template_parameters": [], "type": "void" } ], "name": "R", "namespace": "clanguml::t00028", "source_location": { "column": 7, "file": "t00028.cc", "line": 36, "translation_unit": "t00028.cc" }, "template_parameters": [], "type": "class" } ], "name": "t00028_class", "package_type": "namespace", "relationships": [ { "access": "public", "destination": "8113092523579115786", "source": "15597385435530389340", "type": "instantiation" }, { "access": "private", "destination": "12158803847702268707", "label": "aaa", "source": "9513143057914504932", "type": "aggregation" }, { "access": "private", "destination": "15844776732537704560", "label": "bbb", "source": "9513143057914504932", "type": "association" }, { "access": "private", "destination": "7876618068600902026", "label": "ccc", "source": "9513143057914504932", "type": "association" }, { "access": "private", "destination": "10110229268150272562", "label": "ddd", "source": "9513143057914504932", "type": "aggregation" }, { "access": "private", "destination": "15597385435530389340", "label": "eee", "source": "9513143057914504932", "type": "aggregation" }, { "access": "private", "destination": "6117709827168456983", "label": "ggg", "source": "9513143057914504932", "type": "association" } ], "using_namespace": "clanguml::t00028" } ```