# t00006 - Class field relationships inferred from templates ## Config ```yaml compilation_database_dir: .. output_directory: puml diagrams: t00006_class: type: class glob: - ../../tests/t00006/t00006.cc using_namespace: - clanguml::t00006 include: namespaces: - clanguml::t00006 ``` ## Source code File t00006.cc ```cpp #include #include #include namespace clanguml { namespace t00006 { class A { }; class B { }; class C { }; class D { }; class E { }; class F { }; class G { }; class H { }; class I { }; class J { }; class K { }; class L { }; class M { }; class N { }; class NN { }; class NNN { }; template class custom_container { public: std::vector data; }; class R { public: std::vector a; std::vector b; std::map c; std::map d; custom_container e; std::vector> f; std::map> g; std::array h; std::array i; J j[10]; K *k[20]; std::vector> lm; std::tuple ns; }; } // namespace t00006 } // namespace clanguml ``` ## Generated UML diagrams ![t00006_class](./t00006_class.svg "Class field relationships inferred from templates") ## Generated JSON models ```json { "diagram_type": "class", "elements": [ { "bases": [], "display_name": "clanguml::t00006::A", "id": "989095304444672400", "is_abstract": false, "is_nested": false, "is_struct": false, "is_template": false, "is_union": false, "members": [], "methods": [], "name": "A", "namespace": "clanguml::t00006", "source_location": { "column": 7, "file": "../../tests/t00006/t00006.cc", "line": 7, "translation_unit": "../../tests/t00006/t00006.cc" }, "template_parameters": [], "type": "class" }, { "bases": [], "display_name": "clanguml::t00006::B", "id": "648285260245005311", "is_abstract": false, "is_nested": false, "is_struct": false, "is_template": false, "is_union": false, "members": [], "methods": [], "name": "B", "namespace": "clanguml::t00006", "source_location": { "column": 7, "file": "../../tests/t00006/t00006.cc", "line": 9, "translation_unit": "../../tests/t00006/t00006.cc" }, "template_parameters": [], "type": "class" }, { "bases": [], "display_name": "clanguml::t00006::C", "id": "323304333007297774", "is_abstract": false, "is_nested": false, "is_struct": false, "is_template": false, "is_union": false, "members": [], "methods": [], "name": "C", "namespace": "clanguml::t00006", "source_location": { "column": 7, "file": "../../tests/t00006/t00006.cc", "line": 11, "translation_unit": "../../tests/t00006/t00006.cc" }, "template_parameters": [], "type": "class" }, { "bases": [], "display_name": "clanguml::t00006::D", "id": "1006912399043633492", "is_abstract": false, "is_nested": false, "is_struct": false, "is_template": false, "is_union": false, "members": [], "methods": [], "name": "D", "namespace": "clanguml::t00006", "source_location": { "column": 7, "file": "../../tests/t00006/t00006.cc", "line": 13, "translation_unit": "../../tests/t00006/t00006.cc" }, "template_parameters": [], "type": "class" }, { "bases": [], "display_name": "clanguml::t00006::E", "id": "1092550394020578978", "is_abstract": false, "is_nested": false, "is_struct": false, "is_template": false, "is_union": false, "members": [], "methods": [], "name": "E", "namespace": "clanguml::t00006", "source_location": { "column": 7, "file": "../../tests/t00006/t00006.cc", "line": 15, "translation_unit": "../../tests/t00006/t00006.cc" }, "template_parameters": [], "type": "class" }, { "bases": [], "display_name": "clanguml::t00006::F", "id": "965398761810782236", "is_abstract": false, "is_nested": false, "is_struct": false, "is_template": false, "is_union": false, "members": [], "methods": [], "name": "F", "namespace": "clanguml::t00006", "source_location": { "column": 7, "file": "../../tests/t00006/t00006.cc", "line": 17, "translation_unit": "../../tests/t00006/t00006.cc" }, "template_parameters": [], "type": "class" }, { "bases": [], "display_name": "clanguml::t00006::G", "id": "1764732000887030464", "is_abstract": false, "is_nested": false, "is_struct": false, "is_template": false, "is_union": false, "members": [], "methods": [], "name": "G", "namespace": "clanguml::t00006", "source_location": { "column": 7, "file": "../../tests/t00006/t00006.cc", "line": 19, "translation_unit": "../../tests/t00006/t00006.cc" }, "template_parameters": [], "type": "class" }, { "bases": [], "display_name": "clanguml::t00006::H", "id": "1669285599837552146", "is_abstract": false, "is_nested": false, "is_struct": false, "is_template": false, "is_union": false, "members": [], "methods": [], "name": "H", "namespace": "clanguml::t00006", "source_location": { "column": 7, "file": "../../tests/t00006/t00006.cc", "line": 21, "translation_unit": "../../tests/t00006/t00006.cc" }, "template_parameters": [], "type": "class" }, { "bases": [], "display_name": "clanguml::t00006::I", "id": "2234750598599000377", "is_abstract": false, "is_nested": false, "is_struct": false, "is_template": false, "is_union": false, "members": [], "methods": [], "name": "I", "namespace": "clanguml::t00006", "source_location": { "column": 7, "file": "../../tests/t00006/t00006.cc", "line": 23, "translation_unit": "../../tests/t00006/t00006.cc" }, "template_parameters": [], "type": "class" }, { "bases": [], "display_name": "clanguml::t00006::J", "id": "1335933649375465369", "is_abstract": false, "is_nested": false, "is_struct": false, "is_template": false, "is_union": false, "members": [], "methods": [], "name": "J", "namespace": "clanguml::t00006", "source_location": { "column": 7, "file": "../../tests/t00006/t00006.cc", "line": 25, "translation_unit": "../../tests/t00006/t00006.cc" }, "template_parameters": [], "type": "class" }, { "bases": [], "display_name": "clanguml::t00006::K", "id": "1603190364864080123", "is_abstract": false, "is_nested": false, "is_struct": false, "is_template": false, "is_union": false, "members": [], "methods": [], "name": "K", "namespace": "clanguml::t00006", "source_location": { "column": 7, "file": "../../tests/t00006/t00006.cc", "line": 27, "translation_unit": "../../tests/t00006/t00006.cc" }, "template_parameters": [], "type": "class" }, { "bases": [], "display_name": "clanguml::t00006::L", "id": "305487238408320046", "is_abstract": false, "is_nested": false, "is_struct": false, "is_template": false, "is_union": false, "members": [], "methods": [], "name": "L", "namespace": "clanguml::t00006", "source_location": { "column": 7, "file": "../../tests/t00006/t00006.cc", "line": 29, "translation_unit": "../../tests/t00006/t00006.cc" }, "template_parameters": [], "type": "class" }, { "bases": [], "display_name": "clanguml::t00006::M", "id": "1664744512423723275", "is_abstract": false, "is_nested": false, "is_struct": false, "is_template": false, "is_union": false, "members": [], "methods": [], "name": "M", "namespace": "clanguml::t00006", "source_location": { "column": 7, "file": "../../tests/t00006/t00006.cc", "line": 31, "translation_unit": "../../tests/t00006/t00006.cc" }, "template_parameters": [], "type": "class" }, { "bases": [], "display_name": "clanguml::t00006::N", "id": "950210019792152600", "is_abstract": false, "is_nested": false, "is_struct": false, "is_template": false, "is_union": false, "members": [], "methods": [], "name": "N", "namespace": "clanguml::t00006", "source_location": { "column": 7, "file": "../../tests/t00006/t00006.cc", "line": 33, "translation_unit": "../../tests/t00006/t00006.cc" }, "template_parameters": [], "type": "class" }, { "bases": [], "display_name": "clanguml::t00006::NN", "id": "1662349735899726224", "is_abstract": false, "is_nested": false, "is_struct": false, "is_template": false, "is_union": false, "members": [], "methods": [], "name": "NN", "namespace": "clanguml::t00006", "source_location": { "column": 7, "file": "../../tests/t00006/t00006.cc", "line": 35, "translation_unit": "../../tests/t00006/t00006.cc" }, "template_parameters": [], "type": "class" }, { "bases": [], "display_name": "clanguml::t00006::NNN", "id": "1963145075481599858", "is_abstract": false, "is_nested": false, "is_struct": false, "is_template": false, "is_union": false, "members": [], "methods": [], "name": "NNN", "namespace": "clanguml::t00006", "source_location": { "column": 7, "file": "../../tests/t00006/t00006.cc", "line": 37, "translation_unit": "../../tests/t00006/t00006.cc" }, "template_parameters": [], "type": "class" }, { "bases": [], "display_name": "clanguml::t00006::custom_container", "id": "916380191954937631", "is_abstract": false, "is_nested": false, "is_struct": false, "is_template": true, "is_union": false, "members": [ { "access": "public", "is_static": false, "name": "data", "source_location": { "column": 20, "file": "../../tests/t00006/t00006.cc", "line": 41, "translation_unit": "../../tests/t00006/t00006.cc" }, "type": "std::vector" } ], "methods": [], "name": "custom_container", "namespace": "clanguml::t00006", "source_location": { "column": 29, "file": "../../tests/t00006/t00006.cc", "line": 39, "translation_unit": "../../tests/t00006/t00006.cc" }, "template_parameters": [ { "is_variadic": false, "kind": "template_type", "name": "T", "template_parameters": [] } ], "type": "class" }, { "bases": [], "display_name": "clanguml::t00006::custom_container", "id": "50153113082434858", "is_abstract": false, "is_nested": false, "is_struct": false, "is_template": true, "is_union": false, "members": [], "methods": [], "name": "custom_container", "namespace": "clanguml::t00006", "source_location": { "column": 29, "file": "../../tests/t00006/t00006.cc", "line": 39, "translation_unit": "../../tests/t00006/t00006.cc" }, "template_parameters": [ { "is_variadic": false, "kind": "argument", "template_parameters": [], "type": "clanguml::t00006::E" } ], "type": "class" }, { "bases": [], "display_name": "clanguml::t00006::R", "id": "303025561016882526", "is_abstract": false, "is_nested": false, "is_struct": false, "is_template": false, "is_union": false, "members": [ { "access": "public", "is_static": false, "name": "a", "source_location": { "column": 20, "file": "../../tests/t00006/t00006.cc", "line": 46, "translation_unit": "../../tests/t00006/t00006.cc" }, "type": "std::vector" }, { "access": "public", "is_static": false, "name": "b", "source_location": { "column": 22, "file": "../../tests/t00006/t00006.cc", "line": 47, "translation_unit": "../../tests/t00006/t00006.cc" }, "type": "std::vector" }, { "access": "public", "is_static": false, "name": "c", "source_location": { "column": 22, "file": "../../tests/t00006/t00006.cc", "line": 49, "translation_unit": "../../tests/t00006/t00006.cc" }, "type": "std::map" }, { "access": "public", "is_static": false, "name": "d", "source_location": { "column": 24, "file": "../../tests/t00006/t00006.cc", "line": 50, "translation_unit": "../../tests/t00006/t00006.cc" }, "type": "std::map" }, { "access": "public", "is_static": false, "name": "e", "source_location": { "column": 25, "file": "../../tests/t00006/t00006.cc", "line": 52, "translation_unit": "../../tests/t00006/t00006.cc" }, "type": "custom_container" }, { "access": "public", "is_static": false, "name": "f", "source_location": { "column": 33, "file": "../../tests/t00006/t00006.cc", "line": 54, "translation_unit": "../../tests/t00006/t00006.cc" }, "type": "std::vector>" }, { "access": "public", "is_static": false, "name": "g", "source_location": { "column": 37, "file": "../../tests/t00006/t00006.cc", "line": 55, "translation_unit": "../../tests/t00006/t00006.cc" }, "type": "std::map>" }, { "access": "public", "is_static": false, "name": "h", "source_location": { "column": 23, "file": "../../tests/t00006/t00006.cc", "line": 57, "translation_unit": "../../tests/t00006/t00006.cc" }, "type": "std::array" }, { "access": "public", "is_static": false, "name": "i", "source_location": { "column": 24, "file": "../../tests/t00006/t00006.cc", "line": 58, "translation_unit": "../../tests/t00006/t00006.cc" }, "type": "std::array" }, { "access": "public", "is_static": false, "name": "j", "source_location": { "column": 7, "file": "../../tests/t00006/t00006.cc", "line": 60, "translation_unit": "../../tests/t00006/t00006.cc" }, "type": "clanguml::t00006::J[10]" }, { "access": "public", "is_static": false, "name": "k", "source_location": { "column": 8, "file": "../../tests/t00006/t00006.cc", "line": 61, "translation_unit": "../../tests/t00006/t00006.cc" }, "type": "clanguml::t00006::K *[20]" }, { "access": "public", "is_static": false, "name": "lm", "source_location": { "column": 34, "file": "../../tests/t00006/t00006.cc", "line": 63, "translation_unit": "../../tests/t00006/t00006.cc" }, "type": "std::vector>" }, { "access": "public", "is_static": false, "name": "ns", "source_location": { "column": 28, "file": "../../tests/t00006/t00006.cc", "line": 65, "translation_unit": "../../tests/t00006/t00006.cc" }, "type": "std::tuple" } ], "methods": [], "name": "R", "namespace": "clanguml::t00006", "source_location": { "column": 7, "file": "../../tests/t00006/t00006.cc", "line": 44, "translation_unit": "../../tests/t00006/t00006.cc" }, "template_parameters": [], "type": "class" } ], "metadata": { "clang_uml_version": "0.3.8-18-gfd06d93", "llvm_version": "Ubuntu clang version 15.0.7", "schema_version": 1 }, "name": "t00006_class", "relationships": [ { "access": "public", "destination": "1092550394020578978", "source": "50153113082434858", "type": "dependency" }, { "access": "public", "destination": "916380191954937631", "source": "50153113082434858", "type": "instantiation" }, { "access": "public", "destination": "989095304444672400", "label": "a", "source": "303025561016882526", "type": "aggregation" }, { "access": "public", "destination": "648285260245005311", "label": "b", "source": "303025561016882526", "type": "association" }, { "access": "public", "destination": "323304333007297774", "label": "c", "source": "303025561016882526", "type": "aggregation" }, { "access": "public", "destination": "1006912399043633492", "label": "d", "source": "303025561016882526", "type": "association" }, { "access": "public", "destination": "50153113082434858", "label": "e", "source": "303025561016882526", "type": "aggregation" }, { "access": "public", "destination": "965398761810782236", "label": "f", "source": "303025561016882526", "type": "aggregation" }, { "access": "public", "destination": "1764732000887030464", "label": "g", "source": "303025561016882526", "type": "association" }, { "access": "public", "destination": "1669285599837552146", "label": "h", "source": "303025561016882526", "type": "aggregation" }, { "access": "public", "destination": "2234750598599000377", "label": "i", "source": "303025561016882526", "type": "association" }, { "access": "public", "destination": "1335933649375465369", "label": "j", "source": "303025561016882526", "type": "aggregation" }, { "access": "public", "destination": "1603190364864080123", "label": "k", "source": "303025561016882526", "type": "association" }, { "access": "public", "destination": "305487238408320046", "label": "lm", "source": "303025561016882526", "type": "aggregation" }, { "access": "public", "destination": "1664744512423723275", "label": "lm", "source": "303025561016882526", "type": "aggregation" }, { "access": "public", "destination": "950210019792152600", "label": "ns", "source": "303025561016882526", "type": "aggregation" }, { "access": "public", "destination": "1662349735899726224", "label": "ns", "source": "303025561016882526", "type": "aggregation" }, { "access": "public", "destination": "1963145075481599858", "label": "ns", "source": "303025561016882526", "type": "aggregation" } ], "using_namespace": "clanguml::t00006" } ```