# t30015 - C++20 modules package diagram test with partition dependencies ## Config ```yaml diagrams: t30015_package: type: package glob: - t30015.cc package_type: module include: modules: - t30015 using_module: t30015 ``` ## Source code File `tests/t30015/t30015.cc` ```cpp import t30015.app; namespace clanguml { namespace t30015 { } } ``` File `tests/t30015/src/mod7.cppm` ```cpp export module t30015.lib1:mod7; export namespace clanguml::t30015 { struct CG { }; } ``` File `tests/t30015/src/mod11.cppm` ```cpp export module t30015.lib1:mod11; export namespace clanguml::t30015 { struct CK { }; } ``` File `tests/t30015/src/mod17.cppm` ```cpp export module t30015.lib1:mod17; export namespace clanguml::t30015 { struct CR { }; } ``` File `tests/t30015/src/mod16.cppm` ```cpp export module t30015.lib1:mod16; export namespace clanguml::t30015 { struct CP { }; } ``` File `tests/t30015/src/mod10.cppm` ```cpp export module t30015.lib1:mod10; export namespace clanguml::t30015 { struct CJ { }; } ``` File `tests/t30015/src/mod4.cppm` ```cpp export module t30015.lib1:mod4; export namespace clanguml::t30015 { struct CD { }; } ``` File `tests/t30015/src/mod1.cppm` ```cpp export module t30015.lib1:mod1; export namespace clanguml::t30015 { struct CA { }; } ``` File `tests/t30015/src/app.cppm` ```cpp module; #include #include #include #include #include export module t30015.app; import t30015.lib1; // import t30015.app; // import t30015.mod2; // import t30015.mod3; // import t30015.mod4; // import t30015.mod5; // import t30015.mod6; // import t30015.mod7; // import t30015.mod8; // import t30015.mod9; // import t30015.mod10; // import t30015.mod11; // import t30015.mod12; // import t30015.mod13; // import t30015.mod14; // import t30015.mod15; // import t30015.mod16; // import t30015.mod17; // import t30015.mod18; export namespace clanguml::t30015 { class CBA : public CF { public: CA *ca_; CB cb_; std::shared_ptr cc_; std::map> *cd_; std::array co_; static CP *cp_; CBA() = default; CBA(CN *cn) { } friend CR; template CBA(std::tuple &items) { } void ce(const std::vector /*ce_*/) { } std::shared_ptr cg() { return {}; } template void ch(std::map> &ch_) { } template std::map> ci(T * /*t*/) { return {}; } S s; }; void cj(std::unique_ptr /*cj_*/) { } std::unique_ptr ck() { return {}; } template void cl(std::map> & /*ch_*/) { } template std::map> cm() { return {}; } } // namespace clanguml::t30013 ``` File `tests/t30015/src/mod13.cppm` ```cpp export module t30015.lib1:mod13; export namespace clanguml::t30015 { struct CM { }; } ``` File `tests/t30015/src/mod9.cppm` ```cpp export module t30015.lib1:mod9; export namespace clanguml::t30015 { struct CI { }; } ``` File `tests/t30015/src/mod5.cppm` ```cpp export module t30015.lib1:mod5; export namespace clanguml::t30015 { struct CE { }; } ``` File `tests/t30015/src/mod18.cppm` ```cpp export module t30015.lib1:mod18; export namespace clanguml::t30015 { enum class S { s1, s2, s3 }; } ``` File `tests/t30015/src/mod2.cppm` ```cpp export module t30015.lib1:mod2; export namespace clanguml::t30015 { template struct CB { T cb; }; } ``` File `tests/t30015/src/mod14.cppm` ```cpp export module t30015.lib1:mod14; export namespace clanguml::t30015 { struct CN { }; } ``` File `tests/t30015/src/mod12.cppm` ```cpp export module t30015.lib1:mod12; export namespace clanguml::t30015 { struct CL { }; } ``` File `tests/t30015/src/mod6.cppm` ```cpp export module t30015.lib1:mod6; export namespace clanguml::t30015 { struct CF { }; } ``` File `tests/t30015/src/mod8.cppm` ```cpp export module t30015.lib1:mod8; export namespace clanguml::t30015 { struct CH { }; } ``` File `tests/t30015/src/mod3.cppm` ```cpp export module t30015.lib1:mod3; export namespace clanguml::t30015 { struct CC { }; } ``` File `tests/t30015/src/lib1.cppm` ```cpp export module t30015.lib1; export import :mod1; export import :mod2; export import :mod3; export import :mod4; export import :mod5; export import :mod6; export import :mod7; export import :mod8; export import :mod9; export import :mod10; export import :mod11; export import :mod12; export import :mod13; export import :mod14; export import :mod15; export import :mod16; export import :mod17; export import :mod18; export namespace clanguml::t30015 { } ``` File `tests/t30015/src/mod15.cppm` ```cpp export module t30015.lib1:mod15; export namespace clanguml::t30015 { struct CO { }; } ``` ## Generated PlantUML diagrams ![t30015_package](./t30015_package.svg "C++20 modules package diagram test with partition dependencies") ## Generated Mermaid diagrams ![t30015_package](./t30015_package_mermaid.svg "C++20 modules package diagram test with partition dependencies") ## Generated JSON models ```json { "diagram_type": "package", "elements": [ { "display_name": "lib1", "elements": [ { "display_name": ":mod1", "id": "2078789731210233181", "is_deprecated": false, "name": ":mod1", "namespace": "t30015.lib1", "source_location": { "column": 8, "file": "src/mod1.cppm", "line": 4, "translation_unit": "t30015.cc" }, "type": "module" }, { "display_name": ":mod2", "id": "108157285110421434", "is_deprecated": false, "name": ":mod2", "namespace": "t30015.lib1", "source_location": { "column": 30, "file": "src/mod2.cppm", "line": 4, "translation_unit": "t30015.cc" }, "type": "module" }, { "display_name": ":mod3", "id": "1466337333501241721", "is_deprecated": false, "name": ":mod3", "namespace": "t30015.lib1", "source_location": { "column": 8, "file": "src/mod3.cppm", "line": 4, "translation_unit": "t30015.cc" }, "type": "module" }, { "display_name": ":mod4", "id": "2181077882404368936", "is_deprecated": false, "name": ":mod4", "namespace": "t30015.lib1", "source_location": { "column": 8, "file": "src/mod4.cppm", "line": 4, "translation_unit": "t30015.cc" }, "type": "module" }, { "display_name": ":mod5", "id": "1045004042628075747", "is_deprecated": false, "name": ":mod5", "namespace": "t30015.lib1", "source_location": { "column": 8, "file": "src/mod5.cppm", "line": 4, "translation_unit": "t30015.cc" }, "type": "module" }, { "display_name": ":mod6", "id": "536067780214444138", "is_deprecated": false, "name": ":mod6", "namespace": "t30015.lib1", "source_location": { "column": 8, "file": "src/mod6.cppm", "line": 4, "translation_unit": "t30015.cc" }, "type": "module" }, { "display_name": ":mod7", "id": "1678616733221858020", "is_deprecated": false, "name": ":mod7", "namespace": "t30015.lib1", "source_location": { "column": 8, "file": "src/mod7.cppm", "line": 4, "translation_unit": "t30015.cc" }, "type": "module" }, { "display_name": ":mod8", "id": "240013230569803405", "is_deprecated": false, "name": ":mod8", "namespace": "t30015.lib1", "source_location": { "column": 8, "file": "src/mod8.cppm", "line": 4, "translation_unit": "t30015.cc" }, "type": "module" }, { "display_name": ":mod9", "id": "179175577447017767", "is_deprecated": false, "name": ":mod9", "namespace": "t30015.lib1", "source_location": { "column": 8, "file": "src/mod9.cppm", "line": 4, "translation_unit": "t30015.cc" }, "type": "module" }, { "display_name": ":mod10", "id": "485628131931062884", "is_deprecated": false, "name": ":mod10", "namespace": "t30015.lib1", "source_location": { "column": 8, "file": "src/mod10.cppm", "line": 4, "translation_unit": "t30015.cc" }, "type": "module" }, { "display_name": ":mod11", "id": "791090113373006765", "is_deprecated": false, "name": ":mod11", "namespace": "t30015.lib1", "source_location": { "column": 8, "file": "src/mod11.cppm", "line": 4, "translation_unit": "t30015.cc" }, "type": "module" }, { "display_name": ":mod12", "id": "500107934060144677", "is_deprecated": false, "name": ":mod12", "namespace": "t30015.lib1", "source_location": { "column": 8, "file": "src/mod12.cppm", "line": 4, "translation_unit": "t30015.cc" }, "type": "module" }, { "display_name": ":mod13", "id": "1195842122299166493", "is_deprecated": false, "name": ":mod13", "namespace": "t30015.lib1", "source_location": { "column": 8, "file": "src/mod13.cppm", "line": 4, "translation_unit": "t30015.cc" }, "type": "module" }, { "display_name": ":mod14", "id": "581129920847850526", "is_deprecated": false, "name": ":mod14", "namespace": "t30015.lib1", "source_location": { "column": 8, "file": "src/mod14.cppm", "line": 4, "translation_unit": "t30015.cc" }, "type": "module" }, { "display_name": ":mod15", "id": "1715856257738182160", "is_deprecated": false, "name": ":mod15", "namespace": "t30015.lib1", "source_location": { "column": 8, "file": "src/mod15.cppm", "line": 4, "translation_unit": "t30015.cc" }, "type": "module" }, { "display_name": ":mod16", "id": "1435303665523039114", "is_deprecated": false, "name": ":mod16", "namespace": "t30015.lib1", "source_location": { "column": 8, "file": "src/mod16.cppm", "line": 4, "translation_unit": "t30015.cc" }, "type": "module" }, { "display_name": ":mod17", "id": "1327885001907982070", "is_deprecated": false, "name": ":mod17", "namespace": "t30015.lib1", "source_location": { "column": 8, "file": "src/mod17.cppm", "line": 4, "translation_unit": "t30015.cc" }, "type": "module" }, { "display_name": ":mod18", "id": "2193691762152553973", "is_deprecated": false, "name": ":mod18", "namespace": "t30015.lib1", "source_location": { "column": 12, "file": "src/mod18.cppm", "line": 4, "translation_unit": "t30015.cc" }, "type": "module" } ], "id": "1208975031146850353", "is_deprecated": false, "name": "lib1", "namespace": "t30015", "type": "module" }, { "display_name": "app", "id": "1200268042616700255", "is_deprecated": false, "name": "app", "namespace": "t30015", "source_location": { "column": 7, "file": "src/app.cppm", "line": 33, "translation_unit": "t30015.cc" }, "type": "module" } ], "name": "t30015_package", "package_type": "module", "relationships": [ { "destination": "240013230569803405", "source": "1200268042616700255", "type": "dependency" }, { "destination": "179175577447017767", "source": "1200268042616700255", "type": "dependency" }, { "destination": "2078789731210233181", "source": "1200268042616700255", "type": "dependency" }, { "destination": "108157285110421434", "source": "1200268042616700255", "type": "dependency" }, { "destination": "1466337333501241721", "source": "1200268042616700255", "type": "dependency" }, { "destination": "2181077882404368936", "source": "1200268042616700255", "type": "dependency" }, { "destination": "1715856257738182160", "source": "1200268042616700255", "type": "dependency" }, { "destination": "2193691762152553973", "source": "1200268042616700255", "type": "dependency" }, { "destination": "1435303665523039114", "source": "1200268042616700255", "type": "dependency" }, { "destination": "581129920847850526", "source": "1200268042616700255", "type": "dependency" }, { "destination": "1045004042628075747", "source": "1200268042616700255", "type": "dependency" }, { "destination": "1678616733221858020", "source": "1200268042616700255", "type": "dependency" }, { "destination": "1327885001907982070", "source": "1200268042616700255", "type": "dependency" }, { "destination": "536067780214444138", "source": "1200268042616700255", "type": "dependency" }, { "destination": "485628131931062884", "source": "1200268042616700255", "type": "dependency" }, { "destination": "791090113373006765", "source": "1200268042616700255", "type": "dependency" }, { "destination": "500107934060144677", "source": "1200268042616700255", "type": "dependency" }, { "destination": "1195842122299166493", "source": "1200268042616700255", "type": "dependency" } ], "using_module": "t30015" } ```