# t30014 - C++20 modules package diagram test with partitions ## Config ```yaml diagrams: t30014_package: type: package glob: - t30014.cc package_type: module include: modules: - t30014 exclude: modules: - t30014.app:lib1.mod2 using_module: t30014 ``` ## Source code File `tests/t30014/t30014.cc` ```cpp import t30014.app; namespace clanguml { namespace t30014 { } } ``` File `tests/t30014/src/lib1mod2.cppm` ```cpp export module t30014.app:lib1.mod2; export namespace clanguml::t30014 { class E { }; } // namespace clanguml::t30014 ``` File `tests/t30014/src/t30014_mod.cppm` ```cpp export module t30014.app; import :lib1; import :lib1.mod1; import :lib1.mod2; import :lib2; export namespace clanguml::t30014 { class A { int get() { return a; } int a; }; } // namespace clanguml::t30014 ``` File `tests/t30014/src/lib2.cppm` ```cpp export module t30014.app:lib2; export namespace clanguml::t30014 { class C { }; template class CC { T t; }; namespace detail { enum class CCC { ccc1, ccc2 }; } // namespace detail } // namespace clanguml::t30014 ``` File `tests/t30014/src/lib1.cppm` ```cpp export module t30014.app:lib1; export namespace clanguml::t30014 { class B { }; template class BB { T t; }; namespace detail { enum class BBB { bbb1, bbb2 }; } // namespace detail } // namespace clanguml::t30014 ``` File `tests/t30014/src/lib1mod1.cppm` ```cpp export module t30014.app:lib1.mod1; export namespace clanguml::t30014 { class D { }; } // namespace clanguml::t30014 ``` ## Generated PlantUML diagrams ![t30014_package](./t30014_package.svg "C++20 modules package diagram test with partitions") ## Generated Mermaid diagrams ![t30014_package](./t30014_package_mermaid.svg "C++20 modules package diagram test with partitions") ## Generated JSON models ```json { "diagram_type": "package", "elements": [ { "display_name": "app", "elements": [ { "display_name": ":lib1", "elements": [ { "display_name": "mod1", "id": "16272914886425350409", "is_deprecated": false, "name": "mod1", "namespace": "t30014.app:lib1", "source_location": { "column": 7, "file": "src/lib1mod1.cppm", "line": 4, "translation_unit": "t30014.cc" }, "type": "module" } ], "id": "12951885779932657355", "is_deprecated": false, "name": ":lib1", "namespace": "t30014.app", "source_location": { "column": 7, "file": "src/lib1.cppm", "line": 4, "translation_unit": "t30014.cc" }, "type": "module" }, { "display_name": ":lib2", "id": "12559215005634166087", "is_deprecated": false, "name": ":lib2", "namespace": "t30014.app", "source_location": { "column": 7, "file": "src/lib2.cppm", "line": 4, "translation_unit": "t30014.cc" }, "type": "module" } ], "id": "15460027636886309813", "is_deprecated": false, "name": "app", "namespace": "t30014", "type": "module" } ], "name": "t30014_package", "package_type": "module", "relationships": [], "using_module": "t30014" } ```