# t00054 - Test case for `together` layout hint in class diagram with rendered namespaces
## Config
```yaml
compilation_database_dir: ..
output_directory: puml
diagrams:
  t00054_class:
    type: class
    glob:
      - ../../tests/t00054/t00054.cc
    include:
      namespaces:
        - clanguml::t00054
    using_namespace:
      - clanguml::t00054
    generate_packages: true
    layout:
      a:
        - together: [f]
      "detail::c":
        - together: [detail::e]
      A:
        - together: [B,G]
      "detail2::detail3::D":
        - together: [detail2::detail3::E]
      "detail4::h":
        - together: [detail4::i,detail4::j]
```
## Source code
File t00054.cc
```cpp
namespace clanguml {
namespace t00054 {
struct a { };
struct b { };

namespace detail {
struct c { };
struct d { };
struct e { };
} // namespace detail
struct f { };
struct g { };

struct A { };
struct B { };

namespace detail2 {
struct C { };
namespace detail3 {
struct D { };
struct E { };
} // namespace detail3
struct F { };
} // namespace detail2
struct G { };

namespace detail4 {
enum class h { hhh };
enum class i { iii };
enum class j { jjj };
} // namespace detail4

}
}
```
## Generated UML diagrams
![t00054_class](./t00054_class.svg "Test case for `together` layout hint in class diagram with rendered namespaces")
## Generated JSON models
```json
{
  "diagram_type": "class",
  "elements": [
    {
      "bases": [],
      "display_name": "clanguml::t00054::a",
      "id": "1158868779503074564",
      "is_abstract": false,
      "is_nested": false,
      "is_struct": true,
      "is_template": false,
      "is_union": false,
      "members": [],
      "methods": [],
      "name": "a",
      "namespace": "clanguml::t00054",
      "source_location": {
        "file": "../../tests/t00054/t00054.cc",
        "line": 3
      },
      "template_parameters": [],
      "type": "class"
    },
    {
      "bases": [],
      "display_name": "clanguml::t00054::b",
      "id": "252416999805673718",
      "is_abstract": false,
      "is_nested": false,
      "is_struct": true,
      "is_template": false,
      "is_union": false,
      "members": [],
      "methods": [],
      "name": "b",
      "namespace": "clanguml::t00054",
      "source_location": {
        "file": "../../tests/t00054/t00054.cc",
        "line": 4
      },
      "template_parameters": [],
      "type": "class"
    },
    {
      "display_name": "clanguml::t00054::detail",
      "elements": [
        {
          "bases": [],
          "display_name": "clanguml::t00054::detail::c",
          "id": "1168031834662719964",
          "is_abstract": false,
          "is_nested": false,
          "is_struct": true,
          "is_template": false,
          "is_union": false,
          "members": [],
          "methods": [],
          "name": "c",
          "namespace": "clanguml::t00054::detail",
          "source_location": {
            "file": "../../tests/t00054/t00054.cc",
            "line": 7
          },
          "template_parameters": [],
          "type": "class"
        },
        {
          "bases": [],
          "display_name": "clanguml::t00054::detail::d",
          "id": "1569559620782547158",
          "is_abstract": false,
          "is_nested": false,
          "is_struct": true,
          "is_template": false,
          "is_union": false,
          "members": [],
          "methods": [],
          "name": "d",
          "namespace": "clanguml::t00054::detail",
          "source_location": {
            "file": "../../tests/t00054/t00054.cc",
            "line": 8
          },
          "template_parameters": [],
          "type": "class"
        },
        {
          "bases": [],
          "display_name": "clanguml::t00054::detail::e",
          "id": "2037550833462858827",
          "is_abstract": false,
          "is_nested": false,
          "is_struct": true,
          "is_template": false,
          "is_union": false,
          "members": [],
          "methods": [],
          "name": "e",
          "namespace": "clanguml::t00054::detail",
          "source_location": {
            "file": "../../tests/t00054/t00054.cc",
            "line": 9
          },
          "template_parameters": [],
          "type": "class"
        }
      ],
      "name": "detail",
      "type": "namespace"
    },
    {
      "bases": [],
      "display_name": "clanguml::t00054::f",
      "id": "2123626454198320938",
      "is_abstract": false,
      "is_nested": false,
      "is_struct": true,
      "is_template": false,
      "is_union": false,
      "members": [],
      "methods": [],
      "name": "f",
      "namespace": "clanguml::t00054",
      "source_location": {
        "file": "../../tests/t00054/t00054.cc",
        "line": 11
      },
      "template_parameters": [],
      "type": "class"
    },
    {
      "bases": [],
      "display_name": "clanguml::t00054::g",
      "id": "595494794840378320",
      "is_abstract": false,
      "is_nested": false,
      "is_struct": true,
      "is_template": false,
      "is_union": false,
      "members": [],
      "methods": [],
      "name": "g",
      "namespace": "clanguml::t00054",
      "source_location": {
        "file": "../../tests/t00054/t00054.cc",
        "line": 12
      },
      "template_parameters": [],
      "type": "class"
    },
    {
      "bases": [],
      "display_name": "clanguml::t00054::A",
      "id": "917656824503504804",
      "is_abstract": false,
      "is_nested": false,
      "is_struct": true,
      "is_template": false,
      "is_union": false,
      "members": [],
      "methods": [],
      "name": "A",
      "namespace": "clanguml::t00054",
      "source_location": {
        "file": "../../tests/t00054/t00054.cc",
        "line": 14
      },
      "template_parameters": [],
      "type": "class"
    },
    {
      "bases": [],
      "display_name": "clanguml::t00054::B",
      "id": "1235773045370563004",
      "is_abstract": false,
      "is_nested": false,
      "is_struct": true,
      "is_template": false,
      "is_union": false,
      "members": [],
      "methods": [],
      "name": "B",
      "namespace": "clanguml::t00054",
      "source_location": {
        "file": "../../tests/t00054/t00054.cc",
        "line": 15
      },
      "template_parameters": [],
      "type": "class"
    },
    {
      "display_name": "clanguml::t00054::detail2",
      "elements": [
        {
          "bases": [],
          "display_name": "clanguml::t00054::detail2::C",
          "id": "540054955081677892",
          "is_abstract": false,
          "is_nested": false,
          "is_struct": true,
          "is_template": false,
          "is_union": false,
          "members": [],
          "methods": [],
          "name": "C",
          "namespace": "clanguml::t00054::detail2",
          "source_location": {
            "file": "../../tests/t00054/t00054.cc",
            "line": 18
          },
          "template_parameters": [],
          "type": "class"
        },
        {
          "display_name": "clanguml::t00054::detail2::detail3",
          "elements": [
            {
              "bases": [],
              "display_name": "clanguml::t00054::detail2::detail3::D",
              "id": "1266390196945323478",
              "is_abstract": false,
              "is_nested": false,
              "is_struct": true,
              "is_template": false,
              "is_union": false,
              "members": [],
              "methods": [],
              "name": "D",
              "namespace": "clanguml::t00054::detail2::detail3",
              "source_location": {
                "file": "../../tests/t00054/t00054.cc",
                "line": 20
              },
              "template_parameters": [],
              "type": "class"
            },
            {
              "bases": [],
              "display_name": "clanguml::t00054::detail2::detail3::E",
              "id": "134928214982255105",
              "is_abstract": false,
              "is_nested": false,
              "is_struct": true,
              "is_template": false,
              "is_union": false,
              "members": [],
              "methods": [],
              "name": "E",
              "namespace": "clanguml::t00054::detail2::detail3",
              "source_location": {
                "file": "../../tests/t00054/t00054.cc",
                "line": 21
              },
              "template_parameters": [],
              "type": "class"
            }
          ],
          "name": "detail3",
          "type": "namespace"
        },
        {
          "bases": [],
          "display_name": "clanguml::t00054::detail2::F",
          "id": "446694692150903211",
          "is_abstract": false,
          "is_nested": false,
          "is_struct": true,
          "is_template": false,
          "is_union": false,
          "members": [],
          "methods": [],
          "name": "F",
          "namespace": "clanguml::t00054::detail2",
          "source_location": {
            "file": "../../tests/t00054/t00054.cc",
            "line": 23
          },
          "template_parameters": [],
          "type": "class"
        }
      ],
      "name": "detail2",
      "type": "namespace"
    },
    {
      "bases": [],
      "display_name": "clanguml::t00054::G",
      "id": "1365815261671395853",
      "is_abstract": false,
      "is_nested": false,
      "is_struct": true,
      "is_template": false,
      "is_union": false,
      "members": [],
      "methods": [],
      "name": "G",
      "namespace": "clanguml::t00054",
      "source_location": {
        "file": "../../tests/t00054/t00054.cc",
        "line": 25
      },
      "template_parameters": [],
      "type": "class"
    },
    {
      "display_name": "clanguml::t00054::detail4",
      "elements": [
        {
          "constants": [
            "hhh"
          ],
          "display_name": "clanguml::t00054::detail4::h",
          "id": "1592677999268391183",
          "is_nested": false,
          "name": "h",
          "namespace": "clanguml::t00054::detail4",
          "source_location": {
            "file": "../../tests/t00054/t00054.cc",
            "line": 28
          },
          "type": "enum"
        },
        {
          "constants": [
            "iii"
          ],
          "display_name": "clanguml::t00054::detail4::i",
          "id": "441521323390223397",
          "is_nested": false,
          "name": "i",
          "namespace": "clanguml::t00054::detail4",
          "source_location": {
            "file": "../../tests/t00054/t00054.cc",
            "line": 29
          },
          "type": "enum"
        },
        {
          "constants": [
            "jjj"
          ],
          "display_name": "clanguml::t00054::detail4::j",
          "id": "499334434426587347",
          "is_nested": false,
          "name": "j",
          "namespace": "clanguml::t00054::detail4",
          "source_location": {
            "file": "../../tests/t00054/t00054.cc",
            "line": 30
          },
          "type": "enum"
        }
      ],
      "name": "detail4",
      "type": "namespace"
    }
  ],
  "metadata": {
    "clang_uml_version": "0.3.5-27-g81c7ce7",
    "llvm_version": "Ubuntu clang version 15.0.6",
    "schema_version": 1
  },
  "name": "t00054_class",
  "relationships": [],
  "using_namespace": "clanguml::t00054"
}
```
